From f7312c690f67bf93386af1459a3e75c77e2b2de2 Mon Sep 17 00:00:00 2001 From: tsutsui Date: Sun, 16 Dec 2001 03:41:57 +0000 Subject: [PATCH] cosmetics (typo, KNF etc.) --- sys/arch/news68k/news68k/pmap.c | 229 ++++++++++++++++---------------- 1 file changed, 118 insertions(+), 111 deletions(-) diff --git a/sys/arch/news68k/news68k/pmap.c b/sys/arch/news68k/news68k/pmap.c index 2b7f3e68d4de..25b2bda52283 100644 --- a/sys/arch/news68k/news68k/pmap.c +++ b/sys/arch/news68k/news68k/pmap.c @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.25 2001/12/13 04:39:52 chs Exp $ */ +/* $NetBSD: pmap.c,v 1.26 2001/12/16 03:41:57 tsutsui Exp $ */ /*- * Copyright (c) 1999 The NetBSD Foundation, Inc. @@ -159,11 +159,7 @@ #define PDB_PVDUMP 0x8000 int debugmap = 0; -#if 1 int pmapdebug = PDB_PARANOIA; -#else -int pmapdebug = 0xffff; -#endif #define PMAP_DPRINTF(l, x) if (pmapdebug & (l)) printf x @@ -262,8 +258,10 @@ struct pv_entry *pv_table; char *pmap_attributes; /* reference and modify bits */ TAILQ_HEAD(pv_page_list, pv_page) pv_page_freelist; int pv_nfree; -int pmap_aliasmask; /* seperation at which VA aliasing ok */ +#ifdef CACHE_HAVE_VAC +int pmap_aliasmask; /* seperation at which VA aliasing ok */ +#endif #if defined(M68040) int protostfree; /* prototype (default) free ST map */ #endif @@ -372,13 +370,13 @@ pmap_procwr(p, va, len) void pmap_init() { - vaddr_t addr, addr2; - vsize_t s; - struct pv_entry *pv; - char *attr; - int rv; - int npages; - int bank; + vaddr_t addr, addr2; + vsize_t s; + struct pv_entry *pv; + char *attr; + int rv; + int npages; + int bank; PMAP_DPRINTF(PDB_FOLLOW, ("pmap_init()\n")); @@ -395,18 +393,16 @@ pmap_init() */ addr = (vaddr_t) intiobase; if (uvm_map(kernel_map, &addr, - intiotop_phys - intiobase_phys, - NULL, UVM_UNKNOWN_OFFSET, 0, - UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, - UVM_INH_NONE, UVM_ADV_RANDOM, - UVM_FLAG_FIXED)) != 0) + intiotop_phys - intiobase_phys, + NULL, UVM_UNKNOWN_OFFSET, 0, + UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, + UVM_INH_NONE, UVM_ADV_RANDOM, UVM_FLAG_FIXED)) != 0) goto bogons; addr = (vaddr_t) Sysmap; if (uvm_map(kernel_map, &addr, MAX_PTSIZE, - NULL, UVM_UNKNOWN_OFFSET, 0, - UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, - UVM_INH_NONE, UVM_ADV_RANDOM, - UVM_FLAG_FIXED)) != 0) { + NULL, UVM_UNKNOWN_OFFSET, 0, + UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, + UVM_INH_NONE, UVM_ADV_RANDOM, UVM_FLAG_FIXED)) != 0) { /* * If this fails, it is probably because the static * portion of the kernel page table isn't big enough @@ -469,7 +465,7 @@ pmap_init() * Allocate physical memory for kernel PT pages and their management. * We need 1 PT page per possible task plus some slop. */ - npages = min(atop(MAX_KPTSIZE), maxproc+16); + npages = min(atop(MAX_KPTSIZE), maxproc + 16); s = ptoa(npages) + round_page(npages * sizeof(struct kpt_page)); /* @@ -478,8 +474,8 @@ pmap_init() */ addr = 0; rv = uvm_map(kernel_map, &addr, s, NULL, UVM_UNKNOWN_OFFSET, 0, - UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, - UVM_ADV_RANDOM, UVM_FLAG_NOMERGE)); + UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, + UVM_ADV_RANDOM, UVM_FLAG_NOMERGE)); if (rv != 0 || (addr + s) >= (vaddr_t)Sysmap) panic("pmap_init: kernel PT too small"); uvm_unmap(kernel_map, addr, addr + s); @@ -707,7 +703,7 @@ pmap_map(va, spa, epa, prot) spa += NBPG; } pmap_update(pmap_kernel()); - return (va); + return va; } /* @@ -723,12 +719,12 @@ pmap_create() pmap_t pmap; PMAP_DPRINTF(PDB_FOLLOW|PDB_CREATE, - ("pmap_create\n")); + ("pmap_create()\n")); pmap = pool_get(&pmap_pmap_pool, PR_WAITOK); memset(pmap, 0, sizeof(*pmap)); pmap_pinit(pmap); - return (pmap); + return pmap; } /* @@ -811,8 +807,7 @@ pmap_release(pmap) (vaddr_t)pmap->pm_ptab + MAX_PTSIZE); uvm_km_pgremove(uvm.kernel_object, (vaddr_t)pmap->pm_ptab, (vaddr_t)pmap->pm_ptab + MAX_PTSIZE); - uvm_km_free_wakeup(pt_map, (vaddr_t)pmap->pm_ptab, - MAX_PTSIZE); + uvm_km_free_wakeup(pt_map, (vaddr_t)pmap->pm_ptab, MAX_PTSIZE); } KASSERT(pmap->pm_stab == Segtabzero); } @@ -824,10 +819,10 @@ pmap_release(pmap) */ void pmap_reference(pmap) - pmap_t pmap; + pmap_t pmap; { - PMAP_DPRINTF(PDB_FOLLOW, ("pmap_reference(%p)\n", pmap)); + PMAP_DPRINTF(PDB_FOLLOW, ("pmap_reference(%p)\n", pmap)); simple_lock(&pmap->pm_lock); pmap->pm_count++; simple_unlock(&pmap->pm_lock); @@ -995,7 +990,7 @@ pmap_remove(pmap, sva, eva) void pmap_page_protect(pg, prot) struct vm_page *pg; - vm_prot_t prot; + vm_prot_t prot; { paddr_t pa = VM_PAGE_TO_PHYS(pg); struct pv_entry *pv; @@ -1035,11 +1030,12 @@ pmap_page_protect(pg, prot) pte, PRM_TFLUSH|PRM_CFLUSH); else { pv = pv->pv_next; -#ifdef DEBUG - if (pmapdebug & PDB_PARANOIA) - printf("%s wired mapping for %lx not removed\n", - "pmap_page_protect:", pa); -#endif + PMAP_DPRINTF(PDB_PARANOIA, + ("%s wired mapping for %lx not removed\n", + "pmap_page_protect:", pa)); + PMAP_DPRINTF(PDB_PARANOIA, + ("vm wired count %d\n", + PHYS_TO_VM_PAGE(pa)->wired_count)); if (pv == NULL) break; } @@ -1055,9 +1051,9 @@ pmap_page_protect(pg, prot) */ void pmap_protect(pmap, sva, eva, prot) - pmap_t pmap; - vaddr_t sva, eva; - vm_prot_t prot; + pmap_t pmap; + vaddr_t sva, eva; + vm_prot_t prot; { vaddr_t nssva; pt_entry_t *pte; @@ -1177,8 +1173,8 @@ pmap_enter(pmap, va, pa, prot, flags) * For user mapping, allocate kernel VM resources if necessary. */ if (pmap->pm_ptab == NULL) - pmap->pm_ptab = (pt_entry_t *) - uvm_km_valloc_wait(pt_map, MAX_PTSIZE); + pmap->pm_ptab = + (pt_entry_t *) uvm_km_valloc_wait(pt_map, MAX_PTSIZE); /* * Segment table entry not valid, we need a new PT page @@ -1425,6 +1421,14 @@ validate: return 0; } +/* + * pmap_kenter_pa: [ INTERFACE ] + * + * Enter a va -> pa mapping into the kernel pmap without any + * physical->virtual tracking. + * + * Note: no locking is necessary in this function. + */ void pmap_kenter_pa(va, pa, prot) vaddr_t va; @@ -1442,7 +1446,7 @@ pmap_kenter_pa(va, pa, prot) * Segment table entry not valid, we need a new PT page */ - if (!pmap_ste_v(pmap, va)) { + if (!pmap_ste_v(pmap, va)) { s = splvm(); pmap_enter_ptpage(pmap, va); splx(s); @@ -1481,22 +1485,28 @@ pmap_kenter_pa(va, pa, prot) *pte = npte; } +/* + * pmap_kremove: [ INTERFACE ] + * + * Remove a mapping entered with pmap_kenter_pa() starting at va, + * for len bytes (assumed to be page rounded). + * + */ void pmap_kremove(va, len) vaddr_t va; vsize_t len; { struct pmap *pmap = pmap_kernel(); - vaddr_t sva, eva, nssva; + vaddr_t eva, nssva; pt_entry_t *pte; PMAP_DPRINTF(PDB_FOLLOW|PDB_REMOVE|PDB_PROTECT, ("pmap_kremove(%lx, %lx)\n", va, len)); - sva = va; eva = va + len; - while (sva < eva) { - nssva = m68k_trunc_seg(sva) + NBSEG; + while (va < eva) { + nssva = m68k_trunc_seg(va) + NBSEG; if (nssva == 0 || nssva > eva) nssva = eva; @@ -1505,8 +1515,8 @@ pmap_kremove(va, len) * skip to the next segment boundary. */ - if (!pmap_ste_v(pmap, sva)) { - sva = nssva; + if (!pmap_ste_v(pmap, va)) { + va = nssva; continue; } @@ -1514,8 +1524,8 @@ pmap_kremove(va, len) * Invalidate every valid mapping within this segment. */ - pte = pmap_pte(pmap, sva); - while (sva < nssva) { + pte = pmap_pte(pmap, va); + while (va < nssva) { if (pmap_pte_v(pte)) { #ifdef DEBUG struct pv_entry *pv; @@ -1525,7 +1535,7 @@ pmap_kremove(va, len) s = splvm(); while (pv->pv_pmap != NULL) { KASSERT(pv->pv_pmap != pmap_kernel() || - pv->pv_va != sva); + pv->pv_va != va); pv = pv->pv_next; if (pv == NULL) { break; @@ -1545,10 +1555,10 @@ pmap_kremove(va, len) */ *pte = PG_NV; - TBIS(sva); + TBIS(va); } pte++; - sva += NBPG; + va += NBPG; } } } @@ -1562,8 +1572,8 @@ pmap_kremove(va, len) */ void pmap_unwire(pmap, va) - pmap_t pmap; - vaddr_t va; + pmap_t pmap; + vaddr_t va; { pt_entry_t *pte; @@ -1578,8 +1588,8 @@ pmap_unwire(pmap, va) * we don't want to force allocation of unnecessary PTE pages. */ if (!pmap_ste_v(pmap, va)) { - if (pmapdebug & PDB_PARANOIA) - printf("pmap_unwire: invalid STE for %lx\n", va); + PMAP_DPRINTF(PDB_PARANOIA, + ("pmap_unwire: invalid STE for %lx\n", va)); return; } /* @@ -1587,8 +1597,8 @@ pmap_unwire(pmap, va) * Just continue and change wiring anyway. */ if (!pmap_pte_v(pte)) { - if (pmapdebug & PDB_PARANOIA) - printf("pmap_unwire: invalid PTE for %lx\n", va); + PMAP_DPRINTF(PDB_PARANOIA, + ("pmap_unwire: invalid PTE for %lx\n", va)); } #endif /* @@ -1616,7 +1626,7 @@ pmap_unwire(pmap, va) */ boolean_t pmap_extract(pmap, va, pap) - pmap_t pmap; + pmap_t pmap; vaddr_t va; paddr_t *pap; { @@ -1627,7 +1637,7 @@ pmap_extract(pmap, va, pap) PMAP_DPRINTF(PDB_FOLLOW, ("pmap_extract(%p, %lx) -> ", pmap, va)); - if (pmap && pmap_ste_v(pmap, va)) { + if (pmap_ste_v(pmap, va)) { pte = *(u_int *)pmap_pte(pmap, va); if (pte) { pa = (pte & PG_FRAME) | (va & ~PG_FRAME); @@ -1645,7 +1655,7 @@ pmap_extract(pmap, va, pap) } #endif - return (rv); + return rv; } /* @@ -1659,11 +1669,11 @@ pmap_extract(pmap, va, pap) */ void pmap_copy(dst_pmap, src_pmap, dst_addr, len, src_addr) - pmap_t dst_pmap; - pmap_t src_pmap; - vaddr_t dst_addr; - vsize_t len; - vaddr_t src_addr; + pmap_t dst_pmap; + pmap_t src_pmap; + vaddr_t dst_addr; + vsize_t len; + vaddr_t src_addr; { PMAP_DPRINTF(PDB_FOLLOW, @@ -1683,7 +1693,7 @@ pmap_copy(dst_pmap, src_pmap, dst_addr, len, src_addr) */ void pmap_collect(pmap) - pmap_t pmap; + pmap_t pmap; { PMAP_DPRINTF(PDB_FOLLOW, ("pmap_collect(%p)\n", pmap)); @@ -1729,8 +1739,8 @@ pmap_collect(pmap) */ void pmap_collect1(pmap, startpa, endpa) - pmap_t pmap; - paddr_t startpa, endpa; + pmap_t pmap; + paddr_t startpa, endpa; { paddr_t pa; struct pv_entry *pv; @@ -1765,7 +1775,7 @@ pmap_collect1(pmap, startpa, endpa) goto ok; pmap_pvdump(pa); continue; -ok: + ok: #endif pte = (pt_entry_t *)(pv->pv_va + NBPG); while (--pte >= (pt_entry_t *)pv->pv_va && *pte == PG_NV) @@ -1776,7 +1786,7 @@ ok: #ifdef DEBUG if (pmapdebug & (PDB_PTPAGE|PDB_COLLECT)) { printf("collect: freeing KPT page at %lx (ste %x@%p)\n", - pv->pv_va, *pv->pv_ptste, pv->pv_ptste); + pv->pv_va, *pv->pv_ptste, pv->pv_ptste); opmapdebug = pmapdebug; pmapdebug |= PDB_PTPAGE; } @@ -1788,9 +1798,9 @@ ok: * We call pmap_remove_entry to take care of invalidating * ST and Sysptmap entries. */ - (void) pmap_extract(pmap, pv->pv_va, (paddr_t *)&kpa); + (void) pmap_extract(pmap, pv->pv_va, &kpa); pmap_remove_mapping(pmap, pv->pv_va, PT_ENTRY_NULL, - PRM_TFLUSH|PRM_CFLUSH); + PRM_TFLUSH|PRM_CFLUSH); /* * Use the physical address to locate the original * (kmem_alloc assigned) address for the page and put @@ -1804,9 +1814,8 @@ ok: #ifdef DEBUG if (kpt == NULL) panic("pmap_collect: lost a KPT page"); - if (pmapdebug & (PDB_PTPAGE|PDB_COLLECT)) - printf("collect: %lx (%lx) to free list\n", - kpt->kpt_va, kpa); + PMAP_DPRINTF(PDB_PTPAGE|PDB_COLLECT, + ("collect: %lx (%lx) to free list\n", kpt->kpt_va, kpa)); #endif *pkpt = kpt->kpt_next; kpt->kpt_next = kpt_free_list; @@ -1817,11 +1826,11 @@ ok: if (*ste != SG_NV) printf("collect: kernel STE at %p still valid (%x)\n", - ste, *ste); + ste, *ste); ste = &Sysptmap[ste - pmap_ste(pmap_kernel(), 0)]; if (*ste != SG_NV) printf("collect: kernel PTmap at %p still valid (%x)\n", - ste, *ste); + ste, *ste); #endif } } @@ -1885,7 +1894,7 @@ pmap_zero_page(phys) /* * pmap_zero_page_uncached: * - * Same as above, except uncached. Used in uvm_pageidolezero, + * Same as above, except uncached. Used in uvm_pageidlezero, * through PMAP_PAGEIDLEZERO macro. Returns TRUE if the page * was zero'd, FALSE if we aborted. */ @@ -1919,7 +1928,7 @@ pmap_zero_page_uncached(phys) splx(s); - return (TRUE); + return TRUE; } /* @@ -1999,7 +2008,7 @@ pmap_clear_modify(pg) paddr_t pa = VM_PAGE_TO_PHYS(pg); boolean_t rv; - PMAP_DPRINTF(PDB_FOLLOW, ("pmap_clear_modify(%lx)\n", pa)); + PMAP_DPRINTF(PDB_FOLLOW, ("pmap_clear_modify(%p)\n", pg)); rv = pmap_testbit(pa, PG_M); pmap_changebit(pa, 0, ~PG_M); @@ -2041,10 +2050,10 @@ pmap_is_referenced(pg) if (pmapdebug & PDB_FOLLOW) { boolean_t rv = pmap_testbit(pa, PG_U); printf("pmap_is_referenced(%lx) -> %c\n", pa, "FT"[rv]); - return(rv); + return rv; } #endif - return(pmap_testbit(pa, PG_U)); + return pmap_testbit(pa, PG_U); } /* @@ -2062,11 +2071,11 @@ pmap_is_modified(pg) #ifdef DEBUG if (pmapdebug & PDB_FOLLOW) { boolean_t rv = pmap_testbit(pa, PG_M); - printf("pmap_is_modified(%lx) -> %c\n", pa, "FT"[rv]); - return(rv); + printf("pmap_is_modified(%p) -> %c\n", pg, "FT"[rv]); + return rv; } #endif - return(pmap_testbit(pa, PG_M)); + return pmap_testbit(pa, PG_M); } /* @@ -2082,7 +2091,8 @@ paddr_t pmap_phys_address(ppn) int ppn; { - return(m68k_ptob(ppn)); + + return m68k_ptob(ppn); } #ifdef CACHE_HAVE_VAC @@ -2099,8 +2109,7 @@ pmap_prefer(foff, vap) vaddr_t va; vsize_t d; - if (pmap_aliasmask) - { + if (pmap_aliasmask) { va = *vap; d = foff - va; d &= pmap_aliasmask; @@ -2131,7 +2140,7 @@ pmap_mapmulti(pmap, va) if (pmapdebug & PDB_MULTIMAP) { ste = pmap_ste(pmap, HPMMBASEADDR(va)); printf("pmap_mapmulti(%p, %lx): bste %p(%x)", - pmap, va, ste, *ste); + pmap, va, ste, *ste); ste = pmap_ste(pmap, va); printf(" ste %p(%x)\n", ste, *ste); } @@ -2367,7 +2376,7 @@ pmap_remove_mapping(pmap, va, pte, flags) #ifdef DEBUG if ((pmapdebug & PDB_PARANOIA) && ptpmap->pm_stab != - (st_entry_t *)trunc_page((vaddr_t)ste)) + (st_entry_t *)trunc_page((vaddr_t)ste)) panic("remove: bogus ste"); #endif if (--(ptpmap->pm_sref) == 0) { @@ -2377,11 +2386,10 @@ pmap_remove_mapping(pmap, va, pte, flags) pmap_remove(pmap_kernel(), (vaddr_t)ptpmap->pm_stab, (vaddr_t)ptpmap->pm_stab + STSIZE); - uvm_pagefree(PHYS_TO_VM_PAGE((paddr_t) - ptpmap->pm_stpa)); + uvm_pagefree(PHYS_TO_VM_PAGE( + (paddr_t)ptpmap->pm_stpa)); uvm_km_free_wakeup(st_map, - (vaddr_t)ptpmap->pm_stab, - STSIZE); + (vaddr_t)ptpmap->pm_stab, STSIZE); ptpmap->pm_stab = Segtabzero; ptpmap->pm_stpa = Segtabzeropa; #if defined(M68040) @@ -2445,7 +2453,7 @@ pmap_testbit(pa, bit) if (*pa_to_attribute(pa) & bit) { splx(s); - return(TRUE); + return TRUE; } #ifdef CACHE_HAVE_VAC /* @@ -2464,12 +2472,12 @@ pmap_testbit(pa, bit) if (*pte & bit) { *pa_to_attribute(pa) |= bit; splx(s); - return(TRUE); + return TRUE; } } } splx(s); - return(FALSE); + return FALSE; } /* @@ -2586,8 +2594,7 @@ pmap_enter_ptpage(pmap, va) * reference count drops to zero. */ if (pmap->pm_stab == Segtabzero) { - pmap->pm_stab = (st_entry_t *) - uvm_km_zalloc(st_map, STSIZE); + pmap->pm_stab = (st_entry_t *) uvm_km_zalloc(st_map, STSIZE); (void) pmap_extract(pmap_kernel(), (vaddr_t)pmap->pm_stab, (paddr_t *)&pmap->pm_stpa); #if defined(M68040) @@ -2642,7 +2649,7 @@ pmap_enter_ptpage(pmap, va) * to the first entry of that chunk which is validated in its * entirety below. */ - ste = (st_entry_t *)((int)ste & ~(NBPG/SG4_LEV3SIZE-1)); + ste = (st_entry_t *)((int)ste & ~(NBPG / SG4_LEV3SIZE - 1)); PMAP_DPRINTF(PDB_ENTER|PDB_PTPAGE|PDB_SEGTAB, ("enter: ste2 %p (%p)\n", pmap_ste2(pmap, va), ste)); @@ -2683,7 +2690,7 @@ pmap_enter_ptpage(pmap, va) int ix = pmap_ste(pmap, va) - pmap_ste(pmap, 0); printf("enter: add &Sysptmap[%d]: %x (KPT page %lx)\n", - ix, Sysptmap[ix], kpt->kpt_va); + ix, Sysptmap[ix], kpt->kpt_va); } #endif splx(s); @@ -2703,7 +2710,7 @@ pmap_enter_ptpage(pmap, va) PMAP_DPRINTF(PDB_ENTER|PDB_PTPAGE, ("enter: about to alloc UPT pg at %lx\n", va)); while ((pg = uvm_pagealloc(uvm.kernel_object, va, NULL, - UVM_PGA_ZERO)) == NULL) { + UVM_PGA_ZERO)) == NULL) { uvm_wait("ptpage"); } pg->flags &= ~(PG_BUSY|PG_FAKE); @@ -2727,8 +2734,8 @@ pmap_enter_ptpage(pmap, va) pt_entry_t *pte = pmap_pte(pmap_kernel(), va); if ((pmapdebug & PDB_PARANOIA) && (*pte & PG_CCB) == 0) printf("%s PT no CCB: kva=%lx ptpa=%lx pte@%p=%x\n", - pmap == pmap_kernel() ? "Kernel" : "User", - va, ptpa, pte, *pte); + pmap == pmap_kernel() ? "Kernel" : "User", + va, ptpa, pte, *pte); #endif pmap_changebit(ptpa, 0, ~PG_CCB); } @@ -2827,7 +2834,7 @@ pmap_ptpage_delref(ptpva) pg = uvm_pagelookup(uvm.kernel_object, ptpva - vm_map_min(kernel_map)); rv = --pg->wire_count; simple_unlock(&uvm.kernel_object->vmobjlock); - return (rv); + return rv; } #ifdef DEBUG @@ -2846,8 +2853,8 @@ pmap_pvdump(pa) printf("pa %lx", pa); for (pv = pa_to_pvh(pa); pv; pv = pv->pv_next) printf(" -> pmap %p, va %lx, ptste %p, ptpmap %p, flags %x", - pv->pv_pmap, pv->pv_va, pv->pv_ptste, pv->pv_ptpmap, - pv->pv_flags); + pv->pv_pmap, pv->pv_va, pv->pv_ptste, pv->pv_ptpmap, + pv->pv_flags); printf("\n"); }