]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
x86: Define atomic_compare_and_exchange_{val, bool}_acq using __atomic_compare_exchange_n
authorUros Bizjak <ubizjak@gmail.com>
Mon, 8 Sep 2025 12:38:23 +0000 (14:38 +0200)
committerH.J. Lu <hjl.tools@gmail.com>
Tue, 9 Sep 2025 14:58:52 +0000 (07:58 -0700)
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>
sysdeps/x86/atomic-machine.h

index ebe8e978e50956591e0f46d5a5f7ebfe0d49ab68..d055364ddd3f7efb1a2b568285e165dc206d6226 100644 (file)
 
 #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)