about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--sysdeps/powerpc/bits/fenvinline.h16
2 files changed, 16 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 79a09044b7..585c9c2d2e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2016-03-08  Gabriel F. T. Gomes  <gftg@linux.vnet.ibm.com>
+
+	* sysdeps/powerpc/bits/fenvinline.h (feraiseexcept): Remove use of %s
+	operand modifier.
+	(feclearexcept): Likewise.
+
 2016-03-08  Carlos Eduardo Seo  <cseo@linux.vnet.ibm.com>
 
 	* sysdeps/powerpc/dl-procinfo.c (_dl_powerpc_cap_flags): Updated
diff --git a/sysdeps/powerpc/bits/fenvinline.h b/sysdeps/powerpc/bits/fenvinline.h
index 4a7b2af6aa..c283ede060 100644
--- a/sysdeps/powerpc/bits/fenvinline.h
+++ b/sysdeps/powerpc/bits/fenvinline.h
@@ -32,8 +32,10 @@
    warning when __excepts is not a constant.  Otherwise, they mean the
    same as just plain 'i'.  */
 
+#  if __GNUC_PREREQ(3, 4)
+
 /* Inline definition for feraiseexcept.  */
-#  define feraiseexcept(__excepts) \
+#   define feraiseexcept(__excepts) \
   (__extension__  ({ 							      \
     int __e = __excepts;						      \
     int __ret;								      \
@@ -42,8 +44,8 @@
         && __e != FE_INVALID)						      \
       {									      \
 	if (__e != 0)							      \
-	  __asm__ __volatile__ ("mtfsb1 %s0"				      \
-				: : "i#*X" (__builtin_ffs (__e)));	      \
+	  __asm__ __volatile__ ("mtfsb1 %0"				      \
+				: : "i#*X" (__builtin_clz (__e)));	      \
         __ret = 0;							      \
       }									      \
     else								      \
@@ -52,7 +54,7 @@
   }))
 
 /* Inline definition for feclearexcept.  */
-#  define feclearexcept(__excepts) \
+#   define feclearexcept(__excepts) \
   (__extension__  ({ 							      \
     int __e = __excepts;						      \
     int __ret;								      \
@@ -61,8 +63,8 @@
         && __e != FE_INVALID)						      \
       {									      \
 	if (__e != 0)							      \
-	  __asm__ __volatile__ ("mtfsb0 %s0"				      \
-				: : "i#*X" (__builtin_ffs (__e)));	      \
+	  __asm__ __volatile__ ("mtfsb0 %0"				      \
+				: : "i#*X" (__builtin_clz (__e)));	      \
         __ret = 0;							      \
       }									      \
     else								      \
@@ -70,6 +72,8 @@
     __ret;								      \
   }))
 
+#  endif /* __GNUC_PREREQ(3, 4).  */
+
 # endif /* !__NO_MATH_INLINES.  */
 
 #endif /* __GNUC__ && !_SOFT_FLOAT && !__NO_FPRS__ */