Update trap handler to allow access to the registers
Some checks failed
Builds / ExectOS (amd64) (push) Failing after 24s
Builds / ExectOS (i686) (push) Failing after 25s

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 XTCDECL
VOID VOID
ArLoadTaskRegister(USHORT Source); ArLoadTaskRegister(IN USHORT Source);
XTCDECL XTCDECL
VOID VOID
@ -81,7 +81,7 @@ ArReadDebugRegister(IN USHORT DebugRegister);
XTCDECL XTCDECL
ULONGLONG ULONGLONG
ArReadGSQuadWord(ULONG Offset); ArReadGSQuadWord(IN ULONG Offset);
XTCDECL XTCDECL
ULONGLONG ULONGLONG
@ -153,6 +153,10 @@ XTCDECL
VOID VOID
ArYieldProcessor(VOID); ArYieldProcessor(VOID);
XTCDECL
VOID
ArpDispatchTrap(IN PKTRAP_FRAME TrapFrame);
XTCDECL XTCDECL
VOID VOID
ArpHandleSystemCall32(VOID); ArpHandleSystemCall32(VOID);
@ -163,91 +167,103 @@ ArpHandleSystemCall64(VOID);
XTCDECL XTCDECL
VOID VOID
ArpHandleTrap00(VOID); ArpHandleTrap00(IN PKTRAP_FRAME TrapFrame);
XTCDECL XTCDECL
VOID VOID
ArpHandleTrap01(VOID); ArpHandleTrap01(IN PKTRAP_FRAME TrapFrame);
XTCDECL XTCDECL
VOID VOID
ArpHandleTrap02(VOID); ArpHandleTrap02(IN PKTRAP_FRAME TrapFrame);
XTCDECL XTCDECL
VOID VOID
ArpHandleTrap03(VOID); ArpHandleTrap03(IN PKTRAP_FRAME TrapFrame);
XTCDECL XTCDECL
VOID VOID
ArpHandleTrap04(VOID); ArpHandleTrap04(IN PKTRAP_FRAME TrapFrame);
XTCDECL XTCDECL
VOID VOID
ArpHandleTrap05(VOID); ArpHandleTrap05(IN PKTRAP_FRAME TrapFrame);
XTCDECL XTCDECL
VOID VOID
ArpHandleTrap06(VOID); ArpHandleTrap06(IN PKTRAP_FRAME TrapFrame);
XTCDECL XTCDECL
VOID VOID
ArpHandleTrap07(VOID); ArpHandleTrap07(IN PKTRAP_FRAME TrapFrame);
XTCDECL XTCDECL
VOID VOID
ArpHandleTrap08(VOID); ArpHandleTrap08(IN PKTRAP_FRAME TrapFrame);
XTCDECL XTCDECL
VOID VOID
ArpHandleTrap09(VOID); ArpHandleTrap09(IN PKTRAP_FRAME TrapFrame);
XTCDECL XTCDECL
VOID VOID
ArpHandleTrap0A(VOID); ArpHandleTrap0A(IN PKTRAP_FRAME TrapFrame);
XTCDECL XTCDECL
VOID VOID
ArpHandleTrap0B(VOID); ArpHandleTrap0B(IN PKTRAP_FRAME TrapFrame);
XTCDECL XTCDECL
VOID VOID
ArpHandleTrap0C(VOID); ArpHandleTrap0C(IN PKTRAP_FRAME TrapFrame);
XTCDECL XTCDECL
VOID VOID
ArpHandleTrap0D(VOID); ArpHandleTrap0D(IN PKTRAP_FRAME TrapFrame);
XTCDECL XTCDECL
VOID VOID
ArpHandleTrap0E(VOID); ArpHandleTrap0E(IN PKTRAP_FRAME TrapFrame);
XTCDECL XTCDECL
VOID VOID
ArpHandleTrap10(VOID); ArpHandleTrap10(IN PKTRAP_FRAME TrapFrame);
XTCDECL XTCDECL
VOID VOID
ArpHandleTrap11(VOID); ArpHandleTrap11(IN PKTRAP_FRAME TrapFrame);
XTCDECL XTCDECL
VOID VOID
ArpHandleTrap12(VOID); ArpHandleTrap12(IN PKTRAP_FRAME TrapFrame);
XTCDECL XTCDECL
VOID VOID
ArpHandleTrap13(VOID); ArpHandleTrap13(IN PKTRAP_FRAME TrapFrame);
XTCDECL XTCDECL
VOID VOID
ArpHandleTrap2C(VOID); ArpHandleTrap1F(IN PKTRAP_FRAME TrapFrame);
XTCDECL XTCDECL
VOID VOID
ArpHandleTrap2D(VOID); ArpHandleTrap2C(IN PKTRAP_FRAME TrapFrame);
XTCDECL XTCDECL
VOID 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 XTAPI
VOID VOID
@ -300,4 +316,100 @@ ArpSetIdtGate(IN PKIDTENTRY Idt,
IN USHORT Ist, IN USHORT Ist,
IN USHORT Access); 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 */ #endif /* __XTOSKRNL_AMD64_ARI_H */

