summaryrefslogtreecommitdiffhomepage
path: root/dev/ZKA/HALKit
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-09-03 08:15:51 +0200
committerAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-09-03 08:15:51 +0200
commit4865bc827f79d70466b839e6283a19de35d9fb53 (patch)
tree395f8327550d304c24b9753b9665e23f1ea3ab29 /dev/ZKA/HALKit
parent580055467df2e5197f7d3fbde0b56c0bb3308326 (diff)
[ FIX ] Bug fixes and refactorings.
Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev/ZKA/HALKit')
-rw-r--r--dev/ZKA/HALKit/AMD64/HalMPContextSwitch.asm12
-rw-r--r--dev/ZKA/HALKit/AMD64/HalPageAlloc.cxx7
-rw-r--r--dev/ZKA/HALKit/AMD64/HalProcessor.cxx2
-rw-r--r--dev/ZKA/HALKit/AMD64/HalSchedulerCore.cxx2
-rw-r--r--dev/ZKA/HALKit/AMD64/Processor.hxx2
5 files changed, 13 insertions, 12 deletions
diff --git a/dev/ZKA/HALKit/AMD64/HalMPContextSwitch.asm b/dev/ZKA/HALKit/AMD64/HalMPContextSwitch.asm
index 601ff29e..221cd05e 100644
--- a/dev/ZKA/HALKit/AMD64/HalMPContextSwitch.asm
+++ b/dev/ZKA/HALKit/AMD64/HalMPContextSwitch.asm
@@ -48,15 +48,15 @@ extern hal_system_call_enter
mp_system_call_handler:
cli
- push rcx
- push rdx
- push rax
+ push r8
+ push r9
+ push r10
call hal_system_call_enter
- pop rax
- pop rdx
- pop rcx
+ pop r10
+ pop r9
+ pop r8
sti
sysret
diff --git a/dev/ZKA/HALKit/AMD64/HalPageAlloc.cxx b/dev/ZKA/HALKit/AMD64/HalPageAlloc.cxx
index 4a830eee..3d8deac2 100644
--- a/dev/ZKA/HALKit/AMD64/HalPageAlloc.cxx
+++ b/dev/ZKA/HALKit/AMD64/HalPageAlloc.cxx
@@ -97,11 +97,12 @@ namespace Kernel
kAllocationInProgress = false;
- auto result = reinterpret_cast<VoidPtr>(vmh_header + sizeof(Detail::VIRTUAL_MEMORY_HEADER));
-
+ VoidPtr result = reinterpret_cast<VoidPtr>(vmh_header + sizeof(Detail::VIRTUAL_MEMORY_HEADER));
VoidPtr cr3 = hal_read_cr3();
- mm_update_page(cr3, 0, result, eFlagsPresent | (rw ? eFlagsRw : 0) | (user ? eFlagsUser : 0));
+ mm_update_pte(cr3, 0, result, eFlagsPresent | (rw ? eFlagsRw : 0) | (user ? eFlagsUser : 0));
+ mm_update_pte(cr3, 0, result, (rw ? eFlagsRw : 0));
+ mm_update_pte(cr3, 0, result, (user ? eFlagsUser : 0));
return result;
}
diff --git a/dev/ZKA/HALKit/AMD64/HalProcessor.cxx b/dev/ZKA/HALKit/AMD64/HalProcessor.cxx
index 457752b7..706bd5bd 100644
--- a/dev/ZKA/HALKit/AMD64/HalProcessor.cxx
+++ b/dev/ZKA/HALKit/AMD64/HalProcessor.cxx
@@ -16,7 +16,7 @@
namespace Kernel::HAL
{
- EXTERN_C Int32 mm_update_page(VoidPtr pd_base, VoidPtr phys_addr, VoidPtr virt_addr, UInt32 flags)
+ EXTERN_C Int32 mm_update_pte(VoidPtr pd_base, VoidPtr phys_addr, VoidPtr virt_addr, UInt32 flags)
{
UIntPtr pte_idx = (UIntPtr)virt_addr >> 12;
diff --git a/dev/ZKA/HALKit/AMD64/HalSchedulerCore.cxx b/dev/ZKA/HALKit/AMD64/HalSchedulerCore.cxx
index 50d00368..4fa8c019 100644
--- a/dev/ZKA/HALKit/AMD64/HalSchedulerCore.cxx
+++ b/dev/ZKA/HALKit/AMD64/HalSchedulerCore.cxx
@@ -14,7 +14,7 @@ Void UserProcess::SetImageStart(VoidPtr imageStart) noexcept
if (imageStart == nullptr)
this->Crash();
- HAL::mm_update_page(hal_read_cr3(), 0, imageStart, HAL::eFlagsPresent | HAL::eFlagsUser);
+ HAL::mm_update_pte(hal_read_cr3(), 0, imageStart, HAL::eFlagsPresent | HAL::eFlagsUser);
this->Image = imageStart;
}
diff --git a/dev/ZKA/HALKit/AMD64/Processor.hxx b/dev/ZKA/HALKit/AMD64/Processor.hxx
index ec053435..edbc6ae5 100644
--- a/dev/ZKA/HALKit/AMD64/Processor.hxx
+++ b/dev/ZKA/HALKit/AMD64/Processor.hxx
@@ -71,7 +71,7 @@ namespace Kernel::HAL
/// @param phys_addr a valid phyiscal address.
/// @param virt_addr a valid virtual address.
/// @param flags the flags to put on the page.
- EXTERN_C Int32 mm_update_page(VoidPtr pd_base, VoidPtr phys_addr, VoidPtr virt_addr, UInt32 flags);
+ EXTERN_C Int32 mm_update_pte(VoidPtr pd_base, VoidPtr phys_addr, VoidPtr virt_addr, UInt32 flags);
EXTERN_C UChar In8(UInt16 port);
EXTERN_C UShort In16(UInt16 port);