diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-08-10 18:36:30 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-08-12 19:08:19 +0200 |
commit | 8ae373235b316ff10c3b6f30ac1f2efed9bec011 (patch) | |
tree | f52d2ff1e1ba63036c7d1f5f34ba41db783d1f00 /cpukit/score/cpu/arm/arm_exc_interrupt.S | |
parent | bsp/altera-cyclone-v: Add RTC driver. (diff) | |
download | rtems-8ae373235b316ff10c3b6f30ac1f2efed9bec011.tar.bz2 |
arm: Add support for FPv4-SP floating point unit
This floating point unit is available in Cortex-M4 processors and
defined by ARMv7-M. This adds basic support for other VFP-D16 variants.
Diffstat (limited to 'cpukit/score/cpu/arm/arm_exc_interrupt.S')
-rw-r--r-- | cpukit/score/cpu/arm/arm_exc_interrupt.S | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/cpukit/score/cpu/arm/arm_exc_interrupt.S b/cpukit/score/cpu/arm/arm_exc_interrupt.S index e8026c869b..7930c32044 100644 --- a/cpukit/score/cpu/arm/arm_exc_interrupt.S +++ b/cpukit/score/cpu/arm/arm_exc_interrupt.S @@ -75,13 +75,15 @@ _ARMV4_Exception_interrupt: stmdb sp!, CONTEXT_LIST stmdb sp!, {SP_OF_INTERRUPTED_CONTEXT, lr} -#ifdef ARM_MULTILIB_VFP_D32 +#ifdef ARM_MULTILIB_VFP /* Save VFP context */ vmrs r0, FPSCR vstmdb sp!, {d0-d7} +#ifdef ARM_MULTILIB_VFP_D32 vstmdb sp!, {d16-d31} - stmdb sp!, {r0, r1} #endif + stmdb sp!, {r0, r1} +#endif /* ARM_MULTILIB_VFP */ /* Get per-CPU control of current processor */ GET_SELF_CPU_CONTROL SELF_CPU_CONTROL, r1 @@ -166,13 +168,15 @@ thread_dispatch_done: /* Switch to ARM instructions if necessary */ SWITCH_FROM_THUMB_TO_ARM -#ifdef ARM_MULTILIB_VFP_D32 +#ifdef ARM_MULTILIB_VFP /* Restore VFP context */ ldmia sp!, {r0, r1} +#ifdef ARM_MULTILIB_VFP_D32 vldmia sp!, {d16-d31} +#endif vldmia sp!, {d0-d7} vmsr FPSCR, r0 -#endif +#endif /* ARM_MULTILIB_VFP */ /* Restore SP_OF_INTERRUPTED_CONTEXT register and link register */ ldmia sp!, {SP_OF_INTERRUPTED_CONTEXT, lr} |