[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

r4305 - in glibc-package/trunk/debian: . patches patches/mips



Author: aurel32
Date: 2010-05-30 17:13:21 +0000 (Sun, 30 May 2010)
New Revision: 4305

Added:
   glibc-package/trunk/debian/patches/mips/cvs-mips-atomic_h.diff
Modified:
   glibc-package/trunk/debian/changelog
   glibc-package/trunk/debian/patches/series
Log:
  * Add patches/mips/cvs-mips-atomic_h.diff to fix atomic issues on MIPS.



Modified: glibc-package/trunk/debian/changelog
===================================================================
--- glibc-package/trunk/debian/changelog	2010-05-30 16:19:51 UTC (rev 4304)
+++ glibc-package/trunk/debian/changelog	2010-05-30 17:13:21 UTC (rev 4305)
@@ -7,8 +7,9 @@
     as failing in expected-results-powerpc64-linux-gnu-ppc64.
   * Update tst-ttyname_r.out error value in expected-results-i486-gnu-libc
     as part of the test is now passing.
+  * Add patches/mips/cvs-mips-atomic_h.diff to fix atomic issues on MIPS.
 
- -- Aurelien Jarno <aurel32@debian.org>  Sun, 30 May 2010 13:06:58 +0200
+ -- Aurelien Jarno <aurel32@debian.org>  Sun, 30 May 2010 19:13:01 +0200
 
 eglibc (2.11.1-1) unstable; urgency=low
 

Added: glibc-package/trunk/debian/patches/mips/cvs-mips-atomic_h.diff
===================================================================
--- glibc-package/trunk/debian/patches/mips/cvs-mips-atomic_h.diff	                        (rev 0)
+++ glibc-package/trunk/debian/patches/mips/cvs-mips-atomic_h.diff	2010-05-30 17:13:21 UTC (rev 4305)
@@ -0,0 +1,134 @@
+2010-03-23  Mischa Jonker  <mischa.jonker@viragelogic.com>
+
+	[BZ #11291]
+	* sysdeps/mips/bits/atomic.h
+	(__arch_compare_and_exchange_xxx_32_int,
+	__arch_compare_and_exchange_xxx_64_int,
+	__arch_exchange_xxx_32_int, __arch_exchange_xxx_64_int,
+	__arch_exchange_and_add_32_int, __arch_exchange_and_add_64_int):
+	Specify *mem as asm output as well as input.
+
+diff --git a/sysdeps/mips/bits/atomic.h b/sysdeps/mips/bits/atomic.h
+index 167d9a5..11b3467 100644
+--- a/ports/sysdeps/mips/bits/atomic.h
++++ b/ports/sysdeps/mips/bits/atomic.h
+@@ -69,16 +69,16 @@ typedef uintmax_t uatomic_max_t;
+      MIPS_PUSH_MIPS2							      \
+      rel	"\n"							      \
+      "1:\t"								      \
+-     "ll	%0,%4\n\t"						      \
++     "ll	%0,%5\n\t"						      \
+      "move	%1,$0\n\t"						      \
+-     "bne	%0,%2,2f\n\t"						      \
+-     "move	%1,%3\n\t"						      \
+-     "sc	%1,%4\n\t"						      \
++     "bne	%0,%3,2f\n\t"						      \
++     "move	%1,%4\n\t"						      \
++     "sc	%1,%2\n\t"						      \
+      "beqz	%1,1b\n"						      \
+      acq	"\n\t"							      \
+      ".set	pop\n"							      \
+      "2:\n\t"								      \
+-	      : "=&r" (__prev), "=&r" (__cmp)				      \
++	      : "=&r" (__prev), "=&r" (__cmp), "=m" (*mem)		      \
+ 	      : "r" (oldval), "r" (newval), "m" (*mem)			      \
+ 	      : "memory")
+ 
+@@ -93,16 +93,16 @@ typedef uintmax_t uatomic_max_t;
+      MIPS_PUSH_MIPS2							      \
+      rel	"\n"							      \
+      "1:\t"								      \
+-     "lld	%0,%4\n\t"						      \
++     "lld	%0,%5\n\t"						      \
+      "move	%1,$0\n\t"						      \
+-     "bne	%0,%2,2f\n\t"						      \
+-     "move	%1,%3\n\t"						      \
+-     "scd	%1,%4\n\t"						      \
++     "bne	%0,%3,2f\n\t"						      \
++     "move	%1,%4\n\t"						      \
++     "scd	%1,%2\n\t"						      \
+      "beqz	%1,1b\n"						      \
+      acq	"\n\t"							      \
+      ".set	pop\n"							      \
+      "2:\n\t"								      \
+-	      : "=&r" (__prev), "=&r" (__cmp)				      \
++	      : "=&r" (__prev), "=&r" (__cmp), "=m" (*mem)		      \
+ 	      : "r" (oldval), "r" (newval), "m" (*mem)			      \
+ 	      : "memory")
+ #endif
+@@ -189,14 +189,14 @@ typedef uintmax_t uatomic_max_t;
+      MIPS_PUSH_MIPS2							      \
+      rel	"\n"							      \
+      "1:\t"								      \
+-     "ll	%0,%3\n\t"						      \
+-     "move	%1,%2\n\t"						      \
+-     "sc	%1,%3\n\t"						      \
++     "ll	%0,%4\n\t"						      \
++     "move	%1,%3\n\t"						      \
++     "sc	%1,%2\n\t"						      \
+      "beqz	%1,1b\n"						      \
+      acq	"\n\t"							      \
+      ".set	pop\n"							      \
+      "2:\n\t"								      \
+-	      : "=&r" (__prev), "=&r" (__cmp)				      \
++	      : "=&r" (__prev), "=&r" (__cmp), "=m" (*mem)		      \
+ 	      : "r" (newval), "m" (*mem)				      \
+ 	      : "memory");						      \
+   __prev; })
+@@ -213,14 +213,14 @@ typedef uintmax_t uatomic_max_t;
+      MIPS_PUSH_MIPS2							      \
+      rel	"\n"							      \
+      "1:\n"								      \
+-     "lld	%0,%3\n\t"						      \
+-     "move	%1,%2\n\t"						      \
+-     "scd	%1,%3\n\t"						      \
++     "lld	%0,%4\n\t"						      \
++     "move	%1,%3\n\t"						      \
++     "scd	%1,%2\n\t"						      \
+      "beqz	%1,1b\n"						      \
+      acq	"\n\t"							      \
+      ".set	pop\n"							      \
+      "2:\n\t"								      \
+-	      : "=&r" (__prev), "=&r" (__cmp)				      \
++	      : "=&r" (__prev), "=&r" (__cmp), "=m" (*mem)		      \
+ 	      : "r" (newval), "m" (*mem)				      \
+ 	      : "memory");						      \
+   __prev; })
+@@ -248,14 +248,14 @@ typedef uintmax_t uatomic_max_t;
+      MIPS_PUSH_MIPS2							      \
+      rel	"\n"							      \
+      "1:\t"								      \
+-     "ll	%0,%3\n\t"						      \
+-     "addu	%1,%0,%2\n\t"						      \
+-     "sc	%1,%3\n\t"						      \
++     "ll	%0,%4\n\t"						      \
++     "addu	%1,%0,%3\n\t"						      \
++     "sc	%1,%2\n\t"						      \
+      "beqz	%1,1b\n"						      \
+      acq	"\n\t"							      \
+      ".set	pop\n"							      \
+      "2:\n\t"								      \
+-	      : "=&r" (__prev), "=&r" (__cmp)				      \
++	      : "=&r" (__prev), "=&r" (__cmp), "=m" (*mem)		      \
+ 	      : "r" (value), "m" (*mem)					      \
+ 	      : "memory");						      \
+   __prev; })
+@@ -272,14 +272,14 @@ typedef uintmax_t uatomic_max_t;
+      MIPS_PUSH_MIPS2							      \
+      rel	"\n"							      \
+      "1:\t"								      \
+-     "lld	%0,%3\n\t"						      \
+-     "daddu	%1,%0,%2\n\t"						      \
+-     "scd	%1,%3\n\t"						      \
++     "lld	%0,%4\n\t"						      \
++     "daddu	%1,%0,%3\n\t"						      \
++     "scd	%1,%2\n\t"						      \
+      "beqz	%1,1b\n"						      \
+      acq	"\n\t"							      \
+      ".set	pop\n"							      \
+      "2:\n\t"								      \
+-	      : "=&r" (__prev), "=&r" (__cmp)				      \
++	      : "=&r" (__prev), "=&r" (__cmp), "=m" (*mem)		      \
+ 	      : "r" (value), "m" (*mem)					      \
+ 	      : "memory");						      \
+   __prev; })

Modified: glibc-package/trunk/debian/patches/series
===================================================================
--- glibc-package/trunk/debian/patches/series	2010-05-30 16:19:51 UTC (rev 4304)
+++ glibc-package/trunk/debian/patches/series	2010-05-30 17:13:21 UTC (rev 4305)
@@ -139,6 +139,7 @@
 m68k/local-pthread_lock.diff
 m68k/submitted-gcc34-seccomment.diff
 
+mips/cvs-mips-atomic_h.diff
 mips/local-lowlevellock.diff
 mips/local-r10k.diff
 mips/submitted-rld_map.diff


Reply to: