diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-05-08 09:30:31 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-05-10 12:10:14 +0200 |
commit | cfd8d7a3d73a10ae7cdbbfe5eb39839c46a5c77e (patch) | |
tree | 5b694eb680b61129908a274b218d5f67fa0d34d6 /cpukit/score/cpu/arm/arm-context-volatile-clobber.S | |
parent | arm: Simplify architecture selection (diff) | |
download | rtems-cfd8d7a3d73a10ae7cdbbfe5eb39839c46a5c77e.tar.bz2 |
arm: Support VFP-D32 and Neon
Diffstat (limited to 'cpukit/score/cpu/arm/arm-context-volatile-clobber.S')
-rw-r--r-- | cpukit/score/cpu/arm/arm-context-volatile-clobber.S | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/cpukit/score/cpu/arm/arm-context-volatile-clobber.S b/cpukit/score/cpu/arm/arm-context-volatile-clobber.S index b79e570a79..3b1011dde1 100644 --- a/cpukit/score/cpu/arm/arm-context-volatile-clobber.S +++ b/cpukit/score/cpu/arm/arm-context-volatile-clobber.S @@ -27,6 +27,46 @@ FUNCTION_THUMB_ENTRY(_CPU_Context_volatile_clobber) mov \reg, r0 .endm +#ifdef ARM_MULTILIB_VFP_D32 + vmrs r1, FPSCR + movs r2, #0x001f + movt r2, #0xf800 + bic r1, r1, r2 + and r2, r2, r0 + orr r1, r1, r2 + vmsr FPSCR, r1 + +.macro clobber_vfp_register reg + sub r0, r0, #1 + vmov \reg, r0, r0 +.endm + + clobber_vfp_register d0 + clobber_vfp_register d1 + clobber_vfp_register d2 + clobber_vfp_register d3 + clobber_vfp_register d4 + clobber_vfp_register d5 + clobber_vfp_register d6 + clobber_vfp_register d7 + clobber_vfp_register d16 + clobber_vfp_register d17 + clobber_vfp_register d18 + clobber_vfp_register d19 + clobber_vfp_register d20 + clobber_vfp_register d21 + clobber_vfp_register d22 + clobber_vfp_register d23 + clobber_vfp_register d24 + clobber_vfp_register d25 + clobber_vfp_register d26 + clobber_vfp_register d27 + clobber_vfp_register d28 + clobber_vfp_register d29 + clobber_vfp_register d30 + clobber_vfp_register d31 +#endif + clobber_register r1 clobber_register r2 clobber_register r3 |