aboutsummaryrefslogtreecommitdiffstats
path: root/lib/erl_interface
diff options
context:
space:
mode:
authorRickard Green <[email protected]>2014-11-25 19:24:35 +0100
committerRickard Green <[email protected]>2014-11-25 19:24:35 +0100
commit91d8aa57c11688395b5b966f65d2a78d1985dcf1 (patch)
tree75a30fb6c612c2a390f043a23e69d9e4c1a13d14 /lib/erl_interface
parent0ab1d950b2ead9611cb31abd6a612ef378ff5b88 (diff)
parentd642dc89e098b572d1b7419fc98c36f324d8407e (diff)
downloadotp-91d8aa57c11688395b5b966f65d2a78d1985dcf1.tar.gz
otp-91d8aa57c11688395b5b966f65d2a78d1985dcf1.tar.bz2
otp-91d8aa57c11688395b5b966f65d2a78d1985dcf1.zip
Merge branch 'rickard/libatomic_ops_improvements/OTP-12302' into maint
* rickard/libatomic_ops_improvements/OTP-12302: Implement support for double word atomics using libatomic_ops Improve usage of libatomic_ops for word size atomics
Diffstat (limited to 'lib/erl_interface')
-rw-r--r--lib/erl_interface/aclocal.m422
1 files changed, 22 insertions, 0 deletions
diff --git a/lib/erl_interface/aclocal.m4 b/lib/erl_interface/aclocal.m4
index ed492d55ff..d78025b0be 100644
--- a/lib/erl_interface/aclocal.m4
+++ b/lib/erl_interface/aclocal.m4
@@ -1421,9 +1421,31 @@ case "$THR_LIB_NAME" in
int z;
AO_nop_full();
+#if defined(AO_HAVE_store)
AO_store(&x, (AO_t) 0);
+#elif defined(AO_HAVE_store_release)
+ AO_store_release(&x, (AO_t) 0);
+#else
+#error No store
+#endif
+#if defined(AO_HAVE_load)
z = AO_load(&x);
+#elif defined(AO_HAVE_load_acquire)
+ z = AO_load_acquire(&x);
+#else
+#error No load
+#endif
+#if defined(AO_HAVE_compare_and_swap_full)
z = AO_compare_and_swap_full(&x, (AO_t) 0, (AO_t) 1);
+#elif defined(AO_HAVE_compare_and_swap_release)
+ z = AO_compare_and_swap_release(&x, (AO_t) 0, (AO_t) 1);
+#elif defined(AO_HAVE_compare_and_swap_acquire)
+ z = AO_compare_and_swap_acquire(&x, (AO_t) 0, (AO_t) 1);
+#elif defined(AO_HAVE_compare_and_swap)
+ z = AO_compare_and_swap(&x, (AO_t) 0, (AO_t) 1);
+#else
+#error No compare_and_swap
+#endif
],
[ethr_have_native_atomics=yes
ethr_have_libatomic_ops=yes])