On 1/17/21 2:05 PM, Martin Storsjö wrote:
> Signed-off-by: Martin Storsjö <[email protected]>
> ---
> Added memory clobbers for MemoryBarrier().
> ---
>  mingw-w64-headers/crt/_mingw.h.in | 8 ++++++++
>  mingw-w64-headers/include/winnt.h | 6 ++++++
>  2 files changed, 14 insertions(+)
> 
> diff --git a/mingw-w64-headers/crt/_mingw.h.in 
> b/mingw-w64-headers/crt/_mingw.h.in
> index 01eff66fa..25513d7da 100644
> --- a/mingw-w64-headers/crt/_mingw.h.in
> +++ b/mingw-w64-headers/crt/_mingw.h.in
> @@ -580,7 +580,15 @@ extern "C" {
>  void __cdecl __debugbreak(void);
>  __MINGW_INTRIN_INLINE void __cdecl __debugbreak(void)
>  {
> +#if defined(__i386__) || defined(__x86_64__)
>    __asm__ __volatile__("int {$}3":);
> +#elif defined(__arm__)
> +  __asm__ __volatile__("udf #1");
> +#elif defined(__aarch64__)
> +  __asm__ __volatile__("brk #0xf000");
> +#else
> +  __asm__ __volatile__("unimplemented");
> +#endif
>  }
>  #endif
>  #endif
> diff --git a/mingw-w64-headers/include/winnt.h 
> b/mingw-w64-headers/include/winnt.h
> index 0decf495a..558423745 100644
> --- a/mingw-w64-headers/include/winnt.h
> +++ b/mingw-w64-headers/include/winnt.h
> @@ -1846,6 +1846,9 @@ extern "C" {
>  #define InterlockedCompareExchangePointerAcquire 
> _InterlockedCompareExchangePointer
>  #define InterlockedCompareExchangePointerRelease 
> _InterlockedCompareExchangePointer
>  
> +#define YieldProcessor() __asm__ __volatile__("dmb ishst\n\tyield")
> +#define MemoryBarrier() __asm__ __volatile__("dmb":::"memory")
> +
>  #ifdef __cplusplus
>    }
>  #endif
> @@ -2055,6 +2058,9 @@ extern "C" {
>  #define InterlockedCompareExchangePointerAcquire 
> _InterlockedCompareExchangePointer
>  #define InterlockedCompareExchangePointerRelease 
> _InterlockedCompareExchangePointer
>  
> +#define YieldProcessor() __asm__ __volatile__("dmb ishst\n\tyield")
> +#define MemoryBarrier() __asm__ __volatile__("dmb sy":::"memory")
> +
>  #ifdef __cplusplus
>    }
>  #endif
> 

Should YieldProcessor() have a compiler barrier? Unfortunately I can't
seem to find any reference as to whether it should, and I don't have
Visual Studio to test with.


_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to