Module Name:    src
Committed By:   maxv
Date:           Thu Mar  7 13:26:25 UTC 2019

Modified Files:
        src/sys/arch/amd64/amd64: locore.S
        src/sys/arch/amd64/include: pte.h
        src/sys/arch/amd64/stand/prekern: locore.S mm.c
        src/sys/arch/i386/i386: genassym.cf locore.S machdep.c
        src/sys/arch/i386/include: pte.h
        src/sys/arch/x86/x86: db_memrw.c pmap.c
        src/sys/arch/xen/x86: x86_xpmap.c xen_pmap.c

Log Message:
Drop PG_RO, PG_KR and PG_PROT, they are useless and create confusion.


To generate a diff of this commit:
cvs rdiff -u -r1.178 -r1.179 src/sys/arch/amd64/amd64/locore.S
cvs rdiff -u -r1.9 -r1.10 src/sys/arch/amd64/include/pte.h
cvs rdiff -u -r1.8 -r1.9 src/sys/arch/amd64/stand/prekern/locore.S
cvs rdiff -u -r1.22 -r1.23 src/sys/arch/amd64/stand/prekern/mm.c
cvs rdiff -u -r1.111 -r1.112 src/sys/arch/i386/i386/genassym.cf
cvs rdiff -u -r1.164 -r1.165 src/sys/arch/i386/i386/locore.S
cvs rdiff -u -r1.816 -r1.817 src/sys/arch/i386/i386/machdep.c
cvs rdiff -u -r1.28 -r1.29 src/sys/arch/i386/include/pte.h
cvs rdiff -u -r1.8 -r1.9 src/sys/arch/x86/x86/db_memrw.c
cvs rdiff -u -r1.327 -r1.328 src/sys/arch/x86/x86/pmap.c
cvs rdiff -u -r1.82 -r1.83 src/sys/arch/xen/x86/x86_xpmap.c
cvs rdiff -u -r1.28 -r1.29 src/sys/arch/xen/x86/xen_pmap.c

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/amd64/locore.S
diff -u src/sys/arch/amd64/amd64/locore.S:1.178 src/sys/arch/amd64/amd64/locore.S:1.179
--- src/sys/arch/amd64/amd64/locore.S:1.178	Thu Feb 14 08:18:25 2019
+++ src/sys/arch/amd64/amd64/locore.S	Thu Mar  7 13:26:24 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore.S,v 1.178 2019/02/14 08:18:25 cherry Exp $	*/
+/*	$NetBSD: locore.S,v 1.179 2019/03/07 13:26:24 maxv Exp $	*/
 
 /*
  * Copyright-o-rama!
@@ -680,7 +680,7 @@ ENTRY(start)
 	movl	$RELOC(__rodata_start),%ecx
 	subl	%eax,%ecx
 	shrl	$PGSHIFT,%ecx
-	orl	$(PG_V|PG_KR),%eax
+	orl	$(PG_V),%eax
 	fillkpt
 
 	/* Map the kernel rodata R. */
@@ -688,7 +688,7 @@ ENTRY(start)
 	movl	$RELOC(__data_start),%ecx
 	subl	%eax,%ecx
 	shrl	$PGSHIFT,%ecx
-	orl	$(PG_V|PG_KR),%eax
+	orl	$(PG_V),%eax
 	fillkpt_nox
 
 	/* Map the kernel data+bss RW. */

Index: src/sys/arch/amd64/include/pte.h
diff -u src/sys/arch/amd64/include/pte.h:1.9 src/sys/arch/amd64/include/pte.h:1.10
--- src/sys/arch/amd64/include/pte.h:1.9	Fri May 13 11:17:20 2016
+++ src/sys/arch/amd64/include/pte.h	Thu Mar  7 13:26:24 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: pte.h,v 1.9 2016/05/13 11:17:20 maxv Exp $	*/
+/*	$NetBSD: pte.h,v 1.10 2019/03/07 13:26:24 maxv Exp $	*/
 
 /*
  * Copyright (c) 2001 Wasabi Systems, Inc.
@@ -98,10 +98,8 @@ typedef uint64_t pt_entry_t;		/* PTE */
  * PDE/PTE bits. These are no different from their i386 counterparts.
  */
 #define PG_V		0x0000000000000001	/* valid */
