about summary refs log tree commit diff
path: root/sysdeps/mips/fpu/fesetenv.c
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/mips/fpu/fesetenv.c')
-rw-r--r--sysdeps/mips/fpu/fesetenv.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/sysdeps/mips/fpu/fesetenv.c b/sysdeps/mips/fpu/fesetenv.c
index 7ae688a6b1..ab90e4d022 100644
--- a/sysdeps/mips/fpu/fesetenv.c
+++ b/sysdeps/mips/fpu/fesetenv.c
@@ -25,6 +25,11 @@
 int
 __fesetenv (const fenv_t *envp)
 {
+  fpu_control_t cw;
+
+  /* Read first current state to flush fpu pipeline.  */
+  _FPU_GETCW (cw);
+
   if (envp == FE_DFL_ENV)
     _FPU_SETCW (_FPU_DEFAULT);
   else
@@ -33,6 +38,7 @@ __fesetenv (const fenv_t *envp)
   /* Success.  */
   return 0;
 }
+
 #if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
 strong_alias (__fesetenv, __old_fesetenv)
 compat_symbol (libm, __old_fesetenv, fesetenv, GLIBC_2_1);