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
/* Initialize PRCB pool lookaside pointers */
ExInitPoolLookasidePointers();
+ /* Lower to APC_LEVEL */
+ KeLowerIrql(APC_LEVEL);
+
/* Check if this is the boot cpu */
if (Prcb->Number == 0)
{
/* 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);
/* 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 */
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
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