Module Name:    src
Committed By:   maxv
Date:           Fri Jul  1 11:10:48 UTC 2016

Modified Files:
        src/sys/arch/x86/include: pmap.h
        src/sys/arch/x86/x86: pmap.c

Log Message:
Define pmap_pg_nx globally. Will be used soon.


To generate a diff of this commit:
cvs rdiff -u -r1.57 -r1.58 src/sys/arch/x86/include/pmap.h
cvs rdiff -u -r1.197 -r1.198 src/sys/arch/x86/x86/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/x86/include/pmap.h
diff -u src/sys/arch/x86/include/pmap.h:1.57 src/sys/arch/x86/include/pmap.h:1.58
--- src/sys/arch/x86/include/pmap.h:1.57	Wed Nov 11 08:20:22 2015
+++ src/sys/arch/x86/include/pmap.h	Fri Jul  1 11:10:48 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.h,v 1.57 2015/11/11 08:20:22 skrll Exp $	*/
+/*	$NetBSD: pmap.h,v 1.58 2016/07/01 11:10:48 maxv Exp $	*/
 
 /*
  * Copyright (c) 1997 Charles D. Cranor and Washington University.
@@ -208,7 +208,7 @@ struct pmap {
  */
 extern u_long PDPpaddr;
 
-extern int pmap_pg_g;			/* do we support PG_G? */
+extern pd_entry_t pmap_pg_g;			/* do we support PG_G? */
 extern long nkptp[PTP_LEVELS];
 
 /*

Index: src/sys/arch/x86/x86/pmap.c
diff -u src/sys/arch/x86/x86/pmap.c:1.197 src/sys/arch/x86/x86/pmap.c:1.198
--- src/sys/arch/x86/x86/pmap.c:1.197	Fri Jul  1 10:20:10 2016
+++ src/sys/arch/x86/x86/pmap.c	Fri Jul  1 11:10:48 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.197 2016/07/01 10:20:10 maxv Exp $	*/
+/*	$NetBSD: pmap.c,v 1.198 2016/07/01 11:10:48 maxv Exp $	*/
 
 /*-
  * Copyright (c) 2008, 2010 The NetBSD Foundation, Inc.
@@ -171,7 +171,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.197 2016/07/01 10:20:10 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.198 2016/07/01 11:10:48 maxv Exp $");
 
 #include "opt_user_ldt.h"
 #include "opt_lockdebug.h"
@@ -373,17 +373,21 @@ static struct pmap kernel_pmap_store;	/*
 struct pmap *const kernel_pmap_ptr = &kernel_pmap_store;
 
 /*
+ * pmap_pg_nx: if our processor supports PG_NX in the PTE then we
+ * set pmap_pg_nx to PG_NX (otherwise it is zero).
+ */
+pd_entry_t pmap_pg_nx __read_mostly = 0;
+
+/*
  * pmap_pg_g: if our processor supports PG_G in the PTE then we
  * set pmap_pg_g to PG_G (otherwise it is zero).
  */
-
-int pmap_pg_g __read_mostly = 0;
+pd_entry_t pmap_pg_g __read_mostly = 0;
 
 /*
  * pmap_largepages: if our processor supports PG_PS and we are
  * using it, this is set to true.
  */
-
 int pmap_largepages __read_mostly;
 
 /*
@@ -1199,7 +1203,7 @@ pmap_bootstrap(vaddr_t kva_start)
 	vaddr_t tmpva;
 #endif
 
-	pt_entry_t pg_nx = (cpu_feature[2] & CPUID_NOX ? PG_NX : 0);
+	pmap_pg_nx = (cpu_feature[2] & CPUID_NOX ? PG_NX : 0);
 
 	/*
 	 * set up our local static global vars that keep track of the
@@ -1215,13 +1219,13 @@ pmap_bootstrap(vaddr_t kva_start)
 	 * we can jam into a i386 PTE.
 	 */
 
-	protection_codes[VM_PROT_NONE] = pg_nx;			/* --- */
+	protection_codes[VM_PROT_NONE] = pmap_pg_nx;		/* --- */
 	protection_codes[VM_PROT_EXECUTE] = PG_RO | PG_X;	/* --x */
-	protection_codes[VM_PROT_READ] = PG_RO | pg_nx;		/* -r- */
+	protection_codes[VM_PROT_READ] = PG_RO | pmap_pg_nx;	/* -r- */
 	protection_codes[VM_PROT_READ|VM_PROT_EXECUTE] = PG_RO | PG_X;/* -rx */
-	protection_codes[VM_PROT_WRITE] = PG_RW | pg_nx;	/* w-- */
+	protection_codes[VM_PROT_WRITE] = PG_RW | pmap_pg_nx;	/* w-- */
 	protection_codes[VM_PROT_WRITE|VM_PROT_EXECUTE] = PG_RW | PG_X;/* w-x */
-	protection_codes[VM_PROT_WRITE|VM_PROT_READ] = PG_RW | pg_nx;
+	protection_codes[VM_PROT_WRITE|VM_PROT_READ] = PG_RW | pmap_pg_nx;
 								/* wr- */
 	protection_codes[VM_PROT_ALL] = PG_RW | PG_X;		/* wrx */
 
