Refactor AR subsystem
This commit is contained in:
@@ -9,10 +9,6 @@
|
||||
#include <xtos.hh>
|
||||
|
||||
|
||||
/* Architecture-specific Library */
|
||||
namespace AR
|
||||
{
|
||||
|
||||
/**
|
||||
* Dispatches the trap provided by common trap handler.
|
||||
*
|
||||
@@ -25,7 +21,7 @@ namespace AR
|
||||
*/
|
||||
XTCDECL
|
||||
VOID
|
||||
Traps::DispatchTrap(IN PKTRAP_FRAME TrapFrame)
|
||||
AR::Traps::DispatchTrap(IN PKTRAP_FRAME TrapFrame)
|
||||
{
|
||||
/* Check vector and call appropriate handler */
|
||||
switch(TrapFrame->Vector)
|
||||
@@ -142,7 +138,7 @@ Traps::DispatchTrap(IN PKTRAP_FRAME TrapFrame)
|
||||
*/
|
||||
XTCDECL
|
||||
VOID
|
||||
Traps::HandleSystemCall32(VOID)
|
||||
AR::Traps::HandleSystemCall32(VOID)
|
||||
{
|
||||
DebugPrint(L"Handled 32-bit system call!\n");
|
||||
}
|
||||
@@ -156,7 +152,7 @@ Traps::HandleSystemCall32(VOID)
|
||||
*/
|
||||
XTCDECL
|
||||
VOID
|
||||
Traps::HandleSystemCall64(VOID)
|
||||
AR::Traps::HandleSystemCall64(VOID)
|
||||
{
|
||||
DebugPrint(L"Handled 64-bit system call!\n");
|
||||
}
|
||||
@@ -173,7 +169,7 @@ Traps::HandleSystemCall64(VOID)
|
||||
*/
|
||||
XTCDECL
|
||||
VOID
|
||||
Traps::HandleTrap00(IN PKTRAP_FRAME TrapFrame)
|
||||
AR::Traps::HandleTrap00(IN PKTRAP_FRAME TrapFrame)
|
||||
{
|
||||
DebugPrint(L"Handled Division-By-Zero Error (0x00)!\n");
|
||||
for(;;);
|
||||
@@ -191,7 +187,7 @@ Traps::HandleTrap00(IN PKTRAP_FRAME TrapFrame)
|
||||
*/
|
||||
XTCDECL
|
||||
VOID
|
||||
Traps::HandleTrap01(IN PKTRAP_FRAME TrapFrame)
|
||||
AR::Traps::HandleTrap01(IN PKTRAP_FRAME TrapFrame)
|
||||
{
|
||||
DebugPrint(L"Handled Debug exception (0x01)!\n");
|
||||
for(;;);
|
||||
@@ -209,7 +205,7 @@ Traps::HandleTrap01(IN PKTRAP_FRAME TrapFrame)
|
||||
*/
|
||||
XTCDECL
|
||||
VOID
|
||||
Traps::HandleTrap02(IN PKTRAP_FRAME TrapFrame)
|
||||
AR::Traps::HandleTrap02(IN PKTRAP_FRAME TrapFrame)
|
||||
{
|
||||
DebugPrint(L"Handled Non-Maskable-Interrupt (0x02)!\n");
|
||||
for(;;);
|
||||
@@ -227,7 +223,7 @@ Traps::HandleTrap02(IN PKTRAP_FRAME TrapFrame)
|
||||
*/
|
||||
XTCDECL
|
||||
VOID
|
||||
Traps::HandleTrap03(IN PKTRAP_FRAME TrapFrame)
|
||||
AR::Traps::HandleTrap03(IN PKTRAP_FRAME TrapFrame)
|
||||
{
|
||||
DebugPrint(L"Handled INT3 (0x03)!\n");
|
||||
for(;;);
|
||||
@@ -245,7 +241,7 @@ Traps::HandleTrap03(IN PKTRAP_FRAME TrapFrame)
|
||||
*/
|
||||
XTCDECL
|
||||
VOID
|
||||
Traps::HandleTrap04(IN PKTRAP_FRAME TrapFrame)
|
||||
AR::Traps::HandleTrap04(IN PKTRAP_FRAME TrapFrame)
|
||||
{
|
||||
DebugPrint(L"Handled Overflow exception (0x04)!\n");
|
||||
for(;;);
|
||||
@@ -263,7 +259,7 @@ Traps::HandleTrap04(IN PKTRAP_FRAME TrapFrame)
|
||||
*/
|
||||
XTCDECL
|
||||
VOID
|
||||
Traps::HandleTrap05(IN PKTRAP_FRAME TrapFrame)
|
||||
AR::Traps::HandleTrap05(IN PKTRAP_FRAME TrapFrame)
|
||||
{
|
||||
DebugPrint(L"Handled Bound-Range-Exceeded exception (0x05)!\n");
|
||||
for(;;);
|
||||
@@ -281,7 +277,7 @@ Traps::HandleTrap05(IN PKTRAP_FRAME TrapFrame)
|
||||
*/
|
||||
XTCDECL
|
||||
VOID
|
||||
Traps::HandleTrap06(IN PKTRAP_FRAME TrapFrame)
|
||||
AR::Traps::HandleTrap06(IN PKTRAP_FRAME TrapFrame)
|
||||
{
|
||||
DebugPrint(L"Handled Invalid Opcode exception (0x06)!\n");
|
||||
for(;;);
|
||||
@@ -299,7 +295,7 @@ Traps::HandleTrap06(IN PKTRAP_FRAME TrapFrame)
|
||||
*/
|
||||
XTCDECL
|
||||
VOID
|
||||
Traps::HandleTrap07(IN PKTRAP_FRAME TrapFrame)
|
||||
AR::Traps::HandleTrap07(IN PKTRAP_FRAME TrapFrame)
|
||||
{
|
||||
DebugPrint(L"Handled Device Not Available exception (0x07)!\n");
|
||||
for(;;);
|
||||
@@ -317,7 +313,7 @@ Traps::HandleTrap07(IN PKTRAP_FRAME TrapFrame)
|
||||
*/
|
||||
XTCDECL
|
||||
VOID
|
||||
Traps::HandleTrap08(IN PKTRAP_FRAME TrapFrame)
|
||||
AR::Traps::HandleTrap08(IN PKTRAP_FRAME TrapFrame)
|
||||
{
|
||||
DebugPrint(L"Handled Double-Fault exception (0x08)!\n");
|
||||
for(;;);
|
||||
@@ -335,7 +331,7 @@ Traps::HandleTrap08(IN PKTRAP_FRAME TrapFrame)
|
||||
*/
|
||||
XTCDECL
|
||||
VOID
|
||||
Traps::HandleTrap09(IN PKTRAP_FRAME TrapFrame)
|
||||
AR::Traps::HandleTrap09(IN PKTRAP_FRAME TrapFrame)
|
||||
{
|
||||
DebugPrint(L"Handled Segment-Overrun exception (0x09)!\n");
|
||||
for(;;);
|
||||
@@ -353,7 +349,7 @@ Traps::HandleTrap09(IN PKTRAP_FRAME TrapFrame)
|
||||
*/
|
||||
XTCDECL
|
||||
VOID
|
||||
Traps::HandleTrap0A(IN PKTRAP_FRAME TrapFrame)
|
||||
AR::Traps::HandleTrap0A(IN PKTRAP_FRAME TrapFrame)
|
||||
{
|
||||
DebugPrint(L"Handled Invalid-TSS exception (0x0A)!\n");
|
||||
for(;;);
|
||||
@@ -371,7 +367,7 @@ Traps::HandleTrap0A(IN PKTRAP_FRAME TrapFrame)
|
||||
*/
|
||||
XTCDECL
|
||||
VOID
|
||||
Traps::HandleTrap0B(IN PKTRAP_FRAME TrapFrame)
|
||||
AR::Traps::HandleTrap0B(IN PKTRAP_FRAME TrapFrame)
|
||||
{
|
||||
DebugPrint(L"Handled Segment-Not-Present exception (0x0B)!\n");
|
||||
for(;;);
|
||||
@@ -389,7 +385,7 @@ Traps::HandleTrap0B(IN PKTRAP_FRAME TrapFrame)
|
||||
*/
|
||||
XTCDECL
|
||||
VOID
|
||||
Traps::HandleTrap0C(IN PKTRAP_FRAME TrapFrame)
|
||||
AR::Traps::HandleTrap0C(IN PKTRAP_FRAME TrapFrame)
|
||||
{
|
||||
DebugPrint(L"Handled Stack-Segment-Fault exception (0x0C)!\n");
|
||||
for(;;);
|
||||
@@ -407,7 +403,7 @@ Traps::HandleTrap0C(IN PKTRAP_FRAME TrapFrame)
|
||||
*/
|
||||
XTCDECL
|
||||
VOID
|
||||
Traps::HandleTrap0D(IN PKTRAP_FRAME TrapFrame)
|
||||
AR::Traps::HandleTrap0D(IN PKTRAP_FRAME TrapFrame)
|
||||
{
|
||||
DebugPrint(L"Handled General-Protection-Fault (0x0D)!\n");
|
||||
for(;;);
|
||||
@@ -425,7 +421,7 @@ Traps::HandleTrap0D(IN PKTRAP_FRAME TrapFrame)
|
||||
*/
|
||||
XTCDECL
|
||||
VOID
|
||||
Traps::HandleTrap0E(IN PKTRAP_FRAME TrapFrame)
|
||||
AR::Traps::HandleTrap0E(IN PKTRAP_FRAME TrapFrame)
|
||||
{
|
||||
DebugPrint(L"Handled Page-Fault exception (0x0E)!\n");
|
||||
for(;;);
|
||||
@@ -443,7 +439,7 @@ Traps::HandleTrap0E(IN PKTRAP_FRAME TrapFrame)
|
||||
*/
|
||||
XTCDECL
|
||||
VOID
|
||||
Traps::HandleTrap10(IN PKTRAP_FRAME TrapFrame)
|
||||
AR::Traps::HandleTrap10(IN PKTRAP_FRAME TrapFrame)
|
||||
{
|
||||
DebugPrint(L"Handled x87 Floating-Point exception (0x10)!\n");
|
||||
for(;;);
|
||||
@@ -461,7 +457,7 @@ Traps::HandleTrap10(IN PKTRAP_FRAME TrapFrame)
|
||||
*/
|
||||
XTCDECL
|
||||
VOID
|
||||
Traps::HandleTrap11(IN PKTRAP_FRAME TrapFrame)
|
||||
AR::Traps::HandleTrap11(IN PKTRAP_FRAME TrapFrame)
|
||||
{
|
||||
DebugPrint(L"Handled Alignment-Check exception (0x11)!\n");
|
||||
for(;;);
|
||||
@@ -479,7 +475,7 @@ Traps::HandleTrap11(IN PKTRAP_FRAME TrapFrame)
|
||||
*/
|
||||
XTCDECL
|
||||
VOID
|
||||
Traps::HandleTrap12(IN PKTRAP_FRAME TrapFrame)
|
||||
AR::Traps::HandleTrap12(IN PKTRAP_FRAME TrapFrame)
|
||||
{
|
||||
DebugPrint(L"Handled Machine-Check exception (0x12)!\n");
|
||||
for(;;);
|
||||
@@ -497,7 +493,7 @@ Traps::HandleTrap12(IN PKTRAP_FRAME TrapFrame)
|
||||
*/
|
||||
XTCDECL
|
||||
VOID
|
||||
Traps::HandleTrap13(IN PKTRAP_FRAME TrapFrame)
|
||||
AR::Traps::HandleTrap13(IN PKTRAP_FRAME TrapFrame)
|
||||
{
|
||||
DebugPrint(L"Handled SIMD Floating-Point exception (0x13)!\n");
|
||||
for(;;);
|
||||
@@ -515,7 +511,7 @@ Traps::HandleTrap13(IN PKTRAP_FRAME TrapFrame)
|
||||
*/
|
||||
XTCDECL
|
||||
VOID
|
||||
Traps::HandleTrap1F(IN PKTRAP_FRAME TrapFrame)
|
||||
AR::Traps::HandleTrap1F(IN PKTRAP_FRAME TrapFrame)
|
||||
{
|
||||
DebugPrint(L"Unhandled software interrupt at APC level (0x1F)!\n");
|
||||
}
|
||||
@@ -532,7 +528,7 @@ Traps::HandleTrap1F(IN PKTRAP_FRAME TrapFrame)
|
||||
*/
|
||||
XTCDECL
|
||||
VOID
|
||||
Traps::HandleTrap2C(IN PKTRAP_FRAME TrapFrame)
|
||||
AR::Traps::HandleTrap2C(IN PKTRAP_FRAME TrapFrame)
|
||||
{
|
||||
DebugPrint(L"Handled Assertion (0x2C)!\n");
|
||||
for(;;);
|
||||
@@ -550,7 +546,7 @@ Traps::HandleTrap2C(IN PKTRAP_FRAME TrapFrame)
|
||||
*/
|
||||
XTCDECL
|
||||
VOID
|
||||
Traps::HandleTrap2D(IN PKTRAP_FRAME TrapFrame)
|
||||
AR::Traps::HandleTrap2D(IN PKTRAP_FRAME TrapFrame)
|
||||
{
|
||||
DebugPrint(L"Handled Debug-Service-Request (0x2D)!\n");
|
||||
for(;;);
|
||||
@@ -568,7 +564,7 @@ Traps::HandleTrap2D(IN PKTRAP_FRAME TrapFrame)
|
||||
*/
|
||||
XTCDECL
|
||||
VOID
|
||||
Traps::HandleTrap2F(IN PKTRAP_FRAME TrapFrame)
|
||||
AR::Traps::HandleTrap2F(IN PKTRAP_FRAME TrapFrame)
|
||||
{
|
||||
DebugPrint(L"Unhandled software interrupt at DISPATCH level (0x2F)!\n");
|
||||
}
|
||||
@@ -585,7 +581,7 @@ Traps::HandleTrap2F(IN PKTRAP_FRAME TrapFrame)
|
||||
*/
|
||||
XTCDECL
|
||||
VOID
|
||||
Traps::HandleTrapE1(IN PKTRAP_FRAME TrapFrame)
|
||||
AR::Traps::HandleTrapE1(IN PKTRAP_FRAME TrapFrame)
|
||||
{
|
||||
DebugPrint(L"Unhandled IPI interrupt (0xE1)!\n");
|
||||
}
|
||||
@@ -602,7 +598,7 @@ Traps::HandleTrapE1(IN PKTRAP_FRAME TrapFrame)
|
||||
*/
|
||||
XTCDECL
|
||||
VOID
|
||||
Traps::HandleTrapFF(IN PKTRAP_FRAME TrapFrame)
|
||||
AR::Traps::HandleTrapFF(IN PKTRAP_FRAME TrapFrame)
|
||||
{
|
||||
DebugPrint(L"Handled Unexpected-Interrupt (0xFF)!\n");
|
||||
for(;;);
|
||||
@@ -617,7 +613,7 @@ Traps::HandleTrapFF(IN PKTRAP_FRAME TrapFrame)
|
||||
*/
|
||||
XTCDECL
|
||||
VOID
|
||||
Traps::InitializeSystemCallMsrs(VOID)
|
||||
AR::Traps::InitializeSystemCallMsrs(VOID)
|
||||
{
|
||||
/* Initialize system calls MSR */
|
||||
CpuFunc::WriteModelSpecificRegister(X86_MSR_STAR, (((ULONG64)KGDT_R3_CMCODE | RPL_MASK) << 48) | ((ULONG64)KGDT_R0_CODE << 32));
|
||||
@@ -629,8 +625,6 @@ Traps::InitializeSystemCallMsrs(VOID)
|
||||
CpuFunc::WriteModelSpecificRegister(X86_MSR_EFER, CpuFunc::ReadModelSpecificRegister(X86_MSR_EFER) | X86_MSR_EFER_SCE);
|
||||
}
|
||||
|
||||
} /* namespace */
|
||||
|
||||
/**
|
||||
* C-linkage wrapper for dispatching the trap provided by common trap handler.
|
||||
*
|
||||
|
Reference in New Issue
Block a user