summaryrefslogtreecommitdiffstats
path: root/bsps/shared/start/bspgetworkarea-default.c
diff options
context:
space:
mode:
Diffstat (limited to 'bsps/shared/start/bspgetworkarea-default.c')
-rw-r--r--bsps/shared/start/bspgetworkarea-default.c46
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;
}