diff options
author | Justus Winter <justus@gnupg.org> | 2016-10-22 13:33:05 +0200 |
---|---|---|
committer | Justus Winter <justus@gnupg.org> | 2016-11-01 12:10:55 +0100 |
commit | 65553178d1222b3291143bdddfef9478e0b09021 (patch) | |
tree | 18c24a5ed0933fa71b17948d3822fcf7cd66a55f /include | |
parent | c8e687cb8a6ba8f278c58bf78126f843ceb292bb (diff) | |
download | gnumach-65553178d1222b3291143bdddfef9478e0b09021.tar.gz gnumach-65553178d1222b3291143bdddfef9478e0b09021.tar.bz2 gnumach-65553178d1222b3291143bdddfef9478e0b09021.zip |
i386: Use discontiguous page directories when using PAE.
Previously, we used contiguous page directories four pages in length
when using PAE. To prevent physical memory fragmentation, we need to
use virtual memory for objects spanning multiple pages. Virtual
kernel memory, however, is a scarce commodity.
* i386/intel/pmap.h (lin2pdenum): Never include the page directory pointer table index.
(lin2pdenum_cont): New macro which does include said index.
(struct pmap): Remove the directory base pointer when using PAE.
* i386/intel/pmap.c (pmap_pde): Fix lookup.
(pmap_pte): Fix check for uninitialized pmap.
(pmap_bootstrap): Do not store the page directory base if PAE.
(pmap_init): Reduce size of page directories to one page, use
direct-mapped memory.
(pmap_create): Allocate four page directories per pmap.
(pmap_destroy): Adapt to the discontinuous directories.
(pmap_collect): Likewise.
* i386/i386/xen.h (hyp_mmu_update_la): Adapt code manipulating the
kernels page directory.
* i386/i386at/model_dep.c (i386at_init): Likewise.
Diffstat (limited to 'include')
0 files changed, 0 insertions, 0 deletions