vcpkg/ports/libpq/windows/spin_delay.patch

25 lines
653 B
Diff
Raw Normal View History

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)