From a7994c98a596a4a35f49bc891e650e4f262e82c9 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Sat, 13 Feb 2010 02:01:33 +0000 Subject: [PATCH] [NTOS] Push vector as error code on the stack in KiUnexpectedInterrupt* instead of putting it into eax, because we must not clobber it. Spotted by jcatena. svn path=/trunk/; revision=45590 --- reactos/ntoskrnl/ke/i386/irqobj.c | 2 +- reactos/ntoskrnl/ke/i386/trap.s | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/reactos/ntoskrnl/ke/i386/irqobj.c b/reactos/ntoskrnl/ke/i386/irqobj.c index 5543f939170..10170134d82 100644 --- a/reactos/ntoskrnl/ke/i386/irqobj.c +++ b/reactos/ntoskrnl/ke/i386/irqobj.c @@ -168,7 +168,7 @@ KiUnexpectedInterruptTailHandler(IN PKTRAP_FRAME TrapFrame) KeGetCurrentPrcb()->InterruptCount++; /* Start the interrupt */ - if (HalBeginSystemInterrupt(HIGH_LEVEL, TrapFrame->Eax, &OldIrql)) + if (HalBeginSystemInterrupt(HIGH_LEVEL, TrapFrame->ErrCode, &OldIrql)) { /* Warn user */ DPRINT1("\n\x7\x7!!! Unexpected Interrupt %02lx !!!\n"); diff --git a/reactos/ntoskrnl/ke/i386/trap.s b/reactos/ntoskrnl/ke/i386/trap.s index 07e1161d33a..5f24877eeac 100644 --- a/reactos/ntoskrnl/ke/i386/trap.s +++ b/reactos/ntoskrnl/ke/i386/trap.s @@ -20,7 +20,7 @@ ENDM MACRO(GENERATE_INT_HANDLER, Number) .func KiUnexpectedInterrupt&Number _KiUnexpectedInterrupt&Number: - mov eax, PRIMARY_VECTOR_BASE + Number + push PRIMARY_VECTOR_BASE + Number jmp _KiEndUnexpectedRange@0 .endfunc ENDM @@ -103,7 +103,7 @@ TRAP_ENTRY KiGetTickCount, KI_PUSH_FAKE_ERROR_CODE TRAP_ENTRY KiCallbackReturn, KI_PUSH_FAKE_ERROR_CODE TRAP_ENTRY KiRaiseAssertion, KI_PUSH_FAKE_ERROR_CODE TRAP_ENTRY KiDebugService, KI_PUSH_FAKE_ERROR_CODE -TRAP_ENTRY KiUnexpectedInterruptTail, KI_PUSH_FAKE_ERROR_CODE +TRAP_ENTRY KiUnexpectedInterruptTail, 0 ALIGN 4 EXTERN @KiInterruptTemplateHandler@8