Add register dump to trap handler
This commit is contained in:
@@ -23,6 +23,25 @@ XTCDECL
|
||||
VOID
|
||||
AR::Traps::DispatchTrap(IN PKTRAP_FRAME TrapFrame)
|
||||
{
|
||||
DebugPrint(L"Caught trap: 0x%.2llX with error code: %.4llX at RIP: 0x%.16llX\n"
|
||||
L"RAX: 0x%.16llX, RBX: 0x%.16llX, RCX: 0x%.16llX, RDX: 0x%.16llX\n"
|
||||
L"R8: 0x%.16llX, R9: 0x%.16llX, R10: 0x%.16llX, R11: 0x%.16llX\n"
|
||||
L"R12: 0x%.16llX, R13: 0x%.16llX, R14: 0x%.16llX, R15: 0x%.16llX\n"
|
||||
L"RBP: 0x%.16llX, RSP: 0x%.16llX, RDI: 0x%.16llX, RSI: 0x%.16llX\n"
|
||||
L"DR0: 0x%.16llX, DR1: 0x%.16llX, DR2: 0x%.16llX, DR3: 0x%.16llX\n"
|
||||
L"DR6: 0x%.16llX, DR7: 0x%.16llX\n"
|
||||
L"CR2: 0x%.16llX, CR3: 0x%.16llX, CS: 0x%.16llX, DS: 0x%.16hX\n"
|
||||
L"ES: 0x%.16hX, FS: 0x%.16hX, GS: 0x%.16hX, SS: 0x%.16llX\n",
|
||||
TrapFrame->Vector, TrapFrame->ErrorCode, TrapFrame->Rip,
|
||||
TrapFrame->Rax, TrapFrame->Rbx, TrapFrame->Rcx, TrapFrame->Rdx,
|
||||
TrapFrame->R8, TrapFrame->R9, TrapFrame->R10, TrapFrame->R11,
|
||||
TrapFrame->R12, TrapFrame->R13, TrapFrame->R14, TrapFrame->R15,
|
||||
TrapFrame->Rbp, TrapFrame->Rsp, TrapFrame->Rdi, TrapFrame->Rsi,
|
||||
TrapFrame->Dr0, TrapFrame->Dr1, TrapFrame->Dr2, TrapFrame->Dr3,
|
||||
TrapFrame->Dr6, TrapFrame->Dr7,
|
||||
TrapFrame->Cr2, TrapFrame->Cr3, TrapFrame->SegCs, TrapFrame->SegDs,
|
||||
TrapFrame->SegEs, TrapFrame->SegFs, TrapFrame->SegGs, TrapFrame->SegSs);
|
||||
|
||||
/* Check vector and call appropriate handler */
|
||||
switch(TrapFrame->Vector)
|
||||
{
|
||||
@@ -172,7 +191,7 @@ VOID
|
||||
AR::Traps::HandleTrap00(IN PKTRAP_FRAME TrapFrame)
|
||||
{
|
||||
DebugPrint(L"Handled Division-By-Zero Error (0x00)!\n");
|
||||
for(;;);
|
||||
KE::Crash::Panic(0x00);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -190,7 +209,7 @@ VOID
|
||||
AR::Traps::HandleTrap01(IN PKTRAP_FRAME TrapFrame)
|
||||
{
|
||||
DebugPrint(L"Handled Debug exception (0x01)!\n");
|
||||
for(;;);
|
||||
KE::Crash::Panic(0x01);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -208,7 +227,7 @@ VOID
|
||||
AR::Traps::HandleTrap02(IN PKTRAP_FRAME TrapFrame)
|
||||
{
|
||||
DebugPrint(L"Handled Non-Maskable-Interrupt (0x02)!\n");
|
||||
for(;;);
|
||||
KE::Crash::Panic(0x02);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -226,7 +245,7 @@ VOID
|
||||
AR::Traps::HandleTrap03(IN PKTRAP_FRAME TrapFrame)
|
||||
{
|
||||
DebugPrint(L"Handled INT3 (0x03)!\n");
|
||||
for(;;);
|
||||
KE::Crash::Panic(0x03);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -244,7 +263,7 @@ VOID
|
||||
AR::Traps::HandleTrap04(IN PKTRAP_FRAME TrapFrame)
|
||||
{
|
||||
DebugPrint(L"Handled Overflow exception (0x04)!\n");
|
||||
for(;;);
|
||||
KE::Crash::Panic(0x04);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -262,7 +281,7 @@ VOID
|
||||
AR::Traps::HandleTrap05(IN PKTRAP_FRAME TrapFrame)
|
||||
{
|
||||
DebugPrint(L"Handled Bound-Range-Exceeded exception (0x05)!\n");
|
||||
for(;;);
|
||||
KE::Crash::Panic(0x05);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -280,7 +299,7 @@ VOID
|
||||
AR::Traps::HandleTrap06(IN PKTRAP_FRAME TrapFrame)
|
||||
{
|
||||
DebugPrint(L"Handled Invalid Opcode exception (0x06)!\n");
|
||||
for(;;);
|
||||
KE::Crash::Panic(0x06);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -298,7 +317,7 @@ VOID
|
||||
AR::Traps::HandleTrap07(IN PKTRAP_FRAME TrapFrame)
|
||||
{
|
||||
DebugPrint(L"Handled Device Not Available exception (0x07)!\n");
|
||||
for(;;);
|
||||
KE::Crash::Panic(0x07);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -316,7 +335,7 @@ VOID
|
||||
AR::Traps::HandleTrap08(IN PKTRAP_FRAME TrapFrame)
|
||||
{
|
||||
DebugPrint(L"Handled Double-Fault exception (0x08)!\n");
|
||||
for(;;);
|
||||
KE::Crash::Panic(0x08);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -334,7 +353,7 @@ VOID
|
||||
AR::Traps::HandleTrap09(IN PKTRAP_FRAME TrapFrame)
|
||||
{
|
||||
DebugPrint(L"Handled Segment-Overrun exception (0x09)!\n");
|
||||
for(;;);
|
||||
KE::Crash::Panic(0x09);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -352,7 +371,7 @@ VOID
|
||||
AR::Traps::HandleTrap0A(IN PKTRAP_FRAME TrapFrame)
|
||||
{
|
||||
DebugPrint(L"Handled Invalid-TSS exception (0x0A)!\n");
|
||||
for(;;);
|
||||
KE::Crash::Panic(0x0A);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -370,7 +389,7 @@ VOID
|
||||
AR::Traps::HandleTrap0B(IN PKTRAP_FRAME TrapFrame)
|
||||
{
|
||||
DebugPrint(L"Handled Segment-Not-Present exception (0x0B)!\n");
|
||||
for(;;);
|
||||
KE::Crash::Panic(0x0B);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -388,7 +407,7 @@ VOID
|
||||
AR::Traps::HandleTrap0C(IN PKTRAP_FRAME TrapFrame)
|
||||
{
|
||||
DebugPrint(L"Handled Stack-Segment-Fault exception (0x0C)!\n");
|
||||
for(;;);
|
||||
KE::Crash::Panic(0x0C);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -406,7 +425,7 @@ VOID
|
||||
AR::Traps::HandleTrap0D(IN PKTRAP_FRAME TrapFrame)
|
||||
{
|
||||
DebugPrint(L"Handled General-Protection-Fault (0x0D)!\n");
|
||||
for(;;);
|
||||
KE::Crash::Panic(0x0D);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -424,7 +443,7 @@ VOID
|
||||
AR::Traps::HandleTrap0E(IN PKTRAP_FRAME TrapFrame)
|
||||
{
|
||||
DebugPrint(L"Handled Page-Fault exception (0x0E)!\n");
|
||||
for(;;);
|
||||
KE::Crash::Panic(0x0E);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -442,7 +461,7 @@ VOID
|
||||
AR::Traps::HandleTrap10(IN PKTRAP_FRAME TrapFrame)
|
||||
{
|
||||
DebugPrint(L"Handled x87 Floating-Point exception (0x10)!\n");
|
||||
for(;;);
|
||||
KE::Crash::Panic(0x10);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -460,7 +479,7 @@ VOID
|
||||
AR::Traps::HandleTrap11(IN PKTRAP_FRAME TrapFrame)
|
||||
{
|
||||
DebugPrint(L"Handled Alignment-Check exception (0x11)!\n");
|
||||
for(;;);
|
||||
KE::Crash::Panic(0x11);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -478,7 +497,7 @@ VOID
|
||||
AR::Traps::HandleTrap12(IN PKTRAP_FRAME TrapFrame)
|
||||
{
|
||||
DebugPrint(L"Handled Machine-Check exception (0x12)!\n");
|
||||
for(;;);
|
||||
KE::Crash::Panic(0x12);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -496,7 +515,7 @@ VOID
|
||||
AR::Traps::HandleTrap13(IN PKTRAP_FRAME TrapFrame)
|
||||
{
|
||||
DebugPrint(L"Handled SIMD Floating-Point exception (0x13)!\n");
|
||||
for(;;);
|
||||
KE::Crash::Panic(0x13);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -531,7 +550,7 @@ VOID
|
||||
AR::Traps::HandleTrap2C(IN PKTRAP_FRAME TrapFrame)
|
||||
{
|
||||
DebugPrint(L"Handled Assertion (0x2C)!\n");
|
||||
for(;;);
|
||||
KE::Crash::Panic(0x2C);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -549,7 +568,7 @@ VOID
|
||||
AR::Traps::HandleTrap2D(IN PKTRAP_FRAME TrapFrame)
|
||||
{
|
||||
DebugPrint(L"Handled Debug-Service-Request (0x2D)!\n");
|
||||
for(;;);
|
||||
KE::Crash::Panic(0x2D);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -601,7 +620,7 @@ VOID
|
||||
AR::Traps::HandleTrapFF(IN PKTRAP_FRAME TrapFrame)
|
||||
{
|
||||
DebugPrint(L"Handled Unexpected-Interrupt (0xFF)!\n");
|
||||
for(;;);
|
||||
KE::Crash::Panic(0xFF);
|
||||
}
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user