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 {
|
namespace atomic_queue {
|
||||||
constexpr int CACHE_LINE_SIZE = 64;
|
constexpr int CACHE_LINE_SIZE = 64;
|
||||||
static inline void spin_loop_pause() noexcept {
|
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
|
} // namespace atomic_queue
|
||||||
#else
|
#else
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue