summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/powerpc/shared/startup/bspgetworkarea.c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2012-08-09 16:48:00 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2012-10-25 14:54:06 +0200
commit47a3cd8f73780bad3eff5135f0eb58e8c98af91d (patch)
tree8acdfc6ebe5d596f9c6b974e6c460dc69e824e3c /c/src/lib/libbsp/powerpc/shared/startup/bspgetworkarea.c
parentscore: Append to free list in _Heap_Extend() (diff)
downloadrtems-47a3cd8f73780bad3eff5135f0eb58e8c98af91d.tar.bz2
score: Work area initialization API change
The work areas (RTEMS work space and C program heap) will be initialized now in a separate step and are no longer part of rtems_initialize_data_structures(). Initialization is performed with tables of Heap_Area entries. This allows usage of scattered memory areas present on various small scale micro-controllers. The sbrk() support API changes also. The bsp_sbrk_init() must now deal with a minimum size for the first memory chunk to take the configured work space size into account.
Diffstat (limited to 'c/src/lib/libbsp/powerpc/shared/startup/bspgetworkarea.c')
-rw-r--r--c/src/lib/libbsp/powerpc/shared/startup/bspgetworkarea.c51
1 files changed, 2 insertions, 49 deletions
diff --git a/c/src/lib/libbsp/powerpc/shared/startup/bspgetworkarea.c b/c/src/lib/libbsp/powerpc/shared/startup/bspgetworkarea.c
index 174cf68df1..02d47c8b98 100644
--- a/c/src/lib/libbsp/powerpc/shared/startup/bspgetworkarea.c
+++ b/c/src/lib/libbsp/powerpc/shared/startup/bspgetworkarea.c
@@ -4,28 +4,12 @@
* http://www.rtems.com/license/LICENSE.
*/
-/* #define BSP_GET_WORK_AREA_DEBUG */
-
#include <bsp.h>
#include <bsp/bootcard.h>
-#include <stdint.h>
-#ifdef BSP_GET_WORK_AREA_DEBUG
- #include <rtems/bspIo.h>
-#endif
extern void *__rtems_end;
-/*
- * 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_size;
uintptr_t work_area;
@@ -34,36 +18,5 @@ void bsp_get_work_area(
rtems_configuration_get_interrupt_stack_size();
work_size = (uintptr_t)BSP_mem_size - work_area;
- *work_area_start = (void *)work_area,
- *work_area_size = work_size;
- *heap_start = BSP_BOOTCARD_HEAP_USES_WORK_AREA;
- *heap_size = BSP_BOOTCARD_HEAP_SIZE_DEFAULT;
-
- /*
- * 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_area, work_size);
}
-