[kernel] r16179 - in dists/sid/linux-2.6/debian: . patches/bugfix/mips patches/series

Aurelien Jarno aurel32 at alioth.debian.org
Tue Aug 24 09:15:09 UTC 2010


Author: aurel32
Date: Tue Aug 24 09:15:02 2010
New Revision: 16179

Log:
* [mips/mipsel] Fix 64-bit atomics.

Added:
   dists/sid/linux-2.6/debian/patches/bugfix/mips/64-bit-atomics.patch
Modified:
   dists/sid/linux-2.6/debian/changelog
   dists/sid/linux-2.6/debian/patches/series/21

Modified: dists/sid/linux-2.6/debian/changelog
==============================================================================
--- dists/sid/linux-2.6/debian/changelog	Tue Aug 24 07:22:07 2010	(r16178)
+++ dists/sid/linux-2.6/debian/changelog	Tue Aug 24 09:15:02 2010	(r16179)
@@ -31,6 +31,9 @@
   * [x86/xen] temporarily remove stack guard page, it breaks the xen
     toolstack.
 
+  [ Aurelien Jarno ]
+  * [mips/mipsel] Fix 64-bit atomics.
+
  -- Ben Hutchings <ben at decadent.org.uk>  Thu, 12 Aug 2010 23:20:55 +0100
 
 linux-2.6 (2.6.32-20) unstable; urgency=low

