diff --git a/reactos/ntoskrnl/include/internal/amd64/ke.h b/reactos/ntoskrnl/include/internal/amd64/ke.h index 4425f4b5c94..8e473e94084 100644 --- a/reactos/ntoskrnl/include/internal/amd64/ke.h +++ b/reactos/ntoskrnl/include/internal/amd64/ke.h @@ -238,7 +238,8 @@ FORCEINLINE KiEndInterrupt(IN KIRQL Irql, IN PKTRAP_FRAME TrapFrame) { - DbgPrint("KiEndInterrupt is unimplemented\n"); + /* Make sure this is from the clock handler */ + ASSERT(TrapFrame->ErrorCode == 0xc10c4); } BOOLEAN diff --git a/reactos/ntoskrnl/ke/amd64/krnlinit.c b/reactos/ntoskrnl/ke/amd64/krnlinit.c index 79468717e4c..4d7ae9c9bbd 100644 --- a/reactos/ntoskrnl/ke/amd64/krnlinit.c +++ b/reactos/ntoskrnl/ke/amd64/krnlinit.c @@ -80,6 +80,9 @@ KiSystemStartupBootStack(VOID) /* Initialize PRCB pool lookaside pointers */ ExInitPoolLookasidePointers(); + /* Lower to APC_LEVEL */ + KeLowerIrql(APC_LEVEL); + /* Check if this is the boot cpu */ if (Prcb->Number == 0) { @@ -153,9 +156,6 @@ KiInitializeKernel(IN PKPROCESS InitProcess, /* Set the current MP Master KPRCB to the Boot PRCB */ Prcb->MultiThreadSetMaster = Prcb; - /* Lower to APC_LEVEL */ - KeLowerIrql(APC_LEVEL); - /* Initialize Bugcheck Callback data */ InitializeListHead(&KeBugcheckCallbackListHead); InitializeListHead(&KeBugcheckReasonCallbackListHead); diff --git a/reactos/ntoskrnl/ke/amd64/trap.S b/reactos/ntoskrnl/ke/amd64/trap.S index 4c41a877102..f690615bc6f 100644 --- a/reactos/ntoskrnl/ke/amd64/trap.S +++ b/reactos/ntoskrnl/ke/amd64/trap.S @@ -637,12 +637,13 @@ PUBLIC KiGeneralProtectionFault /* We have an error code */ ENTER_TRAP_FRAME (TRAPFLAG_HAS_ERRORCODE OR TRAPFLAG_ALL) - TRAPINFO KiGeneralProtectionFault - mov rdx, [rbp + KTRAP_FRAME_Rip] - lea rcx, MsgGeneralProtFault[rip] - call qword ptr FrLdrDbgPrint[rip] + //TRAPINFO KiGeneralProtectionFault + //mov rdx, [rbp + KTRAP_FRAME_Rip] + //lea rcx, MsgGeneralProtFault[rip] + //call qword ptr FrLdrDbgPrint[rip] /* Call the C handler */ + mov rcx, rbp call KiGeneralProtectionFaultHandler /* Check for success */ @@ -890,9 +891,9 @@ PUBLIC KiIpiInterrupt PUBLIC KiUnexpectedInterrupt .PROC KiUnexpectedInterrupt /* The error code is the vector */ - cli ENTER_TRAP_FRAME (TRAPFLAG_HAS_ERRORCODE OR TRAPFLAG_ALL) +#if 0 /* Set bugcheck parameters */ mov ecx, TRAP_CAUSE_UNKNOWN mov rdx, [rbp + KTRAP_FRAME_ErrorCode] // the vector @@ -901,8 +902,10 @@ PUBLIC KiUnexpectedInterrupt sub rsp, 8 mov [rbp + KTRAP_FRAME_P5 + 8], rbp // trap frame call KeBugCheckWithTf - jmp $ +#endif + LEAVE_TRAP_FRAME; + iretq .ENDP KiUnexpectedInterrupt #ifdef _MSC_VER