diff options
author | Rickard Green <rickard@erlang.org> | 2021-02-19 15:03:39 +0100 |
---|---|---|
committer | Rickard Green <rickard@erlang.org> | 2021-02-19 15:14:40 +0100 |
commit | bdc09edba0821e1fa5dad3a929c54ae0bcd8da4f (patch) | |
tree | 3bf841d7e456905e771b4bdb03fd464612fd5eab | |
parent | cc45e9ea1bafa34aec77f903544602eb239416ad (diff) | |
download | erlang-bdc09edba0821e1fa5dad3a929c54ae0bcd8da4f.tar.gz |
Improve memory barrier usage on 64-bit ARM when compiling with gcc
-rw-r--r-- | erts/include/internal/gcc/ethread.h | 8 |
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, |