diff --git a/src/external/atomic_queue/defs.h b/src/external/atomic_queue/defs.h index 1f721f6c..49d7d615 100644 --- a/src/external/atomic_queue/defs.h +++ b/src/external/atomic_queue/defs.h @@ -20,7 +20,21 @@ static inline void spin_loop_pause() noexcept { namespace atomic_queue { constexpr int CACHE_LINE_SIZE = 64; static inline void spin_loop_pause() noexcept { - __asm__ __volatile__("yield"); +#if (defined(__ARM_ARCH_6K__) || \ + defined(__ARM_ARCH_6Z__) || \ + defined(__ARM_ARCH_6ZK__) || \ + defined(__ARM_ARCH_6T2__) || \ + defined(__ARM_ARCH_7__) || \ + defined(__ARM_ARCH_7A__) || \ + defined(__ARM_ARCH_7R__) || \ + defined(__ARM_ARCH_7M__) || \ + defined(__ARM_ARCH_7S__) || \ + defined(__ARM_ARCH_8A__) || \ + defined(__aarch64__)) + asm volatile ("yield" ::: "memory"); +#else + asm volatile ("nop" ::: "memory"); +#endif } } // namespace atomic_queue #else