From 0220a41a2eba0eddddf0b449272c03c3439838c3 Mon Sep 17 00:00:00 2001
From: Cameron Gutman <[EMAIL REDACTED]>
Date: Fri, 24 Apr 2026 18:26:10 -0500
Subject: [PATCH] atomic: Use acquire/release InterlockedExchange intrinsics on
ARM64EC
---
src/atomic/SDL_spinlock.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/atomic/SDL_spinlock.c b/src/atomic/SDL_spinlock.c
index 591e6bb8b76c1..32913b4f7208b 100644
--- a/src/atomic/SDL_spinlock.c
+++ b/src/atomic/SDL_spinlock.c
@@ -50,7 +50,7 @@ bool SDL_TryLockSpinlock(SDL_SpinLock *lock)
#if defined(HAVE_GCC_ATOMICS) || defined(HAVE_GCC_SYNC_LOCK_TEST_AND_SET)
return __sync_lock_test_and_set(lock, 1) == 0;
-#elif defined(_MSC_VER) && (defined(_M_ARM) || defined(_M_ARM64))
+#elif defined(_MSC_VER) && (defined(_M_ARM) || defined(_M_ARM64) || defined(_M_ARM64EC))
SDL_COMPILE_TIME_ASSERT(locksize, sizeof(*lock) == sizeof(long));
return _InterlockedExchange_acq((long *)lock, 1) == 0;
@@ -167,7 +167,7 @@ void SDL_UnlockSpinlock(SDL_SpinLock *lock)
#if defined(HAVE_GCC_ATOMICS) || defined(HAVE_GCC_SYNC_LOCK_TEST_AND_SET)
__sync_lock_release(lock);
-#elif defined(_MSC_VER) && (defined(_M_ARM) || defined(_M_ARM64))
+#elif defined(_MSC_VER) && (defined(_M_ARM) || defined(_M_ARM64) || defined(_M_ARM64EC))
SDL_COMPILE_TIME_ASSERT(locksize, sizeof(*lock) == sizeof(long));
_InterlockedExchange_rel((long *)lock, 0);