svn commit: r211068 - head/sys/mips/mips

Jayachandran C. jchandra at FreeBSD.org
Sun Aug 8 12:23:02 UTC 2010


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--;


More information about the svn-src-head mailing list