summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2016-01-27 07:33:50 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2016-01-27 11:32:17 +0100
commitab8e821c9ee36dc5c3b429c2ca28e90b2c30432f (patch)
treee09edf42511921b96429960c9a9ccd270377ac1a
parentsptests/spsyslock01: Disable POSIX dependent parts (diff)
downloadrtems-ab8e821c9ee36dc5c3b429c2ca28e90b2c30432f.tar.bz2
bsps/powerpc: Fix startup
Do work area initialization after bsp_start() for BSPs using the shared PowerPC work area initialization. Close #2553.
-rw-r--r--c/src/lib/libbsp/powerpc/shared/startup/bspgetworkarea.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/powerpc/shared/startup/bspgetworkarea.c b/c/src/lib/libbsp/powerpc/shared/startup/bspgetworkarea.c
index 3e80663840..3c86905020 100644
--- a/c/src/lib/libbsp/powerpc/shared/startup/bspgetworkarea.c
+++ b/c/src/lib/libbsp/powerpc/shared/startup/bspgetworkarea.c
@@ -9,10 +9,20 @@
#include <libcpu/powerpc-utility.h>
+#include <rtems/sysinit.h>
+
LINKER_SYMBOL(__rtems_end)
void bsp_work_area_initialize(void)
{
+ /*
+ * Cannot do work area initialization before bsp_start(), since BSP_mem_size
+ * and MMU is not set up.
+ */
+}
+
+static void bsp_work_area_initialize_later(void)
+{
uintptr_t work_size;
uintptr_t work_area;
@@ -22,3 +32,9 @@ void bsp_work_area_initialize(void)
bsp_work_area_initialize_default((void *) work_area, work_size);
}
+
+RTEMS_SYSINIT_ITEM(
+ bsp_work_area_initialize_later,
+ RTEMS_SYSINIT_BSP_START,
+ RTEMS_SYSINIT_ORDER_LAST
+);