-#define PG_RO		0x0000000000000000	/* read-only */
 #define PG_RW		0x0000000000000002	/* read-write */
 #define PG_u		0x0000000000000004	/* user accessible */
-#define PG_PROT		0x0000000000000006
 #define PG_WT		0x0000000000000008	/* write-through */
 #define PG_N		0x0000000000000010	/* non-cacheable */
 #define PG_U		0x0000000000000020	/* used */
@@ -123,7 +121,6 @@ typedef uint64_t pt_entry_t;		/* PTE */
 /*
  * Short forms of protection codes.
  */
-#define PG_KR		0x0000000000000000	/* kernel read-only */
 #define PG_KW		0x0000000000000002	/* kernel read-write */
 
 #include <x86/pte.h>

Index: src/sys/arch/amd64/stand/prekern/locore.S
diff -u src/sys/arch/amd64/stand/prekern/locore.S:1.8 src/sys/arch/amd64/stand/prekern/locore.S:1.9
--- src/sys/arch/amd64/stand/prekern/locore.S:1.8	Fri May 25 16:01:31 2018
+++ src/sys/arch/amd64/stand/prekern/locore.S	Thu Mar  7 13:26:24 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore.S,v 1.8 2018/05/25 16:01:31 maxv Exp $	*/
+/*	$NetBSD: locore.S,v 1.9 2019/03/07 13:26:24 maxv Exp $	*/
 
 /*
  * Copyright (c) 1998, 2000, 2007, 2008, 2016, 2017 The NetBSD Foundation, Inc.
@@ -424,7 +424,7 @@ ENTRY(start)
 	movl	$_C_LABEL(__rodata_start),%ecx
 	subl	%eax,%ecx
 	shrl	$PGSHIFT,%ecx
-	orl	$(PG_V|PG_KR),%eax
+	orl	$(PG_V),%eax
 	fillkpt
 
 	/* Map the prekern rodata R. */
@@ -432,7 +432,7 @@ ENTRY(start)
 	movl	$_C_LABEL(__data_start),%ecx
 	subl	%eax,%ecx
 	shrl	$PGSHIFT,%ecx
-	orl	$(PG_V|PG_KR),%eax
+	orl	$(PG_V),%eax
 	fillkpt_nox
 
 	/* Map the prekern data+bss RW. */
@@ -448,7 +448,7 @@ ENTRY(start)
 	movl	%esi,%ecx		/* start of BOOTSTRAP TABLES */
 	subl	%eax,%ecx
 	shrl	$PGSHIFT,%ecx
-	orl	$(PG_V|PG_KR),%eax
+	orl	$(PG_V),%eax
 	fillkpt_nox
 
 	/* Map the BOOTSTRAP TABLES RW. */

Index: src/sys/arch/amd64/stand/prekern/mm.c
diff -u src/sys/arch/amd64/stand/prekern/mm.c:1.22 src/sys/arch/amd64/stand/prekern/mm.c:1.23
--- src/sys/arch/amd64/stand/prekern/mm.c:1.22	Wed Jun 20 11:49:37 2018
+++ src/sys/arch/amd64/stand/prekern/mm.c	Thu Mar  7 13:26:24 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: mm.c,v 1.22 2018/06/20 11:49:37 maxv Exp $	*/
+/*	$NetBSD: mm.c,v 1.23 2019/03/07 13:26:24 maxv Exp $	*/
 
 /*
  * Copyright (c) 2017 The NetBSD Foundation, Inc. All rights reserved.
@@ -44,9 +44,9 @@ static const uint8_t pads[4] = {
 #define MM_PROT_EXECUTE	0x02
 
 static const pt_entry_t protection_codes[3] = {
-	[MM_PROT_READ] = PG_RO | PG_NX,
+	[MM_PROT_READ] = PG_NX,
 	[MM_PROT_WRITE] = PG_RW | PG_NX,
-	[MM_PROT_EXECUTE] = PG_RO,
+	[MM_PROT_EXECUTE] = 0,
 	/* RWX does not exist */
 };
 

