diff options
Diffstat (limited to 'sysdeps/arm/fsetexcptflg.c')
-rw-r--r-- | sysdeps/arm/fsetexcptflg.c | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/sysdeps/arm/fsetexcptflg.c b/sysdeps/arm/fsetexcptflg.c index 28810d3ec8..1a610ff912 100644 --- a/sysdeps/arm/fsetexcptflg.c +++ b/sysdeps/arm/fsetexcptflg.c @@ -25,22 +25,19 @@ int fesetexceptflag (const fexcept_t *flagp, int excepts) { - fpu_control_t fpscr, new_fpscr; + fpu_control_t fpscr; /* Fail if a VFP unit isn't present unless nothing needs to be done. */ if (!ARM_HAVE_VFP) return (excepts != 0); _FPU_GETCW (fpscr); - excepts &= FE_ALL_EXCEPT; /* Set the desired exception mask. */ - new_fpscr = fpscr & ~excepts; - new_fpscr |= *flagp & excepts; - - /* Write new exception flags if changed. */ - if (new_fpscr != fpscr) - _FPU_SETCW (new_fpscr); + fpscr &= ~(excepts & FE_ALL_EXCEPT); + fpscr |= (*flagp & excepts & FE_ALL_EXCEPT); + /* Save state back to the FPU. */ + _FPU_SETCW (fpscr); return 0; } |