Fix loading large process images.

2MiB large pages were being used for any large page mapping, but the
page manager doesn't correctly handle them everywhere yet. Now only
allow them for offset pointers (eg MMIO space) that will never be
unmapped.
This commit is contained in:
Justin C. Miller
2019-03-09 13:10:10 -08:00
parent 97ac3c09fa
commit 2035fffa1c
6 changed files with 32 additions and 14 deletions

View File

@@ -136,13 +136,15 @@ private:
/// \arg phys_addr The starting physical address of the pages to be mapped
/// \arg virt_addr The starting virtual address ot the memory to be mapped
/// \arg count The number of pages to map
/// \art user True if this is a userspace mapping
/// \arg user True if this is a userspace mapping
/// \arg large Whether to allow large pages
void page_in(
page_table *pml4,
uintptr_t phys_addr,
uintptr_t virt_addr,
size_t count,
bool user = false);
bool user = false,
bool large = false);
/// Low-level routine for unmapping a number of pages from the given page table.
/// \arg pml4 The root page table for this mapping