Added: dists/sid/linux-2.6/debian/patches/bugfix/mips/64-bit-atomics.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux-2.6/debian/patches/bugfix/mips/64-bit-atomics.patch	Tue Aug 24 09:15:02 2010	(r16179)
@@ -0,0 +1,105 @@
+commit f2a68272d799bf4092443357142f63b74f7669a1
+Author: David Daney <ddaney at caviumnetworks.com>
+Date:   Thu Jul 22 11:59:27 2010 -0700
+
+    MIPS: Quit using undefined behavior of ADDU in 64-bit atomic operations.
+    
+    For 64-bit, we must use DADDU and DSUBU.
+    
+    Signed-off-by: David Daney <ddaney at caviumnetworks.com>
+    To: linux-mips at linux-mips.org
+    Patchwork: https://patchwork.linux-mips.org/patch/1483/
+    Signed-off-by: Ralf Baechle <ralf at linux-mips.org>
+
+diff --git a/arch/mips/include/asm/atomic.h b/arch/mips/include/asm/atomic.h
+index 59dc0c7..c63c56b 100644
+--- a/arch/mips/include/asm/atomic.h
++++ b/arch/mips/include/asm/atomic.h
+@@ -434,7 +434,7 @@ static __inline__ void atomic64_add(long i, atomic64_t * v)
+ 		__asm__ __volatile__(
+ 		"	.set	mips3					\n"
+ 		"1:	lld	%0, %1		# atomic64_add		\n"
+-		"	addu	%0, %2					\n"
++		"	daddu	%0, %2					\n"
+ 		"	scd	%0, %1					\n"
+ 		"	beqzl	%0, 1b					\n"
+ 		"	.set	mips0					\n"
+@@ -446,7 +446,7 @@ static __inline__ void atomic64_add(long i, atomic64_t * v)
+ 		__asm__ __volatile__(
+ 		"	.set	mips3					\n"
+ 		"1:	lld	%0, %1		# atomic64_add		\n"
+-		"	addu	%0, %2					\n"
++		"	daddu	%0, %2					\n"
+ 		"	scd	%0, %1					\n"
+ 		"	beqz	%0, 2f					\n"
+ 		"	.subsection 2					\n"
+@@ -479,7 +479,7 @@ static __inline__ void atomic64_sub(long i, atomic64_t * v)
+ 		__asm__ __volatile__(
+ 		"	.set	mips3					\n"
+ 		"1:	lld	%0, %1		# atomic64_sub		\n"
+-		"	subu	%0, %2					\n"
++		"	dsubu	%0, %2					\n"
+ 		"	scd	%0, %1					\n"
+ 		"	beqzl	%0, 1b					\n"
+ 		"	.set	mips0					\n"
+@@ -491,7 +491,7 @@ static __inline__ void atomic64_sub(long i, atomic64_t * v)
+ 		__asm__ __volatile__(
+ 		"	.set	mips3					\n"
+ 		"1:	lld	%0, %1		# atomic64_sub		\n"
+-		"	subu	%0, %2					\n"
++		"	dsubu	%0, %2					\n"
+ 		"	scd	%0, %1					\n"
+ 		"	beqz	%0, 2f					\n"
+ 		"	.subsection 2					\n"
+@@ -524,10 +524,10 @@ static __inline__ long atomic64_add_return(long i, atomic64_t * v)
+ 		__asm__ __volatile__(
+ 		"	.set	mips3					\n"
+ 		"1:	lld	%1, %2		# atomic64_add_return	\n"
+-		"	addu	%0, %1, %3				\n"
++		"	daddu	%0, %1, %3				\n"
+ 		"	scd	%0, %2					\n"
+ 		"	beqzl	%0, 1b					\n"
+-		"	addu	%0, %1, %3				\n"
++		"	daddu	%0, %1, %3				\n"
+ 		"	.set	mips0					\n"
+ 		: "=&r" (result), "=&r" (temp), "=m" (v->counter)
+ 		: "Ir" (i), "m" (v->counter)
+@@ -538,10 +538,10 @@ static __inline__ long atomic64_add_return(long i, atomic64_t * v)
+ 		__asm__ __volatile__(
+ 		"	.set	mips3					\n"
+ 		"1:	lld	%1, %2		# atomic64_add_return	\n"
+-		"	addu	%0, %1, %3				\n"
++		"	daddu	%0, %1, %3				\n"
+ 		"	scd	%0, %2					\n"
+ 		"	beqz	%0, 2f					\n"
+-		"	addu	%0, %1, %3				\n"
++		"	daddu	%0, %1, %3				\n"
+ 		"	.subsection 2					\n"
+ 		"2:	b	1b					\n"
+ 		"	.previous					\n"
+@@ -576,10 +576,10 @@ static __inline__ long atomic64_sub_return(long i, atomic64_t * v)
+ 		__asm__ __volatile__(
+ 		"	.set	mips3					\n"
+ 		"1:	lld	%1, %2		# atomic64_sub_return	\n"
+-		"	subu	%0, %1, %3				\n"
++		"	dsubu	%0, %1, %3				\n"
+ 		"	scd	%0, %2					\n"
+ 		"	beqzl	%0, 1b					\n"
+-		"	subu	%0, %1, %3				\n"
++		"	dsubu	%0, %1, %3				\n"
+ 		"	.set	mips0					\n"
+ 		: "=&r" (result), "=&r" (temp), "=m" (v->counter)
+ 		: "Ir" (i), "m" (v->counter)
+@@ -590,10 +590,10 @@ static __inline__ long atomic64_sub_return(long i, atomic64_t * v)
+ 		__asm__ __volatile__(
+ 		"	.set	mips3					\n"
+ 		"1:	lld	%1, %2		# atomic64_sub_return	\n"
+-		"	subu	%0, %1, %3				\n"
++		"	dsubu	%0, %1, %3				\n"
+ 		"	scd	%0, %2					\n"
+ 		"	beqz	%0, 2f					\n"
+-		"	subu	%0, %1, %3				\n"
++		"	dsubu	%0, %1, %3				\n"
+ 		"	.subsection 2					\n"
+ 		"2:	b	1b					\n"
+ 		"	.previous					\n"

Modified: dists/sid/linux-2.6/debian/patches/series/21
==============================================================================
--- dists/sid/linux-2.6/debian/patches/series/21	Tue Aug 24 07:22:07 2010	(r16178)
+++ dists/sid/linux-2.6/debian/patches/series/21	Tue Aug 24 09:15:02 2010	(r16179)
@@ -27,3 +27,4 @@
 + features/all/xen/pvhvm/0016-xen-pvhvm-rename-xen_emul_unplug-ignore-to-unnnec.patch
 + features/all/xen/pvhvm/0017-xen-pvhvm-make-it-clearer-that-XEN_UNPLUG_-define.patch
 + debian/i915-Blacklist-i830-i845-i855-for-KMS.patch
++ bugfix/mips/64-bit-atomics.patch



More information about the Kernel-svn-changes mailing list