PERFORCE change 28122 for review

Peter Wemm peter at FreeBSD.org
Fri Apr 4 18:05:26 PST 2003


http://perforce.freebsd.org/chv.cgi?CH=28122

Change 28122 by peter at 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


More information about the p4-projects mailing list