|
|
constexpr | dat_table (u64 phys) noexcept |
|
constexpr auto | arch::s390x::mmu::level_at_depth (dat_level root, u32 depth) noexcept -> dat_level |
| | Runtime level-at-depth helper.
|
|
template<dat_level Level> |
| constexpr auto | arch::s390x::mmu::level_size () noexcept -> u64 |
| | Coverage size for a given level.
|
|
constexpr auto | arch::s390x::mmu::level_size_rt (dat_level lvl) noexcept -> u64 |
| | Runtime coverage size.
|
|
constexpr auto | arch::s390x::mmu::next_level (dat_level lvl) noexcept -> dat_level |
| | Runtime next-level helper.
|
|
constexpr | operator bool () const noexcept |
|
constexpr auto | operator& (page_prot o) const noexcept -> page_prot |
|
constexpr auto | operator| (page_prot o) const noexcept -> page_prot |
|
constexpr | page_prot (u64 b) noexcept |
|
constexpr | pte (u64 v) noexcept |
|
constexpr auto | raw () const noexcept -> u64 |
|
constexpr auto | raw () const noexcept -> u64 |
|
constexpr auto | raw () const noexcept -> u64 |
|
constexpr auto | raw () const noexcept -> u64 |
|
constexpr | rste (u64 v) noexcept |
|
constexpr | typed_asce (u64 v) noexcept |
|
constexpr auto | valid () const noexcept -> bool |
|
template<dat_level Level> |
| constexpr auto | arch::s390x::mmu::virt_index (u64 virt) noexcept -> u32 |
| | Extract the virtual-address index for a given DAT level.
|
|
constexpr auto | arch::s390x::mmu::virt_index_rt (dat_level lvl, u64 virt) noexcept -> u32 |
| | Runtime index extraction (for internal walk loops).
|
|
|
u64 | bits {0} |
|
template<dat_level Parent> |
| constexpr dat_level | arch::s390x::mmu::child_of |
| | Metafunction: child level of a given parent level.
|
|
constexpr u32 | arch::s390x::mmu::CRST_ALLOC_ORDER = 2U |
| | PMM order for CRST table allocation (16 KiB = 4 pages = order 2).
|
|
constexpr u32 | arch::s390x::mmu::CRST_ENTRIES = 2048U |
| | Number of entries in a CRST (region/segment) table.
|
|
constexpr u64 | arch::s390x::mmu::CRST_INDEX_MASK = 0x7FFULL |
| | VA index mask (11 bits for CRST levels, 8 bits for page level).
|
|
constexpr u64 | arch::s390x::mmu::CRST_TABLE_SIZE = CRST_ENTRIES * 8ULL |
| | Size of a CRST table in bytes (2048 x 8 = 16 KiB).
|
|
u64 | origin_phys {0} |
|
constexpr u32 | arch::s390x::mmu::PAGE_ENTRIES = 256U |
| | Number of entries in a page table.
|
|
constexpr u32 | arch::s390x::mmu::PAGE_SHIFT = 12U |
| | PX: PoP bits 44-51.
|
|
constexpr u64 | arch::s390x::mmu::PAGE_SIZE_4K = 1ULL << PAGE_SHIFT |
| | 4 KiB per page entry.
|
|
constexpr u64 | arch::s390x::mmu::PAGE_TABLE_SIZE = PAGE_ENTRIES * 8ULL |
| | Size of a page table in bytes (256 x 8 = 2 KiB).
|
|
constexpr u32 | arch::s390x::mmu::PTE_ALLOC_ORDER = 0U |
| | PMM order for PTE table allocation (4 KiB = 1 page = order 0).
|
|
constexpr u64 | arch::s390x::mmu::PTE_INDEX_MASK = 0xFFULL |
| | 8-bit mask for PX.
|
|
constexpr u32 | arch::s390x::mmu::REGION1_SHIFT = 53U |
| | RFX: PoP bits 0-10.
|
|
constexpr u64 | arch::s390x::mmu::REGION1_SIZE = 1ULL << REGION1_SHIFT |
| | 8 PiB per R1 entry.
|
|
constexpr u32 | arch::s390x::mmu::REGION2_SHIFT = 42U |
| | RSX: PoP bits 11-21.
|
|
constexpr u64 | arch::s390x::mmu::REGION2_SIZE = 1ULL << REGION2_SHIFT |
| | 4 TiB per R2 entry.
|
|
constexpr u32 | arch::s390x::mmu::REGION3_SHIFT = 31U |
| | RTX: PoP bits 22-32.
|
|
constexpr u64 | arch::s390x::mmu::REGION3_SIZE = 1ULL << REGION3_SHIFT |
| | 2 GiB per R3 entry.
|
|
constexpr u32 | arch::s390x::mmu::SEGMENT_SHIFT = 20U |
| | SX: PoP bits 33-43.
|
|
constexpr u64 | arch::s390x::mmu::SEGMENT_SIZE = 1ULL << SEGMENT_SHIFT |
| | 1 MiB per segment entry.
|
|
u64 | val {0} |
|
u64 | val {0} |
|
u64 | val {0} |