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;
|
||||
} 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 */
|
||||
|
@ -12,6 +12,7 @@ list(APPEND XTOSKRNL_SOURCE
|
||||
${XTOSKRNL_SOURCE_DIR}/ar/${ARCH}/globals.c
|
||||
${XTOSKRNL_SOURCE_DIR}/ar/${ARCH}/procsup.c
|
||||
${XTOSKRNL_SOURCE_DIR}/ar/${ARCH}/traps.c
|
||||
${XTOSKRNL_SOURCE_DIR}/ar/${ARCH}/traps.s
|
||||
${XTOSKRNL_SOURCE_DIR}/ex/rundown.c
|
||||
${XTOSKRNL_SOURCE_DIR}/hl/apic.c
|
||||
${XTOSKRNL_SOURCE_DIR}/hl/cport.c
|
||||
|
@ -221,41 +221,28 @@ ArpInitializeGdt(IN PKPROCESSOR_BLOCK ProcessorBlock)
|
||||
*
|
||||
* @since XT 1.0
|
||||
*/
|
||||
|
||||
EXTERN VOID ArpHandleTrap0();
|
||||
XTAPI
|
||||
VOID
|
||||
ArpInitializeIdt(IN PKPROCESSOR_BLOCK ProcessorBlock)
|
||||
{
|
||||
UINT Vector;
|
||||
|
||||
DebugPrint(L"%lx\n", &ArpTrapHandlers[0]);
|
||||
DebugPrint(L"%lx\n", &ArpHandleTrap0);
|
||||
|
||||
/* Fill in all vectors */
|
||||
for(Vector = 0; Vector < IDT_ENTRIES; Vector++)
|
||||
{
|
||||
/* 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 */
|
||||
ArpSetIdtGate(ProcessorBlock->IdtBase, 0x00, ArpHandleTrap00, KGDT_R0_CODE, KIDT_IST_RESERVED, KIDT_ACCESS_RING0);
|
||||
ArpSetIdtGate(ProcessorBlock->IdtBase, 0x01, ArpHandleTrap01, KGDT_R0_CODE, KIDT_IST_RESERVED, KIDT_ACCESS_RING0);
|
||||
ArpSetIdtGate(ProcessorBlock->IdtBase, 0x02, ArpHandleTrap02, KGDT_R0_CODE, KIDT_IST_PANIC, 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);
|
||||
ArpSetIdtGate(ProcessorBlock->IdtBase, 0x02, ArpTrapHandlers[2], KGDT_R0_CODE, KIDT_IST_PANIC, KIDT_ACCESS_RING0);
|
||||
ArpSetIdtGate(ProcessorBlock->IdtBase, 0x08, ArpTrapHandlers[8], KGDT_R0_CODE, KIDT_IST_PANIC, KIDT_ACCESS_RING0);
|
||||
ArpSetIdtGate(ProcessorBlock->IdtBase, 0x12, ArpTrapHandlers[12], KGDT_R0_CODE, KIDT_IST_MCA, KIDT_ACCESS_RING0);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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.
|
||||
*
|
||||
@ -32,323 +35,9 @@ ArpHandleSystemCall64()
|
||||
*/
|
||||
XTCDECL
|
||||
VOID
|
||||
ArpHandleTrap00()
|
||||
ArpHandleTrap(EXCEPTION_REGISTERS Registers)
|
||||
{
|
||||
DebugPrint(L"Handled Division-By-Zero Error (0x00)!\n");
|
||||
for(;;);
|
||||
}
|
||||
|
||||
/**
|
||||
* 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");
|
||||
DebugPrint(L"I came, I saw.\n");
|
||||
DebugPrint(L"Vector: %d\n", Registers.Rip);
|
||||
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 */
|
||||
EXTERN UCHAR ArKernelFaultStack[KERNEL_STACK_SIZE];
|
||||
|
||||
/* Trap handlers */
|
||||
EXTERN PVOID ArpTrapHandlers[IDT_ENTRIES];
|
||||
|
||||
#endif /* __XTOSKRNL_AMD64_GLOBALS_H */
|
||||
|
@ -52,6 +52,11 @@ KeStartXtSystem(IN PKERNEL_INITIALIZATION_BLOCK Parameters)
|
||||
/* Architecture specific kernel initialization */
|
||||
KepInitializeMachine();
|
||||
|
||||
#ifdef _DEBUG
|
||||
DebugPrint(L"Initiating crash...\n");
|
||||
asm("int $0x00");
|
||||
#endif
|
||||
|
||||
/* Switch boot stack aligning it to 4 byte boundary */
|
||||
KepSwitchBootStack((ULONG_PTR)&ArKernelBootStack & ~0x3);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user