Changeset View
Changeset View
Standalone View
Standalone View
sys/arm64/include/pte.h
Show All 33 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 */ | ||||
#endif | #endif | ||||
/* Block and Page attributes */ | /* Block and Page attributes */ | ||||
#define ATTR_MASK_H UINT64_C(0xfffc000000000000) | #define ATTR_MASK_H UINT64_C(0xfffc000000000000) | ||||
#define ATTR_MASK_L UINT64_C(0x0000000000000fff) | #define ATTR_MASK_L UINT64_C(0x0000000000000fff) | ||||
#define ATTR_MASK (ATTR_MASK_H | ATTR_MASK_L) | #define ATTR_MASK (ATTR_MASK_H | ATTR_MASK_L) | ||||
/* Bits 58:55 are reserved for software */ | /* Bits 58:55 are reserved for software */ | ||||
#define ATTR_SW_UNUSED2 (1UL << 58) | #define ATTR_SW_UNUSED2 (1UL << 58) | ||||
#define ATTR_SW_UNUSED1 (1UL << 57) | #define ATTR_SW_UNUSED1 (1UL << 57) | ||||
#define ATTR_SW_MANAGED (1UL << 56) | #define ATTR_SW_MANAGED (1UL << 56) | ||||
#define ATTR_SW_WIRED (1UL << 55) | #define ATTR_SW_WIRED (1UL << 55) | ||||
#define ATTR_UXN (1UL << 54) | |||||
#define ATTR_PXN (1UL << 53) | #define ATTR_S1_UXN (1UL << 54) | ||||
#define ATTR_XN (ATTR_PXN | ATTR_UXN) | #define ATTR_S1_PXN (1UL << 53) | ||||
#define ATTR_S1_XN (ATTR_S1_PXN | ATTR_S1_UXN) | |||||
#define ATTR_S2_XN(x) ((x) << 53) | |||||
#define ATTR_S2_XN_MASK ATTR_S2_XN(3) | |||||
#define ATTR_S2_XN_NONE 0 /* Allow execution at EL0 & EL1 */ | |||||
#define ATTR_S2_XN_EL1 1 /* Allow execution at EL0 */ | |||||
#define ATTR_S2_XN_ALL 2 /* No execution */ | |||||
#define ATTR_S2_XN_EL0 3 /* Allow execution at EL1 */ | |||||
#define ATTR_CONTIGUOUS (1UL << 52) | #define ATTR_CONTIGUOUS (1UL << 52) | ||||
#define ATTR_DBM (1UL << 51) | #define ATTR_DBM (1UL << 51) | ||||
#define ATTR_nG (1 << 11) | #define ATTR_S1_nG (1 << 11) | ||||
#define ATTR_AF (1 << 10) | #define ATTR_AF (1 << 10) | ||||
#define ATTR_SH(x) ((x) << 8) | #define ATTR_SH(x) ((x) << 8) | ||||
#define ATTR_SH_MASK ATTR_SH(3) | #define ATTR_SH_MASK ATTR_SH(3) | ||||
#define ATTR_SH_NS 0 /* Non-shareable */ | #define ATTR_SH_NS 0 /* Non-shareable */ | ||||
#define ATTR_SH_OS 2 /* Outer-shareable */ | #define ATTR_SH_OS 2 /* Outer-shareable */ | ||||
#define ATTR_SH_IS 3 /* Inner-shareable */ | #define ATTR_SH_IS 3 /* Inner-shareable */ | ||||
#define ATTR_AP_RW_BIT (1 << 7) | |||||
#define ATTR_AP(x) ((x) << 6) | #define ATTR_S1_AP_RW_BIT (1 << 7) | ||||
#define ATTR_AP_MASK ATTR_AP(3) | #define ATTR_S1_AP(x) ((x) << 6) | ||||
#define ATTR_AP_RW (0 << 1) | #define ATTR_S1_AP_MASK ATTR_S1_AP(3) | ||||
#define ATTR_AP_RO (1 << 1) | #define ATTR_S1_AP_RW (0 << 1) | ||||
#define ATTR_AP_USER (1 << 0) | #define ATTR_S1_AP_RO (1 << 1) | ||||
#define ATTR_NS (1 << 5) | #define ATTR_S1_AP_USER (1 << 0) | ||||
#define ATTR_IDX(x) ((x) << 2) | #define ATTR_S1_NS (1 << 5) | ||||
#define ATTR_IDX_MASK (7 << 2) | #define ATTR_S1_IDX(x) ((x) << 2) | ||||
#define ATTR_S1_IDX_MASK (7 << 2) | |||||
#define ATTR_S2_S2AP(x) ((x) << 6) | |||||
#define ATTR_S1_S2AP_MASK ATTR_S2_S2AP(3) | |||||
#define ATTR_S2_MEMATTR(x) ((x) << 2) | |||||
#define ATTR_S2_MEMATTR_MASK ATTR_S2_MEMATTR(0xf) | |||||
#define ATTR_DEFAULT (ATTR_AF | ATTR_SH(ATTR_SH_IS)) | #define ATTR_DEFAULT (ATTR_AF | ATTR_SH(ATTR_SH_IS)) | ||||
#define ATTR_DESCR_MASK 3 | #define ATTR_DESCR_MASK 3 | ||||
#define ATTR_DESCR_VALID 1 | #define ATTR_DESCR_VALID 1 | ||||
#define ATTR_DESCR_TYPE_MASK 2 | #define ATTR_DESCR_TYPE_MASK 2 | ||||
#define ATTR_DESCR_TYPE_TABLE 2 | #define ATTR_DESCR_TYPE_TABLE 2 | ||||
#define ATTR_DESCR_TYPE_PAGE 2 | #define ATTR_DESCR_TYPE_PAGE 2 | ||||
▲ Show 20 Lines • Show All 58 Lines • Show Last 20 Lines |