Index: arch/mips/include/atomic.h
===================================================================
--- arch/mips/include/atomic.h	(revision c7bb8b05da36424f3a544f20383a616e25ec8633)
+++ arch/mips/include/atomic.h	(revision 437e35a0ec3132b5c6687d2aaa994c9208be9aa9)
@@ -52,12 +52,12 @@
 		"1:\n"
 		"	ll	%0, %1\n"
-		"	addu	%0, %0, %2\n"
-		"       move    %3, %0\n"
+		"	addu	%0, %0, %3\n"
+		"       move    %2, %0\n"
 		"	sc	%0, %1\n"
 		"	beq	%0, 0x0, 1b\n"
-		"	move    %0, %3\n"
+		"	move    %0, %2\n"
 		"	.set	pop\n"
-		: "=&r" (tmp), "=o" (*val)
-		: "r" (i), "r" (tmp2)
+		: "=&r" (tmp), "=o" (*val), "=r" (tmp2)
+		: "r" (i)
 		);
 	return tmp;
@@ -81,12 +81,12 @@
 		"1:\n"
 		"	ll	%0, %1\n"
-		"	subu	%0, %0, %2\n"
-		"       move    %3, %0\n"
+		"	subu	%0, %0, %3\n"
+		"       move    %2, %0\n"
 		"	sc	%0, %1\n"
 		"	beq	%0, 0x0, 1b\n"
-		"       move    %0, %3\n"
+		"       move    %0, %2\n"
 		"	.set	pop\n"
-		: "=&r" (tmp), "=o" (*val)
-		: "r" (i), "r" (tmp2)
+		: "=&r" (tmp), "=o" (*val), "=r" (tmp2)
+		: "r" (i)
 		);
 	return tmp;
