pmap.h (82725ba9bf1fd59746a4006a06f24d4d61d142f2) pmap.h (bd50262f705c4fed70ea94d16a0f19b5f5497cf2)
1/*-
2 * SPDX-License-Identifier: BSD-3-Clause
3 *
4 * Copyright (c) 2003 Peter Wemm.
5 * Copyright (c) 1991 Regents of the University of California.
6 * All rights reserved.
7 *
8 * This code is derived from software contributed to Berkeley by

--- 301 unchanged lines hidden (view full) ---

310
311/*
312 * The kernel virtual address (KVA) of the level 4 page table page is always
313 * within the direct map (DMAP) region.
314 */
315struct pmap {
316 struct mtx pm_mtx;
317 pml4_entry_t *pm_pml4; /* KVA of level 4 page table */
1/*-
2 * SPDX-License-Identifier: BSD-3-Clause
3 *
4 * Copyright (c) 2003 Peter Wemm.
5 * Copyright (c) 1991 Regents of the University of California.
6 * All rights reserved.
7 *
8 * This code is derived from software contributed to Berkeley by

--- 301 unchanged lines hidden (view full) ---

310
311/*
312 * The kernel virtual address (KVA) of the level 4 page table page is always
313 * within the direct map (DMAP) region.
314 */
315struct pmap {
316 struct mtx pm_mtx;
317 pml4_entry_t *pm_pml4; /* KVA of level 4 page table */
318 pml4_entry_t *pm_pml4u; /* KVA of user l4 page table */
318 uint64_t pm_cr3;
319 uint64_t pm_cr3;
320 uint64_t pm_ucr3;
319 TAILQ_HEAD(,pv_chunk) pm_pvchunk; /* list of mappings in pmap */
320 cpuset_t pm_active; /* active on cpus */
321 enum pmap_type pm_type; /* regular or nested tables */
322 struct pmap_statistics pm_stats; /* pmap statistics */
323 struct vm_radix pm_root; /* spare page table pages */
324 long pm_eptgen; /* EPT pmap generation id */
325 int pm_flags;
326 struct pmap_pcids pm_pcids[MAXCPU];

--- 97 unchanged lines hidden (view full) ---

424void pmap_invalidate_all(pmap_t);
425void pmap_invalidate_cache(void);
426void pmap_invalidate_cache_pages(vm_page_t *pages, int count);
427void pmap_invalidate_cache_range(vm_offset_t sva, vm_offset_t eva,
428 boolean_t force);
429void pmap_get_mapping(pmap_t pmap, vm_offset_t va, uint64_t *ptr, int *num);
430boolean_t pmap_map_io_transient(vm_page_t *, vm_offset_t *, int, boolean_t);
431void pmap_unmap_io_transient(vm_page_t *, vm_offset_t *, int, boolean_t);
321 TAILQ_HEAD(,pv_chunk) pm_pvchunk; /* list of mappings in pmap */
322 cpuset_t pm_active; /* active on cpus */
323 enum pmap_type pm_type; /* regular or nested tables */
324 struct pmap_statistics pm_stats; /* pmap statistics */
325 struct vm_radix pm_root; /* spare page table pages */
326 long pm_eptgen; /* EPT pmap generation id */
327 int pm_flags;
328 struct pmap_pcids pm_pcids[MAXCPU];

--- 97 unchanged lines hidden (view full) ---

426void pmap_invalidate_all(pmap_t);
427void pmap_invalidate_cache(void);
428void pmap_invalidate_cache_pages(vm_page_t *pages, int count);
429void pmap_invalidate_cache_range(vm_offset_t sva, vm_offset_t eva,
430 boolean_t force);
431void pmap_get_mapping(pmap_t pmap, vm_offset_t va, uint64_t *ptr, int *num);
432boolean_t pmap_map_io_transient(vm_page_t *, vm_offset_t *, int, boolean_t);
433void pmap_unmap_io_transient(vm_page_t *, vm_offset_t *, int, boolean_t);
434void pmap_pti_add_kva(vm_offset_t sva, vm_offset_t eva, bool exec);
435void pmap_pti_remove_kva(vm_offset_t sva, vm_offset_t eva);
432#endif /* _KERNEL */
433
434/* Return various clipped indexes for a given VA */
435static __inline vm_pindex_t
436pmap_pte_index(vm_offset_t va)
437{
438
439 return ((va >> PAGE_SHIFT) & ((1ul << NPTEPGSHIFT) - 1));

--- 26 unchanged lines hidden ---
436#endif /* _KERNEL */
437
438/* Return various clipped indexes for a given VA */
439static __inline vm_pindex_t
440pmap_pte_index(vm_offset_t va)
441{
442
443 return ((va >> PAGE_SHIFT) & ((1ul << NPTEPGSHIFT) - 1));

--- 26 unchanged lines hidden ---