diff --git a/reactos/ntoskrnl/ke/i386/trap.s b/reactos/ntoskrnl/ke/i386/trap.s index 8d7a809c6c5..84de56686dd 100644 --- a/reactos/ntoskrnl/ke/i386/trap.s +++ b/reactos/ntoskrnl/ke/i386/trap.s @@ -13,14 +13,16 @@ #include #include -MACRO(GENERATE_IDT_STUB, Number) -idt _KiUnexpectedInterrupt&Number, INT_32_DPL0 +MACRO(GENERATE_IDT_STUB, Vector) +idt _KiUnexpectedInterrupt&Vector, INT_32_DPL0 ENDM -MACRO(GENERATE_INT_HANDLER, Number) +MACRO(GENERATE_INT_HANDLER, Vector) //.func KiUnexpectedInterrupt&Number -_KiUnexpectedInterrupt&Number: - push PRIMARY_VECTOR_BASE + Number +_KiUnexpectedInterrupt&Vector: + /* This is a push instruction with 8bit operand. Since the instruction + sign extends the value to 32 bits, we need to offset it */ + push (Vector - 128) jmp _KiEndUnexpectedRange@0 //.endfunc ENDM @@ -66,7 +68,7 @@ idt _KiRaiseAssertion, INT_32_DPL3 /* INT 2C: Debug Assertion Handler */ idt _KiDebugService, INT_32_DPL3 /* INT 2D: Debug Service Handler */ idt _KiSystemService, INT_32_DPL3 /* INT 2E: System Call Service Handler */ idt _KiTrap0F, INT_32_DPL0 /* INT 2F: RESERVED */ -i = 0 +i = HEX(30) REPEAT 208 GENERATE_IDT_STUB %i i = i + 1 @@ -80,11 +82,19 @@ _KiIdtDescriptor: PUBLIC _KiUnexpectedEntrySize _KiUnexpectedEntrySize: - .long _KiUnexpectedInterrupt1 - _KiUnexpectedInterrupt0 + .long _KiUnexpectedInterrupt49 - _KiUnexpectedInterrupt48 /******************************************************************************/ .code +PUBLIC _KiStartUnexpectedRange@0 +_KiStartUnexpectedRange@0: +i = HEX(30) +REPEAT 208 + GENERATE_INT_HANDLER %i + i = i + 1 +ENDR + TRAP_ENTRY KiTrap00, KI_PUSH_FAKE_ERROR_CODE TRAP_ENTRY KiTrap01, KI_PUSH_FAKE_ERROR_CODE TRAP_ENTRY KiTrap03, KI_PUSH_FAKE_ERROR_CODE @@ -140,15 +150,10 @@ PUBLIC _KiFastCallEntry KiCallHandler @KiFastCallEntryHandler@8 .ENDP KiFastCallEntry -PUBLIC _KiStartUnexpectedRange@0 -_KiStartUnexpectedRange@0: -i = 0 -REPEAT 208 - GENERATE_INT_HANDLER %i - i = i + 1 -ENDR + PUBLIC _KiEndUnexpectedRange@0 _KiEndUnexpectedRange@0: + add dword ptr[esp], 128 jmp _KiUnexpectedInterruptTail