[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