diff options
Diffstat (limited to 'bsps/shared/start/bspgetworkarea-default.c')
-rw-r--r-- | bsps/shared/start/bspgetworkarea-default.c | 46 |
1 files changed, 30 insertions, 16 deletions
diff --git a/bsps/shared/start/bspgetworkarea-default.c b/bsps/shared/start/bspgetworkarea-default.c index 18d4063089..a7c4c04ee7 100644 --- a/bsps/shared/start/bspgetworkarea-default.c +++ b/bsps/shared/start/bspgetworkarea-default.c @@ -1,7 +1,7 @@ /** * @file * - * This routine is an implementation of the bsp_work_area_initialize() + * This routine is an implementation of the _Memory_Get() * that can be used by all BSPs following linkcmds conventions * regarding heap, stack, and workspace allocation. */ @@ -33,23 +33,37 @@ extern char WorkAreaBase[]; * We may get the size information from U-Boot or the linker scripts. */ #ifdef USE_UBOOT - #include <bsp/u-boot.h> -#else - extern char RamBase[]; - extern char RamSize[]; -#endif +#include <bsp/u-boot.h> +#include <rtems/sysinit.h> + +static Memory_Area _Memory_Areas[ 1 ]; -void bsp_work_area_initialize(void) +static void bsp_memory_initialize( void ) { - uintptr_t work_base = (uintptr_t) WorkAreaBase; - uintptr_t ram_end; + char *end; + + end = (char *) bsp_uboot_board_info.bi_memstart + + bsp_uboot_board_info.bi_memsize; + _Memory_Initialize( &_Memory_Areas[ 0 ], WorkAreaBase, end ); +} - #ifdef USE_UBOOT - ram_end = (uintptr_t) bsp_uboot_board_info.bi_memstart + - bsp_uboot_board_info.bi_memsize; - #else - ram_end = (uintptr_t)RamBase + (uintptr_t)RamSize; - #endif +RTEMS_SYSINIT_ITEM( + bsp_memory_initialize, + RTEMS_SYSINIT_MEMORY, + RTEMS_SYSINIT_ORDER_MIDDLE +); +#else /* !USE_UBOOT */ +extern char RamEnd[]; - bsp_work_area_initialize_default( (void *) work_base, ram_end - work_base ); +static Memory_Area _Memory_Areas[] = { + MEMORY_INITIALIZER(WorkAreaBase, RamEnd) +}; +#endif /* USE_UBOOT */ + +static const Memory_Information _Memory_Information = + MEMORY_INFORMATION_INITIALIZER( _Memory_Areas ); + +const Memory_Information *_Memory_Get( void ) +{ + return &_Memory_Information; } |