From a69b7d38c40f0fb49f714c49bb45c292e7c8587d Mon Sep 17 00:00:00 2001 From: Nathan Bossart Date: Tue, 22 Oct 2024 14:33:39 -0500 Subject: [PATCH v1 1/1] Use a non-locking initial test in TAS_SPIN on AArch64. --- src/include/storage/s_lock.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h index e94ed5f48b..07f343baf8 100644 --- a/src/include/storage/s_lock.h +++ b/src/include/storage/s_lock.h @@ -270,6 +270,12 @@ tas(volatile slock_t *lock) */ #if defined(__aarch64__) +/* + * On ARM64, it's a win to use a non-locking test before the TAS proper. It + * may be a win on 32-bit ARM, too, but nobody's tested it yet. + */ +#define TAS_SPIN(lock) (*(lock) ? 1 : TAS(lock)) + #define SPIN_DELAY() spin_delay() static __inline__ void -- 2.39.5 (Apple Git-154)