summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/my_cpu.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/include/my_cpu.h b/include/my_cpu.h
index b7d7008a8e3..0b51d3ef90f 100644
--- a/include/my_cpu.h
+++ b/include/my_cpu.h
@@ -53,6 +53,7 @@
#ifdef _WIN32
#elif defined HAVE_PAUSE_INSTRUCTION
#elif defined(_ARCH_PWR8)
+#elif defined __GNUC__ && (defined __arm__ || defined __aarch64__)
#else
# include "my_atomic.h"
#endif
@@ -80,6 +81,9 @@ static inline void MY_RELAX_CPU(void)
#endif
#elif defined(_ARCH_PWR8)
__ppc_get_timebase();
+#elif defined __GNUC__ && (defined __arm__ || defined __aarch64__)
+ /* Mainly, prevent the compiler from optimizing away delay loops */
+ __asm__ __volatile__ ("":::"memory")
#else
int32 var, oldval = 0;
my_atomic_cas32_strong_explicit(&var, &oldval, 1, MY_MEMORY_ORDER_RELAXED,