summaryrefslogtreecommitdiff
path: root/sys/arch/alpha/include
diff options
context:
space:
mode:
authorthorpej <thorpej@NetBSD.org>2021-05-30 13:34:21 +0000
committerthorpej <thorpej@NetBSD.org>2021-05-30 13:34:21 +0000
commit3c755ab3ef5b5a3564b100bbfc0bcdee101e7e2a (patch)
treeabd8358c69a778d9e2338423f9b14ef57d7bc178 /sys/arch/alpha/include
parent6eb5992ab9aba9cc34a9b1d7141830d47aa8e1a4 (diff)
Keep track of a pmap's PV entries with a list hanging off the pmap.
Diffstat (limited to 'sys/arch/alpha/include')
-rw-r--r--sys/arch/alpha/include/pmap.h7
1 files changed, 4 insertions, 3 deletions
diff --git a/sys/arch/alpha/include/pmap.h b/sys/arch/alpha/include/pmap.h
index 0fd316a2777..0e33d17af4d 100644
--- a/sys/arch/alpha/include/pmap.h
+++ b/sys/arch/alpha/include/pmap.h
@@ -1,4 +1,4 @@
-/* $NetBSD: pmap.h,v 1.93 2021/05/30 06:41:19 thorpej Exp $ */
+/* $NetBSD: pmap.h,v 1.94 2021/05/30 13:34:21 thorpej Exp $ */
/*-
* Copyright (c) 1998, 1999, 2000, 2001, 2007 The NetBSD Foundation, Inc.
@@ -151,7 +151,7 @@ struct pmap { /* pmaps are aligned to COHERENCY_UNIT boundaries */
unsigned int pm_count; /* [24] reference count */
unsigned int __pm_spare0; /* [28] spare field */
struct pmap_pagelist pm_ptpages; /* [32] list of PT pages */
- unsigned long __pm_spare1; /* [40] spare field */
+ LIST_HEAD(, pv_entry) pm_pvents; /* [40] list of PV entries */
TAILQ_ENTRY(pmap) pm_list; /* [48] list of all pmaps */
/* -- COHERENCY_UNIT boundary -- */
struct pmap_percpu pm_percpu[]; /* [64] per-CPU data */
@@ -171,7 +171,8 @@ struct pmap { /* pmaps are aligned to COHERENCY_UNIT boundaries */
* mappings of that page. An entry is a pv_entry_t, the list is pv_table.
*/
typedef struct pv_entry {
- struct pv_entry *pv_next; /* next pv_entry on list */
+ struct pv_entry *pv_next; /* next pv_entry on page list */
+ LIST_ENTRY(pv_entry) pv_link; /* link on owning pmap's list */
struct pmap *pv_pmap; /* pmap where mapping lies */
vaddr_t pv_va; /* virtual address for mapping */
pt_entry_t *pv_pte; /* PTE that maps the VA */