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)