Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/arch Start replacing the x86 PTE bits.
details: https://anonhg.NetBSD.org/src/rev/94b6352d8063
branches: trunk
changeset: 449512:94b6352d8063
user: maxv <maxv%NetBSD.org@localhost>
date: Sat Mar 09 08:42:25 2019 +0000
description:
Start replacing the x86 PTE bits.
diffstat:
sys/arch/amd64/amd64/db_disasm.c | 6 +-
sys/arch/amd64/amd64/gdt.c | 6 +-
sys/arch/amd64/amd64/locore.S | 36 ++--
sys/arch/amd64/amd64/machdep.c | 8 +-
sys/arch/amd64/include/asan.h | 10 +-
sys/arch/amd64/include/pte.h | 47 +++---
sys/arch/amd64/stand/prekern/locore.S | 30 ++--
sys/arch/amd64/stand/prekern/mm.c | 22 +-
sys/arch/i386/i386/db_disasm.c | 6 +-
sys/arch/i386/i386/gdt.c | 8 +-
sys/arch/i386/i386/genassym.cf | 4 +-
sys/arch/i386/i386/locore.S | 32 ++--
sys/arch/i386/i386/machdep.c | 8 +-
sys/arch/i386/include/pte.h | 44 ++---
sys/arch/usermode/usermode/db_memrw.c | 12 +-
sys/arch/x86/acpi/acpi_machdep.c | 8 +-
sys/arch/x86/include/pmap.h | 4 +-
sys/arch/x86/include/pmap_pv.h | 8 +-
sys/arch/x86/include/specialreg.h | 4 +-
sys/arch/x86/x86/cpu.c | 8 +-
sys/arch/x86/x86/db_memrw.c | 10 +-
sys/arch/x86/x86/kgdb_machdep.c | 6 +-
sys/arch/x86/x86/lapic.c | 6 +-
sys/arch/x86/x86/pmap.c | 230 +++++++++++++++++-----------------
sys/arch/x86/x86/svs.c | 8 +-
sys/arch/xen/x86/cpu.c | 14 +-
sys/arch/xen/x86/x86_xpmap.c | 36 ++--
sys/arch/xen/x86/xen_pmap.c | 12 +-
sys/arch/xen/xen/if_xennet_xenbus.c | 8 +-
sys/arch/xen/xen/xen_machdep.c | 6 +-
sys/arch/xen/xen/xennetback_xenbus.c | 10 +-
31 files changed, 323 insertions(+), 334 deletions(-)
diffs (truncated from 2200 to 300 lines):
diff -r 348299394787 -r 94b6352d8063 sys/arch/amd64/amd64/db_disasm.c
--- a/sys/arch/amd64/amd64/db_disasm.c Sat Mar 09 07:53:12 2019 +0000
+++ b/sys/arch/amd64/amd64/db_disasm.c Sat Mar 09 08:42:25 2019 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: db_disasm.c,v 1.26 2019/02/03 03:19:26 mrg Exp $ */
+/* $NetBSD: db_disasm.c,v 1.27 2019/03/09 08:42:25 maxv Exp $ */
/*
* Mach Operating System
@@ -33,7 +33,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: db_disasm.c,v 1.26 2019/02/03 03:19:26 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: db_disasm.c,v 1.27 2019/03/09 08:42:25 maxv Exp $");
#ifndef _KERNEL
#include <sys/types.h>
@@ -1212,7 +1212,7 @@
else
pde = vtopte((vaddr_t)pte);
- if ((*pde & PG_V) == 0 || (*pte & PG_V) == 0) {
+ if ((*pde & PTE_P) == 0 || (*pte & PTE_P) == 0) {
db_printf("invalid address\n");
return (loc);
}
diff -r 348299394787 -r 94b6352d8063 sys/arch/amd64/amd64/gdt.c
--- a/sys/arch/amd64/amd64/gdt.c Sat Mar 09 07:53:12 2019 +0000
+++ b/sys/arch/amd64/amd64/gdt.c Sat Mar 09 08:42:25 2019 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: gdt.c,v 1.46 2019/02/11 14:59:32 cherry Exp $ */
+/* $NetBSD: gdt.c,v 1.47 2019/03/09 08:42:25 maxv Exp $ */
/*
* Copyright (c) 1996, 1997, 2009 The NetBSD Foundation, Inc.
@@ -37,7 +37,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: gdt.c,v 1.46 2019/02/11 14:59:32 cherry Exp $");
+__KERNEL_RCSID(0, "$NetBSD: gdt.c,v 1.47 2019/03/09 08:42:25 maxv Exp $");
#include "opt_multiprocessor.h"
#include "opt_xen.h"
@@ -330,7 +330,7 @@
va = desc->rd_base + (i << PAGE_SHIFT);
frames[i] = ((paddr_t)xpmap_ptetomach((pt_entry_t *)va)) >>
PAGE_SHIFT;
- pmap_pte_clearbits(kvtopte(va), PG_RW);
+ pmap_pte_clearbits(kvtopte(va), PTE_W);
}
if (HYPERVISOR_set_gdt(frames, (desc->rd_limit + 1) >> 3))
diff -r 348299394787 -r 94b6352d8063 sys/arch/amd64/amd64/locore.S
--- a/sys/arch/amd64/amd64/locore.S Sat Mar 09 07:53:12 2019 +0000
+++ b/sys/arch/amd64/amd64/locore.S Sat Mar 09 08:42:25 2019 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: locore.S,v 1.179 2019/03/07 13:26:24 maxv Exp $ */
+/* $NetBSD: locore.S,v 1.180 2019/03/09 08:42:25 maxv Exp $ */
/*
* Copyright-o-rama!
@@ -187,8 +187,8 @@
#define _RELOC(x) ((x) - KERNBASE)
#define RELOC(x) _RELOC(_C_LABEL(x))
-/* 32bit version of PG_NX */
-#define PG_NX32 0x80000000
+/* 32bit version of PTE_NX */
+#define PTE_NX32 0x80000000
#if L2_SLOT_KERNBASE > 0
#define TABLE_L2_ENTRIES (2 * (NKL2_KIMG_ENTRIES + 1))
@@ -307,7 +307,7 @@
ELFNOTE(Xen, XEN_ELFNOTE_HV_START_LOW, .quad, HYPERVISOR_VIRT_START)
ELFNOTE(Xen, XEN_ELFNOTE_FEATURES, .asciz, "")
ELFNOTE(Xen, XEN_ELFNOTE_PAE_MODE, .asciz, "yes")
- ELFNOTE(Xen, XEN_ELFNOTE_L1_MFN_VALID, .long, PG_V, PG_V)\
+ ELFNOTE(Xen, XEN_ELFNOTE_L1_MFN_VALID, .long, PTE_P, PTE_P)\
ELFNOTE(Xen, XEN_ELFNOTE_LOADER, .asciz, "generic")
ELFNOTE(Xen, XEN_ELFNOTE_SUSPEND_CANCEL, .long, 0)
#if NKSYMS > 0 || defined(DDB) || defined(MODULAR)
@@ -586,13 +586,13 @@
movl $RELOC(tmpstk),%esp
/*
- * Retrieve the NX/XD flag. We use the 32bit version of PG_NX.
+ * Retrieve the NX/XD flag. We use the 32bit version of PTE_NX.
*/
movl $0x80000001,%eax
cpuid
andl $CPUID_NOX,%edx
jz .Lno_NOX
- movl $PG_NX32,RELOC(nox_flag)
+ movl $PTE_NX32,RELOC(nox_flag)
.Lno_NOX:
/*
@@ -680,7 +680,7 @@
movl $RELOC(__rodata_start),%ecx
subl %eax,%ecx
shrl $PGSHIFT,%ecx
- orl $(PG_V),%eax
+ orl $(PTE_P),%eax
fillkpt
/* Map the kernel rodata R. */
@@ -688,7 +688,7 @@
movl $RELOC(__data_start),%ecx
subl %eax,%ecx
shrl $PGSHIFT,%ecx
- orl $(PG_V),%eax
+ orl $(PTE_P),%eax
fillkpt_nox
/* Map the kernel data+bss RW. */
@@ -696,7 +696,7 @@
movl $RELOC(__kernel_end),%ecx
subl %eax,%ecx
shrl $PGSHIFT,%ecx
- orl $(PG_V|PG_KW),%eax
+ orl $(PTE_P|PTE_W),%eax
fillkpt_nox
/* Map [SYMS]+[PRELOADED MODULES] RW. */
@@ -704,21 +704,21 @@
movl %esi,%ecx /* start of BOOTSTRAP TABLES */
subl %eax,%ecx
shrl $PGSHIFT,%ecx
- orl $(PG_V|PG_KW),%eax
+ orl $(PTE_P|PTE_W),%eax
fillkpt_nox
/* Map the BOOTSTRAP TABLES RW. */
movl %esi,%eax /* start of BOOTSTRAP TABLES */
movl $TABLESIZE,%ecx /* length of BOOTSTRAP TABLES */
shrl $PGSHIFT,%ecx
- orl $(PG_V|PG_KW),%eax
+ orl $(PTE_P|PTE_W),%eax
fillkpt_nox
/* We are on (4). Map ISA I/O MEM RW. */
movl $IOM_BEGIN,%eax
movl $IOM_SIZE,%ecx /* size of ISA I/O MEM */
shrl $PGSHIFT,%ecx
- orl $(PG_V|PG_KW/*|PG_N*/),%eax
+ orl $(PTE_P|PTE_W/*|PTE_PCD*/),%eax
fillkpt_nox
/*
@@ -726,7 +726,7 @@
*/
leal (PROC0_PTP2_OFF)(%esi),%ebx
leal (PROC0_PTP1_OFF)(%esi),%eax
- orl $(PG_V|PG_KW),%eax
+ orl $(PTE_P|PTE_W),%eax
movl $(NKL2_KIMG_ENTRIES+1),%ecx
fillkpt
@@ -734,7 +734,7 @@
/* If needed, set up level 2 entries for actual kernel mapping */
leal (PROC0_PTP2_OFF + L2_SLOT_KERNBASE * PDE_SIZE)(%esi),%ebx
leal (PROC0_PTP1_OFF)(%esi),%eax
- orl $(PG_V|PG_KW),%eax
+ orl $(PTE_P|PTE_W),%eax
movl $(NKL2_KIMG_ENTRIES+1),%ecx
fillkpt
#endif
@@ -744,7 +744,7 @@
*/
leal (PROC0_PTP3_OFF)(%esi),%ebx
leal (PROC0_PTP2_OFF)(%esi),%eax
- orl $(PG_V|PG_KW),%eax
+ orl $(PTE_P|PTE_W),%eax
movl $NKL3_KIMG_ENTRIES,%ecx
fillkpt
@@ -752,7 +752,7 @@
/* If needed, set up level 3 entries for actual kernel mapping */
leal (PROC0_PTP3_OFF + L3_SLOT_KERNBASE * PDE_SIZE)(%esi),%ebx
leal (PROC0_PTP2_OFF)(%esi),%eax
- orl $(PG_V|PG_KW),%eax
+ orl $(PTE_P|PTE_W),%eax
movl $NKL3_KIMG_ENTRIES,%ecx
fillkpt
#endif
@@ -762,14 +762,14 @@
*/
leal (PROC0_PML4_OFF)(%esi),%ebx
leal (PROC0_PTP3_OFF)(%esi),%eax
- orl $(PG_V|PG_KW),%eax
+ orl $(PTE_P|PTE_W),%eax
movl $NKL4_KIMG_ENTRIES,%ecx
fillkpt
/* Set up L4 entries for actual kernel mapping */
leal (PROC0_PML4_OFF + L4_SLOT_KERNBASE * PDE_SIZE)(%esi),%ebx
leal (PROC0_PTP3_OFF)(%esi),%eax
- orl $(PG_V|PG_KW),%eax
+ orl $(PTE_P|PTE_W),%eax
movl $NKL4_KIMG_ENTRIES,%ecx
fillkpt
diff -r 348299394787 -r 94b6352d8063 sys/arch/amd64/amd64/machdep.c
--- a/sys/arch/amd64/amd64/machdep.c Sat Mar 09 07:53:12 2019 +0000
+++ b/sys/arch/amd64/amd64/machdep.c Sat Mar 09 08:42:25 2019 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: machdep.c,v 1.326 2019/02/14 08:18:25 cherry Exp $ */
+/* $NetBSD: machdep.c,v 1.327 2019/03/09 08:42:25 maxv Exp $ */
/*
* Copyright (c) 1996, 1997, 1998, 2000, 2006, 2007, 2008, 2011
@@ -110,7 +110,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.326 2019/02/14 08:18:25 cherry Exp $");
+__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.327 2019/03/09 08:42:25 maxv Exp $");
#include "opt_modular.h"
#include "opt_user_ldt.h"
@@ -1589,8 +1589,8 @@
#ifndef XENPV
extern uint32_t nox_flag;
pd_entry_t *pdir = (pd_entry_t *)bootspace.pdir;
- pdir[L4_SLOT_PTE] = PDPpaddr | PG_KW | ((uint64_t)nox_flag << 32) |
- PG_V;
+ pdir[L4_SLOT_PTE] = PDPpaddr | PTE_W | ((uint64_t)nox_flag << 32) |
+ PTE_P;
#endif
extern pd_entry_t *normal_pdes[3];
diff -r 348299394787 -r 94b6352d8063 sys/arch/amd64/include/asan.h
--- a/sys/arch/amd64/include/asan.h Sat Mar 09 07:53:12 2019 +0000
+++ b/sys/arch/amd64/include/asan.h Sat Mar 09 08:42:25 2019 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: asan.h,v 1.2 2019/02/04 15:07:34 maxv Exp $ */
+/* $NetBSD: asan.h,v 1.3 2019/03/09 08:42:25 maxv Exp $ */
/*
* Copyright (c) 2018 The NetBSD Foundation, Inc.
@@ -102,19 +102,19 @@
if (!pmap_valid_entry(L4_BASE[pl4_i(va)])) {
pa = __md_palloc();
- L4_BASE[pl4_i(va)] = pa | PG_KW | pmap_pg_nx | PG_V;
+ L4_BASE[pl4_i(va)] = pa | PTE_W | pmap_pg_nx | PTE_P;
}
if (!pmap_valid_entry(L3_BASE[pl3_i(va)])) {
pa = __md_palloc();
- L3_BASE[pl3_i(va)] = pa | PG_KW | pmap_pg_nx | PG_V;
+ L3_BASE[pl3_i(va)] = pa | PTE_W | pmap_pg_nx | PTE_P;
}
if (!pmap_valid_entry(L2_BASE[pl2_i(va)])) {
pa = __md_palloc();
- L2_BASE[pl2_i(va)] = pa | PG_KW | pmap_pg_nx | PG_V;
+ L2_BASE[pl2_i(va)] = pa | PTE_W | pmap_pg_nx | PTE_P;
}
if (!pmap_valid_entry(L1_BASE[pl1_i(va)])) {
pa = __md_palloc();
- L1_BASE[pl1_i(va)] = pa | PG_KW | pmap_pg_g | pmap_pg_nx | PG_V;
+ L1_BASE[pl1_i(va)] = pa | PTE_W | pmap_pg_g | pmap_pg_nx | PTE_P;
}
}
diff -r 348299394787 -r 94b6352d8063 sys/arch/amd64/include/pte.h
--- a/sys/arch/amd64/include/pte.h Sat Mar 09 07:53:12 2019 +0000
+++ b/sys/arch/amd64/include/pte.h Sat Mar 09 08:42:25 2019 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: pte.h,v 1.11 2019/03/07 14:40:35 maxv Exp $ */
+/* $NetBSD: pte.h,v 1.12 2019/03/09 08:42:25 maxv Exp $ */
/*
* Copyright (c) 2001 Wasabi Systems, Inc.
@@ -120,30 +120,27 @@
#define PTE_FRAME PTE_4KFRAME
#define PTE_LGFRAME PTE_2MFRAME
-/*
- * PDE/PTE bits. These are no different from their i386 counterparts.
- * XXX To be deleted.
- */
-#define PG_V 0x0000000000000001 /* valid */
-#define PG_RW 0x0000000000000002 /* read-write */
-#define PG_u 0x0000000000000004 /* user accessible */
-#define PG_WT 0x0000000000000008 /* write-through */
-#define PG_N 0x0000000000000010 /* non-cacheable */
-#define PG_U 0x0000000000000020 /* used */
-#define PG_M 0x0000000000000040 /* modified */
-#define PG_PAT 0x0000000000000080 /* PAT (on pte) */
-#define PG_PS 0x0000000000000080 /* 2MB page size (on pde) */
-#define PG_G 0x0000000000000100 /* not flushed */
-#define PG_AVAIL1 0x0000000000000200
-#define PG_AVAIL2 0x0000000000000400
-#define PG_AVAIL3 0x0000000000000800
-#define PG_LGPAT 0x0000000000001000 /* PAT on large pages */
-#define PG_FRAME 0x000ffffffffff000
-#define PG_NX 0x8000000000000000
-#define PG_2MFRAME 0x000fffffffe00000 /* large (2M) page frame mask */
Home |
Main Index |
Thread Index |
Old Index