diff options
author | alc <alc@FreeBSD.org> | 2010-01-18 21:17:03 +0000 |
---|---|---|
committer | alc <alc@FreeBSD.org> | 2010-01-18 21:17:03 +0000 |
commit | f870e8630e0e421cce286c928d950a148a741bd3 (patch) | |
tree | 2e450ac98bb2f0695f4701fb37972fb6877a822b /sys/amd64 | |
parent | 5fcd322a258801641a2695545efcab9501a0cd37 (diff) | |
download | FreeBSD-src-f870e8630e0e421cce286c928d950a148a741bd3.zip FreeBSD-src-f870e8630e0e421cce286c928d950a148a741bd3.tar.gz |
MFC r202085
Simplify pmap_init(). Additionally, correct a harmless misbehavior on
i386.
Diffstat (limited to 'sys/amd64')
-rw-r--r-- | sys/amd64/amd64/pmap.c | 10 |
1 files changed, 2 insertions, 8 deletions
diff --git a/sys/amd64/amd64/pmap.c b/sys/amd64/amd64/pmap.c index 70fc041..b26cc68 100644 --- a/sys/amd64/amd64/pmap.c +++ b/sys/amd64/amd64/pmap.c @@ -626,7 +626,6 @@ pmap_page_init(vm_page_t m) void pmap_init(void) { - pd_entry_t *pd; vm_page_t mpte; vm_size_t s; int i, pv_npg; @@ -635,18 +634,13 @@ pmap_init(void) * Initialize the vm page array entries for the kernel pmap's * page table pages. */ - pd = pmap_pde(kernel_pmap, KERNBASE); for (i = 0; i < NKPT; i++) { - if ((pd[i] & (PG_PS | PG_V)) == (PG_PS | PG_V)) - continue; - KASSERT((pd[i] & PG_V) != 0, - ("pmap_init: page table page is missing")); - mpte = PHYS_TO_VM_PAGE(pd[i] & PG_FRAME); + mpte = PHYS_TO_VM_PAGE(KPTphys + (i << PAGE_SHIFT)); KASSERT(mpte >= vm_page_array && mpte < &vm_page_array[vm_page_array_size], ("pmap_init: page table page is out of range")); mpte->pindex = pmap_pde_pindex(KERNBASE) + i; - mpte->phys_addr = pd[i] & PG_FRAME; + mpte->phys_addr = KPTphys + (i << PAGE_SHIFT); } /* |