--- a/arch/ia64/include/asm/futex.h	2012-07-12 05:32:21.000000000 +0200
+++ b/arch/ia64/include/asm/futex.h	2012-10-31 10:18:26.000000000 +0100
@@ -102,26 +102,25 @@ futex_atomic_op_inuser (int encoded_op,
 static inline int
 futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
 			      u32 oldval, u32 newval)
 {
 	if (!access_ok(VERIFY_WRITE, uaddr, sizeof(u32)))
 		return -EFAULT;
 
 	{
-		register unsigned long r8 __asm ("r8");
+		register unsigned long r8 __asm ("r8") = 0;
 		unsigned long prev;
 		__asm__ __volatile__(
 			"	mf;;					\n"
-			"	mov %0=r0				\n"
 			"	mov ar.ccv=%4;;				\n"
 			"[1:]	cmpxchg4.acq %1=[%2],%3,ar.ccv		\n"
 			"	.xdata4 \"__ex_table\", 1b-., 2f-.	\n"
 			"[2:]"
-			: "=r" (r8), "=r" (prev)
+			: "+r" (r8), "=&r" (prev)
 			: "r" (uaddr), "r" (newval),
 			  "rO" ((long) (unsigned) oldval)
 			: "memory");
 		*uval = prev;
 		return r8;
 	}
 }
 

Signed-off-by: Stephan Schreiber <info@fs-driver.org>
