diff --git a/reactos/include/crt/mingw32/intrin_x86.h b/reactos/include/crt/mingw32/intrin_x86.h index 87e38414da2..cee204458d3 100644 --- a/reactos/include/crt/mingw32/intrin_x86.h +++ b/reactos/include/crt/mingw32/intrin_x86.h @@ -1504,6 +1504,7 @@ __INTRIN_INLINE void __int2c(void); __INTRIN_INLINE void _disable(void); __INTRIN_INLINE void _enable(void); __INTRIN_INLINE void __halt(void); +__declspec(noreturn) __INTRIN_INLINE void __fastfail(unsigned int Code); #ifdef __clang__ #define __debugbreak() __asm__("int $3") @@ -1532,7 +1533,13 @@ __INTRIN_INLINE void _enable(void) __INTRIN_INLINE void __halt(void) { - __asm__("hlt\n\t" : : : "memory"); + __asm__("hlt" : : : "memory"); +} + +__declspec(noreturn) +__INTRIN_INLINE void __fastfail(unsigned int Code) +{ + __asm__("int $0x29" : : "c"(Code) : "memory"); } /*** Protected memory management ***/ diff --git a/reactos/include/crt/msc/intrin.h b/reactos/include/crt/msc/intrin.h index f991c356df1..66f79fdbbba 100644 --- a/reactos/include/crt/msc/intrin.h +++ b/reactos/include/crt/msc/intrin.h @@ -587,6 +587,16 @@ void __ud2(void); #if (_MSC_VER >= 1700) __declspec(noreturn) void __fastfail(unsigned int Code); #pragma intrinsic(__fastfail) +#else +__declspec(noreturn) __forceinline +void __fastfail(unsigned int Code) +{ + __asm + { + mov ecx, Code + int 29h + } +} #endif #endif #if defined(_M_ARM)