diff options
author | alc <alc@FreeBSD.org> | 2004-01-01 07:08:52 +0000 |
---|---|---|
committer | alc <alc@FreeBSD.org> | 2004-01-01 07:08:52 +0000 |
commit | ec97880a76f3e91d63daafc91daf65fb44bf7e81 (patch) | |
tree | 997515f2ed028a612b965d259833fb74810de3f8 /sys | |
parent | eb1c647689df17cbf6752dd1df21a8f6beedba6a (diff) | |
download | FreeBSD-src-ec97880a76f3e91d63daafc91daf65fb44bf7e81.zip FreeBSD-src-ec97880a76f3e91d63daafc91daf65fb44bf7e81.tar.gz |
- Use pagezero() instead of bzero() in pmap_pinit(). (pagezero() is much
faster.)
MFi386:
- Don't bother clearing PG_ZERO on the page table page in
_pmap_allocpte(); it serves no purpose.
- Don't bother clearing and setting PG_BUSY on page table directory pages.
Diffstat (limited to 'sys')
-rw-r--r-- | sys/amd64/amd64/pmap.c | 7 |
1 files changed, 1 insertions, 6 deletions
diff --git a/sys/amd64/amd64/pmap.c b/sys/amd64/amd64/pmap.c index 7f113ee..30512e9 100644 --- a/sys/amd64/amd64/pmap.c +++ b/sys/amd64/amd64/pmap.c @@ -1079,14 +1079,11 @@ pmap_pinit(pmap) while ((pml4pg = vm_page_alloc(NULL, color++, VM_ALLOC_NOOBJ | VM_ALLOC_NORMAL | VM_ALLOC_WIRED | VM_ALLOC_ZERO)) == NULL) VM_WAIT; - vm_page_lock_queues(); - vm_page_flag_clear(pml4pg, PG_BUSY); - vm_page_unlock_queues(); pmap->pm_pml4 = (pml4_entry_t *)PHYS_TO_DMAP(VM_PAGE_TO_PHYS(pml4pg)); if ((pml4pg->flags & PG_ZERO) == 0) - bzero(pmap->pm_pml4, PAGE_SIZE); + pagezero(pmap->pm_pml4); mtx_lock_spin(&allpmaps_lock); LIST_INSERT_HEAD(&allpmaps, pmap, pm_list); @@ -1254,7 +1251,6 @@ _pmap_allocpte(pmap, ptepindex) } vm_page_lock_queues(); - vm_page_flag_clear(m, PG_ZERO); vm_page_wakeup(m); vm_page_unlock_queues(); @@ -1424,7 +1420,6 @@ pmap_release(pmap_t pmap) m = PHYS_TO_VM_PAGE(pmap->pm_pml4[PML4PML4I]); m->wire_count--; atomic_subtract_int(&cnt.v_wire_count, 1); - vm_page_busy(m); vm_page_free(m); vm_page_unlock_queues(); } |