From b8253693b79fc9242f73aee7ffd75b5e9a4092f5 Mon Sep 17 00:00:00 2001 From: Uros Bizjak Date: Mon, 8 Sep 2025 14:38:23 +0200 Subject: [PATCH] x86: Define atomic_compare_and_exchange_{val, bool}_acq using __atomic_compare_exchange_n No functional changes. Signed-off-by: Uros Bizjak Cc: Florian Weimer Cc: Adhemerval Zanella Netto Cc: Wilco Dijkstra Cc: Collin Funk Cc: H.J.Lu Cc: Carlos O'Donell Reviewed-by: Adhemerval Zanella --- sysdeps/x86/atomic-machine.h | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/sysdeps/x86/atomic-machine.h b/sysdeps/x86/atomic-machine.h index ebe8e978e5..d055364ddd 100644 --- a/sysdeps/x86/atomic-machine.h +++ b/sysdeps/x86/atomic-machine.h @@ -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) -- 2.47.3