1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-24 22:17:42 +00:00

Kernel: Make MemoryManager compile on aarch64

This commit is contained in:
James Mintram 2022-04-02 23:56:20 +01:00 committed by Brian Gianforcaro
parent 6299a69253
commit d79c772c87
10 changed files with 119 additions and 22 deletions

View file

@ -20,20 +20,6 @@ extern u8 end_of_kernel_image[];
namespace Kernel::Memory {
static Singleton<IntrusiveRedBlackTree<&PageDirectory::m_tree_node>> s_cr3_map;
static IntrusiveRedBlackTree<&PageDirectory::m_tree_node>& cr3_map()
{
VERIFY_INTERRUPTS_DISABLED();
return *s_cr3_map;
}
RefPtr<PageDirectory> PageDirectory::find_by_cr3(FlatPtr cr3)
{
SpinlockLocker lock(s_mm_lock);
return cr3_map().find(cr3);
}
UNMAP_AFTER_INIT NonnullRefPtr<PageDirectory> PageDirectory::must_create_kernel_page_directory()
{
auto directory = adopt_ref_if_nonnull(new (nothrow) PageDirectory).release_nonnull();
@ -125,7 +111,7 @@ ErrorOr<NonnullRefPtr<PageDirectory>> PageDirectory::try_create_for_userspace(Vi
MM.unquickmap_page();
}
cr3_map().insert(directory->cr3(), directory);
register_page_directory(directory);
return directory;
}
@ -150,7 +136,7 @@ PageDirectory::~PageDirectory()
{
if (is_cr3_initialized()) {
SpinlockLocker lock(s_mm_lock);
cr3_map().remove(cr3());
deregister_page_directory(this);
}
}