Author: sparky                       Date: Wed Oct  1 16:42:24 2008 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- Avoid clobbering call-saved cr registers in ppc hand written assembly
  (http://www.sourceware.org/ml/libc-hacker/2008-06/msg00001.html)

---- Files affected:
SOURCES:
   glibc-powerpc-abi_fix.patch (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: SOURCES/glibc-powerpc-abi_fix.patch
diff -u /dev/null SOURCES/glibc-powerpc-abi_fix.patch:1.1
--- /dev/null   Wed Oct  1 18:42:25 2008
+++ SOURCES/glibc-powerpc-abi_fix.patch Wed Oct  1 18:42:19 2008
@@ -0,0 +1,100 @@
+--- libc/sysdeps/powerpc/powerpc64/fpu/s_llround.S.jj  2008-04-17 
10:32:49.000000000 +0200
++++ libc/sysdeps/powerpc/powerpc64/fpu/s_llround.S     2008-06-12 
20:53:40.000000000 +0200
+@@ -1,5 +1,5 @@
+ /* llround function.  PowerPC64 version.
+-   Copyright (C) 2004, 2006, 2007 Free Software Foundation, Inc.
++   Copyright (C) 2004, 2006, 2007, 2008 Free Software Foundation, Inc.
+    This file is part of the GNU C Library.
+ 
+    The GNU C Library is free software; you can redistribute it and/or
+@@ -52,12 +52,12 @@ ENTRY (__llround)
+       fabs    fp2,fp1         /* Get the absolute value of x.  */
+       fsub    fp12,fp10,fp10  /* Compute 0.0 into fp12.  */
+       fcmpu   cr6,fp2,fp10    /* if |x| < 0.5  */
+-      fcmpu   cr4,fp2,fp9     /* if |x| >= 2^52  */
+-      fcmpu   cr3,fp1,fp12    /* x is negative? x < 0.0  */
++      fcmpu   cr7,fp2,fp9     /* if |x| >= 2^52  */
++      fcmpu   cr1,fp1,fp12    /* x is negative? x < 0.0  */
+       blt-    cr6,.Lretzero   /* 0.5 > x < -0.5 so just return 0.  */
+-      bge-    cr4,.Lnobias    /* 2^52 > x < -2^52 just convert with no bias.  
*/
++      bge-    cr7,.Lnobias    /* 2^52 > x < -2^52 just convert with no bias.  
*/
+       fadd    fp3,fp2,fp10    /* |x|+=0.5 bias to prepare to round.  */
+-      bge     cr3,.Lconvert   /* x is positive so don't negate x.  */
++      bge     cr1,.Lconvert   /* x is positive so don't negate x.  */
+       fnabs   fp3,fp3         /* -(|x|+=0.5)  */
+ .Lconvert:
+       fctidz  fp4,fp3         /* Convert to Integer double word round toward 
0.  */
+--- libc/sysdeps/powerpc/powerpc64/fpu/s_llroundf.S.jj 2008-04-17 
10:32:49.000000000 +0200
++++ libc/sysdeps/powerpc/powerpc64/fpu/s_llroundf.S    2008-06-12 
20:54:17.000000000 +0200
+@@ -1,5 +1,5 @@
+ /* llroundf function.  PowerPC64 version.
+-   Copyright (C) 2004, 2006, 2007 Free Software Foundation, Inc.
++   Copyright (C) 2004, 2006, 2007, 2008 Free Software Foundation, Inc.
+    This file is part of the GNU C Library.
+ 
+    The GNU C Library is free software; you can redistribute it and/or
+@@ -51,12 +51,12 @@ ENTRY (__llroundf)
+       fabs    fp2,fp1         /* Get the absolute value of x.  */
+       fsub    fp12,fp10,fp10  /* Compute 0.0 into fp12.  */
+       fcmpu   cr6,fp2,fp10    /* if |x| < 0.5  */
+-      fcmpu   cr4,fp2,fp9     /* if |x| >= 2^23  */
+-      fcmpu   cr3,fp1,fp12    /* x is negative? x < 0.0  */
++      fcmpu   cr7,fp2,fp9     /* if |x| >= 2^23  */
++      fcmpu   cr1,fp1,fp12    /* x is negative? x < 0.0  */
+       blt-    cr6,.Lretzero   /* 0.5 > x < -0.5 so just return 0.  */
+-      bge-    cr4,.Lnobias    /* 2^23 > x < -2^23 just convert with no bias.  
*/
++      bge-    cr7,.Lnobias    /* 2^23 > x < -2^23 just convert with no bias.  
*/
+       fadd    fp3,fp2,fp10    /* |x|+=0.5 bias to prepare to round.  */
+-      bge     cr3,.Lconvert   /* x is positive so don't negate x.  */
++      bge     cr1,.Lconvert   /* x is positive so don't negate x.  */
+       fnabs   fp3,fp3         /* -(|x|+=0.5)  */
+ .Lconvert:
+       fctidz  fp4,fp3         /* Convert to Integer double word round toward 
0.  */
+--- libc/sysdeps/powerpc/powerpc32/power4/fpu/s_llround.S.jj   2008-04-17 
10:32:49.000000000 +0200
++++ libc/sysdeps/powerpc/powerpc32/power4/fpu/s_llround.S      2008-06-12 
20:54:50.000000000 +0200
+@@ -1,5 +1,5 @@
+ /* llround function.  PowerPC32 on PowerPC64 version.
+-   Copyright (C) 2004, 2006, 2007 Free Software Foundation, Inc.
++   Copyright (C) 2004, 2006, 2007, 2008 Free Software Foundation, Inc.
+    This file is part of the GNU C Library.
+ 
+    The GNU C Library is free software; you can redistribute it and/or
+@@ -75,12 +75,12 @@ ENTRY (__llround)
+       fabs    fp2,fp1         /* Get the absolute value of x.  */
+       fsub    fp12,fp10,fp10  /* Compute 0.0 into fpr12.  */
+       fcmpu   cr6,fp2,fp10    /* if |x| < 0.5  */
+-      fcmpu   cr4,fp2,fp9     /* if |x| >= 2^52  */
+-      fcmpu   cr3,fp1,fp12    /* x is negative? x < 0.0  */
++      fcmpu   cr7,fp2,fp9     /* if |x| >= 2^52  */
++      fcmpu   cr1,fp1,fp12    /* x is negative? x < 0.0  */
+       blt-    cr6,.Lretzero   /* 0.5 > x < -0.5 so just return 0.  */
+-      bge-    cr4,.Lnobias    /* 2^52 > x < -2^52 just convert with no bias.  
*/
++      bge-    cr7,.Lnobias    /* 2^52 > x < -2^52 just convert with no bias.  
*/
+       fadd    fp3,fp2,fp10    /* |x|+=0.5 bias to prepare to round.  */
+-      bge     cr3,.Lconvert   /* x is positive so don't negate x.  */
++      bge     cr1,.Lconvert   /* x is positive so don't negate x.  */
+       fnabs   fp3,fp3         /* -(|x|+=0.5)  */
+ .Lconvert:
+       fctidz  fp4,fp3         /* Convert to Integer double word round toward 
0.  */
+--- libc/sysdeps/powerpc/powerpc32/fpu/s_lround.S.jj   2008-04-17 
10:32:49.000000000 +0200
++++ libc/sysdeps/powerpc/powerpc32/fpu/s_lround.S      2008-06-12 
20:55:16.000000000 +0200
+@@ -1,5 +1,5 @@
+ /* lround function.  PowerPC32 version.
+-   Copyright (C) 2004, 2006, 2007 Free Software Foundation, Inc.
++   Copyright (C) 2004, 2006, 2007, 2008 Free Software Foundation, Inc.
+    This file is part of the GNU C Library.
+ 
+    The GNU C Library is free software; you can redistribute it and/or
+@@ -65,10 +65,10 @@ ENTRY (__lround)
+       fabs    fp2, fp1        /* Get the absolute value of x.  */
+       fsub    fp12,fp10,fp10  /* Compute 0.0.  */
+       fcmpu   cr6, fp2, fp10  /* if |x| < 0.5  */
+-      fcmpu   cr3, fp1, fp12  /* x is negative? x < 0.0  */
++      fcmpu   cr7, fp1, fp12  /* x is negative? x < 0.0  */
+       blt-    cr6,.Lretzero
+       fadd    fp3,fp2,fp10    /* |x|+=0.5 bias to prepare to round.  */
+-      bge     cr3,.Lconvert   /* x is positive so don't negate x.  */
++      bge     cr7,.Lconvert   /* x is positive so don't negate x.  */
+       fnabs   fp3,fp3         /* -(|x|+=0.5)  */ 
+ .Lconvert:
+       fctiwz  fp4,fp3         /* Convert to Integer word lround toward 0.  */
================================================================
_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to