Fix implementation of generic atomic operations
Change-Id: Ie1ea5aacc561e2d6d40125d2952ed0e9116b7b0d
diff --git a/libc/include/sys/atomics.h b/libc/include/sys/atomics.h
index 3ada8de..143bc4b 100644
--- a/libc/include/sys/atomics.h
+++ b/libc/include/sys/atomics.h
@@ -47,20 +47,20 @@
#define __ATOMIC_INLINE__ static __inline__ __attribute__((always_inline))
__ATOMIC_INLINE__ int
-__atomic_cmpxchg(int old, int _new, volatile int *ptr)
+__atomic_cmpxchg(int old_value, int new_value, volatile int* ptr)
{
/* We must return 0 on success */
- return __sync_val_compare_and_swap(ptr, old, _new) != old;
+ return __sync_val_compare_and_swap(ptr, old_value, new_value) != old_value;
}
__ATOMIC_INLINE__ int
-__atomic_swap(int _new, volatile int *ptr)
+__atomic_swap(int new_value, volatile int *ptr)
{
- int prev;
+ int old_value;
do {
- prev = *ptr;
- } while (__sync_val_compare_and_swap(ptr, prev, _new) != prev);
- return prev;
+ old_value = *ptr;
+ } while (__sync_val_compare_and_swap(ptr, old_value, new_value) != old_value);
+ return old_value;
}
__ATOMIC_INLINE__ int