Index: src/sys/arch/i386/i386/genassym.cf
diff -u src/sys/arch/i386/i386/genassym.cf:1.111 src/sys/arch/i386/i386/genassym.cf:1.112
--- src/sys/arch/i386/i386/genassym.cf:1.111	Fri Feb 15 08:54:01 2019
+++ src/sys/arch/i386/i386/genassym.cf	Thu Mar  7 13:26:24 2019
@@ -1,4 +1,4 @@
-#	$NetBSD: genassym.cf,v 1.111 2019/02/15 08:54:01 nonaka Exp $
+#	$NetBSD: genassym.cf,v 1.112 2019/03/07 13:26:24 maxv Exp $
 
 #
 # Copyright (c) 1998, 2006, 2007, 2008 The NetBSD Foundation, Inc.
@@ -144,7 +144,6 @@ define	KERNTEXTOFF		KERNTEXTOFF
 define	PG_RW			PG_RW
 define	PG_V			PG_V
 define	PG_KW			PG_KW
-define	PG_KR			PG_KR
 define	PGEX_U			PGEX_U
 
 define	L2_SLOT_KERNBASE	pl2_pi(KERNBASE)

Index: src/sys/arch/i386/i386/locore.S
diff -u src/sys/arch/i386/i386/locore.S:1.164 src/sys/arch/i386/i386/locore.S:1.165
--- src/sys/arch/i386/i386/locore.S:1.164	Wed Feb 13 05:36:59 2019
+++ src/sys/arch/i386/i386/locore.S	Thu Mar  7 13:26:24 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore.S,v 1.164 2019/02/13 05:36:59 cherry Exp $	*/
+/*	$NetBSD: locore.S,v 1.165 2019/03/07 13:26:24 maxv Exp $	*/
 
 /*
  * Copyright-o-rama!
@@ -128,7 +128,7 @@
  */
 
 #include <machine/asm.h>
-__KERNEL_RCSID(0, "$NetBSD: locore.S,v 1.164 2019/02/13 05:36:59 cherry Exp $");
+__KERNEL_RCSID(0, "$NetBSD: locore.S,v 1.165 2019/03/07 13:26:24 maxv Exp $");
 
 #include "opt_copy_symtab.h"
 #include "opt_ddb.h"
@@ -693,7 +693,7 @@ no_NOX:
 	movl	$RELOC(__rodata_start),%ecx
 	subl	%eax,%ecx
 	shrl	$PGSHIFT,%ecx
-	orl	$(PG_V|PG_KR),%eax
+	orl	$(PG_V),%eax
 	fillkpt
 
 	/* Map the kernel rodata R. */
@@ -701,7 +701,7 @@ no_NOX:
 	movl	$RELOC(__data_start),%ecx
 	subl	%eax,%ecx
 	shrl	$PGSHIFT,%ecx
-	orl	$(PG_V|PG_KR),%eax
+	orl	$(PG_V),%eax
 	fillkpt_nox
 
 	/* Map the kernel data+bss RW. */

