summaryrefslogtreecommitdiff
path: root/erts/include
diff options
context:
space:
mode:
authorRickard Green <rickard@erlang.org>2021-02-19 15:03:39 +0100
committerRickard Green <rickard@erlang.org>2021-02-19 15:14:40 +0100
commitbdc09edba0821e1fa5dad3a929c54ae0bcd8da4f (patch)
tree3bf841d7e456905e771b4bdb03fd464612fd5eab /erts/include
parentcc45e9ea1bafa34aec77f903544602eb239416ad (diff)
downloaderlang-bdc09edba0821e1fa5dad3a929c54ae0bcd8da4f.tar.gz
Improve memory barrier usage on 64-bit ARM when compiling with gcc
Diffstat (limited to 'erts/include')
-rw-r--r--erts/include/internal/gcc/ethread.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/erts/include/internal/gcc/ethread.h b/erts/include/internal/gcc/ethread.h
index 0fb24445d0..754b566018 100644
--- a/erts/include/internal/gcc/ethread.h
+++ b/erts/include/internal/gcc/ethread.h
@@ -80,6 +80,14 @@
#elif !ETHR_AT_LEAST_GCC_VSN__(4, 8, 0)
/* True gcc of version < 4.8, i.e., bug exist... */
# define ETHR___atomic_load_ACQUIRE_barrier_bug ETHR_GCC_VERSIONS_MASK__
+#elif ETHR_AT_LEAST_GCC_VSN__(8, 3, 0) \
+ && (defined(__arm64__) || defined(__aarch64__) || defined(__arm__)) \
+ && ETHR_SIZEOF_PTR == 8
+/* Verified not to have this bug */
+# define ETHR___atomic_load_ACQUIRE_barrier_bug 0
+/* Also trust builtin barriers */
+# undef ETHR_TRUST_GCC_ATOMIC_BUILTINS_MEMORY_BARRIERS__
+# define ETHR_TRUST_GCC_ATOMIC_BUILTINS_MEMORY_BARRIERS__ 1
#else /* True gcc of version >= 4.8 */
/*
* Sizes less than or equal to word size have been fixed,