Changeset View
Changeset View
Standalone View
Standalone View
sys/riscv/include/pte.h
Show All 38 Lines | |||||
#define _MACHINE_PTE_H_ | #define _MACHINE_PTE_H_ | ||||
#ifndef LOCORE | #ifndef LOCORE | ||||
typedef uint64_t pd_entry_t; /* page directory entry */ | typedef uint64_t pd_entry_t; /* page directory entry */ | ||||
typedef uint64_t pt_entry_t; /* page table entry */ | typedef uint64_t pt_entry_t; /* page table entry */ | ||||
typedef uint64_t pn_t; /* page number */ | typedef uint64_t pn_t; /* page number */ | ||||
#endif | #endif | ||||
/* Level 0 table, 512GiB per entry */ | /* Level 0 table, 512GiB per entry, SV48 only */ | ||||
#define L0_SHIFT 39 | #define L0_SHIFT 39 | ||||
#define L0_SIZE (1UL << L0_SHIFT) | |||||
#define L0_OFFSET (L0_SIZE - 1) | |||||
/* Level 1 table, 1GiB per entry */ | /* Level 1 table, 1GiB per entry */ | ||||
#define L1_SHIFT 30 | #define L1_SHIFT 30 | ||||
#define L1_SIZE (1 << L1_SHIFT) | #define L1_SIZE (1UL << L1_SHIFT) | ||||
#define L1_OFFSET (L1_SIZE - 1) | #define L1_OFFSET (L1_SIZE - 1) | ||||
/* Level 2 table, 2MiB per entry */ | /* Level 2 table, 2MiB per entry */ | ||||
#define L2_SHIFT 21 | #define L2_SHIFT 21 | ||||
#define L2_SIZE (1 << L2_SHIFT) | #define L2_SIZE (1UL << L2_SHIFT) | ||||
#define L2_OFFSET (L2_SIZE - 1) | #define L2_OFFSET (L2_SIZE - 1) | ||||
/* Level 3 table, 4KiB per entry */ | /* Level 3 table, 4KiB per entry */ | ||||
#define L3_SHIFT 12 | #define L3_SHIFT 12 | ||||
#define L3_SIZE (1 << L3_SHIFT) | #define L3_SIZE (1UL << L3_SHIFT) | ||||
#define L3_OFFSET (L3_SIZE - 1) | #define L3_OFFSET (L3_SIZE - 1) | ||||
#define Ln_ENTRIES_SHIFT 9 | #define Ln_ENTRIES_SHIFT 9 | ||||
#define Ln_ENTRIES (1 << Ln_ENTRIES_SHIFT) | #define Ln_ENTRIES (1 << Ln_ENTRIES_SHIFT) | ||||
#define Ln_ADDR_MASK (Ln_ENTRIES - 1) | #define Ln_ADDR_MASK (Ln_ENTRIES - 1) | ||||
/* Bits 9:8 are reserved for software */ | /* Bits 9:8 are reserved for software */ | ||||
#define PTE_SW_MANAGED (1 << 9) | #define PTE_SW_MANAGED (1 << 9) | ||||
Show All 27 Lines |