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