@@ -134,6 +134,7 @@
})
/* Provide shorter names for GCC atomic builtins, return old value */
+#define atomic_test_and_set(ptr) __atomic_test_and_set(ptr, __ATOMIC_SEQ_CST)
#define atomic_fetch_inc(ptr) __atomic_fetch_add(ptr, 1, __ATOMIC_SEQ_CST)
#define atomic_fetch_dec(ptr) __atomic_fetch_sub(ptr, 1, __ATOMIC_SEQ_CST)
#define atomic_fetch_add(ptr, n) __atomic_fetch_add(ptr, n, __ATOMIC_SEQ_CST)
@@ -328,6 +329,7 @@
#endif
/* Provide shorter names for GCC atomic builtins. */
+#define atomic_test_and_set(ptr) atomic_xchg(ptr, true)
#define atomic_fetch_inc(ptr) __sync_fetch_and_add(ptr, 1)
#define atomic_fetch_dec(ptr) __sync_fetch_and_add(ptr, -1)
#define atomic_fetch_add __sync_fetch_and_add
@@ -74,7 +74,7 @@ static inline void qemu_spin_init(QemuSpin *spin)
static inline void qemu_spin_lock(QemuSpin *spin)
{
- while (atomic_xchg(&spin->value, true)) {
+ while (atomic_test_and_set(&spin->value)) {
while (atomic_read(&spin->value)) {
cpu_relax();
}
@@ -83,7 +83,7 @@ static inline void qemu_spin_lock(QemuSpin *spin)
static inline int qemu_spin_trylock(QemuSpin *spin)
{
- if (atomic_xchg(&spin->value, true)) {
+ if (atomic_test_and_set(&spin->value)) {
return -EBUSY;
}
return 0;