Re: [Mingw-w64-public] [PATCH] intrin-impl.h: Use volatile argument for __buildbittesti-based functions.

2018-01-19 Thread Kai Tietz via Mingw-w64-public
Patch is ok.

Thanks,
Kai

2018-01-19 18:38 GMT+01:00 Jacek Caban :
> Signed-off-by: Jacek Caban 
> ---
>  mingw-w64-headers/include/psdk_inc/intrin-impl.h | 83
> 
>  1 file changed, 41 insertions(+), 42 deletions(-)
>
>
>
> --
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> ___
> Mingw-w64-public mailing list
> Mingw-w64-public@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/mingw-w64-public
>

--
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
___
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public


[Mingw-w64-public] [PATCH] intrin-impl.h: Use volatile argument for __buildbittesti-based functions.

2018-01-19 Thread Jacek Caban
Signed-off-by: Jacek Caban 
---
 mingw-w64-headers/include/psdk_inc/intrin-impl.h | 83

 1 file changed, 41 insertions(+), 42 deletions(-)


diff --git a/mingw-w64-headers/include/psdk_inc/intrin-impl.h b/mingw-w64-headers/include/psdk_inc/intrin-impl.h
index 6f7d60ec..ed5e9fa2 100644
--- a/mingw-w64-headers/include/psdk_inc/intrin-impl.h
+++ b/mingw-w64-headers/include/psdk_inc/intrin-impl.h
@@ -119,13 +119,12 @@ __INTRINSICS_USEINLINE
_interlockedbittestandset, _interlockedbittestandreset, _interlockedbittestandcomplement
_interlockedbittestandset64, _interlockedbittestandreset64, _interlockedbittestandcomplement64 */
 
-/* Parameters: (FunctionName, DataType, AsmCode, OffsetConstraint, Volatile)
+/* Parameters: (FunctionName, DataType, AsmCode, OffsetConstraint)
FunctionName: Any valid function name
DataType: __LONG32 or __int64
-   OffsetConstraint: either "I" for 32bit data types or "J" for 64.
-   Volatile: either volatile or blank. */
+   OffsetConstraint: either "I" for 32bit data types or "J" for 64. */
 #if defined(__x86_64__) || defined(_AMD64_) || defined(__i386__) || defined(_X86_)
-#define __buildbittesti(x, y, z, a, b) unsigned char x(y *Base, b Offset) \
+#define __buildbittesti(x, y, z, a) unsigned char x(y volatile *Base, y Offset) \
 { \
unsigned char old; \
__asm__ __volatile__ (z \
@@ -135,7 +134,7 @@ __INTRINSICS_USEINLINE
return old; \
 }
 #elif defined(__arm__) || defined(_ARM_)
-#define __buildbittesti(x, y, z, a, b) unsigned char x(b y *Base, y Offset) \
+#define __buildbittesti(x, y, z, a) unsigned char x(y volatile *Base, y Offset) \
 { \
unsigned int old, tmp1, tmp2; \
unsigned int bit = 1 << Offset; \
@@ -153,7 +152,7 @@ __INTRINSICS_USEINLINE
return (old >> Offset) & 1; \
 }
 #elif defined(__aarch64__) || defined(_ARM64_)
-#define __buildbittesti(x, y, z, a, b) unsigned char x(b y *Base, y Offset) \
+#define __buildbittesti(x, y, z, a, b) unsigned char x(y volatile *Base, y Offset) \
 { \
unsigned int old, tmp1, tmp2; \
unsigned int bit = 1 << Offset; \
@@ -615,28 +614,28 @@ __buildstos(__stosq, unsigned __int64, "q|q")
 #endif /* __INTRINSIC_PROLOG */
 
 #if __INTRINSIC_PROLOG(_interlockedbittestandset64)
-__MINGW_EXTENSION unsigned char _interlockedbittestandset64(__int64 *a, __int64 b);
+__MINGW_EXTENSION unsigned char _interlockedbittestandset64(__int64 volatile *a, __int64 b);
 #if !__has_builtin(_interlockedbittestandset64)
 __INTRINSICS_USEINLINE 
-__buildbittesti(_interlockedbittestandset64, __int64, "lock bts{q %[Offset],%[Base] | %[Base],%[Offset]}" __FLAGSET, "J", __int64)
+__buildbittesti(_interlockedbittestandset64, __int64 volatile, "lock bts{q %[Offset],%[Base] | %[Base],%[Offset]}" __FLAGSET, "J")
 #endif
 #define __INTRINSIC_DEFINED__interlockedbittestandset64
 #endif /* __INTRINSIC_PROLOG */
 
 #if __INTRINSIC_PROLOG(_interlockedbittestandreset64)
-__MINGW_EXTENSION unsigned char _interlockedbittestandreset64(__int64 *a, __int64 b);
+__MINGW_EXTENSION unsigned char _interlockedbittestandreset64(__int64 volatile *a, __int64 b);
 #if !__has_builtin(_interlockedbittestandreset64)
 __INTRINSICS_USEINLINE 
-__buildbittesti(_interlockedbittestandreset64, __int64, "lock btr{q %[Offset],%[Base] | %[Base],%[Offset]}" __FLAGSET, "J", __int64)
+__buildbittesti(_interlockedbittestandreset64, __int64, "lock btr{q %[Offset],%[Base] | %[Base],%[Offset]}" __FLAGSET, "J")
 #endif
 #define __INTRINSIC_DEFINED__interlockedbittestandreset64
 #endif /* __INTRINSIC_PROLOG */
 
 #if __INTRINSIC_PROLOG(_interlockedbittestandcomplement64)
-__MINGW_EXTENSION unsigned char _interlockedbittestandcomplement64(__int64 *a, __int64 b);
+__MINGW_EXTENSION unsigned char _interlockedbittestandcomplement64(__int64 volatile *a, __int64 b);
 #if !__has_builtin(_interlockedbittestandcomplement64)
 __INTRINSICS_USEINLINE 
-__buildbittesti(_interlockedbittestandcomplement64, __int64, "lock btc{q %[Offset],%[Base] | %[Base],%[Offset]}" __FLAGSET, "J", __int64)
+__buildbittesti(_interlockedbittestandcomplement64, __int64, "lock btc{q %[Offset],%[Base] | %[Base],%[Offset]}" __FLAGSET, "J")
 #endif
 #define __INTRINSIC_DEFINED__interlockedbittestandcomplement64
 #endif /* __INTRINSIC_PROLOG */
@@ -645,7 +644,7 @@ __buildbittesti(_interlockedbittestandcomplement64, __int64, "lock btc{q %[Offse
 __MINGW_EXTENSION unsigned char InterlockedBitTestAndSet64(volatile __int64 *a, __int64 b);
 #if !__has_builtin(InterlockedBitTestAndSet64)
 __INTRINSICS_USEINLINE 
-__buildbittesti(InterlockedBitTestAndSet64, volatile __int64, "lock bts{q %[Offset],%[Base] | %[Base],%[Offset]}" __FLAGSET, "J", __int64)
+__buildbittesti(InterlockedBitTestAndSet64, __int64, "lock bts{q %[Offset],%[Base] | %[Base],%[Offset]}" __FLAGSET, "J")
 #endif
 #define __INTRINSIC_DEFINED_InterlockedBitTestAndSet64
 #endif /* __INTRINSIC_PROLOG */
@@ -654,7 +653,7 @@ __buildbittesti(InterlockedBitTestAndSet64, volatile __int64, "lock bts{q %[Offs
 __MINGW_EXTENSION unsign