summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/powerpc/gen83xx/startup/bspstart.c
diff options
context:
space:
mode:
authorThomas Doerfler <Thomas.Doerfler@embedded-brains.de>2008-07-24 14:52:55 +0000
committerThomas Doerfler <Thomas.Doerfler@embedded-brains.de>2008-07-24 14:52:55 +0000
commitd4886a069506e9c69086d28c578db80abc37976d (patch)
tree4f35ea3a64cb9e1b743a32ea93606af940cfc3d2 /c/src/lib/libbsp/powerpc/gen83xx/startup/bspstart.c
parentNew function rtems_interrupt_handler_iterate() (diff)
downloadrtems-d4886a069506e9c69086d28c578db80abc37976d.tar.bz2
Changed bsp_get_workarea() to bsp_get_work_area() and
added support for an optional separate heap area.
Diffstat (limited to 'c/src/lib/libbsp/powerpc/gen83xx/startup/bspstart.c')
-rw-r--r--c/src/lib/libbsp/powerpc/gen83xx/startup/bspstart.c37
1 files changed, 16 insertions, 21 deletions
diff --git a/c/src/lib/libbsp/powerpc/gen83xx/startup/bspstart.c b/c/src/lib/libbsp/powerpc/gen83xx/startup/bspstart.c
index cc8ade43bd..6d9a271fa8 100644
--- a/c/src/lib/libbsp/powerpc/gen83xx/startup/bspstart.c
+++ b/c/src/lib/libbsp/powerpc/gen83xx/startup/bspstart.c
@@ -29,6 +29,7 @@
#include <libcpu/powerpc-utility.h>
#include <bsp.h>
+#include <bsp/bootcard.h>
#include <bsp/irq-generic.h>
#include <bsp/ppc_exc_bspsupp.h>
@@ -51,8 +52,6 @@ unsigned int BSP_bus_frequency;
/* Configuration parameters for clock driver, ... */
uint32_t bsp_clicks_per_usec;
-static char *BSP_heap_start, *BSP_heap_end;
-
/*
* Use the shared implementations of the following routines.
* Look in rtems/c/src/lib/libbsp/shared/bsplibc.c.
@@ -87,8 +86,21 @@ void _BSP_Fatal_error( unsigned n)
void bsp_pretasking_hook( void)
{
- /* Initialize libc including the heap */
- bsp_libc_init( BSP_heap_start, BSP_heap_end - BSP_heap_start, 0);
+ /* Do noting */
+}
+
+void bsp_get_work_area( void **work_area_start, size_t *work_area_size, void **heap_start, size_t *heap_size)
+{
+#ifdef HAS_UBOOT
+ char *ram_end = (char *) mpc83xx_uboot_board_info.bi_memstart + mpc83xx_uboot_board_info.bi_memsize;
+#else /* HAS_UBOOT */
+ char *ram_end = bsp_ram_end;
+#endif /* HAS_UBOOT */
+
+ *work_area_start = bsp_work_area_start;
+ *work_area_size = ram_end - bsp_work_area_start;
+ *heap_start = BSP_BOOTCARD_HEAP_USES_WORK_AREA;
+ *heap_size = BSP_BOOTCARD_HEAP_SIZE_DEFAULT;
}
void bsp_start( void)
@@ -99,8 +111,6 @@ void bsp_start( void)
uint32_t interrupt_stack_start = (uint32_t) bsp_interrupt_stack_start;
uint32_t interrupt_stack_size = (uint32_t) bsp_interrupt_stack_size;
- size_t workspace_size = rtems_configuration_get_work_space_size();
-
/*
* Get CPU identification dynamically. Note that the get_ppc_cpu_type() function
* store the result in global variables so that it can be used latter...
@@ -123,21 +133,6 @@ void bsp_start( void)
rtems_cache_enable_data();
#endif
- /* Clear the workspace */
- Configuration.do_zero_of_workspace = 0;
- mpc83xx_zero_4( bsp_workspace_start, workspace_size);
-
- /* Workspace start */
- Configuration.work_space_start = bsp_workspace_start;
-
- /* Heap area */
- BSP_heap_start = (char *) Configuration.work_space_start + workspace_size;
-#ifdef HAS_UBOOT
- BSP_heap_end = mpc83xx_uboot_board_info.bi_memstart + mpc83xx_uboot_board_info.bi_memsize;
-#else /* HAS_UBOOT */
- BSP_heap_end = bsp_ram_end;
-#endif /* HAS_UBOOT */
-
/*
* This is evaluated during runtime, so it should be ok to set it
* before we initialize the drivers.