Jacek Caban : include: Fix __dmb declaration.
Alexandre Julliard
julliard at winehq.org
Fri Feb 26 14:39:29 CST 2021
Module: wine
Branch: master
Commit: e3708c2c79d378ff53f2fe04d1fa9ececbd1f78c
URL: https://source.winehq.org/git/wine.git/?a=commit;h=e3708c2c79d378ff53f2fe04d1fa9ececbd1f78c
Author: Jacek Caban <jacek at codeweavers.com>
Date: Fri Feb 26 15:54:05 2021 +0100
include: Fix __dmb declaration.
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
include/msvcrt/intrin.h | 40 ++++++++++++++++++++++++++++++++++++++++
include/winnt.h | 13 +++++--------
2 files changed, 45 insertions(+), 8 deletions(-)
diff --git a/include/msvcrt/intrin.h b/include/msvcrt/intrin.h
index 38496251d5a..781c6fac823 100644
--- a/include/msvcrt/intrin.h
+++ b/include/msvcrt/intrin.h
@@ -22,6 +22,46 @@ static inline void __cpuid(int info[4], int ax)
}
#endif
+#ifdef __aarch64__
+typedef enum _tag_ARM64INTR_BARRIER_TYPE
+{
+ _ARM64_BARRIER_OSHLD = 0x1,
+ _ARM64_BARRIER_OSHST = 0x2,
+ _ARM64_BARRIER_OSH = 0x3,
+ _ARM64_BARRIER_NSHLD = 0x5,
+ _ARM64_BARRIER_NSHST = 0x6,
+ _ARM64_BARRIER_NSH = 0x7,
+ _ARM64_BARRIER_ISHLD = 0x9,
+ _ARM64_BARRIER_ISHST = 0xa,
+ _ARM64_BARRIER_ISH = 0xb,
+ _ARM64_BARRIER_LD = 0xd,
+ _ARM64_BARRIER_ST = 0xe,
+ _ARM64_BARRIER_SY = 0xf
+} _ARM64INTR_BARRIER_TYPE;
+#endif
+
+#ifdef __arm__
+typedef enum _tag_ARMINTR_BARRIER_TYPE
+{
+ _ARM_BARRIER_OSHST = 0x2,
+ _ARM_BARRIER_OSH = 0x3,
+ _ARM_BARRIER_NSHST = 0x6,
+ _ARM_BARRIER_NSH = 0x7,
+ _ARM_BARRIER_ISHST = 0xa,
+ _ARM_BARRIER_ISH = 0xb,
+ _ARM_BARRIER_ST = 0xe,
+ _ARM_BARRIER_SY = 0xf
+} _ARMINTR_BARRIER_TYPE;
+#endif
+
+#if defined(_MSC_VER) && (defined(__arm__) || defined(__aarch64__))
+
+void __dmb(unsigned int);
+
+#pragma intrinsic(__dmb)
+
+#endif
+
#ifdef __cplusplus
}
#endif
diff --git a/include/winnt.h b/include/winnt.h
index 3a9d13b055c..e594c89419a 100644
--- a/include/winnt.h
+++ b/include/winnt.h
@@ -32,6 +32,11 @@
#endif
+#if defined(_MSC_VER) && (defined(__arm__) || defined(__aarch64__))
+#include <intrin.h>
+#endif
+
+
#ifdef __cplusplus
extern "C" {
#endif
@@ -7035,10 +7040,6 @@ static FORCEINLINE void MemoryBarrier(void)
#elif defined(__arm__)
-#pragma intrinsic(__dmb)
-
-void __dmb(void);
-
static FORCEINLINE void MemoryBarrier(void)
{
__dmb(_ARM_BARRIER_SY);
@@ -7046,10 +7047,6 @@ static FORCEINLINE void MemoryBarrier(void)
#elif defined(__aarch64__)
-#pragma intrinsic(__dmb)
-
-void __dmb(void);
-
static FORCEINLINE void MemoryBarrier(void)
{
__dmb(_ARM64_BARRIER_SY);
More information about the wine-cvs
mailing list