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
