Date: Sun, 8 Aug 2010 12:23:02 +0000 (UTC) From: "Jayachandran C." <jchandra@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r211068 - head/sys/mips/mips Message-ID: <201008081223.o78CN2td062683@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: jchandra Date: Sun Aug 8 12:23:02 2010 New Revision: 211068 URL: http://svn.freebsd.org/changeset/base/211068 Log: loadandclear() for PTEs are not needed on MIPS. The PTEs are software managed and we already take pmap lock for PTE operations(see r210922) Reviewed by: alc Modified: head/sys/mips/mips/pmap.c Modified: head/sys/mips/mips/pmap.c ============================================================================== --- head/sys/mips/mips/pmap.c Sun Aug 8 12:19:49 2010 (r211067) +++ head/sys/mips/mips/pmap.c Sun Aug 8 12:23:02 2010 (r211068) @@ -1352,9 +1352,11 @@ retry: pmap->pm_stats.resident_count--; pte = pmap_pte(pmap, va); KASSERT(pte != NULL, ("pte")); - oldpte = loadandclear((u_int *)pte); + oldpte = *pte; if (is_kernel_pmap(pmap)) *pte = PTE_G; + else + *pte = 0; KASSERT(!pte_test(&oldpte, PTE_W), ("wired pte for unwired page")); if (m->md.pv_flags & PV_TABLE_REF) @@ -1494,9 +1496,11 @@ pmap_remove_pte(struct pmap *pmap, pt_en mtx_assert(&vm_page_queue_mtx, MA_OWNED); PMAP_LOCK_ASSERT(pmap, MA_OWNED); - oldpte = loadandclear((u_int *)ptq); + oldpte = *ptq; if (is_kernel_pmap(pmap)) *ptq = PTE_G; + else + *ptq = 0; if (pte_test(&oldpte, PTE_W)) pmap->pm_stats.wired_count -= 1; @@ -1657,9 +1661,11 @@ pmap_remove_all(vm_page_t m) pte = pmap_pte(pv->pv_pmap, pv->pv_va); - tpte = loadandclear((u_int *)pte); + tpte = *pte; if (is_kernel_pmap(pv->pv_pmap)) *pte = PTE_G; + else + *pte = 0; if (pte_test(&tpte, PTE_W)) pv->pv_pmap->pm_stats.wired_count--;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201008081223.o78CN2td062683>