Author: alc
Date: Tue Jan 20 20:41:41 2009
New Revision: 187485
URL: http://svn.freebsd.org/changeset/base/187485

Log:
  MFC rev 180600
    Simplify pmap_extract()'s control flow, making it more like the related
    functions pmap_extract_and_hold() and pmap_kextract().

Modified:
  stable/7/sys/   (props changed)
  stable/7/sys/amd64/amd64/pmap.c
  stable/7/sys/contrib/pf/   (props changed)
  stable/7/sys/dev/ath/ath_hal/   (props changed)
  stable/7/sys/dev/cxgb/   (props changed)
  stable/7/sys/i386/i386/pmap.c

Modified: stable/7/sys/amd64/amd64/pmap.c
==============================================================================
--- stable/7/sys/amd64/amd64/pmap.c     Tue Jan 20 20:32:48 2009        
(r187484)
+++ stable/7/sys/amd64/amd64/pmap.c     Tue Jan 20 20:41:41 2009        
(r187485)
@@ -901,13 +901,12 @@ pmap_extract(pmap_t pmap, vm_offset_t va
        if (pdep != NULL) {
                pde = *pdep;
                if (pde) {
-                       if ((pde & PG_PS) != 0) {
+                       if ((pde & PG_PS) != 0)
                                rtval = (pde & PG_PS_FRAME) | (va & PDRMASK);
-                               PMAP_UNLOCK(pmap);
-                               return rtval;
+                       else {
+                               pte = pmap_pde_to_pte(pdep, va);
+                               rtval = (*pte & PG_FRAME) | (va & PAGE_MASK);
                        }
-                       pte = pmap_pde_to_pte(pdep, va);
-                       rtval = (*pte & PG_FRAME) | (va & PAGE_MASK);
                }
        }
        PMAP_UNLOCK(pmap);

Modified: stable/7/sys/i386/i386/pmap.c
==============================================================================
--- stable/7/sys/i386/i386/pmap.c       Tue Jan 20 20:32:48 2009        
(r187484)
+++ stable/7/sys/i386/i386/pmap.c       Tue Jan 20 20:41:41 2009        
(r187485)
@@ -981,14 +981,13 @@ pmap_extract(pmap_t pmap, vm_offset_t va
        PMAP_LOCK(pmap);
        pde = pmap->pm_pdir[va >> PDRSHIFT];
        if (pde != 0) {
-               if ((pde & PG_PS) != 0) {
+               if ((pde & PG_PS) != 0)
                        rtval = (pde & PG_PS_FRAME) | (va & PDRMASK);
-                       PMAP_UNLOCK(pmap);
-                       return rtval;
+               else {
+                       pte = pmap_pte(pmap, va);
+                       rtval = (*pte & PG_FRAME) | (va & PAGE_MASK);
+                       pmap_pte_release(pte);
                }
-               pte = pmap_pte(pmap, va);
-               rtval = (*pte & PG_FRAME) | (va & PAGE_MASK);
-               pmap_pte_release(pte);
        }
        PMAP_UNLOCK(pmap);
        return (rtval);
_______________________________________________
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