@@ -1338,7 +1342,7 @@ pmap_bootstrap(vaddr_t kva_start)
 		for (/* */; kva + NBPD_L2 <= kva_end; kva += NBPD_L2,
 		    pa += NBPD_L2) {
 			pde = &L2_BASE[pl2_i(kva)];
-			*pde = pa | pmap_pg_g | PG_PS | pg_nx | PG_KR | PG_V;
+			*pde = pa | pmap_pg_g | PG_PS | pmap_pg_nx | PG_KR | PG_V;
 			tlbflushg();
 		}
 
@@ -1349,7 +1353,7 @@ pmap_bootstrap(vaddr_t kva_start)
 		for (/* */; kva + NBPD_L2 <= kva_end; kva += NBPD_L2,
 		    pa += NBPD_L2) {
 			pde = &L2_BASE[pl2_i(kva)];
-			*pde = pa | pmap_pg_g | PG_PS | pg_nx | PG_KW | PG_V;
+			*pde = pa | pmap_pg_g | PG_PS | pmap_pg_nx | PG_KW | PG_V;
 			tlbflushg();
 		}
 	}
@@ -1377,18 +1381,18 @@ pmap_bootstrap(vaddr_t kva_start)
 	ndmpdp = (lastpa + NBPD_L3 - 1) >> L3_SHIFT;
 	dmpdp = avail_start;	avail_start += PAGE_SIZE;
 
-	*pte = dmpdp | PG_V | PG_RW | pg_nx;
+	*pte = dmpdp | PG_V | PG_RW | pmap_pg_nx;
 	pmap_update_pg(tmpva);
 	memset((void *)tmpva, 0, PAGE_SIZE);
 
 	if (cpu_feature[2] & CPUID_P1GB) {
 		for (i = 0; i < ndmpdp; i++) {
 			pdp = (paddr_t)&(((pd_entry_t *)dmpdp)[i]);
-			*pte = (pdp & PG_FRAME) | PG_V | PG_RW | pg_nx;
+			*pte = (pdp & PG_FRAME) | PG_V | PG_RW | pmap_pg_nx;
 			pmap_update_pg(tmpva);
 
 			pde = (pd_entry_t *)(tmpva + (pdp & ~PG_FRAME));
-			*pde = ((paddr_t)i << L3_SHIFT) | PG_RW | pg_nx |
+			*pde = ((paddr_t)i << L3_SHIFT) | PG_RW | pmap_pg_nx |
 			    PG_V | PG_U | PG_PS | PG_G;
 		}
 	} else {
@@ -1396,32 +1400,32 @@ pmap_bootstrap(vaddr_t kva_start)
 
 		for (i = 0; i < ndmpdp; i++) {
 			pdp = dmpd + i * PAGE_SIZE;
-			*pte = (pdp & PG_FRAME) | PG_V | PG_RW | pg_nx;
+			*pte = (pdp & PG_FRAME) | PG_V | PG_RW | pmap_pg_nx;
 			pmap_update_pg(tmpva);
 
 			memset((void *)tmpva, 0, PAGE_SIZE);
 		}
 		for (i = 0; i < NPDPG * ndmpdp; i++) {
 			pdp = (paddr_t)&(((pd_entry_t *)dmpd)[i]);
-			*pte = (pdp & PG_FRAME) | PG_V | PG_RW | pg_nx;
+			*pte = (pdp & PG_FRAME) | PG_V | PG_RW | pmap_pg_nx;
 			pmap_update_pg(tmpva);
 
 			pde = (pd_entry_t *)(tmpva + (pdp & ~PG_FRAME));
-			*pde = ((paddr_t)i << L2_SHIFT) | PG_RW | pg_nx |
+			*pde = ((paddr_t)i << L2_SHIFT) | PG_RW | pmap_pg_nx |
 			    PG_V | PG_U | PG_PS | PG_G;
 		}
 		for (i = 0; i < ndmpdp; i++) {
 			pdp = (paddr_t)&(((pd_entry_t *)dmpdp)[i]);
-			*pte = (pdp & PG_FRAME) | PG_V | PG_RW | pg_nx;
+			*pte = (pdp & PG_FRAME) | PG_V | PG_RW | pmap_pg_nx;
 			pmap_update_pg((vaddr_t)tmpva);
 
 			pde = (pd_entry_t *)(tmpva + (pdp & ~PG_FRAME));
-			*pde = (dmpd + (i << PAGE_SHIFT)) | PG_RW | pg_nx |
+			*pde = (dmpd + (i << PAGE_SHIFT)) | PG_RW | pmap_pg_nx |
 			    PG_V | PG_U;
 		}
 	}
 
-	kpm->pm_pdir[PDIR_SLOT_DIRECT] = dmpdp | PG_KW | pg_nx | PG_V | PG_U;
+	kpm->pm_pdir[PDIR_SLOT_DIRECT] = dmpdp | PG_KW | pmap_pg_nx | PG_V | PG_U;
 
 	tlbflush();
 

Reply via email to