View File

@ -61,7 +61,7 @@ ArLoadSegment(IN USHORT Segment,
XTCDECL XTCDECL
VOID VOID
ArLoadTaskRegister(USHORT Source); ArLoadTaskRegister(IN USHORT Source);
XTCDECL XTCDECL
VOID VOID
@ -77,7 +77,7 @@ ArReadDebugRegister(IN USHORT DebugRegister);
XTCDECL XTCDECL
ULONG ULONG
ArReadFSDualWord(ULONG Offset); ArReadFSDualWord(IN ULONG Offset);
XTCDECL XTCDECL
ULONGLONG ULONGLONG
@ -151,91 +151,107 @@ ArYieldProcessor(VOID);
XTCDECL XTCDECL
VOID VOID
ArpHandleTrap00(VOID); ArpDispatchTrap(IN PKTRAP_FRAME TrapFrame);
XTCDECL XTCDECL
VOID VOID
ArpHandleTrap01(VOID); ArpHandleTrap00(IN PKTRAP_FRAME TrapFrame);
XTCDECL XTCDECL
VOID VOID
ArpHandleTrap02(VOID); ArpHandleTrap01(IN PKTRAP_FRAME TrapFrame);
XTCDECL XTCDECL
VOID VOID
ArpHandleTrap03(VOID); ArpHandleTrap02(IN PKTRAP_FRAME TrapFrame);
XTCDECL XTCDECL
VOID VOID
ArpHandleTrap04(VOID); ArpHandleTrap03(IN PKTRAP_FRAME TrapFrame);
XTCDECL XTCDECL
VOID VOID
ArpHandleTrap05(VOID); ArpHandleTrap04(IN PKTRAP_FRAME TrapFrame);
XTCDECL XTCDECL
VOID VOID
ArpHandleTrap06(VOID); ArpHandleTrap05(IN PKTRAP_FRAME TrapFrame);
XTCDECL XTCDECL
VOID VOID
ArpHandleTrap07(VOID); ArpHandleTrap06(IN PKTRAP_FRAME TrapFrame);
XTCDECL XTCDECL
VOID VOID
ArpHandleTrap08(VOID); ArpHandleTrap07(IN PKTRAP_FRAME TrapFrame);
XTCDECL XTCDECL
VOID VOID
ArpHandleTrap09(VOID); ArpHandleTrap08(IN PKTRAP_FRAME TrapFrame);
XTCDECL XTCDECL
VOID VOID
ArpHandleTrap0A(VOID); ArpHandleTrap09(IN PKTRAP_FRAME TrapFrame);
XTCDECL XTCDECL
VOID VOID
ArpHandleTrap0B(VOID); ArpHandleTrap0A(IN PKTRAP_FRAME TrapFrame);
XTCDECL XTCDECL
VOID VOID
ArpHandleTrap0C(VOID); ArpHandleTrap0B(IN PKTRAP_FRAME TrapFrame);
XTCDECL XTCDECL
VOID VOID
ArpHandleTrap0D(VOID); ArpHandleTrap0C(IN PKTRAP_FRAME TrapFrame);
XTCDECL XTCDECL
VOID VOID
ArpHandleTrap0E(VOID); ArpHandleTrap0D(IN PKTRAP_FRAME TrapFrame);
XTCDECL XTCDECL
VOID VOID
ArpHandleTrap10(VOID); ArpHandleTrap0E(IN PKTRAP_FRAME TrapFrame);
XTCDECL XTCDECL
VOID VOID
ArpHandleTrap11(VOID); ArpHandleTrap10(IN PKTRAP_FRAME TrapFrame);
XTCDECL XTCDECL
VOID VOID
ArpHandleTrap12(VOID); ArpHandleTrap11(IN PKTRAP_FRAME TrapFrame);
XTCDECL XTCDECL
VOID VOID
ArpHandleTrap13(VOID); ArpHandleTrap12(IN PKTRAP_FRAME TrapFrame);
XTCDECL XTCDECL
VOID VOID
ArpHandleTrap2C(VOID); ArpHandleTrap13(IN PKTRAP_FRAME TrapFrame);
XTCDECL XTCDECL
VOID VOID
ArpHandleTrap2D(VOID); ArpHandleTrap2A(IN PKTRAP_FRAME TrapFrame);
XTCDECL XTCDECL
VOID 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 XTAPI
VOID VOID
@ -296,4 +312,100 @@ XTAPI
VOID VOID
ArpSetNonMaskableInterruptTssEntry(IN PKPROCESSOR_BLOCK ProcessorBlock); 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 */ #endif /* __XTOSKRNL_I686_ARI_H */