diff options
Diffstat (limited to 'sysdeps/arm/fesetround.c')
-rw-r--r-- | sysdeps/arm/fesetround.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/sysdeps/arm/fesetround.c b/sysdeps/arm/fesetround.c index f52c50aec4..d1b92dc255 100644 --- a/sysdeps/arm/fesetround.c +++ b/sysdeps/arm/fesetround.c @@ -16,22 +16,28 @@ License along with the GNU C Library. If not, see <http://www.gnu.org/licenses/>. */ -#include <fenv_private.h> +#include <fenv.h> +#include <fpu_control.h> #include <arm-features.h> int fesetround (int round) { + fpu_control_t fpscr; + /* FE_TONEAREST is the only supported rounding mode if a VFP unit isn't present. */ if (!ARM_HAVE_VFP) return (round == FE_TONEAREST) ? 0 : 1; + /* Fail if the rounding mode is not valid. */ if (round & ~FE_TOWARDZERO) return 1; - libc_fesetround_vfp (round); + _FPU_GETCW (fpscr); + fpscr = (fpscr & ~FE_TOWARDZERO) | round; + _FPU_SETCW (fpscr); return 0; } |