void coldfire_trap_init(void) { int i; #ifdef MCF_MEMORY_PROTECT extern unsigned long _end; extern unsigned long memory_end; #endif #ifndef ENABLE_dBUG mcf_setimr(MCFSIM_IMR_MASKALL); #endif /* * There is a common trap handler and common interrupt * handler that handle almost every vector. We treat * the system call and bus error special, they get their * own first level handlers. */ #ifndef ENABLE_dBUG for (i = 3; (i <= 23); i++) _ramvec[i] = trap; for (i = 33; (i <= 63); i++) _ramvec[i] = trap; #endif for (i = 24; (i <= 30); i++) _ramvec[i] = intrhandler; #ifndef ENABLE_dBUG _ramvec[31] = intrhandler; // Disables the IRQ7 button #endif for (i = 64; (i < 255); i++) _ramvec[i] = intrhandler; _ramvec[255] = 0; _ramvec[2] = buserr; _ramvec[32] = system_call; #ifdef MCF_MEMORY_PROTECT /* In order to protect memory, we set up an address range breakpoint * that starts from address 0 and go until the end of the kernel image * plus data. This doens't protect the kernel stack, hardware devices * or user processes from each other but it is better than nothing. */ wdebug(MCFDEBUG_ABLR, &_end); /* Start of range */ wdebug(MCFDEBUG_ABHR, memory_end); /* End of range */ /* Now set the trigger register: * Ignore RW bit, ignore size field, only user mode accesses */ wdebug(MCFDEBUG_AATR, 0xe300); /* Activate the break point as a level one trigger outside address range */ wdebug(MCFDEBUG_TDR, MCFDEBUG_TDR_TRC_INTR | MCFDEBUG_TDR_LXT1 | MCFDEBUG_TDR_EBL1 | MCFDEBUG_TDR_EAI1); printk("Protected memory outside %#x to %#x\n", (int)&_end, (int)memory_end); #endif }
void config_BSP(char *commandp, int size) { #ifdef CONFIG_BOOTPARAM strncpy(commandp, CONFIG_BOOTPARAM_STRING, size); commandp[size-1] = 0; #elif defined(CONFIG_NETtel) /* Copy command line from FLASH to local buffer... */ memcpy(commandp, (char *) 0xf0004000, size); commandp[size-1] = 0; #else memset(commandp, 0, size); #endif mach_sched_init = coldfire_timer_init; mach_tick = coldfire_tick; mach_trap_init = coldfire_trap_init; mach_reset = coldfire_reset; mach_gettimeoffset = coldfire_timer_offset; #ifdef CONFIG_BDM_DISABLE /* * Disable the BDM clocking. This also turns off most of the rest of * the BDM device. This is good for EMC reasons. This option is not * incompatible with the memory protection option. */ wdebug(MCFDEBUG_CSR, MCFDEBUG_CSR_PSTCLK); #endif }
void __init config_BSP(char *commandp, int size) { mcf_setimr(MCFSIM_IMR_MASKALL); #if !defined(CONFIG_BOOTPARAM) /* Copy command line from FLASH to local buffer... */ memcpy(commandp, (char *) 0x4000, 4); if(strncmp(commandp, "kcl ", 4) == 0){ memcpy(commandp, (char *) 0x4004, size); commandp[size-1] = 0; } else { memset(commandp, 0, size); } #endif mcf_timervector = 64+32; mcf_profilevector = 64+33; mach_reset = coldfire_reset; #ifdef CONFIG_BDM_DISABLE /* * Disable the BDM clocking. This also turns off most of the rest of * the BDM device. This is good for EMC reasons. This option is not * incompatible with the memory protection option. */ wdebug(MCFDEBUG_CSR, MCFDEBUG_CSR_PSTCLK); #endif }
void __init config_BSP(char *commandp, int size) { #if !defined(CONFIG_BOOTPARAM) /* Copy command line from FLASH to local buffer... */ memcpy(commandp, (char *) 0x4000, 4); if(strncmp(commandp, "kcl ", 4) == 0){ memcpy(commandp, (char *) 0x4004, size); commandp[size-1] = 0; } else { memset(commandp, 0, size); } #endif mach_sched_init = hw_timer_init; m53xx_clk_init(); m53xx_uarts_init(); m53xx_fec_init(); m53xx_qspi_init(); #ifdef CONFIG_BDM_DISABLE /* * Disable the BDM clocking. This also turns off most of the rest of * the BDM device. This is good for EMC reasons. This option is not * incompatible with the memory protection option. */ wdebug(MCFDEBUG_CSR, MCFDEBUG_CSR_PSTCLK); #endif }
void __init config_BSP(char *commandp, int size) { mcf_setimr(MCFSIM_IMR_MASKALL); #if defined(CONFIG_NETtel) || defined(CONFIG_eLIA) || \ defined(CONFIG_SECUREEDGEMP3) || defined(CONFIG_CLEOPATRA) /* Copy command line from FLASH to local buffer... */ memcpy(commandp, (char *) 0xf0004000, size); commandp[size-1] = 0; /* Different timer setup - to prevent device clash */ mcf_timervector = 30; mcf_profilevector = 31; mcf_timerlevel = 6; #endif mach_reset = coldfire_reset; #ifdef CONFIG_BDM_DISABLE /* * Disable the BDM clocking. This also turns off most of the rest of * the BDM device. This is good for EMC reasons. This option is not * incompatible with the memory protection option. */ wdebug(MCFDEBUG_CSR, MCFDEBUG_CSR_PSTCLK); #endif }
void __init config_BSP(char *commandp, int size) { #if defined(CONFIG_NETtel) || \ defined(CONFIG_SECUREEDGEMP3) || defined(CONFIG_CLEOPATRA) /* Copy command line from FLASH to local buffer... */ memcpy(commandp, (char *) 0xf0004000, size); commandp[size-1] = 0; #endif mach_sched_init = hw_timer_init; /* Only support the external interrupts on their primary level */ mcf_mapirq2imr(25, MCFINTC_EINT1); mcf_mapirq2imr(27, MCFINTC_EINT3); mcf_mapirq2imr(29, MCFINTC_EINT5); mcf_mapirq2imr(31, MCFINTC_EINT7); #ifdef CONFIG_BDM_DISABLE /* * Disable the BDM clocking. This also turns off most of the rest of * the BDM device. This is good for EMC reasons. This option is not * incompatible with the memory protection option. */ wdebug(MCFDEBUG_CSR, MCFDEBUG_CSR_PSTCLK); #endif }