x86: Define atomic_compare_and_exchange_{val, bool}_acq using __atomic_compare_exchange_n

No functional changes.

Signed-off-by: Uros Bizjak <ubizjak@gmail.com>
Cc: Florian Weimer <fweimer@redhat.com>
Cc: Adhemerval Zanella Netto <adhemerval.zanella@linaro.org>
Cc: Wilco Dijkstra <Wilco.Dijkstra@arm.com>
Cc: Collin Funk <collin.funk1@gmail.com>
Cc: H.J.Lu <hjl.tools@gmail.com>
Cc: Carlos O'Donell <carlos@redhat.com>
Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
This commit is contained in:
Uros Bizjak 2025-09-08 14:38:23 +02:00 committed by H.J. Lu
parent 935ee691bc
commit b8253693b7
1 changed files with 14 additions and 4 deletions

View File

@ -33,10 +33,20 @@
#define ATOMIC_EXCHANGE_USES_CAS 0
#define atomic_compare_and_exchange_val_acq(mem, newval, oldval) \
__sync_val_compare_and_swap (mem, oldval, newval)
#define atomic_compare_and_exchange_bool_acq(mem, newval, oldval) \
(! __sync_bool_compare_and_swap (mem, oldval, newval))
#define atomic_compare_and_exchange_val_acq(mem, newval, oldval) \
({ \
typeof (*mem) __oldval = (oldval); \
__atomic_compare_exchange_n (mem, (void *) &__oldval, newval, 0, \
__ATOMIC_ACQUIRE, __ATOMIC_RELAXED); \
__oldval; \
})
#define atomic_compare_and_exchange_bool_acq(mem, newval, oldval) \
({ \
typeof (*mem) __oldval = (oldval); \
!__atomic_compare_exchange_n (mem, (void *) &__oldval, newval, 0, \
__ATOMIC_ACQUIRE, __ATOMIC_RELAXED); \
})
#define atomic_exchange_acq(mem, newvalue) \
__atomic_exchange_n (mem, newvalue, __ATOMIC_ACQUIRE)