Signed-off-by: Martin Storsjö <mar...@martin.st> --- Added memory clobbers for YieldProcessor() too - now actually amended the patch before sending... --- 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..5133c1fc9 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":::"memory") +#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":::"memory") +#define MemoryBarrier() __asm__ __volatile__("dmb sy":::"memory") + #ifdef __cplusplus } #endif -- 2.17.1 _______________________________________________ Mingw-w64-public mailing list Mingw-w64-public@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mingw-w64-public