From f153886c81c7d11b8e249fa769265646216d5584 Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Sun, 22 Jun 2025 12:07:42 +0200 Subject: feat: kernel: HAL: reworked `kerncall` system. how: - By taking additional arguments according to DDKKit. - Adding a `HAL_KERNEL_DISPATCH_ENTRY` and `rt_kerncall_proc` Signed-off-by: Amlal El Mahrouss --- dev/kernel/HALKit/ARM64/HalCoreInterruptHandler.cc | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'dev/kernel/HALKit/ARM64/HalCoreInterruptHandler.cc') diff --git a/dev/kernel/HALKit/ARM64/HalCoreInterruptHandler.cc b/dev/kernel/HALKit/ARM64/HalCoreInterruptHandler.cc index e6f70f0e..4c02e8cc 100644 --- a/dev/kernel/HALKit/ARM64/HalCoreInterruptHandler.cc +++ b/dev/kernel/HALKit/ARM64/HalCoreInterruptHandler.cc @@ -144,9 +144,7 @@ EXTERN_C Kernel::Void hal_system_call_enter(Kernel::UIntPtr rcx_hash, /// @param stack the stack pushed from assembly routine. /// @return nothing. EXTERN_C Kernel::Void hal_kernel_call_enter(Kernel::UIntPtr rcx_hash, - Kernel::UIntPtr rdx_kerncall_arg) { - hal_int_send_eoi(51); - + Kernel::SizeT cnt, Kernel::UIntPtr arg, Kernel::SizeT sz) { if (!Kernel::kRootUser) return; if (Kernel::kCurrentUser != Kernel::kRootUser) return; if (!Kernel::kCurrentUser->IsSuperUser()) return; @@ -154,7 +152,7 @@ EXTERN_C Kernel::Void hal_kernel_call_enter(Kernel::UIntPtr rcx_hash, for (SizeT i = 0UL; i < kMaxDispatchCallCount; ++i) { if (kKernCalls[i].fHooked && rcx_hash == kKernCalls[rcx_hash].fHash) { if (kKernCalls[i].fProc) { - (kKernCalls[i].fProc)((Kernel::VoidPtr) rdx_kerncall_arg); + (kKernCalls[i].fProc)(cnt, (Kernel::VoidPtr) arg, sz); } } } -- cgit v1.2.3