summaryrefslogtreecommitdiffhomepage
path: root/Private/HALKit/AMD64/CoreInterruptHandlerAMD64.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Private/HALKit/AMD64/CoreInterruptHandlerAMD64.cpp')
-rw-r--r--Private/HALKit/AMD64/CoreInterruptHandlerAMD64.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/Private/HALKit/AMD64/CoreInterruptHandlerAMD64.cpp b/Private/HALKit/AMD64/CoreInterruptHandlerAMD64.cpp
index e49e9c1e..8399d9ce 100644
--- a/Private/HALKit/AMD64/CoreInterruptHandlerAMD64.cpp
+++ b/Private/HALKit/AMD64/CoreInterruptHandlerAMD64.cpp
@@ -16,7 +16,7 @@ extern "C" void idt_handle_system_call(HCore::UIntPtr rsp) {
rt_syscall_handle(sf);
HCore::kcout << "System Call with ID: "
- << HCore::StringBuilder::FromInt("syscall{%}", sf->SID);
+ << HCore::StringBuilder::FromInt("syscall{%}", sf->R15);
}
extern "C" void idt_handle_gpf(HCore::UIntPtr rsp) {
@@ -79,3 +79,12 @@ extern "C" void idt_handle_generic(HCore::UIntPtr rsp) {
HCore::ProcessManager::Shared().Leak().GetCurrent().Leak().Crash();
}
+
+extern "C" HCore::UIntPtr rt_handle_interrupts(HCore::UIntPtr &rsp) {
+ HCore::HAL::rt_cli();
+
+ HCore::HAL::StackFramePtr sf = (HCore::HAL::StackFramePtr)rsp;
+
+ HCore::HAL::rt_sti();
+ return rsp;
+}