summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/powerpc/mpc55xxevb
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2012-11-19 09:02:12 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2012-12-03 13:17:11 +0100
commit3ce66aabb5be97ee0bd216f735e224c317d9667e (patch)
treeda6722c51d378cdda5370fd46ff2e3dd8e40b27c /c/src/lib/libbsp/powerpc/mpc55xxevb
parentbsp/mpc55xx: Documentation (diff)
downloadrtems-3ce66aabb5be97ee0bd216f735e224c317d9667e.tar.bz2
bsp/mpc55xx: Set PPC_EXC_CONFIG_USE_FIXED_HANDLER
Diffstat (limited to 'c/src/lib/libbsp/powerpc/mpc55xxevb')
-rw-r--r--c/src/lib/libbsp/powerpc/mpc55xxevb/Makefile.am1
-rw-r--r--c/src/lib/libbsp/powerpc/mpc55xxevb/configure.ac4
-rw-r--r--c/src/lib/libbsp/powerpc/mpc55xxevb/startup/bspstart.c4
-rw-r--r--c/src/lib/libbsp/powerpc/mpc55xxevb/startup/exc-vector-base.S18
4 files changed, 26 insertions, 1 deletions
diff --git a/c/src/lib/libbsp/powerpc/mpc55xxevb/Makefile.am b/c/src/lib/libbsp/powerpc/mpc55xxevb/Makefile.am
index 44e1997df4..fdec13641d 100644
--- a/c/src/lib/libbsp/powerpc/mpc55xxevb/Makefile.am
+++ b/c/src/lib/libbsp/powerpc/mpc55xxevb/Makefile.am
@@ -69,6 +69,7 @@ libbsp_a_SOURCES += ../../shared/src/stackalloc.c
libbsp_a_SOURCES += ../shared/src/bsp-start-zero.S
libbsp_a_SOURCES += ../shared/src/memcpy.c
libbsp_a_SOURCES += ../shared/src/tictac.c
+libbsp_a_SOURCES += ../shared/src/ppc-exc-handler-table.c
libbsp_a_SOURCES += startup/bspstart.c
libbsp_a_SOURCES += startup/bspworkareainit.c
libbsp_a_SOURCES += startup/exc-vector-base.S
diff --git a/c/src/lib/libbsp/powerpc/mpc55xxevb/configure.ac b/c/src/lib/libbsp/powerpc/mpc55xxevb/configure.ac
index 091f0b2348..38fce34a6b 100644
--- a/c/src/lib/libbsp/powerpc/mpc55xxevb/configure.ac
+++ b/c/src/lib/libbsp/powerpc/mpc55xxevb/configure.ac
@@ -32,6 +32,10 @@ RTEMS_BSPOPTS_SET_INSTRUCTION_CACHE_ENABLED([gwlcfm],[])
RTEMS_BSPOPTS_SET_INSTRUCTION_CACHE_ENABLED([*],[1])
RTEMS_BSPOPTS_HELP_INSTRUCTION_CACHE_ENABLED
+RTEMS_BSPOPTS_SET([PPC_EXC_CONFIG_USE_FIXED_HANDLER],[*],[1])
+RTEMS_BSPOPTS_HELP([PPC_EXC_CONFIG_USE_FIXED_HANDLER],
+[use fixed high-level exception handler])
+
RTEMS_BSPOPTS_SET([BSP_INTERRUPT_HANDLER_TABLE_SIZE],[mpc5643l*],[127])
RTEMS_BSPOPTS_SET([BSP_INTERRUPT_HANDLER_TABLE_SIZE],[mpc5566*],[127])
RTEMS_BSPOPTS_SET([BSP_INTERRUPT_HANDLER_TABLE_SIZE],[mpc5674f*],[255])
diff --git a/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/bspstart.c b/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/bspstart.c
index b80e24d399..d0c3405298 100644
--- a/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/bspstart.c
+++ b/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/bspstart.c
@@ -108,7 +108,9 @@ void bsp_start(void)
(uintptr_t) bsp_section_work_begin,
rtems_configuration_get_interrupt_stack_size()
);
- ppc_exc_set_handler(ASM_ALIGN_VECTOR, ppc_exc_alignment_handler);
+ #ifndef PPC_EXC_CONFIG_USE_FIXED_HANDLER
+ ppc_exc_set_handler(ASM_ALIGN_VECTOR, ppc_exc_alignment_handler);
+ #endif
/* Initialize interrupts */
bsp_interrupt_initialize();
diff --git a/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/exc-vector-base.S b/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/exc-vector-base.S
index ed8dcf3ba3..71c7d48da8 100644
--- a/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/exc-vector-base.S
+++ b/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/exc-vector-base.S
@@ -59,9 +59,15 @@ mpc55xx_exc_vector_base:
li r4, 4
b ppc_exc_wrap_nopush_std
stwu r1, -PPC_EXC_MINIMAL_FRAME_SIZE(r1)
+#ifndef PPC_EXC_CONFIG_USE_FIXED_HANDLER
stw r4, PPC_EXC_VECTOR_PROLOGUE_OFFSET(r1)
li r4, -32763
+#endif
b ppc_exc_wrap_async_normal
+#ifdef PPC_EXC_CONFIG_USE_FIXED_HANDLER
+ nop
+ nop
+#endif
stwu r1, -EXC_GENERIC_SIZE(r1)
stw r4, GPR4_OFFSET(r1)
li r4, 6
@@ -83,13 +89,25 @@ mpc55xx_exc_vector_base:
li r4, 24
b ppc_exc_wrap_nopush_std
stwu r1, -PPC_EXC_MINIMAL_FRAME_SIZE(r1)
+#ifndef PPC_EXC_CONFIG_USE_FIXED_HANDLER
stw r4, PPC_EXC_VECTOR_PROLOGUE_OFFSET(r1)
li r4, -32752
+#endif
b ppc_exc_wrap_async_normal
+#ifdef PPC_EXC_CONFIG_USE_FIXED_HANDLER
+ nop
+ nop
+#endif
stwu r1, -PPC_EXC_MINIMAL_FRAME_SIZE(r1)
+#ifndef PPC_EXC_CONFIG_USE_FIXED_HANDLER
stw r4, PPC_EXC_VECTOR_PROLOGUE_OFFSET(r1)
li r4, -32749
+#endif
b ppc_exc_wrap_async_normal
+#ifdef PPC_EXC_CONFIG_USE_FIXED_HANDLER
+ nop
+ nop
+#endif
stw r1, ppc_exc_lock_crit@sdarel(r13)
stw r4, ppc_exc_vector_register_crit@sdarel(r13)
li r4, -32748