Changeset View
Changeset View
Standalone View
Standalone View
sys/amd64/include/pmap.h
Show First 20 Lines • Show All 196 Lines • ▼ Show 20 Lines | |||||
/* | /* | ||||
* Number of PML4 slots for the KASAN shadow map. It requires 1 byte of memory | * Number of PML4 slots for the KASAN shadow map. It requires 1 byte of memory | ||||
* for every 8 bytes of the kernel address space. | * for every 8 bytes of the kernel address space. | ||||
*/ | */ | ||||
#define NKASANPML4E ((NKPML4E + 7) / 8) | #define NKASANPML4E ((NKPML4E + 7) / 8) | ||||
/* | /* | ||||
* Number of PML4 slots for the KMSAN shadow and origin maps. These are | |||||
* one-to-one with the kernel map. | |||||
*/ | |||||
#define NKMSANSHADPML4E NKPML4E | |||||
#define NKMSANORIGPML4E NKPML4E | |||||
/* | |||||
* We use the same numbering of the page table pages for 5-level and | * We use the same numbering of the page table pages for 5-level and | ||||
* 4-level paging structures. | * 4-level paging structures. | ||||
*/ | */ | ||||
#define NUPML5E (NPML5EPG / 2) /* number of userland PML5 | #define NUPML5E (NPML5EPG / 2) /* number of userland PML5 | ||||
pages */ | pages */ | ||||
#define NUPML4E (NUPML5E * NPML4EPG) /* number of userland PML4 | #define NUPML4E (NUPML5E * NPML4EPG) /* number of userland PML4 | ||||
pages */ | pages */ | ||||
#define NUPDPE (NUPML4E * NPDPEPG) /* number of userland PDP | #define NUPDPE (NUPML4E * NPDPEPG) /* number of userland PDP | ||||
Show All 33 Lines | |||||
#define KPML4BASE (NPML4EPG-NKPML4E) /* KVM at highest addresses */ | #define KPML4BASE (NPML4EPG-NKPML4E) /* KVM at highest addresses */ | ||||
#define DMPML4I rounddown(KPML4BASE-NDMPML4E, NDMPML4E) /* Below KVM */ | #define DMPML4I rounddown(KPML4BASE-NDMPML4E, NDMPML4E) /* Below KVM */ | ||||
#define KPML4I (NPML4EPG-1) | #define KPML4I (NPML4EPG-1) | ||||
#define KPDPI (NPDPEPG-2) /* kernbase at -2GB */ | #define KPDPI (NPDPEPG-2) /* kernbase at -2GB */ | ||||
#define KASANPML4I (DMPML4I - NKASANPML4E) /* Below the direct map */ | #define KASANPML4I (DMPML4I - NKASANPML4E) /* Below the direct map */ | ||||
#define KMSANSHADPML4I (KPML4BASE - NKMSANSHADPML4E) | |||||
#define KMSANORIGPML4I (DMPML4I - NKMSANORIGPML4E) | |||||
/* Large map: index of the first and max last pml4 entry */ | /* Large map: index of the first and max last pml4 entry */ | ||||
#define LMSPML4I (PML4PML4I + 1) | #define LMSPML4I (PML4PML4I + 1) | ||||
#define LMEPML4I (KASANPML4I - 1) | #define LMEPML4I (KASANPML4I - 1) | ||||
/* | /* | ||||
* XXX doesn't really belong here I guess... | * XXX doesn't really belong here I guess... | ||||
*/ | */ | ||||
#define ISA_HOLE_START 0xa0000 | #define ISA_HOLE_START 0xa0000 | ||||
▲ Show 20 Lines • Show All 246 Lines • ▼ Show 20 Lines | int pmap_pkru_set(pmap_t pmap, vm_offset_t sva, vm_offset_t eva, | ||||
u_int keyidx, int flags); | u_int keyidx, int flags); | ||||
void pmap_thread_init_invl_gen(struct thread *td); | void pmap_thread_init_invl_gen(struct thread *td); | ||||
int pmap_vmspace_copy(pmap_t dst_pmap, pmap_t src_pmap); | int pmap_vmspace_copy(pmap_t dst_pmap, pmap_t src_pmap); | ||||
void pmap_page_array_startup(long count); | void pmap_page_array_startup(long count); | ||||
vm_page_t pmap_page_alloc_below_4g(bool zeroed); | vm_page_t pmap_page_alloc_below_4g(bool zeroed); | ||||
#ifdef KASAN | #ifdef KASAN | ||||
void pmap_kasan_enter(vm_offset_t); | void pmap_kasan_enter(vm_offset_t); | ||||
#endif | |||||
#ifdef KMSAN | |||||
void pmap_kmsan_enter(vm_offset_t); | |||||
#endif | #endif | ||||
#endif /* _KERNEL */ | #endif /* _KERNEL */ | ||||
/* Return various clipped indexes for a given VA */ | /* Return various clipped indexes for a given VA */ | ||||
static __inline vm_pindex_t | static __inline vm_pindex_t | ||||
pmap_pte_index(vm_offset_t va) | pmap_pte_index(vm_offset_t va) | ||||
{ | { | ||||
Show All 35 Lines |