From a4d4de6913fb7dd54847b0e5a004c3100bc02459 Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Sat, 16 Mar 2024 21:46:29 +0100 Subject: HCR-14: Reworked page allocator for AMD64. Signed-off-by: Amlal El Mahrouss --- Private/Source/CxxAbi.cxx | 5 ++--- Private/Source/PageAllocator.cxx | 4 ++-- Private/Source/PageManager.cxx | 6 +++--- 3 files changed, 7 insertions(+), 8 deletions(-) (limited to 'Private/Source') diff --git a/Private/Source/CxxAbi.cxx b/Private/Source/CxxAbi.cxx index 2d3a5aec..d251ffca 100644 --- a/Private/Source/CxxAbi.cxx +++ b/Private/Source/CxxAbi.cxx @@ -8,9 +8,8 @@ #include #include -void *__dso_handle; +atexit_func_entry_t __atexit_funcs[kDSOMaxObjects]; -atexit_func_entry_t __atexit_funcs[DSO_MAX_OBJECTS]; uarch_t __atexit_func_count; extern "C" void __cxa_pure_virtual() { @@ -25,7 +24,7 @@ extern "C" void ___chkstk_ms() { } extern "C" int atexit(void (*f)(void *), void *arg, void *dso) { - if (__atexit_func_count >= DSO_MAX_OBJECTS) return -1; + if (__atexit_func_count >= kDSOMaxObjects) return -1; __atexit_funcs[__atexit_func_count].destructor_func = f; __atexit_funcs[__atexit_func_count].obj_ptr = arg; diff --git a/Private/Source/PageAllocator.cxx b/Private/Source/PageAllocator.cxx index 990b738b..eb22dd35 100644 --- a/Private/Source/PageAllocator.cxx +++ b/Private/Source/PageAllocator.cxx @@ -26,7 +26,7 @@ void exec_disable(UIntPtr VirtualAddr) { MUST_PASS(!VirtualAddrTable->Accessed); VirtualAddrTable->ExecDisable = true; - flush_tlb(VirtualAddr); + hal_flush_tlb(VirtualAddr); } bool page_disable(UIntPtr VirtualAddr) { @@ -37,7 +37,7 @@ bool page_disable(UIntPtr VirtualAddr) { if (VirtualAddrTable->Accessed) return false; VirtualAddrTable->Present = false; - flush_tlb(VirtualAddr); + hal_flush_tlb(VirtualAddr); return true; } diff --git a/Private/Source/PageManager.cxx b/Private/Source/PageManager.cxx index 758d69c7..1b535e43 100644 --- a/Private/Source/PageManager.cxx +++ b/Private/Source/PageManager.cxx @@ -57,7 +57,7 @@ void PTEWrapper::FlushTLB(Ref &pm) { void PageManager::FlushTLB(UIntPtr VirtAddr) { if (VirtAddr == kBadAddress) return; - flush_tlb(VirtAddr); + hal_flush_tlb(VirtAddr); } bool PTEWrapper::Reclaim() { @@ -94,11 +94,11 @@ bool PageManager::Free(Ref &wrapper) { //////////////////////////// -// VIRTUAL ADDRESS +// VIRTUAL ADDRESS GETTER (SKIP PTE) //////////////////////////// -const UIntPtr &PTEWrapper::VirtualAddress() { return m_VirtAddr; } +const UIntPtr PTEWrapper::VirtualAddress() { return (m_VirtAddr + sizeof(PTE)); } //////////////////////////// -- cgit v1.2.3