Module Name:    src
Committed By:   ad
Date:           Fri May 15 22:17:45 UTC 2020

Modified Files:
        src/sys/arch/amd64/include: pmap.h
        src/sys/arch/i386/include: pmap.h

Log Message:
Revert previous after thinking about it.  It was wrong, don't need to use
an atomic to clear a PTE or set initial version unless the circumstances
call for it.


To generate a diff of this commit:
cvs rdiff -u -r1.65 -r1.66 src/sys/arch/amd64/include/pmap.h
cvs rdiff -u -r1.124 -r1.125 src/sys/arch/i386/include/pmap.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/amd64/include/pmap.h
diff -u src/sys/arch/amd64/include/pmap.h:1.65 src/sys/arch/amd64/include/pmap.h:1.66
--- src/sys/arch/amd64/include/pmap.h:1.65	Tue Mar 17 18:17:07 2020
+++ src/sys/arch/amd64/include/pmap.h	Fri May 15 22:17:45 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.h,v 1.65 2020/03/17 18:17:07 ad Exp $	*/
+/*	$NetBSD: pmap.h,v 1.66 2020/05/15 22:17:45 ad Exp $	*/
 
 /*
  * Copyright (c) 1997 Charles D. Cranor and Washington University.
@@ -202,8 +202,7 @@ extern bool svs_pcid;
 #ifndef XENPV
 #define pmap_pa2pte(a)			(a)
 #define pmap_pte2pa(a)			((a) & PTE_FRAME)
-#define pmap_pte_set(p, n)		\
-    (void)atomic_swap_ulong((volatile unsigned long *)p, n)
+#define pmap_pte_set(p, n)		do { *(p) = (n); } while (0)
 #define pmap_pte_cas(p, o, n)		atomic_cas_64((p), (o), (n))
 #define pmap_pte_testset(p, n)		\
     atomic_swap_ulong((volatile unsigned long *)p, n)

Index: src/sys/arch/i386/include/pmap.h
diff -u src/sys/arch/i386/include/pmap.h:1.124 src/sys/arch/i386/include/pmap.h:1.125
--- src/sys/arch/i386/include/pmap.h:1.124	Tue Mar 17 18:17:07 2020
+++ src/sys/arch/i386/include/pmap.h	Fri May 15 22:17:45 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.h,v 1.124 2020/03/17 18:17:07 ad Exp $	*/
+/*	$NetBSD: pmap.h,v 1.125 2020/05/15 22:17:45 ad Exp $	*/
 
 /*
  * Copyright (c) 1997 Charles D. Cranor and Washington University.
@@ -294,11 +294,10 @@
 #ifndef XENPV
 #define pmap_pa2pte(a)			(a)
 #define pmap_pte2pa(a)			((a) & PTE_FRAME)
+#define pmap_pte_set(p, n)		do { *(p) = (n); } while (0)
 #define pmap_pte_flush()		/* nothing */
 
 #ifdef PAE
-#define pmap_pte_set(p, n)		\
-    (void)atomic_swap_64((volatile uint64_t *)p, n)
 #define pmap_pte_cas(p, o, n)		atomic_cas_64((p), (o), (n))
 #define pmap_pte_testset(p, n)		\
     atomic_swap_64((volatile uint64_t *)p, n)
@@ -307,8 +306,6 @@
 #define pmap_pte_clearbits(p, b)	\
     atomic_and_64((volatile uint64_t *)p, ~(b))
 #else /* PAE */
-#define pmap_pte_set(p, n)		\
-    (void)atomic_swap_ulong((volatile unsigned long *)p, n)
 #define pmap_pte_cas(p, o, n)		atomic_cas_32((p), (o), (n))
 #define pmap_pte_testset(p, n)		\
     atomic_swap_ulong((volatile unsigned long *)p, n)

Reply via email to