diff options
author | Adhemerval Zanella <azanella@linux.vnet.ibm.com> | 2015-01-27 06:37:10 -0600 |
---|---|---|
committer | Adhemerval Zanella <azanella@linux.vnet.ibm.com> | 2015-01-28 05:59:21 -0500 |
commit | d4d0ecb24474928b9dfcce6c3f09694fab2400b6 (patch) | |
tree | fb1446f69193dbf2b07a1bc52c42dac10dafd3a8 | |
parent | 08cee2a464f614a6d4275b5af6c52481f1aa16e6 (diff) | |
download | glibc-d4d0ecb24474928b9dfcce6c3f09694fab2400b6.zip glibc-d4d0ecb24474928b9dfcce6c3f09694fab2400b6.tar.gz glibc-d4d0ecb24474928b9dfcce6c3f09694fab2400b6.tar.bz2 |
powerpc: Fix fesetexceptflag [BZ#17885]
This patch fixes a bug introduced by 18f2945ae9216cfc, where it optimizes
the FPSCR set by just issuing a mtfs instruction if new flag is different
from older one. The issue is a typo, where the new flag should the the
new value, instead of the old one.
It fixes BZ#17885.
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | NEWS | 2 | ||||
-rw-r--r-- | sysdeps/powerpc/fpu/fsetexcptflg.c | 2 |
3 files changed, 6 insertions, 2 deletions
@@ -1,5 +1,9 @@ 2015-01-28 Adhemerval Zanellla <azanella@linux.vnet.ibm.com> + [BZ #17885] + * sysdeps/powerpc/fpu/fsetexcptflg.c (__fesetexceptflag): Fix correct + value to set as new flag. + [BZ #16576] * sysdeps/powerpc/fpu/math_private.h [__CPU_HAS_FSQRT]: Remove define and use _ARCH_PPCSQ instead. @@ -18,7 +18,7 @@ Version 2.21 17657, 17658, 17664, 17665, 17668, 17682, 17702, 17717, 17719, 17722, 17723, 17724, 17725, 17732, 17733, 17744, 17745, 17746, 17747, 17748, 17775, 17777, 17780, 17781, 17782, 17791, 17793, 17796, 17797, 17803, - 17806, 17834, 17844, 17848, 17868, 17869, 17870 + 17806, 17834, 17844, 17848, 17868, 17869, 17870, 17885 * A new semaphore algorithm has been implemented in generic C code for all machines. Previous custom assembly implementations of semaphore were diff --git a/sysdeps/powerpc/fpu/fsetexcptflg.c b/sysdeps/powerpc/fpu/fsetexcptflg.c index 5d99bf2..836d839 100644 --- a/sysdeps/powerpc/fpu/fsetexcptflg.c +++ b/sysdeps/powerpc/fpu/fsetexcptflg.c @@ -40,7 +40,7 @@ __fesetexceptflag (const fexcept_t *flagp, int excepts) This may cause floating-point exceptions if the restored state requests it. */ if (n.l != u.l) - fesetenv_register (u.fenv); + fesetenv_register (n.fenv); /* Deal with FE_INVALID_SOFTWARE not being implemented on some chips. */ if (flag & FE_INVALID) |