Update trap handler to allow access to the registers

This commit is contained in:
Rafal Kupiec 2024-04-19 16:54:55 +02:00
parent 92ee74b494
commit 51df6c3acb
Signed by: belliash
GPG Key ID: 4E829243E0CFE6B4
2 changed files with 272 additions and 48 deletions

View File

@ -65,7 +65,7 @@ ArLoadSegment(IN USHORT Segment,
XTCDECL
VOID
ArLoadTaskRegister(USHORT Source);
ArLoadTaskRegister(IN USHORT Source);
XTCDECL
VOID
@ -81,7 +81,7 @@ ArReadDebugRegister(IN USHORT DebugRegister);
XTCDECL
ULONGLONG
ArReadGSQuadWord(ULONG Offset);
ArReadGSQuadWord(IN ULONG Offset);
XTCDECL
ULONGLONG
@ -153,6 +153,10 @@ XTCDECL
VOID
ArYieldProcessor(VOID);
XTCDECL
VOID
ArpDispatchTrap(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleSystemCall32(VOID);
@ -163,91 +167,103 @@ ArpHandleSystemCall64(VOID);
XTCDECL
VOID
ArpHandleTrap00(VOID);
ArpHandleTrap00(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap01(VOID);
ArpHandleTrap01(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap02(VOID);
ArpHandleTrap02(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap03(VOID);
ArpHandleTrap03(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap04(VOID);
ArpHandleTrap04(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap05(VOID);
ArpHandleTrap05(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap06(VOID);
ArpHandleTrap06(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap07(VOID);
ArpHandleTrap07(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap08(VOID);
ArpHandleTrap08(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap09(VOID);
ArpHandleTrap09(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap0A(VOID);
ArpHandleTrap0A(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap0B(VOID);
ArpHandleTrap0B(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap0C(VOID);
ArpHandleTrap0C(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap0D(VOID);
ArpHandleTrap0D(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap0E(VOID);
ArpHandleTrap0E(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap10(VOID);
ArpHandleTrap10(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap11(VOID);
ArpHandleTrap11(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap12(VOID);
ArpHandleTrap12(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap13(VOID);
ArpHandleTrap13(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap2C(VOID);
ArpHandleTrap1F(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap2D(VOID);
ArpHandleTrap2C(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrapFF(VOID);
ArpHandleTrap2D(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap2F(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrapE1(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrapFF(IN PKTRAP_FRAME TrapFrame);
XTAPI
VOID
@ -300,4 +316,100 @@ ArpSetIdtGate(IN PKIDTENTRY Idt,
IN USHORT Ist,
IN USHORT Access);
XTCDECL
VOID
ArpTrap0x00(VOID);
XTCDECL
VOID
ArpTrap0x01(VOID);
XTCDECL
VOID
ArpTrap0x02(VOID);
XTCDECL
VOID
ArpTrap0x03(VOID);
XTCDECL
VOID
ArpTrap0x04(VOID);
XTCDECL
VOID
ArpTrap0x05(VOID);
XTCDECL
VOID
ArpTrap0x06(VOID);
XTCDECL
VOID
ArpTrap0x07(VOID);
XTCDECL
VOID
ArpTrap0x08(VOID);
XTCDECL
VOID
ArpTrap0x09(VOID);
XTCDECL
VOID
ArpTrap0x0A(VOID);
XTCDECL
VOID
ArpTrap0x0B(VOID);
XTCDECL
VOID
ArpTrap0x0C(VOID);
XTCDECL
VOID
ArpTrap0x0D(VOID);
XTCDECL
VOID
ArpTrap0x0E(VOID);
XTCDECL
VOID
ArpTrap0x10(VOID);
XTCDECL
VOID
ArpTrap0x11(VOID);
XTCDECL
VOID
ArpTrap0x12(VOID);
XTCDECL
VOID
ArpTrap0x13(VOID);
XTCDECL
VOID
ArpTrap0x1F(VOID);
XTCDECL
VOID
ArpTrap0x2C(VOID);
XTCDECL
VOID
ArpTrap0x2D(VOID);
XTCDECL
VOID
ArpTrap0x2F(VOID);
XTCDECL
VOID
ArpTrap0xE1(VOID);
#endif /* __XTOSKRNL_AMD64_ARI_H */

View File

@ -61,7 +61,7 @@ ArLoadSegment(IN USHORT Segment,
XTCDECL
VOID
ArLoadTaskRegister(USHORT Source);
ArLoadTaskRegister(IN USHORT Source);
XTCDECL
VOID
@ -77,7 +77,7 @@ ArReadDebugRegister(IN USHORT DebugRegister);
XTCDECL
ULONG
ArReadFSDualWord(ULONG Offset);
ArReadFSDualWord(IN ULONG Offset);
XTCDECL
ULONGLONG
@ -151,91 +151,107 @@ ArYieldProcessor(VOID);
XTCDECL
VOID
ArpHandleTrap00(VOID);
ArpDispatchTrap(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap01(VOID);
ArpHandleTrap00(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap02(VOID);
ArpHandleTrap01(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap03(VOID);
ArpHandleTrap02(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap04(VOID);
ArpHandleTrap03(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap05(VOID);
ArpHandleTrap04(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap06(VOID);
ArpHandleTrap05(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap07(VOID);
ArpHandleTrap06(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap08(VOID);
ArpHandleTrap07(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap09(VOID);
ArpHandleTrap08(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap0A(VOID);
ArpHandleTrap09(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap0B(VOID);
ArpHandleTrap0A(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap0C(VOID);
ArpHandleTrap0B(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap0D(VOID);
ArpHandleTrap0C(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap0E(VOID);
ArpHandleTrap0D(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap10(VOID);
ArpHandleTrap0E(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap11(VOID);
ArpHandleTrap10(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap12(VOID);
ArpHandleTrap11(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap13(VOID);
ArpHandleTrap12(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap2C(VOID);
ArpHandleTrap13(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap2D(VOID);
ArpHandleTrap2A(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrapFF(VOID);
ArpHandleTrap2B(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap2C(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap2D(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap2E(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrapFF(IN PKTRAP_FRAME TrapFrame);
XTAPI
VOID
@ -296,4 +312,100 @@ XTAPI
VOID
ArpSetNonMaskableInterruptTssEntry(IN PKPROCESSOR_BLOCK ProcessorBlock);
XTCDECL
VOID
ArpTrap0x00(VOID);
XTCDECL
VOID
ArpTrap0x01(VOID);
XTCDECL
VOID
ArpTrap0x02(VOID);
XTCDECL
VOID
ArpTrap0x03(VOID);
XTCDECL
VOID
ArpTrap0x04(VOID);
XTCDECL
VOID
ArpTrap0x05(VOID);
XTCDECL
VOID
ArpTrap0x06(VOID);
XTCDECL
VOID
ArpTrap0x07(VOID);
XTCDECL
VOID
ArpTrap0x08(VOID);
XTCDECL
VOID
ArpTrap0x09(VOID);
XTCDECL
VOID
ArpTrap0x0A(VOID);
XTCDECL
VOID
ArpTrap0x0B(VOID);
XTCDECL
VOID
ArpTrap0x0C(VOID);
XTCDECL
VOID
ArpTrap0x0D(VOID);
XTCDECL
VOID
ArpTrap0x0E(VOID);
XTCDECL
VOID
ArpTrap0x10(VOID);
XTCDECL
VOID
ArpTrap0x11(VOID);
XTCDECL
VOID
ArpTrap0x12(VOID);
XTCDECL
VOID
ArpTrap0x13(VOID);
XTCDECL
VOID
ArpTrap0x2A(VOID);
XTCDECL
VOID
ArpTrap0x2B(VOID);
XTCDECL
VOID
ArpTrap0x2C(VOID);
XTCDECL
VOID
ArpTrap0x2D(VOID);
XTCDECL
VOID
ArpTrap0x2E(VOID);
#endif /* __XTOSKRNL_I686_ARI_H */