summaryrefslogtreecommitdiffstats
path: root/bsps/powerpc/shared/start/bspgetworkarea.c
diff options
context:
space:
mode:
Diffstat (limited to 'bsps/powerpc/shared/start/bspgetworkarea.c')
-rw-r--r--bsps/powerpc/shared/start/bspgetworkarea.c40
1 files changed, 40 insertions, 0 deletions
diff --git a/bsps/powerpc/shared/start/bspgetworkarea.c b/bsps/powerpc/shared/start/bspgetworkarea.c
new file mode 100644
index 0000000000..3c86905020
--- /dev/null
+++ b/bsps/powerpc/shared/start/bspgetworkarea.c
@@ -0,0 +1,40 @@
+/*
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ */
+
+#include <bsp.h>
+#include <bsp/bootcard.h>
+
+#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;
+
+ work_area = (uintptr_t)__rtems_end +
+ rtems_configuration_get_interrupt_stack_size();
+ work_size = (uintptr_t)BSP_mem_size - work_area;
+
+ 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
+);