summaryrefslogtreecommitdiff
path: root/sysdeps/i386/fpu/fegetenv.c
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/i386/fpu/fegetenv.c')
-rw-r--r--sysdeps/i386/fpu/fegetenv.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/sysdeps/i386/fpu/fegetenv.c b/sysdeps/i386/fpu/fegetenv.c
index 8dbdb5787a..8c45b6b8cb 100644
--- a/sysdeps/i386/fpu/fegetenv.c
+++ b/sysdeps/i386/fpu/fegetenv.c
@@ -18,6 +18,9 @@
<http://www.gnu.org/licenses/>. */
#include <fenv.h>
+#include <unistd.h>
+#include <ldsodefs.h>
+#include <dl-procinfo.h>
int
__fegetenv (fenv_t *envp)
@@ -28,6 +31,9 @@ __fegetenv (fenv_t *envp)
would block all exceptions. */
__asm__ ("fldenv %0" : : "m" (*envp));
+ if ((GLRO(dl_hwcap) & HWCAP_I386_XMM) != 0)
+ __asm__ ("stmxcsr %0" : "=m" (envp->__eip));
+
/* Success. */
return 0;
}