diff options
Diffstat (limited to 'arch/ia64/include/asm/futex.h')
-rw-r--r-- | arch/ia64/include/asm/futex.h | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/arch/ia64/include/asm/futex.h b/arch/ia64/include/asm/futex.h index d2bf1fd5e44f..76acbcd5c060 100644 --- a/arch/ia64/include/asm/futex.h +++ b/arch/ia64/include/asm/futex.h | |||
@@ -106,16 +106,15 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr, | |||
106 | return -EFAULT; | 106 | return -EFAULT; |
107 | 107 | ||
108 | { | 108 | { |
109 | register unsigned long r8 __asm ("r8"); | 109 | register unsigned long r8 __asm ("r8") = 0; |
110 | unsigned long prev; | 110 | unsigned long prev; |
111 | __asm__ __volatile__( | 111 | __asm__ __volatile__( |
112 | " mf;; \n" | 112 | " mf;; \n" |
113 | " mov %0=r0 \n" | ||
114 | " mov ar.ccv=%4;; \n" | 113 | " mov ar.ccv=%4;; \n" |
115 | "[1:] cmpxchg4.acq %1=[%2],%3,ar.ccv \n" | 114 | "[1:] cmpxchg4.acq %1=[%2],%3,ar.ccv \n" |
116 | " .xdata4 \"__ex_table\", 1b-., 2f-. \n" | 115 | " .xdata4 \"__ex_table\", 1b-., 2f-. \n" |
117 | "[2:]" | 116 | "[2:]" |
118 | : "=r" (r8), "=r" (prev) | 117 | : "+r" (r8), "=&r" (prev) |
119 | : "r" (uaddr), "r" (newval), | 118 | : "r" (uaddr), "r" (newval), |
120 | "rO" ((long) (unsigned) oldval) | 119 | "rO" ((long) (unsigned) oldval) |
121 | : "memory"); | 120 | : "memory"); |