#pragma once
-#define TRAP_DEBUG 0
-
-#define UNREACHABLE __assume(0)
-
-#if _MSC_VER
-#define __builtin_expect(a,b) (a)
+#if defined(_MSC_VER)
+#define UNREACHABLE __assume(0)
+#define __builtin_expect(a,b) (a)
+#elif defined(__GNUC__)
+#define UNREACHABLE __builtin_unreachable()
+#else
+#error
#endif
//
DbgPrint("V86Gs: %x\n", TrapFrame->V86Gs);
}
-#if TRAP_DEBUG
-VOID
+#if DBG
FORCEINLINE
+VOID
KiFillTrapFrameDebug(IN PKTRAP_FRAME TrapFrame)
{
/* Set the debug information */
__debugbreak();
}
+ /* FIXME: KDBG messes around with these improperly */
+#if !defined(KDBG)
/* Check DR values */
if (KiUserTrap(TrapFrame))
{
CheckDr(1, Prcb->ProcessorState.SpecialRegisters.KernelDr1);
CheckDr(2, Prcb->ProcessorState.SpecialRegisters.KernelDr2);
CheckDr(3, Prcb->ProcessorState.SpecialRegisters.KernelDr3);
- //CheckDr(7, Prcb->ProcessorState.SpecialRegisters.KernelDr7);
+ CheckDr(7, Prcb->ProcessorState.SpecialRegisters.KernelDr7);
}
+#endif
StopChecking = FALSE;
}
DECLSPEC_NORETURN VOID FASTCALL KiTrapReturnNoSegmentsRet8(IN PKTRAP_FRAME TrapFrame);
typedef
-ATTRIB_NORETURN
VOID
(FASTCALL *PFAST_SYSTEM_CALL_EXIT)(
IN PKTRAP_FRAME TrapFrame