diff options
author | Wilco <wdijkstr@arm.com> | 2014-05-15 15:21:55 +0100 |
---|---|---|
committer | Marcus Shawcroft <marcus.shawcroft@arm.com> | 2014-05-15 15:23:27 +0100 |
commit | c0c08d02c82275353f5c556f935a1a01714d9d7f (patch) | |
tree | c850cda3edb23e165d7d96eb9d82fdc74b5554f1 /sysdeps/arm/setfpucw.c | |
parent | 1a2f40e5d14ed6450696feacf04fca5eeceae7ef (diff) | |
download | glibc-c0c08d02c82275353f5c556f935a1a01714d9d7f.tar.gz glibc-c0c08d02c82275353f5c556f935a1a01714d9d7f.tar.xz glibc-c0c08d02c82275353f5c556f935a1a01714d9d7f.zip |
ARM: Improve fenv implementation
Diffstat (limited to 'sysdeps/arm/setfpucw.c')
-rw-r--r-- | sysdeps/arm/setfpucw.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/sysdeps/arm/setfpucw.c b/sysdeps/arm/setfpucw.c index 7416377f9e..259b020f81 100644 --- a/sysdeps/arm/setfpucw.c +++ b/sysdeps/arm/setfpucw.c @@ -24,19 +24,20 @@ void __setfpucw (fpu_control_t set) { - fpu_control_t fpscr; + fpu_control_t fpscr, new_fpscr; /* Do nothing if a VFP unit isn't present. */ if (!ARM_HAVE_VFP) return; - /* Fetch the current control word. */ _FPU_GETCW (fpscr); /* Preserve the reserved bits, and set the rest as the user specified (or the default, if the user gave zero). */ - fpscr &= _FPU_RESERVED; - fpscr |= set & ~_FPU_RESERVED; + new_fpscr = fpscr & _FPU_RESERVED; + new_fpscr |= set & ~_FPU_RESERVED; - _FPU_SETCW (fpscr); + /* Write FPSCR if changed. */ + if (new_fpscr != fpscr) + _FPU_SETCW (fpscr); } |