25 lines
653 B
Diff
25 lines
653 B
Diff
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
|
|
index 4d3ffc7..658b1a1 100644
|
|
--- a/src/include/storage/s_lock.h
|
|
+++ b/src/include/storage/s_lock.h
|
|
@@ -953,12 +953,18 @@ typedef LONG slock_t;
|
|
/* If using Visual C++ on Win64, inline assembly is unavailable.
|
|
* Use a _mm_pause intrinsic instead of rep nop.
|
|
*/
|
|
-#if defined(_WIN64)
|
|
+#if defined(_M_X64) && !defined(_M_ARM64EC)
|
|
static __forceinline void
|
|
spin_delay(void)
|
|
{
|
|
_mm_pause();
|
|
}
|
|
+#elif defined(_M_ARM) || defined(_M_ARM64) || defined(_M_ARM64EC)
|
|
+static __forceinline void
|
|
+spin_delay(void)
|
|
+{
|
|
+ __yield();
|
|
+}
|
|
#else
|
|
static __forceinline void
|
|
spin_delay(void)
|