aboutsummaryrefslogtreecommitdiff
path: root/ports/sysdeps/arm
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2012-11-21 20:26:56 +0000
committerJoseph Myers <joseph@codesourcery.com>2012-11-21 20:26:56 +0000
commitad35f2dd750ed3e3f483409ef50b38ea19745002 (patch)
tree64d4f4be507055e344438505aee94c81c7ef3f81 /ports/sysdeps/arm
parent09e958ed423b99f97f5fd4b101964dfc9e3b32c0 (diff)
downloadglibc-ad35f2dd750ed3e3f483409ef50b38ea19745002.tar
glibc-ad35f2dd750ed3e3f483409ef50b38ea19745002.tar.gz
glibc-ad35f2dd750ed3e3f483409ef50b38ea19745002.tar.bz2
glibc-ad35f2dd750ed3e3f483409ef50b38ea19745002.zip
Make ARM fesetenv (FE_NOMASK_ENV) detect failure (bug 14866).
Diffstat (limited to 'ports/sysdeps/arm')
-rw-r--r--ports/sysdeps/arm/fesetenv.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/ports/sysdeps/arm/fesetenv.c b/ports/sysdeps/arm/fesetenv.c
index 2fad61da1a..e92f9f5ac8 100644
--- a/ports/sysdeps/arm/fesetenv.c
+++ b/ports/sysdeps/arm/fesetenv.c
@@ -40,6 +40,16 @@ __fesetenv (const fenv_t *envp)
_FPU_SETCW (temp);
+ if (envp == FE_NOMASK_ENV)
+ {
+ /* VFPv3 and VFPv4 do not support trapping exceptions, so
+ test whether the relevant bits were set and fail if
+ not. */
+ _FPU_GETCW (temp);
+ if ((temp & _FPU_IEEE) != _FPU_IEEE)
+ return 1;
+ }
+
/* Success. */
return 0;
}