Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 4 Apr 2003 18:05:24 -0800 (PST)
From:      Peter Wemm <peter@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 28122 for review
Message-ID:  <200304050205.h3525OCi092805@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=28122

Change 28122 by peter@peter_daintree on 2003/04/04 18:04:27

	implement pte_load_clear() using native instructions

Affected files ...

.. //depot/projects/hammer/sys/x86_64/include/pmap.h#7 edit

Differences ...

==== //depot/projects/hammer/sys/x86_64/include/pmap.h#7 (text+ko) ====

@@ -189,29 +189,8 @@
 
 #define	vtophys(va)	pmap_kextract(((vm_offset_t) (va)))
 
-#ifdef PAE
-
-static __inline pt_entry_t
-pte_load_clear(pt_entry_t *pte)
-{
-	pt_entry_t r;
+#define	pte_load_clear(pte)	atomic_readandclear_long(pte)
 
-	r = *pte;
-	__asm __volatile(
-	    "1:\n"
-	    "\tcmpxchg8b %1\n"
-	    "\tjnz 1b"
-	    : "+A" (r)
-	    : "m" (*pte), "b" (0), "c" (0));
-	return (r);
-}
-
-#else
-
-#define	pte_load_clear(pte)	atomic_readandclear_int(pte)
-
-#endif
-
 #endif
 
 /*
@@ -228,7 +207,7 @@
 	pd_entry_t		*pm_pdir;	/* KVA of page directory */
 	vm_object_t		pm_pteobj;	/* Container for pte's */
 	TAILQ_HEAD(,pv_entry)	pm_pvlist;	/* list of mappings in pmap */
-	u_int			pm_active;	/* active on cpus */
+	u_long			pm_active;	/* active on cpus */
 	struct pmap_statistics	pm_stats;	/* pmap statistics */
 	LIST_ENTRY(pmap) 	pm_list;	/* List of all pmaps */
 #ifdef PAE



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