On 14/05/2016 05:34, Emilio G. Cota wrote: > 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>
Non-seqcst read-modify-write operations are beyond what I expected to have in qemu/atomic.h, but I guess it's okay for test-and-set because of __sync_test_and_set. Paolo > --- > 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) >