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:
parent
6299a69253
commit
d79c772c87
10 changed files with 119 additions and 22 deletions
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue