Implement software interrupt dispatch table and secondary handler lookup
Some checks failed
Builds / ExectOS (amd64, debug) (push) Successful in 30s
Builds / ExectOS (i686, release) (push) Failing after 30s
Builds / ExectOS (i686, debug) (push) Failing after 39s
Builds / ExectOS (amd64, release) (push) Successful in 42s

This commit is contained in:
2026-04-08 20:13:35 +02:00
parent 4f65773aa9
commit 9ffb03217a
16 changed files with 358 additions and 17 deletions

View File

@@ -17,9 +17,14 @@ namespace AR
{
class Traps
{
private:
STATIC PINTERRUPT_HANDLER UnhandledInterruptRoutine;
public:
STATIC XTCDECL VOID DispatchInterrupt(IN PKTRAP_FRAME TrapFrame) XTSYMBOL("ArDispatchInterrupt");
STATIC XTCDECL VOID DispatchTrap(IN PKTRAP_FRAME TrapFrame) XTSYMBOL("ArDispatchTrap");
STATIC XTCDECL VOID InitializeSystemCallMsrs(VOID);
STATIC XTCDECL VOID SetUnhandledInterruptRoutine(PINTERRUPT_HANDLER Handler);
private:
STATIC XTCDECL VOID HandleSystemCall32(VOID);

View File

@@ -17,8 +17,13 @@ namespace AR
{
class Traps
{
private:
STATIC PINTERRUPT_HANDLER UnhandledInterruptRoutine;
public:
STATIC XTCDECL VOID DispatchInterrupt(IN PKTRAP_FRAME TrapFrame) XTSYMBOL("_ArDispatchInterrupt");
STATIC XTCDECL VOID DispatchTrap(IN PKTRAP_FRAME TrapFrame) XTSYMBOL("_ArDispatchTrap");
STATIC XTCDECL VOID SetUnhandledInterruptRoutine(PINTERRUPT_HANDLER Handler);
private:
STATIC XTCDECL VOID HandleTrap00(IN PKTRAP_FRAME TrapFrame);

View File

@@ -18,8 +18,13 @@ namespace HL
class Irq
{
public:
STATIC XTAPI VOID SetInterruptHandler(IN ULONG Vector,
IN PVOID Handler);
STATIC XTAPI PVOID QueryInterruptHandler(IN ULONG Vector);
STATIC XTAPI PVOID QuerySystemInterruptHandler(IN ULONG Vector);
STATIC XTCDECL VOID HandleUnexpectedInterrupt(IN PKTRAP_FRAME TrapFrame);
STATIC XTAPI VOID RegisterInterruptHandler(IN ULONG Vector,
IN PVOID Handler);
STATIC XTAPI VOID RegisterSystemInterruptHandler(IN ULONG Vector,
IN PINTERRUPT_HANDLER Handler);
};
}