Skip to content

Commit c6fd724

Browse files
authored
Merge pull request #64 from AGSaidi/master
Update cpu relax functions
2 parents 2b19329 + d1322c4 commit c6fd724

File tree

2 files changed

+5
-3
lines changed

2 files changed

+5
-3
lines changed

ext/linux/include/lk_atomics.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,9 @@ static inline uint16_t xchg_release16(uint16_t *ptr, uint16_t val) {
251251
static inline void cpu_relax (void) {
252252
#if defined(__x86_64__)
253253
asm volatile ("pause" : : : "memory" );
254-
#elif defined (__arch64__)
254+
#elif defined (__aarch64__) && defined(RELAX_IS_ISB)
255+
asm volatile ("isb" : : : "memory" );
256+
#elif defined (__aarch64__)
255257
asm volatile ("yield" : : : "memory" );
256258
#endif
257259
}

ext/mysql/include/ut_atomics.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ this program; if not, write to the Free Software Foundation, Inc.,
2121

2222
#if defined(__x86_64__)
2323
#define UT_RELAX_CPU() asm volatile ("rep; nop")
24-
#elif defined(__AARCH64__)
24+
#elif defined(__aarch64__)
2525
// Theoretically we could emit a yield here but MySQL doesn't do it
2626
// and most ARM cores are likely to NOP it anyway
27-
#define UT_RELAX_CPU() asm volatile ("":::"memory")
27+
#define UT_RELAX_CPU() asm volatile ("isb":::"memory")
2828
#else
2929
#define UT_RELAX_CPU() asm volatile ("":::"memory")
3030
#endif

0 commit comments

Comments
 (0)