Index: src/sys/arch/i386/i386/machdep.c
diff -u src/sys/arch/i386/i386/machdep.c:1.816 src/sys/arch/i386/i386/machdep.c:1.817
--- src/sys/arch/i386/i386/machdep.c:1.816	Thu Feb 14 08:18:25 2019
+++ src/sys/arch/i386/i386/machdep.c	Thu Mar  7 13:26:24 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: machdep.c,v 1.816 2019/02/14 08:18:25 cherry Exp $	*/
+/*	$NetBSD: machdep.c,v 1.817 2019/03/07 13:26:24 maxv Exp $	*/
 
 /*
  * Copyright (c) 1996, 1997, 1998, 2000, 2004, 2006, 2008, 2009, 2017
@@ -67,7 +67,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.816 2019/02/14 08:18:25 cherry Exp $");
+__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.817 2019/03/07 13:26:24 maxv Exp $");
 
 #include "opt_beep.h"
 #include "opt_compat_freebsd.h"
@@ -1029,7 +1029,7 @@ initgdt(union descriptor *tgdt)
 		pt_entry_t pte;
 
 		pte = pmap_pa2pte((vaddr_t)gdtstore - KERNBASE);
-		pte |= PG_RO | xpmap_pg_nx | PG_V;
+		pte |= xpmap_pg_nx | PG_V;
 
 		if (HYPERVISOR_update_va_mapping((vaddr_t)gdtstore, pte,
 		    UVMF_INVLPG) < 0) {

Index: src/sys/arch/i386/include/pte.h
diff -u src/sys/arch/i386/include/pte.h:1.28 src/sys/arch/i386/include/pte.h:1.29
--- src/sys/arch/i386/include/pte.h:1.28	Thu Mar  7 13:02:13 2019
+++ src/sys/arch/i386/include/pte.h	Thu Mar  7 13:26:24 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: pte.h,v 1.28 2019/03/07 13:02:13 maxv Exp $	*/
+/*	$NetBSD: pte.h,v 1.29 2019/03/07 13:26:24 maxv Exp $	*/
 
 /*
  * Copyright (c) 2001 Wasabi Systems, Inc.
@@ -148,10 +148,8 @@ typedef uint32_t pt_entry_t;		/* PTE */
  * XXXCDC: need to rename these (PG_u == ugly).
  */
 #define PG_V		0x00000001	/* valid entry */
-#define PG_RO		0x00000000	/* read-only page */
 #define PG_RW		0x00000002	/* read-write page */
 #define PG_u		0x00000004	/* user accessible page */
-#define PG_PROT		0x00000806	/* all protection bits */
 #define PG_WT		0x00000008	/* write through */
 #define PG_N		0x00000010	/* non-cacheable */
 #define PG_U		0x00000020	/* has been used */
@@ -167,7 +165,6 @@ typedef uint32_t pt_entry_t;		/* PTE */
 /*
  * various short-hand protection codes
  */
-#define PG_KR		0x00000000	/* kernel read-only */
 #define PG_KW		0x00000002	/* kernel read-write */
 
 #ifdef PAE

Index: src/sys/arch/x86/x86/db_memrw.c
diff -u src/sys/arch/x86/x86/db_memrw.c:1.8 src/sys/arch/x86/x86/db_memrw.c:1.9
--- src/sys/arch/x86/x86/db_memrw.c:1.8	Sat Jan 19 13:17:32 2019
+++ src/sys/arch/x86/x86/db_memrw.c	Thu Mar  7 13:26:24 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: db_memrw.c,v 1.8 2019/01/19 13:17:32 martin Exp $	*/
+/*	$NetBSD: db_memrw.c,v 1.9 2019/03/07 13:26:24 maxv Exp $	*/
 
 /*-
  * Copyright (c) 1996, 2000 The NetBSD Foundation, Inc.
@@ -53,7 +53,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: db_memrw.c,v 1.8 2019/01/19 13:17:32 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: db_memrw.c,v 1.9 2019/03/07 13:26:24 maxv Exp $");
 
 #include <sys/param.h>
 #include <sys/proc.h>
@@ -170,7 +170,6 @@ db_write_text(vaddr_t addr, size_t size,
 		/*
 		 * Make the kernel text page writable.
 		 */
-		pmap_pte_clearbits(ppte, PG_KR);
 		pmap_pte_setbits(ppte, PG_KW);
 		pmap_update_pg(addr);
 
@@ -190,7 +189,6 @@ db_write_text(vaddr_t addr, size_t size,
 		 * Turn the page back to read-only.
 		 */
 		pmap_pte_clearbits(ppte, PG_KW);
-		pmap_pte_setbits(ppte, PG_KR);
 		pmap_update_pg(addr);
 
 		/*

Index: src/sys/arch/x86/x86/pmap.c
diff -u src/sys/arch/x86/x86/pmap.c:1.327 src/sys/arch/x86/x86/pmap.c:1.328
--- src/sys/arch/x86/x86/pmap.c:1.327	Sat Feb 23 10:59:12 2019
+++ src/sys/arch/x86/x86/pmap.c	Thu Mar  7 13:26:24 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.327 2019/02/23 10:59:12 maxv Exp $	*/
+/*	$NetBSD: pmap.c,v 1.328 2019/03/07 13:26:24 maxv Exp $	*/
 
 /*
  * Copyright (c) 2008, 2010, 2016, 2017 The NetBSD Foundation, Inc.
@@ -130,7 +130,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.327 2019/02/23 10:59:12 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.328 2019/03/07 13:26:24 maxv Exp $");
 
 #include "opt_user_ldt.h"
 #include "opt_lockdebug.h"
@@ -1068,9 +1068,9 @@ pmap_bootstrap(vaddr_t kva_start)
 	 * into a x86 PTE.
 	 */
 	protection_codes[VM_PROT_NONE] = pmap_pg_nx;
-	protection_codes[VM_PROT_EXECUTE] = PG_RO | PG_X;
-	protection_codes[VM_PROT_READ] = PG_RO | pmap_pg_nx;
-	protection_codes[VM_PROT_READ|VM_PROT_EXECUTE] = PG_RO | PG_X;
+	protection_codes[VM_PROT_EXECUTE] = PG_X;
+	protection_codes[VM_PROT_READ] = pmap_pg_nx;
+	protection_codes[VM_PROT_READ|VM_PROT_EXECUTE] = PG_X;
 	protection_codes[VM_PROT_WRITE] = PG_RW | pmap_pg_nx;
 	protection_codes[VM_PROT_WRITE|VM_PROT_EXECUTE] = PG_RW | PG_X;
 	protection_codes[VM_PROT_WRITE|VM_PROT_READ] = PG_RW | pmap_pg_nx;
@@ -1660,7 +1660,7 @@ pmap_remap_largepages(void)
 		pa = roundup(bootspace.segs[i].pa, NBPD_L2);
 		for (/* */; kva < kva_end; kva += NBPD_L2, pa += NBPD_L2) {
 			pde = &L2_BASE[pl2_i(kva)];
-			*pde = pa | pmap_pg_g | PG_PS | PG_KR | PG_V;
+			*pde = pa | pmap_pg_g | PG_PS | PG_V;
 			tlbflushg();
 		}
 	}
@@ -1679,7 +1679,7 @@ pmap_remap_largepages(void)
 		pa = roundup(bootspace.segs[i].pa, NBPD_L2);
 		for (/* */; kva < kva_end; kva += NBPD_L2, pa += NBPD_L2) {
 			pde = &L2_BASE[pl2_i(kva)];
-			*pde = pa | pmap_pg_g | PG_PS | pmap_pg_nx | PG_KR | PG_V;
+			*pde = pa | pmap_pg_g | PG_PS | pmap_pg_nx | PG_V;
 			tlbflushg();
 		}
 	}

Index: src/sys/arch/xen/x86/x86_xpmap.c
diff -u src/sys/arch/xen/x86/x86_xpmap.c:1.82 src/sys/arch/xen/x86/x86_xpmap.c:1.83
--- src/sys/arch/xen/x86/x86_xpmap.c:1.82	Mon Feb  4 18:14:53 2019
+++ src/sys/arch/xen/x86/x86_xpmap.c	Thu Mar  7 13:26:24 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: x86_xpmap.c,v 1.82 2019/02/04 18:14:53 cherry Exp $	*/
+/*	$NetBSD: x86_xpmap.c,v 1.83 2019/03/07 13:26:24 maxv Exp $	*/
 
 /*
  * Copyright (c) 2017 The NetBSD Foundation, Inc.
@@ -95,7 +95,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: x86_xpmap.c,v 1.82 2019/02/04 18:14:53 cherry Exp $");
+__KERNEL_RCSID(0, "$NetBSD: x86_xpmap.c,v 1.83 2019/03/07 13:26:24 maxv Exp $");
 
 #include "opt_xen.h"
 #include "opt_ddb.h"
@@ -769,20 +769,19 @@ xen_bootstrap_tables(vaddr_t old_pgd, va
 
 			pte[pl1_pi(page)] |= PG_V;
 			if (page < (vaddr_t)&__rodata_start) {
-				/* Map the kernel text RX. */
-				pte[pl1_pi(page)] |= PG_RO;
+				/* Map the kernel text RX. Nothing to do. */
 			} else if (page >= (vaddr_t)&__rodata_start &&
 			    page < (vaddr_t)&__data_start) {
 				/* Map the kernel rodata R. */
-				pte[pl1_pi(page)] |= PG_RO | xpmap_pg_nx;
+				pte[pl1_pi(page)] |= xpmap_pg_nx;
 			} else if (page >= old_pgd &&
 			    page < old_pgd + (old_count * PAGE_SIZE)) {
 				/* Map the old page tables R. */
-				pte[pl1_pi(page)] |= PG_RO | xpmap_pg_nx;
+				pte[pl1_pi(page)] |= xpmap_pg_nx;
 			} else if (page >= new_pgd &&
 			    page < new_pgd + ((new_count + PDIRSZ) * PAGE_SIZE)) {
 				/* Map the new page tables R. */
-				pte[pl1_pi(page)] |= PG_RO | xpmap_pg_nx;
+				pte[pl1_pi(page)] |= xpmap_pg_nx;
 #ifdef i386
 			} else if (page == (vaddr_t)tmpgdt) {
 				/*
@@ -816,10 +815,10 @@ xen_bootstrap_tables(vaddr_t old_pgd, va
 #ifdef __x86_64__
 	/* Recursive entry in pmap_kernel(). */
 	L4[PDIR_SLOT_PTE] = xpmap_ptom_masked((paddr_t)L4 - KERNBASE)
-	    | PG_RO | PG_V | xpmap_pg_nx;
+	    | PG_V | xpmap_pg_nx;
 	/* Recursive entry in higher-level per-cpu PD. */
 	L4cpu[PDIR_SLOT_PTE] = xpmap_ptom_masked((paddr_t)L4cpu - KERNBASE)
-	    | PG_RO | PG_V | xpmap_pg_nx;
+	    | PG_V | xpmap_pg_nx;
 
 	/* Mark tables RO */
 	xen_bt_set_readonly((vaddr_t)L2);

Index: src/sys/arch/xen/x86/xen_pmap.c
diff -u src/sys/arch/xen/x86/xen_pmap.c:1.28 src/sys/arch/xen/x86/xen_pmap.c:1.29
--- src/sys/arch/xen/x86/xen_pmap.c:1.28	Sat Feb  2 12:32:55 2019
+++ src/sys/arch/xen/x86/xen_pmap.c	Thu Mar  7 13:26:24 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: xen_pmap.c,v 1.28 2019/02/02 12:32:55 cherry Exp $	*/
+/*	$NetBSD: xen_pmap.c,v 1.29 2019/03/07 13:26:24 maxv Exp $	*/
 
 /*
  * Copyright (c) 2007 Manuel Bouyer.
@@ -101,7 +101,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: xen_pmap.c,v 1.28 2019/02/02 12:32:55 cherry Exp $");
+__KERNEL_RCSID(0, "$NetBSD: xen_pmap.c,v 1.29 2019/03/07 13:26:24 maxv Exp $");
 
 #include "opt_user_ldt.h"
 #include "opt_lockdebug.h"
@@ -175,7 +175,7 @@ pmap_kenter_ma(vaddr_t va, paddr_t ma, v
 	else
 		pte = kvtopte(va);
 
-	npte = ma | ((prot & VM_PROT_WRITE) ? PG_RW : PG_RO) | PG_V;
+	npte = ma | ((prot & VM_PROT_WRITE) ? PG_RW : 0) | PG_V;
 	if (flags & PMAP_NOCACHE)
 		npte |= PG_N;
 

Reply via email to