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--;
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to