Do not generate instruction "yield" on older ARM than v6
This commit is contained in:
parent
c0b4a79612
commit
4f6091a7e2
1 changed files with 15 additions and 1 deletions
16
src/external/atomic_queue/defs.h
vendored
16
src/external/atomic_queue/defs.h
vendored
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue