12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- #include <fenv.h>
- #include <fpu_control.h>
- #include "arm-features.h"
- int
- feenableexcept (int excepts)
- {
- fpu_control_t fpscr, new_fpscr, updated_fpscr;
-
- if (!ARM_HAVE_VFP)
- return -1;
- _FPU_GETCW (fpscr);
- excepts &= FE_ALL_EXCEPT;
- new_fpscr = fpscr | (excepts << FE_EXCEPT_SHIFT);
- if (new_fpscr != fpscr)
- {
- _FPU_SETCW (new_fpscr);
-
- _FPU_GETCW (updated_fpscr);
- if (new_fpscr & ~updated_fpscr)
- return -1;
- }
- return (fpscr >> FE_EXCEPT_SHIFT) & FE_ALL_EXCEPT;
- }
|