summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/shared/bspgetworkarea.c
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/lib/libbsp/shared/bspgetworkarea.c')
-rw-r--r--c/src/lib/libbsp/shared/bspgetworkarea.c54
1 files changed, 4 insertions, 50 deletions
diff --git a/c/src/lib/libbsp/shared/bspgetworkarea.c b/c/src/lib/libbsp/shared/bspgetworkarea.c
index a2ad2e93ce..4122c9b358 100644
--- a/c/src/lib/libbsp/shared/bspgetworkarea.c
+++ b/c/src/lib/libbsp/shared/bspgetworkarea.c
@@ -1,25 +1,20 @@
/*
- * This routine is an implementation of the bsp_get_work_area()
+ * This routine is an implementation of the bsp_work_area_initialize()
* that can be used by all BSPs following linkcmds conventions
* regarding heap, stack, and workspace allocation.
*
* COPYRIGHT (c) 1989-2008.
* On-Line Applications Research Corporation (OAR).
*
- * Copyright (c) 2011 embedded brains GmbH.
+ * Copyright (c) 2011-2012 embedded brains GmbH.
*
* 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.
*/
-/* #define BSP_GET_WORK_AREA_DEBUG */
-
#include <bsp.h>
#include <bsp/bootcard.h>
-#ifdef BSP_GET_WORK_AREA_DEBUG
- #include <rtems/bspIo.h>
-#endif
#ifdef BSP_INTERRUPT_STACK_AT_WORK_AREA_BEGIN
#include <rtems/config.h>
#endif
@@ -32,7 +27,6 @@
* These are provided by the linkcmds for ALL of the BSPs which use this file.
*/
extern char WorkAreaBase[];
-extern char HeapSize[];
/*
* We may get the size information from U-Boot or the linker scripts.
@@ -44,17 +38,7 @@ extern char HeapSize[];
extern char RamSize[];
#endif
-/*
- * 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,
- uintptr_t *work_area_size,
- void **heap_start,
- uintptr_t *heap_size
-)
+void bsp_work_area_initialize(void)
{
uintptr_t work_base = (uintptr_t) WorkAreaBase;
uintptr_t ram_end;
@@ -70,35 +54,5 @@ void bsp_get_work_area(
work_base += Configuration.interrupt_stack_size;
#endif
- *work_area_start = (void *) work_base;
- *work_area_size = ram_end - work_base;
- *heap_start = BSP_BOOTCARD_HEAP_USES_WORK_AREA;
- *heap_size = (uintptr_t) HeapSize;
-
- /*
- * The following may be helpful in debugging what goes wrong when
- * you are allocating the Work Area in a new BSP.
- */
- #ifdef BSP_GET_WORK_AREA_DEBUG
- {
- void *sp = __builtin_frame_address(0);
- void *end = *work_area_start + *work_area_size;
- printk(
- "work_area_start = 0x%p\n"
- "work_area_size = %d 0x%08x\n"
- "end = 0x%p\n"
- "heap_start = 0x%p\n"
- "heap_size = %d\n"
- "current stack pointer = 0x%p%s\n",
- *work_area_start,
- *work_area_size, /* decimal */
- *work_area_size, /* hexadecimal */
- end,
- *heap_start,
- *heap_size,
- sp,
- ((sp >= *work_area_start && sp <= end) ? " OVERLAPS!" : "")
- );
- }
- #endif
+ bsp_work_area_initialize_default( (void *) work_base, ram_end - work_base );
}