Przeglądaj źródła

atomic: Fix memory barriers on MSVC ARM32/ARM64

Cameron Gutman 3 tygodni temu
rodzic
commit
26616cd653
1 zmienionych plików z 8 dodań i 0 usunięć
  1. 8 0
      include/SDL_atomic.h

+ 8 - 0
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: