This new helper expands to __atomic_test_and_set with acquire semantics
where available; otherwise it expands to __sync_test_and_set, which
has acquire semantics.

Signed-off-by: Emilio G. Cota <c...@braap.org>
---
 include/qemu/atomic.h | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/include/qemu/atomic.h b/include/qemu/atomic.h
index 5bc4d6c..6061a46 100644
--- a/include/qemu/atomic.h
+++ b/include/qemu/atomic.h
@@ -113,6 +113,7 @@
 } while(0)
 #endif
 
+#define atomic_test_and_set_acquire(ptr) __atomic_test_and_set(ptr, 
__ATOMIC_ACQUIRE)
 
 /* All the remaining operations are fully sequentially consistent */
 
@@ -327,6 +328,8 @@
 #endif
 #endif
 
+#define atomic_test_and_set_acquire(ptr) __sync_lock_test_and_set(ptr, true)
+
 /* Provide shorter names for GCC atomic builtins.  */
 #define atomic_fetch_inc(ptr)  __sync_fetch_and_add(ptr, 1)
 #define atomic_fetch_dec(ptr)  __sync_fetch_and_add(ptr, -1)
-- 
2.5.0


Reply via email to