diff options
author | Thomas Doerfler <Thomas.Doerfler@embedded-brains.de> | 2008-07-24 14:52:55 +0000 |
---|---|---|
committer | Thomas Doerfler <Thomas.Doerfler@embedded-brains.de> | 2008-07-24 14:52:55 +0000 |
commit | d4886a069506e9c69086d28c578db80abc37976d (patch) | |
tree | 4f35ea3a64cb9e1b743a32ea93606af940cfc3d2 /c/src/lib/libbsp/powerpc/mpc55xxevb/startup/bspstart.c | |
parent | New function rtems_interrupt_handler_iterate() (diff) | |
download | rtems-d4886a069506e9c69086d28c578db80abc37976d.tar.bz2 |
Changed bsp_get_workarea() to bsp_get_work_area() and
added support for an optional separate heap area.
Diffstat (limited to 'c/src/lib/libbsp/powerpc/mpc55xxevb/startup/bspstart.c')
-rw-r--r-- | c/src/lib/libbsp/powerpc/mpc55xxevb/startup/bspstart.c | 41 |
1 files changed, 13 insertions, 28 deletions
diff --git a/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/bspstart.c b/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/bspstart.c index 45d7fd9617..84891d9fb1 100644 --- a/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/bspstart.c +++ b/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/bspstart.c @@ -29,6 +29,7 @@ #include <libcpu/powerpc-utility.h> #include <bsp.h> +#include <bsp/bootcard.h> #include <bsp/irq.h> #include <bsp/irq-generic.h> #include <bsp/ppc_exc_bspsupp.h> @@ -78,20 +79,19 @@ void _BSP_Fatal_error( unsigned n) } } -void bsp_pretasking_hook() +void bsp_get_work_area( void **work_area_start, size_t *work_area_size, void **heap_start, size_t *heap_size) { - uint32_t heap_start = bsp_external_ram_start; - uint32_t heap_size = bsp_external_ram_size; - - bsp_libc_init( heap_start, heap_size, 0); + *work_area_start = bsp_section_bss_end; + *work_area_size = bsp_ram_end - 2 * MPC55XX_INTERRUPT_STACK_SIZE - bsp_section_bss_end; + *heap_start = bsp_external_ram_start; + *heap_size = (size_t) bsp_external_ram_size; +} +void bsp_pretasking_hook() +{ #ifdef STACK_CHECKER_ON Stack_check_Initialize(); #endif - -#ifdef RTEMS_DEBUG - rtems_debug_enable( RTEMS_DEBUG_ALL_MASK ); -#endif } void bsp_predriver_hook() @@ -167,12 +167,8 @@ void bsp_start(void) ppc_cpu_id_t myCpu; ppc_cpu_revision_t myCpuRevision; - uint32_t ram_start = bsp_ram_start; - uint32_t ram_end = bsp_ram_end; - uint32_t interrupt_stack_start = ram_end - 2 * MPC55XX_INTERRUPT_STACK_SIZE; + uint32_t interrupt_stack_start = bsp_ram_end - 2 * MPC55XX_INTERRUPT_STACK_SIZE; uint32_t interrupt_stack_size = MPC55XX_INTERRUPT_STACK_SIZE; - uint32_t work_space_start = bsp_section_bss_end; - uint32_t work_space_end = work_space_start + rtems_configuration_get_work_space_size(); /* ESCI pad configuration */ SIU.PCR [89].R = 0x400; @@ -180,24 +176,13 @@ void bsp_start(void) DEBUG_PRINT( "BSP start ...\n"); - /* Memory layout */ - - Configuration.work_space_start = work_space_start; - DEBUG_PRINT( "System clock : %i\n", mpc55xx_get_system_clock()); - DEBUG_PRINT( "Memory start : 0x%08x\n", ram_start); - DEBUG_PRINT( "Memory end : 0x%08x\n", ram_end); - DEBUG_PRINT( "Memory size : 0x%08x\n", ram_end - ram_start); - DEBUG_PRINT( "Work space start : 0x%08x\n", work_space_start); - DEBUG_PRINT( "Work space end : 0x%08x\n", work_space_end); - DEBUG_PRINT( "Work space size : 0x%08x\n", work_space_end - work_space_start); + DEBUG_PRINT( "Memory start : 0x%08x\n", bsp_ram_start); + DEBUG_PRINT( "Memory end : 0x%08x\n", bsp_ram_end); + DEBUG_PRINT( "Memory size : 0x%08x\n", bsp_ram_end - bsp_ram_start); DEBUG_PRINT( "Interrupt stack start : 0x%08x\n", interrupt_stack_start); DEBUG_PRINT( "Interrupt stack end : 0x%08x\n", interrupt_stack_start + interrupt_stack_size); DEBUG_PRINT( "Interrupt stack size : 0x%08x\n", interrupt_stack_size); - - if (work_space_end > interrupt_stack_start) { - BSP_panic( "Not enough memory for the work space"); - } /* * Get CPU identification dynamically. Note that the get_ppc_cpu_type() |