summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/ppc_exc_naked.S
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2012-11-19 08:37:04 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2012-12-03 13:17:08 +0100
commitf665f13ddd79ed78ca65c27a21fd87de6f7d1474 (patch)
tree7d6af8a9a618da5b7f7c71daa4329e9fb00cf5ab /c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/ppc_exc_naked.S
parentbsps/powerpc: Add PPC_EXC_CONFIG_USE_FIXED_HANDLER (diff)
downloadrtems-f665f13ddd79ed78ca65c27a21fd87de6f7d1474.tar.bz2
bsps/powerpc: Add PPC_EXC_CONFIG_BOOKE_ONLY
In combination with the PPC_EXC_CONFIG_USE_FIXED_HANDLER option this removes all dependencies on valid read-write data. The exception handling must be statically configured and all components reside in read-only sections.
Diffstat (limited to '')
-rw-r--r--c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/ppc_exc_naked.S12
1 files changed, 12 insertions, 0 deletions
diff --git a/c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/ppc_exc_naked.S b/c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/ppc_exc_naked.S
index c5df56f7a5..725b08713b 100644
--- a/c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/ppc_exc_naked.S
+++ b/c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/ppc_exc_naked.S
@@ -76,6 +76,8 @@ ppc_exc_wrap_naked:
mflr SCRATCH_REGISTER_0
stw SCRATCH_REGISTER_0, EXC_LR_OFFSET(r1)
+#ifndef PPC_EXC_CONFIG_BOOKE_ONLY
+
/* Load MSR bit mask */
lwz SCRATCH_REGISTER_0, ppc_exc_msr_bits@sdarel(r13)
@@ -88,6 +90,8 @@ ppc_exc_wrap_naked:
wrap_change_msr_done_naked:
+#endif /* PPC_EXC_CONFIG_BOOKE_ONLY */
+
/*
* Call high level exception handler
*/
@@ -127,11 +131,15 @@ wrap_change_msr_done_naked:
mtctr SCRATCH_REGISTER_0
bctrl
+#ifndef PPC_EXC_CONFIG_BOOKE_ONLY
+
/* Restore MSR? */
bne CR_MSR, wrap_restore_msr_naked
wrap_restore_msr_done_naked:
+#endif /* PPC_EXC_CONFIG_BOOKE_ONLY */
+
/* Restore XER and CTR */
lwz SCRATCH_REGISTER_0, EXC_XER_OFFSET(r1)
lwz SCRATCH_REGISTER_1, EXC_CTR_OFFSET(r1)
@@ -175,6 +183,8 @@ wrap_restore_msr_done_naked:
/* Return */
rfi
+#ifndef PPC_EXC_CONFIG_BOOKE_ONLY
+
wrap_change_msr_naked:
mfmsr SCRATCH_REGISTER_1
@@ -193,3 +203,5 @@ wrap_restore_msr_naked:
sync
isync
b wrap_restore_msr_done_naked
+
+#endif /* PPC_EXC_CONFIG_BOOKE_ONLY */