Implemented trap handler stubs in MASM
This commit is contained in:
parent
c66ea77a8b
commit
89049700fb
@ -226,4 +226,33 @@ typedef struct _CPUID_SIGNATURE
|
|||||||
ULONG Unused2:4;
|
ULONG Unused2:4;
|
||||||
} CPU_SIGNATURE, *PCPU_SIGNATURE;
|
} CPU_SIGNATURE, *PCPU_SIGNATURE;
|
||||||
|
|
||||||
|
/* CPU Registers that are pushed to the stack in the interrupt handler */
|
||||||
|
typedef struct _EXCEPTION_REGISTERS
|
||||||
|
{
|
||||||
|
ULONG64 R15;
|
||||||
|
ULONG64 R14;
|
||||||
|
ULONG64 R13;
|
||||||
|
ULONG64 R12;
|
||||||
|
ULONG64 R11;
|
||||||
|
ULONG64 R10;
|
||||||
|
ULONG64 R9;
|
||||||
|
ULONG64 R8;
|
||||||
|
ULONG64 Rbp;
|
||||||
|
ULONG64 Rdi;
|
||||||
|
ULONG64 Rsi;
|
||||||
|
ULONG64 Rdx;
|
||||||
|
ULONG64 Rcx;
|
||||||
|
ULONG64 Rbx;
|
||||||
|
ULONG64 Rax;
|
||||||
|
|
||||||
|
ULONG64 Vector;
|
||||||
|
ULONG64 ErrorCode;
|
||||||
|
|
||||||
|
ULONG64 Rip;
|
||||||
|
ULONG64 CsSeg;
|
||||||
|
ULONG64 RFlags;
|
||||||
|
ULONG64 Rsp;
|
||||||
|
ULONG64 SsSeg;
|
||||||
|
} PACK EXCEPTION_REGISTERS, *PEXCEPTION_REGISTERS;
|
||||||
|
|
||||||
#endif /* __XTDK_AMD64_ARTYPES_H */
|
#endif /* __XTDK_AMD64_ARTYPES_H */
|
||||||
|
@ -12,6 +12,7 @@ list(APPEND XTOSKRNL_SOURCE
|
|||||||
${XTOSKRNL_SOURCE_DIR}/ar/${ARCH}/globals.c
|
${XTOSKRNL_SOURCE_DIR}/ar/${ARCH}/globals.c
|
||||||
${XTOSKRNL_SOURCE_DIR}/ar/${ARCH}/procsup.c
|
${XTOSKRNL_SOURCE_DIR}/ar/${ARCH}/procsup.c
|
||||||
${XTOSKRNL_SOURCE_DIR}/ar/${ARCH}/traps.c
|
${XTOSKRNL_SOURCE_DIR}/ar/${ARCH}/traps.c
|
||||||
|
${XTOSKRNL_SOURCE_DIR}/ar/${ARCH}/traps.s
|
||||||
${XTOSKRNL_SOURCE_DIR}/ex/rundown.c
|
${XTOSKRNL_SOURCE_DIR}/ex/rundown.c
|
||||||
${XTOSKRNL_SOURCE_DIR}/hl/apic.c
|
${XTOSKRNL_SOURCE_DIR}/hl/apic.c
|
||||||
${XTOSKRNL_SOURCE_DIR}/hl/cport.c
|
${XTOSKRNL_SOURCE_DIR}/hl/cport.c
|
||||||
|
@ -221,41 +221,28 @@ ArpInitializeGdt(IN PKPROCESSOR_BLOCK ProcessorBlock)
|
|||||||
*
|
*
|
||||||
* @since XT 1.0
|
* @since XT 1.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
EXTERN VOID ArpHandleTrap0();
|
||||||
XTAPI
|
XTAPI
|
||||||
VOID
|
VOID
|
||||||
ArpInitializeIdt(IN PKPROCESSOR_BLOCK ProcessorBlock)
|
ArpInitializeIdt(IN PKPROCESSOR_BLOCK ProcessorBlock)
|
||||||
{
|
{
|
||||||
UINT Vector;
|
UINT Vector;
|
||||||
|
|
||||||
|
DebugPrint(L"%lx\n", &ArpTrapHandlers[0]);
|
||||||
|
DebugPrint(L"%lx\n", &ArpHandleTrap0);
|
||||||
|
|
||||||
/* Fill in all vectors */
|
/* Fill in all vectors */
|
||||||
for(Vector = 0; Vector < IDT_ENTRIES; Vector++)
|
for(Vector = 0; Vector < IDT_ENTRIES; Vector++)
|
||||||
{
|
{
|
||||||
/* Set the IDT to handle unexpected interrupts */
|
/* Set the IDT to handle unexpected interrupts */
|
||||||
ArpSetIdtGate(ProcessorBlock->IdtBase, Vector, ArpHandleTrapFF, KGDT_R0_CODE, KIDT_IST_RESERVED, KIDT_ACCESS_RING0);
|
ArpSetIdtGate(ProcessorBlock->IdtBase, Vector, ArpTrapHandlers[Vector], KGDT_R0_CODE, KIDT_IST_RESERVED, KIDT_ACCESS_RING0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Setup IDT handlers for known interrupts and traps */
|
/* Setup IDT handlers for known interrupts and traps */
|
||||||
ArpSetIdtGate(ProcessorBlock->IdtBase, 0x00, ArpHandleTrap00, KGDT_R0_CODE, KIDT_IST_RESERVED, KIDT_ACCESS_RING0);
|
ArpSetIdtGate(ProcessorBlock->IdtBase, 0x02, ArpTrapHandlers[2], KGDT_R0_CODE, KIDT_IST_PANIC, KIDT_ACCESS_RING0);
|
||||||
ArpSetIdtGate(ProcessorBlock->IdtBase, 0x01, ArpHandleTrap01, KGDT_R0_CODE, KIDT_IST_RESERVED, KIDT_ACCESS_RING0);
|
ArpSetIdtGate(ProcessorBlock->IdtBase, 0x08, ArpTrapHandlers[8], KGDT_R0_CODE, KIDT_IST_PANIC, KIDT_ACCESS_RING0);
|
||||||
ArpSetIdtGate(ProcessorBlock->IdtBase, 0x02, ArpHandleTrap02, KGDT_R0_CODE, KIDT_IST_PANIC, KIDT_ACCESS_RING0);
|
ArpSetIdtGate(ProcessorBlock->IdtBase, 0x12, ArpTrapHandlers[12], KGDT_R0_CODE, KIDT_IST_MCA, KIDT_ACCESS_RING0);
|
||||||
ArpSetIdtGate(ProcessorBlock->IdtBase, 0x03, ArpHandleTrap03, KGDT_R0_CODE, KIDT_IST_RESERVED, KIDT_ACCESS_RING3);
|
|
||||||
ArpSetIdtGate(ProcessorBlock->IdtBase, 0x04, ArpHandleTrap04, KGDT_R0_CODE, KIDT_IST_RESERVED, KIDT_ACCESS_RING3);
|
|
||||||
ArpSetIdtGate(ProcessorBlock->IdtBase, 0x05, ArpHandleTrap05, KGDT_R0_CODE, KIDT_IST_RESERVED, KIDT_ACCESS_RING0);
|
|
||||||
ArpSetIdtGate(ProcessorBlock->IdtBase, 0x06, ArpHandleTrap06, KGDT_R0_CODE, KIDT_IST_RESERVED, KIDT_ACCESS_RING0);
|
|
||||||
ArpSetIdtGate(ProcessorBlock->IdtBase, 0x07, ArpHandleTrap07, KGDT_R0_CODE, KIDT_IST_RESERVED, KIDT_ACCESS_RING0);
|
|
||||||
ArpSetIdtGate(ProcessorBlock->IdtBase, 0x08, ArpHandleTrap08, KGDT_R0_CODE, KIDT_IST_PANIC, KIDT_ACCESS_RING0);
|
|
||||||
ArpSetIdtGate(ProcessorBlock->IdtBase, 0x09, ArpHandleTrap09, KGDT_R0_CODE, KIDT_IST_RESERVED, KIDT_ACCESS_RING0);
|
|
||||||
ArpSetIdtGate(ProcessorBlock->IdtBase, 0x0A, ArpHandleTrap0A, KGDT_R0_CODE, KIDT_IST_RESERVED, KIDT_ACCESS_RING0);
|
|
||||||
ArpSetIdtGate(ProcessorBlock->IdtBase, 0x0B, ArpHandleTrap0B, KGDT_R0_CODE, KIDT_IST_RESERVED, KIDT_ACCESS_RING0);
|
|
||||||
ArpSetIdtGate(ProcessorBlock->IdtBase, 0x0C, ArpHandleTrap0C, KGDT_R0_CODE, KIDT_IST_RESERVED, KIDT_ACCESS_RING0);
|
|
||||||
ArpSetIdtGate(ProcessorBlock->IdtBase, 0x0D, ArpHandleTrap0D, KGDT_R0_CODE, KIDT_IST_RESERVED, KIDT_ACCESS_RING0);
|
|
||||||
ArpSetIdtGate(ProcessorBlock->IdtBase, 0x0E, ArpHandleTrap0E, KGDT_R0_CODE, KIDT_IST_RESERVED, KIDT_ACCESS_RING0);
|
|
||||||
ArpSetIdtGate(ProcessorBlock->IdtBase, 0x10, ArpHandleTrap10, KGDT_R0_CODE, KIDT_IST_RESERVED, KIDT_ACCESS_RING0);
|
|
||||||
ArpSetIdtGate(ProcessorBlock->IdtBase, 0x11, ArpHandleTrap11, KGDT_R0_CODE, KIDT_IST_RESERVED, KIDT_ACCESS_RING0);
|
|
||||||
ArpSetIdtGate(ProcessorBlock->IdtBase, 0x12, ArpHandleTrap12, KGDT_R0_CODE, KIDT_IST_MCA, KIDT_ACCESS_RING0);
|
|
||||||
ArpSetIdtGate(ProcessorBlock->IdtBase, 0x13, ArpHandleTrap13, KGDT_R0_CODE, KIDT_IST_RESERVED, KIDT_ACCESS_RING0);
|
|
||||||
ArpSetIdtGate(ProcessorBlock->IdtBase, 0x2C, ArpHandleTrap2C, KGDT_R0_CODE, KIDT_IST_RESERVED, KIDT_ACCESS_RING3);
|
|
||||||
ArpSetIdtGate(ProcessorBlock->IdtBase, 0x2D, ArpHandleTrap2D, KGDT_R0_CODE, KIDT_IST_RESERVED, KIDT_ACCESS_RING3);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -24,7 +24,10 @@ ArpHandleSystemCall64()
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handles the trap 0x00 when a Divide By Zero exception occurs.
|
* Handles a trap.
|
||||||
|
*
|
||||||
|
* @param Registers
|
||||||
|
* Supplies a structure containing the values of all general-purpose registers.
|
||||||
*
|
*
|
||||||
* @return This routine does not return any value.
|
* @return This routine does not return any value.
|
||||||
*
|
*
|
||||||
@ -32,323 +35,9 @@ ArpHandleSystemCall64()
|
|||||||
*/
|
*/
|
||||||
XTCDECL
|
XTCDECL
|
||||||
VOID
|
VOID
|
||||||
ArpHandleTrap00()
|
ArpHandleTrap(EXCEPTION_REGISTERS Registers)
|
||||||
{
|
{
|
||||||
DebugPrint(L"Handled Division-By-Zero Error (0x00)!\n");
|
DebugPrint(L"I came, I saw.\n");
|
||||||
for(;;);
|
DebugPrint(L"Vector: %d\n", Registers.Rip);
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Handles the trap 0x01 when Debug exception occurs.
|
|
||||||
*
|
|
||||||
* @return This routine does not return any value.
|
|
||||||
*
|
|
||||||
* @since XT 1.0
|
|
||||||
*/
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap01()
|
|
||||||
{
|
|
||||||
DebugPrint(L"Handled Debug exception (0x01)!\n");
|
|
||||||
for(;;);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Handles the trap 0x02 when Non-Maskable Interrupt (NMI) occurs.
|
|
||||||
*
|
|
||||||
* @return This routine does not return any value.
|
|
||||||
*
|
|
||||||
* @since XT 1.0
|
|
||||||
*/
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap02()
|
|
||||||
{
|
|
||||||
DebugPrint(L"Handled Non-Maskable-Interrupt (0x02)!\n");
|
|
||||||
for(;;);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Handles the trap 0x03 when the INT3 instruction is executed.
|
|
||||||
*
|
|
||||||
* @return This routine does not return any value.
|
|
||||||
*
|
|
||||||
* @since XT 1.0
|
|
||||||
*/
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap03()
|
|
||||||
{
|
|
||||||
DebugPrint(L"Handled INT3 (0x03)!\n");
|
|
||||||
for(;;);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Handles the trap 0x04 when the INTO instruction is executed and overflow bit is set.
|
|
||||||
*
|
|
||||||
* @return This routine does not return any value.
|
|
||||||
*
|
|
||||||
* @since XT 1.0
|
|
||||||
*/
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap04()
|
|
||||||
{
|
|
||||||
DebugPrint(L"Handled Overflow exception (0x04)!\n");
|
|
||||||
for(;;);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Handles the trap 0x05 when the Bound Range Exceeded exception occurs.
|
|
||||||
*
|
|
||||||
* @return This routine does not return any value.
|
|
||||||
*
|
|
||||||
* @since XT 1.0
|
|
||||||
*/
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap05()
|
|
||||||
{
|
|
||||||
DebugPrint(L"Handled Bound-Range-Exceeded exception (0x05)!\n");
|
|
||||||
for(;;);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Handles the trap 0x06 when the Invalid Opcode exception occurs.
|
|
||||||
*
|
|
||||||
* @return This routine does not return any value.
|
|
||||||
*
|
|
||||||
* @since XT 1.0
|
|
||||||
*/
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap06()
|
|
||||||
{
|
|
||||||
DebugPrint(L"Handled Invalid Opcode exception (0x06)!\n");
|
|
||||||
for(;;);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Handles the trap 0x07 when the Device Not Available exception occurs.
|
|
||||||
*
|
|
||||||
* @return This routine does not return any value.
|
|
||||||
*
|
|
||||||
* @since XT 1.0
|
|
||||||
*/
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap07()
|
|
||||||
{
|
|
||||||
DebugPrint(L"Handled Device Not Available exception (0x07)!\n");
|
|
||||||
for(;;);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Handles the trap 0x08 when Double Fault exception occurs.
|
|
||||||
*
|
|
||||||
* @return This routine does not return any value.
|
|
||||||
*
|
|
||||||
* @since XT 1.0
|
|
||||||
*/
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap08()
|
|
||||||
{
|
|
||||||
DebugPrint(L"Handled Double-Fault exception (0x08)!\n");
|
|
||||||
for(;;);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Handles the trap 0x09 when the Segment Overrun exception occurs.
|
|
||||||
*
|
|
||||||
* @return This routine does not return any value.
|
|
||||||
*
|
|
||||||
* @since XT 1.0
|
|
||||||
*/
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap09()
|
|
||||||
{
|
|
||||||
DebugPrint(L"Handled Segment-Overrun exception (0x09)!\n");
|
|
||||||
for(;;);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Handles the trap 0x0A when the Invalid TSS exception occurs.
|
|
||||||
*
|
|
||||||
* @return This routine does not return any value.
|
|
||||||
*
|
|
||||||
* @since XT 1.0
|
|
||||||
*/
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap0A()
|
|
||||||
{
|
|
||||||
DebugPrint(L"Handled Invalid-TSS exception (0x0A)!\n");
|
|
||||||
for(;;);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Handles the trap 0x0B when the Segment Not Present exception occurs.
|
|
||||||
*
|
|
||||||
* @return This routine does not return any value.
|
|
||||||
*
|
|
||||||
* @since XT 1.0
|
|
||||||
*/
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap0B()
|
|
||||||
{
|
|
||||||
DebugPrint(L"Handled Segment-Not-Present exception (0x0B)!\n");
|
|
||||||
for(;;);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Handles the trap 0x0C when the Stack Segment Fault exception occurs.
|
|
||||||
*
|
|
||||||
* @return This routine does not return any value.
|
|
||||||
*
|
|
||||||
* @since XT 1.0
|
|
||||||
*/
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap0C()
|
|
||||||
{
|
|
||||||
DebugPrint(L"Handled Stack-Segment-Fault exception (0x0C)!\n");
|
|
||||||
for(;;);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Handles the trap 0x0D when General Protection Fault (GPF) exception occurs.
|
|
||||||
*
|
|
||||||
* @return This routine does not return any value.
|
|
||||||
*
|
|
||||||
* @since XT 1.0
|
|
||||||
*/
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap0D()
|
|
||||||
{
|
|
||||||
DebugPrint(L"Handled General-Protection-Fault (0x0D)!\n");
|
|
||||||
for(;;);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Handles the trap 0x0E when the Page Fault (PF) exception occurs.
|
|
||||||
*
|
|
||||||
* @return This routine does not return any value.
|
|
||||||
*
|
|
||||||
* @since XT 1.0
|
|
||||||
*/
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap0E()
|
|
||||||
{
|
|
||||||
DebugPrint(L"Handled Page-Fault exception (0x0E)!\n");
|
|
||||||
for(;;);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Handles the trap 0x10 when the X87 Floating-Point exception occurs.
|
|
||||||
*
|
|
||||||
* @return This routine does not return any value.
|
|
||||||
*
|
|
||||||
* @since XT 1.0
|
|
||||||
*/
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap10()
|
|
||||||
{
|
|
||||||
DebugPrint(L"Handled x87 Floating-Point exception (0x10)!\n");
|
|
||||||
for(;;);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Handles the trap 0x11 when the Alignment Check exception occurs.
|
|
||||||
*
|
|
||||||
* @return This routine does not return any value.
|
|
||||||
*
|
|
||||||
* @since XT 1.0
|
|
||||||
*/
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap11()
|
|
||||||
{
|
|
||||||
DebugPrint(L"Handled Alignment-Check exception (0x11)!\n");
|
|
||||||
for(;;);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Handles the trap 0x12 when the Machine Check exception occurs.
|
|
||||||
*
|
|
||||||
* @return This routine does not return any value.
|
|
||||||
*
|
|
||||||
* @since XT 1.0
|
|
||||||
*/
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap12()
|
|
||||||
{
|
|
||||||
DebugPrint(L"Handled Machine-Check exception (0x12)!\n");
|
|
||||||
for(;;);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Handles the trap 0x13 when the SIMD Floating-Point exception occurs.
|
|
||||||
*
|
|
||||||
* @return This routine does not return any value.
|
|
||||||
*
|
|
||||||
* @since XT 1.0
|
|
||||||
*/
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap13()
|
|
||||||
{
|
|
||||||
DebugPrint(L"Handled SIMD Floating-Point exception (0x13)!\n");
|
|
||||||
for(;;);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Handles the trap 0x2C when an assertion is raised.
|
|
||||||
*
|
|
||||||
* @return This routine does not return any value.
|
|
||||||
*
|
|
||||||
* @since XT 1.0
|
|
||||||
*/
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap2C()
|
|
||||||
{
|
|
||||||
DebugPrint(L"Handled Assertion (0x2C)!\n");
|
|
||||||
for(;;);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Handles the trap 0x2D when a debug service is being requested.
|
|
||||||
*
|
|
||||||
* @return This routine does not return any value.
|
|
||||||
*
|
|
||||||
* @since XT 1.0
|
|
||||||
*/
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrap2D()
|
|
||||||
{
|
|
||||||
DebugPrint(L"Handled Debug-Service-Request (0x2D)!\n");
|
|
||||||
for(;;);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Handles the trap 0xFF then Unexpected Interrupt occurs.
|
|
||||||
*
|
|
||||||
* @return This routine does not return any value.
|
|
||||||
*
|
|
||||||
* @since XT 1.0
|
|
||||||
*/
|
|
||||||
XTCDECL
|
|
||||||
VOID
|
|
||||||
ArpHandleTrapFF()
|
|
||||||
{
|
|
||||||
DebugPrint(L"Handled Unexpected-Interrupt (0xFF)!\n");
|
|
||||||
for(;;);
|
for(;;);
|
||||||
}
|
}
|
||||||
|
596
xtoskrnl/ar/amd64/traps.s
Normal file
596
xtoskrnl/ar/amd64/traps.s
Normal file
@ -0,0 +1,596 @@
|
|||||||
|
;
|
||||||
|
; PROJECT: ExectOS
|
||||||
|
; COPYRIGHT: See COPYING.md in the top level directory
|
||||||
|
; FILE: xtoskrnl/ar/amd64/traps.s
|
||||||
|
; DESCRIPTION: AMD64 system trap stubs
|
||||||
|
; DEVELOPERS: Jozef Nagy <schkwve@gmail.com>
|
||||||
|
;
|
||||||
|
|
||||||
|
.CODE
|
||||||
|
|
||||||
|
EXTERN ArpHandleTrap :PROC
|
||||||
|
|
||||||
|
pushaq macro
|
||||||
|
push rax
|
||||||
|
push rbx
|
||||||
|
push rcx
|
||||||
|
push rdx
|
||||||
|
push rsi
|
||||||
|
push rdi
|
||||||
|
push rbp
|
||||||
|
push r8
|
||||||
|
push r9
|
||||||
|
push r10
|
||||||
|
push r11
|
||||||
|
push r12
|
||||||
|
push r13
|
||||||
|
push r14
|
||||||
|
push r15
|
||||||
|
endm
|
||||||
|
|
||||||
|
popaq macro
|
||||||
|
pop r15
|
||||||
|
pop r14
|
||||||
|
pop r13
|
||||||
|
pop r12
|
||||||
|
pop r11
|
||||||
|
pop r10
|
||||||
|
pop r9
|
||||||
|
pop r8
|
||||||
|
pop rbp
|
||||||
|
pop rdi
|
||||||
|
pop rsi
|
||||||
|
pop rdx
|
||||||
|
pop rcx
|
||||||
|
pop rbx
|
||||||
|
pop rax
|
||||||
|
endm
|
||||||
|
|
||||||
|
ArpISRNoError macro Vector
|
||||||
|
ArpHandleTrap&Vector&:
|
||||||
|
cli
|
||||||
|
push 0
|
||||||
|
push Vector
|
||||||
|
pushaq
|
||||||
|
cld
|
||||||
|
call ArpHandleTrap
|
||||||
|
popaq
|
||||||
|
add rsp, 16
|
||||||
|
iretq
|
||||||
|
endm
|
||||||
|
|
||||||
|
ArpISRError macro Vector
|
||||||
|
ArpHandleTrap&Vector&:
|
||||||
|
cli
|
||||||
|
push Vector
|
||||||
|
pushaq
|
||||||
|
cld
|
||||||
|
call ArpHandleTrap
|
||||||
|
popaq
|
||||||
|
add rsp, 16
|
||||||
|
iretq
|
||||||
|
endm
|
||||||
|
|
||||||
|
;;
|
||||||
|
; @todo: Find a smarter way to do this.
|
||||||
|
;
|
||||||
|
; Apart from the first 32 descriptors, everything should be in some kind of
|
||||||
|
; loop that would unroll at compile-time.
|
||||||
|
;;
|
||||||
|
|
||||||
|
ArpISRNoError 0
|
||||||
|
ArpISRNoError 1
|
||||||
|
ArpISRNoError 2
|
||||||
|
ArpISRNoError 3
|
||||||
|
ArpISRNoError 4
|
||||||
|
ArpISRNoError 5
|
||||||
|
ArpISRNoError 6
|
||||||
|
ArpISRNoError 7
|
||||||
|
ArpISRError 8
|
||||||
|
ArpISRNoError 9
|
||||||
|
ArpISRError 10
|
||||||
|
ArpISRError 11
|
||||||
|
ArpISRError 12
|
||||||
|
ArpISRError 13
|
||||||
|
ArpISRError 14
|
||||||
|
ArpISRNoError 15
|
||||||
|
ArpISRNoError 16
|
||||||
|
ArpISRError 17
|
||||||
|
ArpISRNoError 18
|
||||||
|
ArpISRNoError 19
|
||||||
|
ArpISRNoError 20
|
||||||
|
ArpISRNoError 21
|
||||||
|
ArpISRNoError 22
|
||||||
|
ArpISRNoError 23
|
||||||
|
ArpISRNoError 24
|
||||||
|
ArpISRNoError 25
|
||||||
|
ArpISRNoError 26
|
||||||
|
ArpISRNoError 27
|
||||||
|
ArpISRNoError 28
|
||||||
|
ArpISRNoError 29
|
||||||
|
ArpISRError 30
|
||||||
|
ArpISRNoError 31
|
||||||
|
|
||||||
|
ArpISRNoError 32
|
||||||
|
ArpISRNoError 33
|
||||||
|
ArpISRNoError 34
|
||||||
|
ArpISRNoError 35
|
||||||
|
ArpISRNoError 36
|
||||||
|
ArpISRNoError 37
|
||||||
|
ArpISRNoError 38
|
||||||
|
ArpISRNoError 39
|
||||||
|
ArpISRNoError 40
|
||||||
|
ArpISRNoError 41
|
||||||
|
ArpISRNoError 42
|
||||||
|
ArpISRNoError 43
|
||||||
|
ArpISRNoError 44
|
||||||
|
ArpISRNoError 45
|
||||||
|
ArpISRNoError 46
|
||||||
|
ArpISRNoError 47
|
||||||
|
ArpISRNoError 48
|
||||||
|
ArpISRNoError 49
|
||||||
|
ArpISRNoError 50
|
||||||
|
ArpISRNoError 51
|
||||||
|
ArpISRNoError 52
|
||||||
|
ArpISRNoError 53
|
||||||
|
ArpISRNoError 54
|
||||||
|
ArpISRNoError 55
|
||||||
|
ArpISRNoError 56
|
||||||
|
ArpISRNoError 57
|
||||||
|
ArpISRNoError 58
|
||||||
|
ArpISRNoError 59
|
||||||
|
ArpISRNoError 60
|
||||||
|
ArpISRNoError 61
|
||||||
|
ArpISRNoError 62
|
||||||
|
ArpISRNoError 63
|
||||||
|
ArpISRNoError 64
|
||||||
|
ArpISRNoError 65
|
||||||
|
ArpISRNoError 66
|
||||||
|
ArpISRNoError 67
|
||||||
|
ArpISRNoError 68
|
||||||
|
ArpISRNoError 69
|
||||||
|
ArpISRNoError 70
|
||||||
|
ArpISRNoError 71
|
||||||
|
ArpISRNoError 72
|
||||||
|
ArpISRNoError 73
|
||||||
|
ArpISRNoError 74
|
||||||
|
ArpISRNoError 75
|
||||||
|
ArpISRNoError 76
|
||||||
|
ArpISRNoError 77
|
||||||
|
ArpISRNoError 78
|
||||||
|
ArpISRNoError 79
|
||||||
|
ArpISRNoError 80
|
||||||
|
ArpISRNoError 81
|
||||||
|
ArpISRNoError 82
|
||||||
|
ArpISRNoError 83
|
||||||
|
ArpISRNoError 84
|
||||||
|
ArpISRNoError 85
|
||||||
|
ArpISRNoError 86
|
||||||
|
ArpISRNoError 87
|
||||||
|
ArpISRNoError 88
|
||||||
|
ArpISRNoError 89
|
||||||
|
ArpISRNoError 90
|
||||||
|
ArpISRNoError 91
|
||||||
|
ArpISRNoError 92
|
||||||
|
ArpISRNoError 93
|
||||||
|
ArpISRNoError 94
|
||||||
|
ArpISRNoError 95
|
||||||
|
ArpISRNoError 96
|
||||||
|
ArpISRNoError 97
|
||||||
|
ArpISRNoError 98
|
||||||
|
ArpISRNoError 99
|
||||||
|
ArpISRNoError 100
|
||||||
|
ArpISRNoError 101
|
||||||
|
ArpISRNoError 102
|
||||||
|
ArpISRNoError 103
|
||||||
|
ArpISRNoError 104
|
||||||
|
ArpISRNoError 105
|
||||||
|
ArpISRNoError 106
|
||||||
|
ArpISRNoError 107
|
||||||
|
ArpISRNoError 108
|
||||||
|
ArpISRNoError 109
|
||||||
|
ArpISRNoError 110
|
||||||
|
ArpISRNoError 111
|
||||||
|
ArpISRNoError 112
|
||||||
|
ArpISRNoError 113
|
||||||
|
ArpISRNoError 114
|
||||||
|
ArpISRNoError 115
|
||||||
|
ArpISRNoError 116
|
||||||
|
ArpISRNoError 117
|
||||||
|
ArpISRNoError 118
|
||||||
|
ArpISRNoError 119
|
||||||
|
ArpISRNoError 120
|
||||||
|
ArpISRNoError 121
|
||||||
|
ArpISRNoError 122
|
||||||
|
ArpISRNoError 123
|
||||||
|
ArpISRNoError 124
|
||||||
|
ArpISRNoError 125
|
||||||
|
ArpISRNoError 126
|
||||||
|
ArpISRNoError 127
|
||||||
|
ArpISRNoError 128
|
||||||
|
ArpISRNoError 129
|
||||||
|
ArpISRNoError 130
|
||||||
|
ArpISRNoError 131
|
||||||
|
ArpISRNoError 132
|
||||||
|
ArpISRNoError 133
|
||||||
|
ArpISRNoError 134
|
||||||
|
ArpISRNoError 135
|
||||||
|
ArpISRNoError 136
|
||||||
|
ArpISRNoError 137
|
||||||
|
ArpISRNoError 138
|
||||||
|
ArpISRNoError 139
|
||||||
|
ArpISRNoError 140
|
||||||
|
ArpISRNoError 141
|
||||||
|
ArpISRNoError 142
|
||||||
|
ArpISRNoError 143
|
||||||
|
ArpISRNoError 144
|
||||||
|
ArpISRNoError 145
|
||||||
|
ArpISRNoError 146
|
||||||
|
ArpISRNoError 147
|
||||||
|
ArpISRNoError 148
|
||||||
|
ArpISRNoError 149
|
||||||
|
ArpISRNoError 150
|
||||||
|
ArpISRNoError 151
|
||||||
|
ArpISRNoError 152
|
||||||
|
ArpISRNoError 153
|
||||||
|
ArpISRNoError 154
|
||||||
|
ArpISRNoError 155
|
||||||
|
ArpISRNoError 156
|
||||||
|
ArpISRNoError 157
|
||||||
|
ArpISRNoError 158
|
||||||
|
ArpISRNoError 159
|
||||||
|
ArpISRNoError 160
|
||||||
|
ArpISRNoError 161
|
||||||
|
ArpISRNoError 162
|
||||||
|
ArpISRNoError 163
|
||||||
|
ArpISRNoError 164
|
||||||
|
ArpISRNoError 165
|
||||||
|
ArpISRNoError 166
|
||||||
|
ArpISRNoError 167
|
||||||
|
ArpISRNoError 168
|
||||||
|
ArpISRNoError 169
|
||||||
|
ArpISRNoError 170
|
||||||
|
ArpISRNoError 171
|
||||||
|
ArpISRNoError 172
|
||||||
|
ArpISRNoError 173
|
||||||
|
ArpISRNoError 174
|
||||||
|
ArpISRNoError 175
|
||||||
|
ArpISRNoError 176
|
||||||
|
ArpISRNoError 177
|
||||||
|
ArpISRNoError 178
|
||||||
|
ArpISRNoError 179
|
||||||
|
ArpISRNoError 180
|
||||||
|
ArpISRNoError 181
|
||||||
|
ArpISRNoError 182
|
||||||
|
ArpISRNoError 183
|
||||||
|
ArpISRNoError 184
|
||||||
|
ArpISRNoError 185
|
||||||
|
ArpISRNoError 186
|
||||||
|
ArpISRNoError 187
|
||||||
|
ArpISRNoError 188
|
||||||
|
ArpISRNoError 189
|
||||||
|
ArpISRNoError 190
|
||||||
|
ArpISRNoError 191
|
||||||
|
ArpISRNoError 192
|
||||||
|
ArpISRNoError 193
|
||||||
|
ArpISRNoError 194
|
||||||
|
ArpISRNoError 195
|
||||||
|
ArpISRNoError 196
|
||||||
|
ArpISRNoError 197
|
||||||
|
ArpISRNoError 198
|
||||||
|
ArpISRNoError 199
|
||||||
|
ArpISRNoError 200
|
||||||
|
ArpISRNoError 201
|
||||||
|
ArpISRNoError 202
|
||||||
|
ArpISRNoError 203
|
||||||
|
ArpISRNoError 204
|
||||||
|
ArpISRNoError 205
|
||||||
|
ArpISRNoError 206
|
||||||
|
ArpISRNoError 207
|
||||||
|
ArpISRNoError 208
|
||||||
|
ArpISRNoError 209
|
||||||
|
ArpISRNoError 210
|
||||||
|
ArpISRNoError 211
|
||||||
|
ArpISRNoError 212
|
||||||
|
ArpISRNoError 213
|
||||||
|
ArpISRNoError 214
|
||||||
|
ArpISRNoError 215
|
||||||
|
ArpISRNoError 216
|
||||||
|
ArpISRNoError 217
|
||||||
|
ArpISRNoError 218
|
||||||
|
ArpISRNoError 219
|
||||||
|
ArpISRNoError 220
|
||||||
|
ArpISRNoError 221
|
||||||
|
ArpISRNoError 222
|
||||||
|
ArpISRNoError 223
|
||||||
|
ArpISRNoError 224
|
||||||
|
ArpISRNoError 225
|
||||||
|
ArpISRNoError 226
|
||||||
|
ArpISRNoError 227
|
||||||
|
ArpISRNoError 228
|
||||||
|
ArpISRNoError 229
|
||||||
|
ArpISRNoError 230
|
||||||
|
ArpISRNoError 231
|
||||||
|
ArpISRNoError 232
|
||||||
|
ArpISRNoError 233
|
||||||
|
ArpISRNoError 234
|
||||||
|
ArpISRNoError 235
|
||||||
|
ArpISRNoError 236
|
||||||
|
ArpISRNoError 237
|
||||||
|
ArpISRNoError 238
|
||||||
|
ArpISRNoError 239
|
||||||
|
ArpISRNoError 240
|
||||||
|
ArpISRNoError 241
|
||||||
|
ArpISRNoError 242
|
||||||
|
ArpISRNoError 243
|
||||||
|
ArpISRNoError 244
|
||||||
|
ArpISRNoError 245
|
||||||
|
ArpISRNoError 246
|
||||||
|
ArpISRNoError 247
|
||||||
|
ArpISRNoError 248
|
||||||
|
ArpISRNoError 249
|
||||||
|
ArpISRNoError 250
|
||||||
|
ArpISRNoError 251
|
||||||
|
ArpISRNoError 252
|
||||||
|
ArpISRNoError 253
|
||||||
|
ArpISRNoError 254
|
||||||
|
ArpISRNoError 255
|
||||||
|
|
||||||
|
PUBLIC ArpTrapHandlers
|
||||||
|
ArpTrapHandlers:
|
||||||
|
DQ ArpHandleTrap0
|
||||||
|
DQ ArpHandleTrap1
|
||||||
|
DQ ArpHandleTrap2
|
||||||
|
DQ ArpHandleTrap3
|
||||||
|
DQ ArpHandleTrap4
|
||||||
|
DQ ArpHandleTrap5
|
||||||
|
DQ ArpHandleTrap6
|
||||||
|
DQ ArpHandleTrap7
|
||||||
|
DQ ArpHandleTrap8
|
||||||
|
DQ ArpHandleTrap9
|
||||||
|
DQ ArpHandleTrap10
|
||||||
|
DQ ArpHandleTrap11
|
||||||
|
DQ ArpHandleTrap12
|
||||||
|
DQ ArpHandleTrap13
|
||||||
|
DQ ArpHandleTrap14
|
||||||
|
DQ ArpHandleTrap15
|
||||||
|
DQ ArpHandleTrap16
|
||||||
|
DQ ArpHandleTrap17
|
||||||
|
DQ ArpHandleTrap18
|
||||||
|
DQ ArpHandleTrap19
|
||||||
|
DQ ArpHandleTrap20
|
||||||
|
DQ ArpHandleTrap21
|
||||||
|
DQ ArpHandleTrap22
|
||||||
|
DQ ArpHandleTrap23
|
||||||
|
DQ ArpHandleTrap24
|
||||||
|
DQ ArpHandleTrap25
|
||||||
|
DQ ArpHandleTrap26
|
||||||
|
DQ ArpHandleTrap27
|
||||||
|
DQ ArpHandleTrap28
|
||||||
|
DQ ArpHandleTrap29
|
||||||
|
DQ ArpHandleTrap30
|
||||||
|
DQ ArpHandleTrap31
|
||||||
|
DQ ArpHandleTrap32
|
||||||
|
DQ ArpHandleTrap33
|
||||||
|
DQ ArpHandleTrap34
|
||||||
|
DQ ArpHandleTrap35
|
||||||
|
DQ ArpHandleTrap36
|
||||||
|
DQ ArpHandleTrap37
|
||||||
|
DQ ArpHandleTrap38
|
||||||
|
DQ ArpHandleTrap39
|
||||||
|
DQ ArpHandleTrap40
|
||||||
|
DQ ArpHandleTrap41
|
||||||
|
DQ ArpHandleTrap42
|
||||||
|
DQ ArpHandleTrap43
|
||||||
|
DQ ArpHandleTrap44
|
||||||
|
DQ ArpHandleTrap45
|
||||||
|
DQ ArpHandleTrap46
|
||||||
|
DQ ArpHandleTrap47
|
||||||
|
DQ ArpHandleTrap48
|
||||||
|
DQ ArpHandleTrap49
|
||||||
|
DQ ArpHandleTrap50
|
||||||
|
DQ ArpHandleTrap51
|
||||||
|
DQ ArpHandleTrap52
|
||||||
|
DQ ArpHandleTrap53
|
||||||
|
DQ ArpHandleTrap54
|
||||||
|
DQ ArpHandleTrap55
|
||||||
|
DQ ArpHandleTrap56
|
||||||
|
DQ ArpHandleTrap57
|
||||||
|
DQ ArpHandleTrap58
|
||||||
|
DQ ArpHandleTrap59
|
||||||
|
DQ ArpHandleTrap60
|
||||||
|
DQ ArpHandleTrap61
|
||||||
|
DQ ArpHandleTrap62
|
||||||
|
DQ ArpHandleTrap63
|
||||||
|
DQ ArpHandleTrap64
|
||||||
|
DQ ArpHandleTrap65
|
||||||
|
DQ ArpHandleTrap66
|
||||||
|
DQ ArpHandleTrap67
|
||||||
|
DQ ArpHandleTrap68
|
||||||
|
DQ ArpHandleTrap69
|
||||||
|
DQ ArpHandleTrap70
|
||||||
|
DQ ArpHandleTrap71
|
||||||
|
DQ ArpHandleTrap72
|
||||||
|
DQ ArpHandleTrap73
|
||||||
|
DQ ArpHandleTrap74
|
||||||
|
DQ ArpHandleTrap75
|
||||||
|
DQ ArpHandleTrap76
|
||||||
|
DQ ArpHandleTrap77
|
||||||
|
DQ ArpHandleTrap78
|
||||||
|
DQ ArpHandleTrap79
|
||||||
|
DQ ArpHandleTrap80
|
||||||
|
DQ ArpHandleTrap81
|
||||||
|
DQ ArpHandleTrap82
|
||||||
|
DQ ArpHandleTrap83
|
||||||
|
DQ ArpHandleTrap84
|
||||||
|
DQ ArpHandleTrap85
|
||||||
|
DQ ArpHandleTrap86
|
||||||
|
DQ ArpHandleTrap87
|
||||||
|
DQ ArpHandleTrap88
|
||||||
|
DQ ArpHandleTrap89
|
||||||
|
DQ ArpHandleTrap90
|
||||||
|
DQ ArpHandleTrap91
|
||||||
|
DQ ArpHandleTrap92
|
||||||
|
DQ ArpHandleTrap93
|
||||||
|
DQ ArpHandleTrap94
|
||||||
|
DQ ArpHandleTrap95
|
||||||
|
DQ ArpHandleTrap96
|
||||||
|
DQ ArpHandleTrap97
|
||||||
|
DQ ArpHandleTrap98
|
||||||
|
DQ ArpHandleTrap99
|
||||||
|
DQ ArpHandleTrap100
|
||||||
|
DQ ArpHandleTrap101
|
||||||
|
DQ ArpHandleTrap102
|
||||||
|
DQ ArpHandleTrap103
|
||||||
|
DQ ArpHandleTrap104
|
||||||
|
DQ ArpHandleTrap105
|
||||||
|
DQ ArpHandleTrap106
|
||||||
|
DQ ArpHandleTrap107
|
||||||
|
DQ ArpHandleTrap108
|
||||||
|
DQ ArpHandleTrap109
|
||||||
|
DQ ArpHandleTrap110
|
||||||
|
DQ ArpHandleTrap111
|
||||||
|
DQ ArpHandleTrap112
|
||||||
|
DQ ArpHandleTrap113
|
||||||
|
DQ ArpHandleTrap114
|
||||||
|
DQ ArpHandleTrap115
|
||||||
|
DQ ArpHandleTrap116
|
||||||
|
DQ ArpHandleTrap117
|
||||||
|
DQ ArpHandleTrap118
|
||||||
|
DQ ArpHandleTrap119
|
||||||
|
DQ ArpHandleTrap120
|
||||||
|
DQ ArpHandleTrap121
|
||||||
|
DQ ArpHandleTrap122
|
||||||
|
DQ ArpHandleTrap123
|
||||||
|
DQ ArpHandleTrap124
|
||||||
|
DQ ArpHandleTrap125
|
||||||
|
DQ ArpHandleTrap126
|
||||||
|
DQ ArpHandleTrap127
|
||||||
|
DQ ArpHandleTrap128
|
||||||
|
DQ ArpHandleTrap129
|
||||||
|
DQ ArpHandleTrap130
|
||||||
|
DQ ArpHandleTrap131
|
||||||
|
DQ ArpHandleTrap132
|
||||||
|
DQ ArpHandleTrap133
|
||||||
|
DQ ArpHandleTrap134
|
||||||
|
DQ ArpHandleTrap135
|
||||||
|
DQ ArpHandleTrap136
|
||||||
|
DQ ArpHandleTrap137
|
||||||
|
DQ ArpHandleTrap138
|
||||||
|
DQ ArpHandleTrap139
|
||||||
|
DQ ArpHandleTrap140
|
||||||
|
DQ ArpHandleTrap141
|
||||||
|
DQ ArpHandleTrap142
|
||||||
|
DQ ArpHandleTrap143
|
||||||
|
DQ ArpHandleTrap144
|
||||||
|
DQ ArpHandleTrap145
|
||||||
|
DQ ArpHandleTrap146
|
||||||
|
DQ ArpHandleTrap147
|
||||||
|
DQ ArpHandleTrap148
|
||||||
|
DQ ArpHandleTrap149
|
||||||
|
DQ ArpHandleTrap150
|
||||||
|
DQ ArpHandleTrap151
|
||||||
|
DQ ArpHandleTrap152
|
||||||
|
DQ ArpHandleTrap153
|
||||||
|
DQ ArpHandleTrap154
|
||||||
|
DQ ArpHandleTrap155
|
||||||
|
DQ ArpHandleTrap156
|
||||||
|
DQ ArpHandleTrap157
|
||||||
|
DQ ArpHandleTrap158
|
||||||
|
DQ ArpHandleTrap159
|
||||||
|
DQ ArpHandleTrap160
|
||||||
|
DQ ArpHandleTrap161
|
||||||
|
DQ ArpHandleTrap162
|
||||||
|
DQ ArpHandleTrap163
|
||||||
|
DQ ArpHandleTrap164
|
||||||
|
DQ ArpHandleTrap165
|
||||||
|
DQ ArpHandleTrap166
|
||||||
|
DQ ArpHandleTrap167
|
||||||
|
DQ ArpHandleTrap168
|
||||||
|
DQ ArpHandleTrap169
|
||||||
|
DQ ArpHandleTrap170
|
||||||
|
DQ ArpHandleTrap171
|
||||||
|
DQ ArpHandleTrap172
|
||||||
|
DQ ArpHandleTrap173
|
||||||
|
DQ ArpHandleTrap174
|
||||||
|
DQ ArpHandleTrap175
|
||||||
|
DQ ArpHandleTrap176
|
||||||
|
DQ ArpHandleTrap177
|
||||||
|
DQ ArpHandleTrap178
|
||||||
|
DQ ArpHandleTrap179
|
||||||
|
DQ ArpHandleTrap180
|
||||||
|
DQ ArpHandleTrap181
|
||||||
|
DQ ArpHandleTrap182
|
||||||
|
DQ ArpHandleTrap183
|
||||||
|
DQ ArpHandleTrap184
|
||||||
|
DQ ArpHandleTrap185
|
||||||
|
DQ ArpHandleTrap186
|
||||||
|
DQ ArpHandleTrap187
|
||||||
|
DQ ArpHandleTrap188
|
||||||
|
DQ ArpHandleTrap189
|
||||||
|
DQ ArpHandleTrap190
|
||||||
|
DQ ArpHandleTrap191
|
||||||
|
DQ ArpHandleTrap192
|
||||||
|
DQ ArpHandleTrap193
|
||||||
|
DQ ArpHandleTrap194
|
||||||
|
DQ ArpHandleTrap195
|
||||||
|
DQ ArpHandleTrap196
|
||||||
|
DQ ArpHandleTrap197
|
||||||
|
DQ ArpHandleTrap198
|
||||||
|
DQ ArpHandleTrap199
|
||||||
|
DQ ArpHandleTrap200
|
||||||
|
DQ ArpHandleTrap201
|
||||||
|
DQ ArpHandleTrap202
|
||||||
|
DQ ArpHandleTrap203
|
||||||
|
DQ ArpHandleTrap204
|
||||||
|
DQ ArpHandleTrap205
|
||||||
|
DQ ArpHandleTrap206
|
||||||
|
DQ ArpHandleTrap207
|
||||||
|
DQ ArpHandleTrap208
|
||||||
|
DQ ArpHandleTrap209
|
||||||
|
DQ ArpHandleTrap210
|
||||||
|
DQ ArpHandleTrap211
|
||||||
|
DQ ArpHandleTrap212
|
||||||
|
DQ ArpHandleTrap213
|
||||||
|
DQ ArpHandleTrap214
|
||||||
|
DQ ArpHandleTrap215
|
||||||
|
DQ ArpHandleTrap216
|
||||||
|
DQ ArpHandleTrap217
|
||||||
|
DQ ArpHandleTrap218
|
||||||
|
DQ ArpHandleTrap219
|
||||||
|
DQ ArpHandleTrap220
|
||||||
|
DQ ArpHandleTrap221
|
||||||
|
DQ ArpHandleTrap222
|
||||||
|
DQ ArpHandleTrap223
|
||||||
|
DQ ArpHandleTrap224
|
||||||
|
DQ ArpHandleTrap225
|
||||||
|
DQ ArpHandleTrap226
|
||||||
|
DQ ArpHandleTrap227
|
||||||
|
DQ ArpHandleTrap228
|
||||||
|
DQ ArpHandleTrap229
|
||||||
|
DQ ArpHandleTrap230
|
||||||
|
DQ ArpHandleTrap231
|
||||||
|
DQ ArpHandleTrap232
|
||||||
|
DQ ArpHandleTrap233
|
||||||
|
DQ ArpHandleTrap234
|
||||||
|
DQ ArpHandleTrap235
|
||||||
|
DQ ArpHandleTrap236
|
||||||
|
DQ ArpHandleTrap237
|
||||||
|
DQ ArpHandleTrap238
|
||||||
|
DQ ArpHandleTrap239
|
||||||
|
DQ ArpHandleTrap240
|
||||||
|
DQ ArpHandleTrap241
|
||||||
|
DQ ArpHandleTrap242
|
||||||
|
DQ ArpHandleTrap243
|
||||||
|
DQ ArpHandleTrap244
|
||||||
|
DQ ArpHandleTrap245
|
||||||
|
DQ ArpHandleTrap246
|
||||||
|
DQ ArpHandleTrap247
|
||||||
|
DQ ArpHandleTrap248
|
||||||
|
DQ ArpHandleTrap249
|
||||||
|
DQ ArpHandleTrap250
|
||||||
|
DQ ArpHandleTrap251
|
||||||
|
DQ ArpHandleTrap252
|
||||||
|
DQ ArpHandleTrap253
|
||||||
|
DQ ArpHandleTrap254
|
||||||
|
DQ ArpHandleTrap255
|
@ -30,4 +30,7 @@ EXTERN UCHAR ArKernelBootStack[KERNEL_STACK_SIZE];
|
|||||||
/* Kernel own fault stack */
|
/* Kernel own fault stack */
|
||||||
EXTERN UCHAR ArKernelFaultStack[KERNEL_STACK_SIZE];
|
EXTERN UCHAR ArKernelFaultStack[KERNEL_STACK_SIZE];
|
||||||
|
|
||||||
|
/* Trap handlers */
|
||||||
|
EXTERN PVOID ArpTrapHandlers[IDT_ENTRIES];
|
||||||
|
|
||||||
#endif /* __XTOSKRNL_AMD64_GLOBALS_H */
|
#endif /* __XTOSKRNL_AMD64_GLOBALS_H */
|
||||||
|
@ -52,6 +52,11 @@ KeStartXtSystem(IN PKERNEL_INITIALIZATION_BLOCK Parameters)
|
|||||||
/* Architecture specific kernel initialization */
|
/* Architecture specific kernel initialization */
|
||||||
KepInitializeMachine();
|
KepInitializeMachine();
|
||||||
|
|
||||||
|
#ifdef _DEBUG
|
||||||
|
DebugPrint(L"Initiating crash...\n");
|
||||||
|
asm("int $0x00");
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Switch boot stack aligning it to 4 byte boundary */
|
/* Switch boot stack aligning it to 4 byte boundary */
|
||||||
KepSwitchBootStack((ULONG_PTR)&ArKernelBootStack & ~0x3);
|
KepSwitchBootStack((ULONG_PTR)&ArKernelBootStack & ~0x3);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user