diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2012-11-19 08:37:04 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2012-12-03 13:17:08 +0100 |
commit | f665f13ddd79ed78ca65c27a21fd87de6f7d1474 (patch) | |
tree | 7d6af8a9a618da5b7f7c71daa4329e9fb00cf5ab /c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/ppc_exc_naked.S | |
parent | bsps/powerpc: Add PPC_EXC_CONFIG_USE_FIXED_HANDLER (diff) | |
download | rtems-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.S | 12 |
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 */ |