From: Uros Bizjak Date: Mon, 8 Sep 2025 12:38:23 +0000 (+0200) Subject: x86: Define atomic_compare_and_exchange_{val, bool}_acq using __atomic_compare_exchange_n X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=b8253693b79fc9242f73aee7ffd75b5e9a4092f5;p=thirdparty%2Fglibc.git 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 --- 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)