From 01b0e1a407226bac1b0e6daa320ef9307c1ed1f1 Mon Sep 17 00:00:00 2001
From: Cameron Gutman <[EMAIL REDACTED]>
Date: Fri, 24 Apr 2026 20:22:25 -0500
Subject: [PATCH] atomic: Fix memory barriers on MSVC ARM32/ARM64
(cherry picked from commit 26616cd653646ef59cff726648a7f51d8dcb19ae)
---
include/SDL_atomic.h | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/include/SDL_atomic.h b/include/SDL_atomic.h
index 970ec97dc7c35..014829044348f 100644
--- a/include/SDL_atomic.h
+++ b/include/SDL_atomic.h
@@ -183,6 +183,14 @@ extern DECLSPEC void SDLCALL SDL_MemoryBarrierAcquireFunction(void);
#elif defined(__GNUC__) && defined(__aarch64__)
#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("dmb ish" : : : "memory")
#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("dmb ishld" : : : "memory")
+#elif defined(_MSC_VER) && (defined(_M_ARM64) || defined(_M_ARM64EC))
+#include <arm64intr.h>
+#define SDL_MemoryBarrierRelease() __dmb(_ARM64_BARRIER_ISH)
+#define SDL_MemoryBarrierAcquire() __dmb(_ARM64_BARRIER_ISHLD)
+#elif defined(_MSC_VER) && defined(_M_ARM)
+#include <armintr.h>
+#define SDL_MemoryBarrierRelease() __dmb(_ARM_BARRIER_ISH)
+#define SDL_MemoryBarrierAcquire() __dmb(_ARM_BARRIER_ISH)
#elif defined(__GNUC__) && defined(__arm__)
#if 0 /* defined(__LINUX__) || defined(__ANDROID__) */
/* Information from: