diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | sysdeps/sh/sh4/fpu/bits/fenv.h | 14 | ||||
-rw-r--r-- | sysdeps/sh/sh4/fpu/fegetround.c | 2 | ||||
-rw-r--r-- | sysdeps/sh/sh4/fpu/fesetround.c | 4 |
4 files changed, 14 insertions, 11 deletions
diff --git a/ChangeLog b/ChangeLog index 5a6747480f..b384ae845b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2012-06-09 Thomas Schwinge <thomas@codesourcery.com> + * sysdeps/sh/sh4/fpu/bits/fenv.h (__FE_UNDEFINED): Define. + (FE_UPWARD, FE_DOWNWARD): Don't define. + * sysdeps/sh/sh4/fpu/fegetround.c (fegetround): Adapt to that. + * sysdeps/sh/sh4/fpu/fesetround.c (fesetround): Likewise. + * sysdeps/sh/sh4/fpu/fegetenv.c (fegetenv): Do not re-write fpscr after reading it. * sysdeps/sh/sh4/fpu/fegetexcept.c (fegetexcept): Likewise. diff --git a/sysdeps/sh/sh4/fpu/bits/fenv.h b/sysdeps/sh/sh4/fpu/bits/fenv.h index 38c303ff2e..93159499d5 100644 --- a/sysdeps/sh/sh4/fpu/bits/fenv.h +++ b/sysdeps/sh/sh4/fpu/bits/fenv.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1999, 2000 Free Software Foundation, Inc. +/* Copyright (C) 1999-2012 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -39,19 +39,17 @@ enum #define FE_ALL_EXCEPT \ (FE_INEXACT | FE_DIVBYZERO | FE_UNDERFLOW | FE_OVERFLOW | FE_INVALID) -/* The SH FPU supports all of the four defined rounding modes. We - use again the bit positions in the FPU control word as the values - for the appropriate macros. */ +/* The SH FPU supports two of the four defined rounding modes: round to nearest + and round to zero. We use again the bit positions in the FPU control word + as the values for the appropriate macros. */ enum { + __FE_UNDEFINED = -1, + FE_TONEAREST = 0x0, #define FE_TONEAREST FE_TONEAREST FE_TOWARDZERO = 0x1, #define FE_TOWARDZERO FE_TOWARDZERO - FE_UPWARD = 0x2, -#define FE_UPWARD FE_UPWARD - FE_DOWNWARD = 0x3 -#define FE_DOWNWARD FE_DOWNWARD }; diff --git a/sysdeps/sh/sh4/fpu/fegetround.c b/sysdeps/sh/sh4/fpu/fegetround.c index 7368383114..adaeb8a858 100644 --- a/sysdeps/sh/sh4/fpu/fegetround.c +++ b/sysdeps/sh/sh4/fpu/fegetround.c @@ -28,5 +28,5 @@ fegetround (void) /* Get control word. */ _FPU_GETCW (cw); - return cw & 0x3; + return cw & 0x1; } diff --git a/sysdeps/sh/sh4/fpu/fesetround.c b/sysdeps/sh/sh4/fpu/fesetround.c index 82e13b68ee..91c159b40b 100644 --- a/sysdeps/sh/sh4/fpu/fesetround.c +++ b/sysdeps/sh/sh4/fpu/fesetround.c @@ -25,7 +25,7 @@ fesetround (int round) { fpu_control_t cw; - if ((round & ~0x3) != 0) + if ((round & ~0x1) != 0) /* ROUND is no valid rounding mode. */ return 1; @@ -33,7 +33,7 @@ fesetround (int round) _FPU_GETCW (cw); /* Set rounding bits. */ - cw &= ~0x3; + cw &= ~0x1; cw |= round; /* Set new state. */ _FPU_SETCW (cw); |