SOURCES: glibc-powerpc-abi_fix.patch (NEW) - Avoid clobbering call-saved cr...
sparky
sparky at pld-linux.org
Wed Oct 1 18:42:24 CEST 2008
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. */
================================================================
More information about the pld-cvs-commit
mailing list