mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 14:27:35 +00:00
Prekernel: Use physical addresses for some of the BootInfo parameters
The kernel would just turn those virtual addresses into physical addresses later on, so let's just use physical addresses right from the start.
This commit is contained in:
parent
dd42093b93
commit
be795d5812
6 changed files with 58 additions and 59 deletions
|
@ -43,19 +43,15 @@ UNMAP_AFTER_INIT void PageDirectory::allocate_kernel_directory()
|
|||
{
|
||||
// Adopt the page tables already set up by boot.S
|
||||
#if ARCH(X86_64)
|
||||
PhysicalAddress boot_pml4t_paddr(virtual_to_low_physical((FlatPtr)boot_pml4t));
|
||||
dmesgln("MM: boot_pml4t @ {}", boot_pml4t_paddr);
|
||||
m_pml4t = PhysicalPage::create(boot_pml4t_paddr, MayReturnToFreeList::No);
|
||||
dmesgln("MM: boot_pml4t @ {}", boot_pml4t);
|
||||
m_pml4t = PhysicalPage::create(boot_pml4t, MayReturnToFreeList::No);
|
||||
#endif
|
||||
PhysicalAddress boot_pdpt_paddr(virtual_to_low_physical((FlatPtr)boot_pdpt));
|
||||
PhysicalAddress boot_pd0_paddr(virtual_to_low_physical((FlatPtr)boot_pd0));
|
||||
PhysicalAddress boot_pd_kernel_paddr(virtual_to_low_physical((FlatPtr)boot_pd_kernel));
|
||||
dmesgln("MM: boot_pdpt @ {}", boot_pdpt_paddr);
|
||||
dmesgln("MM: boot_pd0 @ {}", boot_pd0_paddr);
|
||||
dmesgln("MM: boot_pd_kernel @ {}", boot_pd_kernel_paddr);
|
||||
m_directory_table = PhysicalPage::create(boot_pdpt_paddr, MayReturnToFreeList::No);
|
||||
m_directory_pages[0] = PhysicalPage::create(boot_pd0_paddr, MayReturnToFreeList::No);
|
||||
m_directory_pages[(kernel_base >> 30) & 0x1ff] = PhysicalPage::create(boot_pd_kernel_paddr, MayReturnToFreeList::No);
|
||||
dmesgln("MM: boot_pdpt @ {}", boot_pdpt);
|
||||
dmesgln("MM: boot_pd0 @ {}", boot_pd0);
|
||||
dmesgln("MM: boot_pd_kernel @ {}", boot_pd_kernel);
|
||||
m_directory_table = PhysicalPage::create(boot_pdpt, MayReturnToFreeList::No);
|
||||
m_directory_pages[0] = PhysicalPage::create(boot_pd0, MayReturnToFreeList::No);
|
||||
m_directory_pages[(kernel_base >> 30) & 0x1ff] = PhysicalPage::create(boot_pd_kernel, MayReturnToFreeList::No);
|
||||
}
|
||||
|
||||
PageDirectory::PageDirectory(const RangeAllocator* parent_range_allocator)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue