|
|
@@ -174,7 +174,10 @@ extern __inline void SDL_CompilerBarrier(void);
|
|
|
extern DECLSPEC void SDLCALL SDL_MemoryBarrierReleaseFunction(void);
|
|
|
extern DECLSPEC void SDLCALL SDL_MemoryBarrierAcquireFunction(void);
|
|
|
|
|
|
-#if defined(__GNUC__) && (defined(__powerpc__) || defined(__ppc__))
|
|
|
+#if _SDL_HAS_BUILTIN(__atomic_thread_fence) || (defined(__GNUC__) && (__GNUC__ >= 5))
|
|
|
+#define SDL_MemoryBarrierRelease() __atomic_thread_fence(__ATOMIC_RELEASE)
|
|
|
+#define SDL_MemoryBarrierAcquire() __atomic_thread_fence(__ATOMIC_ACQUIRE)
|
|
|
+#elif defined(__GNUC__) && (defined(__powerpc__) || defined(__ppc__))
|
|
|
#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("lwsync" : : : "memory")
|
|
|
#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("lwsync" : : : "memory")
|
|
|
#elif defined(__GNUC__) && defined(__aarch64__)
|