diff options
| author | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2025-02-03 06:32:37 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2025-02-03 06:32:37 +0100 |
| commit | fe165b8bdf1e4ecf7ca63af24be28e36e1eff94f (patch) | |
| tree | dbb4b2b6ed82e931d58858d7f3c15a048fc9c187 /dev/Kernel/HALKit/AMD64 | |
| parent | a3066828d318efa547ac52a7edd5ee38aa7b4026 (diff) | |
Interrupt mgmt tweaks.
Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev/Kernel/HALKit/AMD64')
| -rw-r--r-- | dev/Kernel/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc | 28 |
1 files changed, 13 insertions, 15 deletions
diff --git a/dev/Kernel/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc b/dev/Kernel/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc index 6a1f0556..115acbee 100644 --- a/dev/Kernel/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc +++ b/dev/Kernel/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc @@ -22,13 +22,13 @@ EXTERN_C void idt_handle_gpf(Kernel::UIntPtr rsp) kIsScheduling = NO; - kcout << "Kernel: GPF.\r"; + kcout << "Kernel: General Protection Fault.\r"; - process.Leak().ProcessSignal.SignalIP = 0UL; + process.Leak().ProcessSignal.SignalIP = rsp; process.Leak().ProcessSignal.SignalID = SIGKILL; process.Leak().ProcessSignal.PreviousStatus = process.Leak().Status; - kcout << "Kernel: SIGKILL status set..\r"; + kcout << "Kernel: SIGKILL status.\r"; process.Leak().Status = Kernel::ProcessStatusKind::kKilled; @@ -47,14 +47,12 @@ EXTERN_C void idt_handle_pf(Kernel::UIntPtr rsp) kIsScheduling = NO; kcout << "Kernel: Page Fault.\r"; - kcout << "Kernel: SIGKILL set.\r"; + kcout << "Kernel: SIGKILL\r"; - process.Leak().ProcessSignal.SignalIP = 0UL; + process.Leak().ProcessSignal.SignalIP = rsp; process.Leak().ProcessSignal.SignalID = SIGKILL; process.Leak().ProcessSignal.PreviousStatus = process.Leak().Status; - kcout << "Kernel: SIGKILL status set..\r"; - process.Leak().Status = Kernel::ProcessStatusKind::kKilled; process.Leak().Crash(); @@ -95,11 +93,11 @@ EXTERN_C void idt_handle_math(Kernel::UIntPtr rsp) kcout << "Kernel: Math error (division by zero?).\r"; - process.Leak().ProcessSignal.SignalIP = 0UL; + process.Leak().ProcessSignal.SignalIP = rsp; process.Leak().ProcessSignal.SignalID = SIGKILL; process.Leak().ProcessSignal.PreviousStatus = process.Leak().Status; - kcout << "Kernel: SIGKILL status set..\r"; + kcout << "Kernel: SIGKILL status.\r"; process.Leak().Status = Kernel::ProcessStatusKind::kKilled; @@ -119,11 +117,11 @@ EXTERN_C void idt_handle_generic(Kernel::UIntPtr rsp) kcout << "Kernel: Generic Process Fault.\r"; - process.Leak().ProcessSignal.SignalIP = 0UL; + process.Leak().ProcessSignal.SignalIP = rsp; process.Leak().ProcessSignal.SignalID = SIGKILL; process.Leak().ProcessSignal.PreviousStatus = process.Leak().Status; - kcout << "Kernel: SIGKILL status set..\r"; + kcout << "Kernel: SIGKILL status.\r"; process.Leak().Status = Kernel::ProcessStatusKind::kKilled; @@ -140,14 +138,14 @@ EXTERN_C Kernel::Void idt_handle_breakpoint(Kernel::UIntPtr rip) kIsScheduling = NO; kcout << "Kernel: Process RIP: " << Kernel::hex_number(rip) << endl; - kcout << "Kernel: SIGTRAP set.\r"; + kcout << "Kernel: SIGTRAP\r"; process.Leak().ProcessSignal.SignalIP = rip; process.Leak().ProcessSignal.SignalID = SIGTRAP; process.Leak().ProcessSignal.PreviousStatus = process.Leak().Status; - kcout << "Kernel: SIGKILL status set..\r"; + kcout << "Kernel: SIGKILL status.\r"; process.Leak().Status = Kernel::ProcessStatusKind::kFrozen; @@ -167,11 +165,11 @@ EXTERN_C void idt_handle_ud(Kernel::UIntPtr rsp) kcout << "Kernel: Undefined Opcode.\r"; - process.Leak().ProcessSignal.SignalIP = 0UL; + process.Leak().ProcessSignal.SignalIP = rsp; process.Leak().ProcessSignal.SignalID = SIGKILL; process.Leak().ProcessSignal.PreviousStatus = process.Leak().Status; - kcout << "Kernel: SIGKILL status set..\r"; + kcout << "Kernel: SIGKILL status.\r"; process.Leak().Status = Kernel::ProcessStatusKind::kKilled; |
