Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 20 Jan 2009 20:41:41 +0000 (UTC)
From:      Alan Cox <alc@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org
Subject:   svn commit: r187485 - in stable/7/sys: . amd64/amd64 contrib/pf dev/ath/ath_hal dev/cxgb i386/i386
Message-ID:  <200901202041.n0KKffnr056112@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200901202041.n0KKffnr056112>