SOURCES: glibc-sparc-softfp-gcc.patch (NEW) - recent gcc versions ...

qboosh qboosh at pld-linux.org
Sat Dec 30 21:26:06 CET 2006


Author: qboosh                       Date: Sat Dec 30 20:26:06 2006 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- recent gcc versions allow up to 30 asm parameters and don't like to clobber register reserved for variable

---- Files affected:
SOURCES:
   glibc-sparc-softfp-gcc.patch (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: SOURCES/glibc-sparc-softfp-gcc.patch
diff -u /dev/null SOURCES/glibc-sparc-softfp-gcc.patch:1.1
--- /dev/null	Sat Dec 30 21:26:06 2006
+++ SOURCES/glibc-sparc-softfp-gcc.patch	Sat Dec 30 21:26:00 2006
@@ -0,0 +1,69 @@
+--- glibc-2.5/sysdeps/sparc/sparc32/soft-fp/sfp-machine.h.orig	2006-01-14 12:09:02.000000000 +0000
++++ glibc-2.5/sysdeps/sparc/sparc32/soft-fp/sfp-machine.h	2006-12-30 20:17:12.000000000 +0000
+@@ -105,16 +105,15 @@
+ 
+ #define __FP_FRAC_ADD_4(r3,r2,r1,r0,x3,x2,x1,x0,y3,y2,y1,y0)		\
+   do {									\
+-    /* We need to fool gcc,  as we need to pass more than 10		\
+-       input/outputs.  */						\
+-    register USItype _t1 __asm__ ("g1"), _t2 __asm__ ("g2");		\
+     __asm__ __volatile__ ("\
+-	    addcc %r8,%9,%1\n\
+-	    addxcc %r6,%7,%0\n\
+-	    addxcc %r4,%5,%%g2\n\
+-	    addx %r2,%3,%%g1"						\
++	    addcc %r10,%11,%1\n\
++	    addxcc %r7,%9,%0\n\
++	    addxcc %r6,%7,%3\n\
++	    addx %r4,%5,%2"						\
+ 	   : "=&r" ((USItype)(r1)),					\
+-	     "=&r" ((USItype)(r0))					\
++	     "=&r" ((USItype)(r0)),					\
++	     "=&r" ((USItype)(r3)),					\
++	     "=&r" ((USItype)(r2))					\
+ 	   : "%rJ" ((USItype)(x3)),					\
+ 	     "rI" ((USItype)(y3)),					\
+ 	     "%rJ" ((USItype)(x2)),					\
+@@ -123,23 +122,20 @@
+ 	     "rI" ((USItype)(y1)),					\
+ 	     "%rJ" ((USItype)(x0)),					\
+ 	     "rI" ((USItype)(y0))					\
+-	   : "cc", "g1", "g2");						\
+-    __asm__ __volatile__ ("" : "=r" (_t1), "=r" (_t2));			\
+-    r3 = _t1; r2 = _t2;							\
++	   : "cc");							\
+   } while (0)
+ 
+ #define __FP_FRAC_SUB_4(r3,r2,r1,r0,x3,x2,x1,x0,y3,y2,y1,y0)		\
+   do {									\
+-    /* We need to fool gcc,  as we need to pass more than 10		\
+-       input/outputs.  */						\
+-    register USItype _t1 __asm__ ("g1"), _t2 __asm__ ("g2");		\
+     __asm__ __volatile__ ("\
+-	    subcc %r8,%9,%1\n\
+-	    subxcc %r6,%7,%0\n\
+-	    subxcc %r4,%5,%%g2\n\
+-	    subx %r2,%3,%%g1"						\
++	    subcc %r10,%11,%1\n\
++	    subxcc %r8,%9,%0\n\
++	    subxcc %r6,%7,%3\n\
++	    subx %r4,%5,%2"						\
+ 	   : "=&r" ((USItype)(r1)),					\
+-	     "=&r" ((USItype)(r0))					\
++	     "=&r" ((USItype)(r0)),					\
++	     "=&r" ((USItype)(r3)),					\
++	     "=&r" ((USItype)(r2))					\
+ 	   : "%rJ" ((USItype)(x3)),					\
+ 	     "rI" ((USItype)(y3)),					\
+ 	     "%rJ" ((USItype)(x2)),					\
+@@ -148,9 +144,7 @@
+ 	     "rI" ((USItype)(y1)),					\
+ 	     "%rJ" ((USItype)(x0)),					\
+ 	     "rI" ((USItype)(y0))					\
+-	   : "cc", "g1", "g2");						\
+-    __asm__ __volatile__ ("" : "=r" (_t1), "=r" (_t2));			\
+-    r3 = _t1; r2 = _t2;							\
++	   : "cc");							\
+   } while (0)
+ 
+ #define __FP_FRAC_DEC_3(x2,x1,x0,y2,y1,y0) __FP_FRAC_SUB_3(x2,x1,x0,x2,x1,x0,y2,y1,y0)
================================================================


More information about the pld-cvs-commit mailing list