VOID
FORCEINLINE
KiExitTrapDebugChecks(IN PKTRAP_FRAME TrapFrame,
- IN KTRAP_EXIT_SKIP_BITS SkipBits)
+ IN BOOLEAN SkipPreviousMode)
{
/* Make sure interrupts are disabled */
if (__readeflags() & EFLAGS_INTERRUPT_MASK)
}
/* If we're ignoring previous mode, make sure caller doesn't actually want it */
- if ((SkipBits.SkipPreviousMode) && (TrapFrame->PreviousPreviousMode != -1))
+ if (SkipPreviousMode && (TrapFrame->PreviousPreviousMode != -1))
{
DbgPrint("Exiting a trap witout restoring previous mode, yet previous mode seems valid: %lx\n", TrapFrame->PreviousPreviousMode);
__debugbreak();
VOID
FORCEINLINE
-KiCommonExit(IN PKTRAP_FRAME TrapFrame, const ULONG Flags)
+KiCommonExit(IN PKTRAP_FRAME TrapFrame, BOOLEAN SkipPreviousMode)
{
/* Disable interrupts until we return */
_disable();
KiCheckForApcDelivery(TrapFrame);
/* Debugging checks */
- KiExitTrapDebugChecks(TrapFrame, Flags);
+ KiExitTrapDebugChecks(TrapFrame, SkipPreviousMode);
/* Restore the SEH handler chain */
KeGetPcr()->NtTib.ExceptionList = TrapFrame->ExceptionList;
KiEoiHelper(IN PKTRAP_FRAME TrapFrame)
{
/* Common trap exit code */
- KiCommonExit(TrapFrame, 0);
+ KiCommonExit(TrapFrame, TRUE);
/* Check if this was a V8086 trap */
if (TrapFrame->EFlags & EFLAGS_V86_MASK) KiTrapReturnNoSegments(TrapFrame);
TrapFrame->Eax = Status;
/* Common trap exit code */
- KiCommonExit(TrapFrame, 0);
+ KiCommonExit(TrapFrame, FALSE);
/* Restore previous mode */
KeGetCurrentThread()->PreviousMode = (CCHAR)TrapFrame->PreviousPreviousMode;
KiServiceExit2(IN PKTRAP_FRAME TrapFrame)
{
/* Common trap exit code */
- KiCommonExit(TrapFrame, 0);
+ KiCommonExit(TrapFrame, FALSE);
/* Restore previous mode */
KeGetCurrentThread()->PreviousMode = (CCHAR)TrapFrame->PreviousPreviousMode;