locking, mips: Fix atomics

The patch folding the atomic ops had two silly fails in the _return
primitives.

Fixes: ef31563e95 ("locking,arch,mips: Fold atomic_ops")
Reported-by: Guenter Roeck <[email protected]>
Tested-by: Guenter Roeck <[email protected]>
Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
Cc: Bart Van Assche <[email protected]>
Cc: Hannes Reinecke <[email protected]>
Cc: Linus Torvalds <[email protected]>
Cc: Maciej W. Rozycki <[email protected]>
Cc: Markos Chandras <[email protected]>
Cc: Paul Burton <[email protected]>
Cc: Paul E. McKenney <[email protected]>
Cc: Ralf Baechle <[email protected]>
Cc: Stephen Rothwell <[email protected]>
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Ingo Molnar <[email protected]>
This commit is contained in:
Peter Zijlstra 2014-09-02 22:21:26 +02:00 • committed by Ingo Molnar
commit da4c54457e

View file

@ -93,7 +93,7 @@ static __inline__ int atomic_##op##_return(int i, atomic_t * v) \
" " #asm_op " %0, %1, %3 \n" \
" sc %0, %2 \n" \
" beqzl %0, 1b \n" \
" addu %0, %1, %3 \n" \
" " #asm_op " %0, %1, %3 \n" \
" .set mips0 \n" \
: "=&r" (result), "=&r" (temp), "+m" (v->counter) \
: "Ir" (i)); \
@ -111,7 +111,7 @@ static __inline__ int atomic_##op##_return(int i, atomic_t * v) \
: "Ir" (i)); \
} while (unlikely(!result)); \
\
result = temp + i; \
result = temp; result c_op i; \
} else { \
unsigned long flags; \
\
@ -387,7 +387,7 @@ static __inline__ long atomic64_##op##_return(long i, atomic64_t * v) \
: "memory"); \
} while (unlikely(!result)); \
\
result = temp + i; \
result = temp; result c_op i; \
} else { \
unsigned long flags; \
\