From 71c00c5663cc68b2c8aa4678b84518ebd85b0ef8 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Tue, 16 Sep 2008 19:01:46 +0000 Subject: 2008-09-16 Joel Sherrill * clock/clock.c, startup/bspstart.c, startup/linkcmds: Add use of bsp_get_work_area() in its own file and rely on BSP Framework to perform more initialization. * startup/bspgetworkarea.c: New file. --- c/src/lib/libbsp/c4x/c4xsim/ChangeLog | 7 ++++ c/src/lib/libbsp/c4x/c4xsim/clock/clock.c | 1 - .../lib/libbsp/c4x/c4xsim/startup/bspgetworkarea.c | 39 ++++++++++++++++++++++ c/src/lib/libbsp/c4x/c4xsim/startup/bspstart.c | 19 ----------- c/src/lib/libbsp/c4x/c4xsim/startup/linkcmds | 12 +++---- 5 files changed, 51 insertions(+), 27 deletions(-) create mode 100644 c/src/lib/libbsp/c4x/c4xsim/startup/bspgetworkarea.c (limited to 'c/src/lib/libbsp/c4x/c4xsim') diff --git a/c/src/lib/libbsp/c4x/c4xsim/ChangeLog b/c/src/lib/libbsp/c4x/c4xsim/ChangeLog index 674c9db066..1975bedf10 100644 --- a/c/src/lib/libbsp/c4x/c4xsim/ChangeLog +++ b/c/src/lib/libbsp/c4x/c4xsim/ChangeLog @@ -1,3 +1,10 @@ +2008-09-16 Joel Sherrill + + * clock/clock.c, startup/bspstart.c, startup/linkcmds: Add use of + bsp_get_work_area() in its own file and rely on BSP Framework to + perform more initialization. + * startup/bspgetworkarea.c: New file. + 2008-09-10 Joel Sherrill * include/bsp.h: Review of all bsp_cleanup() implementations. In this diff --git a/c/src/lib/libbsp/c4x/c4xsim/clock/clock.c b/c/src/lib/libbsp/c4x/c4xsim/clock/clock.c index c181061012..5262284548 100644 --- a/c/src/lib/libbsp/c4x/c4xsim/clock/clock.c +++ b/c/src/lib/libbsp/c4x/c4xsim/clock/clock.c @@ -15,7 +15,6 @@ #include #include -#include #include #include diff --git a/c/src/lib/libbsp/c4x/c4xsim/startup/bspgetworkarea.c b/c/src/lib/libbsp/c4x/c4xsim/startup/bspgetworkarea.c new file mode 100644 index 0000000000..e8c464a1da --- /dev/null +++ b/c/src/lib/libbsp/c4x/c4xsim/startup/bspgetworkarea.c @@ -0,0 +1,39 @@ +/* + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + * + * $Id$ + */ + +#include +#include +#include + +extern void *RamBase; +extern void *RamSize; +extern void *WorkSpaceStart; + +/* + * This method returns the base address and size of the area which + * is to be allocated between the RTEMS Workspace and the C Program + * Heap. + */ +void bsp_get_work_area( + void **work_area_start, + size_t *work_area_size, + void **heap_start, + size_t *heap_size +) +{ + uintptr_t size; + + size = (uintptr_t)&RamBase + (uintptr_t)&RamSize + - (uintptr_t)&WorkSpaceStart; + + *work_area_start = (void *)&WorkSpaceStart; + *work_area_size = size; + *heap_start = BSP_BOOTCARD_HEAP_USES_WORK_AREA; + *heap_size = BSP_BOOTCARD_HEAP_SIZE_DEFAULT; +} + diff --git a/c/src/lib/libbsp/c4x/c4xsim/startup/bspstart.c b/c/src/lib/libbsp/c4x/c4xsim/startup/bspstart.c index ceb6464df2..b5cd3e8a43 100644 --- a/c/src/lib/libbsp/c4x/c4xsim/startup/bspstart.c +++ b/c/src/lib/libbsp/c4x/c4xsim/startup/bspstart.c @@ -14,17 +14,12 @@ * $Id$ */ -#include - #include -#include -#include /* * Use the shared implementations of the following routines */ -void bsp_libc_init( void *, uint32_t, int ); extern void bsp_spurious_initialize(); /* @@ -36,11 +31,6 @@ extern void bsp_spurious_initialize(); void bsp_pretasking_hook(void) { - extern void *_HeapStart; - extern uint32_t _HeapSize; - - bsp_libc_init(&_HeapStart, (unsigned int) &_HeapSize, 0); - bsp_spurious_initialize(); } @@ -58,15 +48,6 @@ extern void C4X_BSP_output_char(char c); void bsp_start( void ) { - extern void *_WorkspaceBase; - extern uint32_t _WorkspaceMax; - - Configuration.work_space_start = (void *)&_WorkspaceBase; - /* XXX check to see if satisfying small memory model */ - - if ( rtems_configuration_get_work_space_size() > (int) &_WorkspaceMax ) - rtems_fatal_error_occurred( 0x43218765 ); - BSP_output_char = C4X_BSP_output_char; BSP_poll_char = (BSP_polling_getchar_function_type) NULL; } diff --git a/c/src/lib/libbsp/c4x/c4xsim/startup/linkcmds b/c/src/lib/libbsp/c4x/c4xsim/startup/linkcmds index 02e4f5eb17..2526b64663 100644 --- a/c/src/lib/libbsp/c4x/c4xsim/startup/linkcmds +++ b/c/src/lib/libbsp/c4x/c4xsim/startup/linkcmds @@ -1,9 +1,10 @@ /* OUTPUT_FORMAT("coff-c4x") */ - __SYSMEM_SIZE = DEFINED(__SYSMEM_SIZE) ? __SYSMEM_SIZE : 0x4000; __STACK_SIZE = DEFINED(__STACK_SIZE) ? __STACK_SIZE : 0x1000; - __HeapSize = DEFINED(__HeapSize) ? __HeapSize : 0x10000; - __WorkspaceMax = DEFINED(__WorkspaceMax) ? __WorkspaceMax : 256K; __ClockFrequency = DEFINED(_ClockFrequency) ? _ClockFrequency : 50; + +_RamBase = DEFINED(_RamBase) ? _RamBase : 0x0; +_RamSize = DEFINED(_RamSize) ? _RamSize : 4M; + ENTRY(_start) SECTIONS { @@ -64,10 +65,7 @@ SECTIONS } .heap : { - __HeapStart = .; - . += __HeapSize; - __WorkspaceBase = .; - . += __WorkspaceMax; + _WorkspaceBase = .; } /* .sysmem : -- cgit v1.2.3