diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2015-12-09 08:05:57 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2015-12-10 08:32:36 +0100 |
commit | 37030e38c61c0d0a8b0742af75f115bda779c46d (patch) | |
tree | d71cd94cf9d534fd606fffd50a0f3256cc822be9 /c/src/lib/libbsp/i386/pc386/startup/bspgetworkarea.c | |
parent | bsps/sparc: Use default bsp_pretasking_hook() (diff) | |
download | rtems-37030e38c61c0d0a8b0742af75f115bda779c46d.tar.bz2 |
bsps: Call bsp_work_area_initialize() early
Call bsp_work_area_initialize() before bsp_start(). This allows
bsp_start() to use malloc() etc. which is beneficial for systems with a
plug-and-play hardware enumeration.
Update #2408.
Diffstat (limited to 'c/src/lib/libbsp/i386/pc386/startup/bspgetworkarea.c')
-rw-r--r-- | c/src/lib/libbsp/i386/pc386/startup/bspgetworkarea.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/c/src/lib/libbsp/i386/pc386/startup/bspgetworkarea.c b/c/src/lib/libbsp/i386/pc386/startup/bspgetworkarea.c index 2e4bf5ca34..5207bac6c1 100644 --- a/c/src/lib/libbsp/i386/pc386/startup/bspgetworkarea.c +++ b/c/src/lib/libbsp/i386/pc386/startup/bspgetworkarea.c @@ -52,7 +52,7 @@ uint32_t bsp_mem_size = 0; /* Size of stack used during initialization. Defined in 'start.s'. */ extern uint32_t _stack_size; -void bsp_size_memory(void) +static void bsp_size_memory(void) { uintptr_t topAddr; @@ -126,8 +126,15 @@ void bsp_size_memory(void) void bsp_work_area_initialize(void) { - void *area_start = (void *) rtemsWorkAreaStart; - uintptr_t area_size = (uintptr_t) bsp_mem_size - (uintptr_t) rtemsWorkAreaStart; + void *area_start; + uintptr_t area_size; + /* + * We need to determine how much memory there is in the system. + */ + bsp_size_memory(); + + area_start = (void *) rtemsWorkAreaStart; + area_size = (uintptr_t) bsp_mem_size - (uintptr_t) rtemsWorkAreaStart; bsp_work_area_initialize_default( area_start, area_size ); } |