Index: alpha/alpha/pmap.c =================================================================== RCS file: /home/ncvs/src/sys/alpha/alpha/pmap.c,v retrieving revision 1.89 diff -u -r1.89 pmap.c --- alpha/alpha/pmap.c 4 Apr 2002 21:03:13 -0000 1.89 +++ alpha/alpha/pmap.c 14 Apr 2002 09:38:52 -0000 @@ -1731,9 +1731,9 @@ nklev2++; vm_page_wire(nkpg); - pa = VM_PAGE_TO_PHYS(nkpg); - pmap_zero_page(pa); + pmap_zero_page(nkpg); + pa = VM_PAGE_TO_PHYS(nkpg); newlev1 = pmap_phys_to_pte(pa) | PG_V | PG_ASM | PG_KRE | PG_KWE; @@ -1765,8 +1765,8 @@ nklev3++; vm_page_wire(nkpg); + pmap_zero_page(nkpg); pa = VM_PAGE_TO_PHYS(nkpg); - pmap_zero_page(pa); newlev2 = pmap_phys_to_pte(pa) | PG_V | PG_ASM | PG_KRE | PG_KWE; *pte = newlev2; @@ -2709,9 +2709,9 @@ */ void -pmap_zero_page(vm_offset_t pa) +pmap_zero_page(vm_page_t m) { - vm_offset_t va = ALPHA_PHYS_TO_K0SEG(pa); + vm_offset_t va = ALPHA_PHYS_TO_K0SEG(VM_PAGE_TO_PHYS(m)); bzero((caddr_t) va, PAGE_SIZE); } @@ -2725,9 +2725,9 @@ */ void -pmap_zero_page_area(vm_offset_t pa, int off, int size) +pmap_zero_page_area(vm_page_t m, int off, int size) { - vm_offset_t va = ALPHA_PHYS_TO_K0SEG(pa); + vm_offset_t va = ALPHA_PHYS_TO_K0SEG(VM_PAGE_TO_PHYS(m)); bzero((char *)(caddr_t)va + off, size); } @@ -2738,10 +2738,10 @@ * time. */ void -pmap_copy_page(vm_offset_t src, vm_offset_t dst) +pmap_copy_page(vm_page_t src, vm_page_t dst) { - src = ALPHA_PHYS_TO_K0SEG(src); - dst = ALPHA_PHYS_TO_K0SEG(dst); + src = ALPHA_PHYS_TO_K0SEG(VM_PAGE_TO_PHYS(src)); + dst = ALPHA_PHYS_TO_K0SEG(VM_PAGE_TO_PHYS(dst)); bcopy((caddr_t) src, (caddr_t) dst, PAGE_SIZE); } Index: i386/i386/pmap.c =================================================================== RCS file: /home/ncvs/src/sys/i386/i386/pmap.c,v retrieving revision 1.320 diff -u -r1.320 pmap.c --- i386/i386/pmap.c 21 Mar 2002 00:48:25 -0000 1.320 +++ i386/i386/pmap.c 14 Apr 2002 09:38:52 -0000 @@ -1464,7 +1464,7 @@ pteva = VM_MAXUSER_ADDRESS + i386_ptob(ptepindex); bzero((caddr_t) pteva, PAGE_SIZE); } else { - pmap_zero_page(ptepa); + pmap_zero_page(m); } } @@ -1629,8 +1629,8 @@ nkpt++; vm_page_wire(nkpg); + pmap_zero_page(nkpg); ptppaddr = VM_PAGE_TO_PHYS(nkpg); - pmap_zero_page(ptppaddr); newpdir = (pd_entry_t) (ptppaddr | PG_V | PG_RW | PG_A | PG_M); pdir_pde(PTD, kernel_vm_end) = newpdir; @@ -2861,13 +2861,14 @@ * the page into KVM and using bzero to clear its contents. */ void -pmap_zero_page(vm_offset_t phys) +pmap_zero_page(vm_page_t m) { + vm_offset_t phys = VM_PAGE_TO_PHYS(m); if (*CMAP2) panic("pmap_zero_page: CMAP2 busy"); - *CMAP2 = PG_V | PG_RW | (phys & PG_FRAME) | PG_A | PG_M; + *CMAP2 = PG_V | PG_RW | phys | PG_A | PG_M; invltlb_1pg((vm_offset_t)CADDR2); #if defined(I686_CPU) @@ -2886,13 +2887,14 @@ * off and size may not cover an area beyond a single hardware page. */ void -pmap_zero_page_area(vm_offset_t phys, int off, int size) +pmap_zero_page_area(vm_page_t m, int off, int size) { + vm_offset_t phys = VM_PAGE_TO_PHYS(m); if (*CMAP2) panic("pmap_zero_page: CMAP2 busy"); - *CMAP2 = PG_V | PG_RW | (phys & PG_FRAME) | PG_A | PG_M; + *CMAP2 = PG_V | PG_RW | phys | PG_A | PG_M; invltlb_1pg((vm_offset_t)CADDR2); #if defined(I686_CPU) @@ -2911,7 +2913,7 @@ * time. */ void -pmap_copy_page(vm_offset_t src, vm_offset_t dst) +pmap_copy_page(vm_page_t src, vm_page_t dst) { if (*CMAP1) @@ -2919,8 +2921,8 @@ if (*CMAP2) panic("pmap_copy_page: CMAP2 busy"); - *CMAP1 = PG_V | (src & PG_FRAME) | PG_A; - *CMAP2 = PG_V | PG_RW | (dst & PG_FRAME) | PG_A | PG_M; + *CMAP1 = PG_V | VM_PAGE_TO_PHYS(src) | PG_A; + *CMAP2 = PG_V | PG_RW | VM_PAGE_TO_PHYS(dst) | PG_A | PG_M; #ifdef I386_CPU invltlb(); #else Index: ia64/ia64/pmap.c =================================================================== RCS file: /home/ncvs/src/sys/ia64/ia64/pmap.c,v retrieving revision 1.55 diff -u -r1.55 pmap.c --- ia64/ia64/pmap.c 10 Apr 2002 16:34:52 -0000 1.55 +++ ia64/ia64/pmap.c 14 Apr 2002 09:38:52 -0000 @@ -2113,9 +2113,9 @@ */ void -pmap_zero_page(vm_offset_t pa) +pmap_zero_page(vm_page_t m) { - vm_offset_t va = IA64_PHYS_TO_RR7(pa); + vm_offset_t va = IA64_PHYS_TO_RR7(VM_PAGE_TO_PHYS(m)); bzero((caddr_t) va, PAGE_SIZE); } @@ -2129,9 +2129,9 @@ */ void -pmap_zero_page_area(vm_offset_t pa, int off, int size) +pmap_zero_page_area(vm_page_t m, int off, int size) { - vm_offset_t va = IA64_PHYS_TO_RR7(pa); + vm_offset_t va = IA64_PHYS_TO_RR7(VM_PAGE_TO_PHYS(m)); bzero((char *)(caddr_t)va + off, size); } @@ -2142,10 +2142,10 @@ * time. */ void -pmap_copy_page(vm_offset_t src, vm_offset_t dst) +pmap_copy_page(vm_page_t src, vm_page_t dst) { - src = IA64_PHYS_TO_RR7(src); - dst = IA64_PHYS_TO_RR7(dst); + src = IA64_PHYS_TO_RR7(VM_PAGE_TO_PHYS(src)); + dst = IA64_PHYS_TO_RR7(VM_PAGE_TO_PHYS(dst)); bcopy((caddr_t) src, (caddr_t) dst, PAGE_SIZE); } Index: powerpc/powerpc/pmap.c =================================================================== RCS file: /home/ncvs/src/sys/powerpc/powerpc/pmap.c,v retrieving revision 1.24 diff -u -r1.24 pmap.c --- powerpc/powerpc/pmap.c 21 Mar 2002 01:11:31 -0000 1.24 +++ powerpc/powerpc/pmap.c 14 Apr 2002 09:38:54 -0000 @@ -817,7 +817,7 @@ } void -pmap_copy_page(vm_offset_t src, vm_offset_t dst) +pmap_copy_page(vm_page_t src, vm_page_t dst) { TODO; } @@ -826,8 +826,9 @@ * Zero a page of physical memory by temporarily mapping it into the tlb. */ void -pmap_zero_page(vm_offset_t pa) +pmap_zero_page(vm_page_t m) { + vm_offset_t pa = VM_PAGE_TO_PHYS(m); caddr_t va; int i; @@ -854,7 +855,7 @@ } void -pmap_zero_page_area(vm_offset_t pa, int off, int size) +pmap_zero_page_area(vm_page_t m, int off, int size) { TODO; } Index: sparc64/sparc64/pmap.c =================================================================== RCS file: /home/ncvs/src/sys/sparc64/sparc64/pmap.c,v retrieving revision 1.47 diff -u -r1.47 pmap.c --- sparc64/sparc64/pmap.c 6 Apr 2002 08:21:43 -0000 1.47 +++ sparc64/sparc64/pmap.c 14 Apr 2002 09:38:54 -0000 @@ -1144,7 +1144,7 @@ m = vm_page_grab(pm->pm_tsb_obj, i, VM_ALLOC_RETRY | VM_ALLOC_ZERO); if ((m->flags & PG_ZERO) == 0) - pmap_zero_page(VM_PAGE_TO_PHYS(m)); + pmap_zero_page(m); m->wire_count++; cnt.v_wire_count++; @@ -1598,8 +1598,9 @@ * Zero a page of physical memory by temporarily mapping it into the tlb. */ void -pmap_zero_page(vm_offset_t pa) +pmap_zero_page(vm_page_t m) { + vm_offset_t pa = VM_PAGE_TO_PHYS(m); CTR1(KTR_PMAP, "pmap_zero_page: pa=%#lx", pa); dcache_inval_phys(pa, pa + PAGE_SIZE); @@ -1607,8 +1608,9 @@ } void -pmap_zero_page_area(vm_offset_t pa, int off, int size) +pmap_zero_page_area(vm_page_t m, int off, int size) { + vm_offset_t pa = VM_PAGE_TO_PHYS(m); CTR3(KTR_PMAP, "pmap_zero_page_area: pa=%#lx off=%#x size=%#x", pa, off, size); @@ -1621,8 +1623,10 @@ * Copy a page of physical memory by temporarily mapping it into the tlb. */ void -pmap_copy_page(vm_offset_t src, vm_offset_t dst) +pmap_copy_page(vm_page_t msrc, vm_page_t mdst) { + vm_offset_t src = VM_PAGE_TO_PHYS(msrc); + vm_offset_t dst = VM_PAGE_TO_PHYS(mdst); CTR2(KTR_PMAP, "pmap_copy_page: src=%#lx dst=%#lx", src, dst); dcache_inval_phys(dst, dst + PAGE_SIZE); Index: vm/pmap.h =================================================================== RCS file: /home/ncvs/src/sys/vm/pmap.h,v retrieving revision 1.44 diff -u -r1.44 pmap.h --- vm/pmap.h 19 Mar 2002 22:17:45 -0000 1.44 +++ vm/pmap.h 14 Apr 2002 09:38:54 -0000 @@ -97,7 +97,7 @@ void pmap_clear_reference(vm_page_t m); void pmap_collect(void); void pmap_copy(pmap_t, pmap_t, vm_offset_t, vm_size_t, vm_offset_t); -void pmap_copy_page(vm_offset_t, vm_offset_t); +void pmap_copy_page(vm_page_t, vm_page_t); void pmap_destroy(pmap_t); void pmap_enter(pmap_t, vm_offset_t, vm_page_t, vm_prot_t, boolean_t); @@ -126,8 +126,8 @@ void pmap_release(pmap_t); void pmap_remove(pmap_t, vm_offset_t, vm_offset_t); void pmap_remove_pages(pmap_t, vm_offset_t, vm_offset_t); -void pmap_zero_page(vm_offset_t); -void pmap_zero_page_area(vm_offset_t, int off, int size); +void pmap_zero_page(vm_page_t); +void pmap_zero_page_area(vm_page_t, int off, int size); void pmap_prefault(pmap_t, vm_offset_t, vm_map_entry_t); int pmap_mincore(pmap_t pmap, vm_offset_t addr); void pmap_new_proc(struct proc *p); Index: vm/vm_map.c =================================================================== RCS file: /home/ncvs/src/sys/vm/vm_map.c,v retrieving revision 1.220 diff -u -r1.220 vm_map.c --- vm/vm_map.c 20 Mar 2002 04:02:59 -0000 1.220 +++ vm/vm_map.c 14 Apr 2002 09:38:54 -0000 @@ -3221,7 +3221,7 @@ } vm_page_protect(m_in, VM_PROT_NONE); - pmap_copy_page(VM_PAGE_TO_PHYS(m_in), VM_PAGE_TO_PHYS(m_out)); + pmap_copy_page(m_in, m_out); m_out->valid = m_in->valid; vm_page_dirty(m_out); vm_page_activate(m_out); Index: vm/vm_page.c =================================================================== RCS file: /home/ncvs/src/sys/vm/vm_page.c,v retrieving revision 1.183 diff -u -r1.183 vm_page.c --- vm/vm_page.c 4 Apr 2002 21:03:38 -0000 1.183 +++ vm/vm_page.c 14 Apr 2002 09:38:54 -0000 @@ -455,7 +455,7 @@ boolean_t vm_page_zero_fill(vm_page_t m) { - pmap_zero_page(VM_PAGE_TO_PHYS(m)); + pmap_zero_page(m); return (TRUE); } @@ -467,7 +467,7 @@ void vm_page_copy(vm_page_t src_m, vm_page_t dest_m) { - pmap_copy_page(VM_PAGE_TO_PHYS(src_m), VM_PAGE_TO_PHYS(dest_m)); + pmap_copy_page(src_m, dest_m); dest_m->valid = VM_PAGE_BITS_ALL; } @@ -1582,14 +1582,8 @@ * first block. */ if ((frag = base & ~(DEV_BSIZE - 1)) != base && - (m->valid & (1 << (base >> DEV_BSHIFT))) == 0 - ) { - pmap_zero_page_area( - VM_PAGE_TO_PHYS(m), - frag, - base - frag - ); - } + (m->valid & (1 << (base >> DEV_BSHIFT))) == 0) + pmap_zero_page_area(m, frag, base - frag); /* * If the ending offset is not DEV_BSIZE aligned and the @@ -1598,14 +1592,9 @@ */ endoff = base + size; if ((frag = endoff & ~(DEV_BSIZE - 1)) != endoff && - (m->valid & (1 << (endoff >> DEV_BSHIFT))) == 0 - ) { - pmap_zero_page_area( - VM_PAGE_TO_PHYS(m), - endoff, - DEV_BSIZE - (endoff & (DEV_BSIZE - 1)) - ); - } + (m->valid & (1 << (endoff >> DEV_BSHIFT))) == 0) + pmap_zero_page_area(m, endoff, + DEV_BSIZE - (endoff & (DEV_BSIZE - 1))); /* * Set valid, clear dirty bits. If validating the entire @@ -1702,11 +1691,8 @@ (m->valid & (1 << i)) ) { if (i > b) { - pmap_zero_page_area( - VM_PAGE_TO_PHYS(m), - b << DEV_BSHIFT, - (i - b) << DEV_BSHIFT - ); + pmap_zero_page_area(m, + b << DEV_BSHIFT, (i - b) << DEV_BSHIFT); } b = i + 1; } Index: vm/vm_zeroidle.c =================================================================== RCS file: /home/ncvs/src/sys/vm/vm_zeroidle.c,v retrieving revision 1.7 diff -u -r1.7 vm_zeroidle.c --- vm/vm_zeroidle.c 11 Feb 2002 20:37:54 -0000 1.7 +++ vm/vm_zeroidle.c 14 Apr 2002 09:38:54 -0000 @@ -82,7 +82,7 @@ TAILQ_REMOVE(&vm_page_queues[m->queue].pl, m, pageq); m->queue = PQ_NONE; /* maybe drop out of Giant here */ - pmap_zero_page(VM_PAGE_TO_PHYS(m)); + pmap_zero_page(m); /* and return here */ vm_page_flag_set(m, PG_ZERO); m->queue = PQ_FREE + m->pc;