summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/powerpc/include/atomic.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/sys/powerpc/include/atomic.h b/sys/powerpc/include/atomic.h
index 218e973c5156..194b6c1183eb 100644
--- a/sys/powerpc/include/atomic.h
+++ b/sys/powerpc/include/atomic.h
@@ -345,7 +345,10 @@ atomic_cmpset_32(volatile u_int32_t* p, u_int32_t cmpval, u_int32_t newval)
"bne- 1b\n\t" /* spin if failed */
"eieio\n" /* memory barrier */
"sync\n"
+ "b 3f\n\t" /* we've succeeded */
"2:\t\n"
+ "xor %0,%0,%0\t\n" /* failure, so return 0 */
+ "3:\t\n"
: "=&r" (ret)
: "r" (cmpval), "r" (newval), "r" (p)
: "memory");