ZXFoundation™ 26h2
Loading...
Searching...
No Matches
arch.s390x.mmu.core Module Reference

Data Structures

class  arch::s390x::mmu::mmu_transaction
 Transactional wrapper for batched MMU operations. More...

Functions

auto advance (u64 bytes) noexcept -> void
 Advance the cursor after a successful mapping.
template<dat_level Root>
requires (Root != dat_level::page)
auto arch::s390x::mmu::asce_build (dat_table< Root > root) noexcept -> typed_asce< Root >
 Build a typed ASCE for a kernel address space.
auto commit_and_flush () noexcept -> void
 Commit the transaction and flush TLB.
template<dat_level Level>
requires (Level != dat_level::page)
auto arch::s390x::mmu::crst_alloc () noexcept -> ::std::expected< dat_table< Level >, ::lib::kernel_error >
 Allocate and initialize a CRST table for the given level.
auto arch::s390x::mmu::has_edat1 () noexcept -> bool
 Query EDAT-1 (1 MiB large page) availability.
auto arch::s390x::mmu::has_edat2 () noexcept -> bool
 Query EDAT-2 (2 GiB large page) availability.
auto arch::s390x::mmu::init () noexcept -> void
 Initialize the MMU engine. Must be called after PMM init and arch::s390x::cpu::features::init().
template<dat_level Root>
auto arch::s390x::mmu::map_page (dat_table< Root > root, u64 virt, u64 phys, page_prot prot) noexcept -> ::std::expected< void, ::lib::kernel_error >
 Map a single 4 KiB page. Side-effect-free on failure.
template<dat_level Root>
auto arch::s390x::mmu::map_page_with_policy (dat_table< Root > root, u64 virt, u64 phys, page_prot prot, const zxfoundation::memory::pmm::allocation_request &table_policy) noexcept -> ::std::expected< void, ::lib::kernel_error >
 Map a single 4 KiB page with explicit page-table allocation placement.
template<dat_level Root>
auto arch::s390x::mmu::map_range (dat_table< Root > root, u64 virt, u64 phys, u64 len, page_prot prot) noexcept -> ::std::expected< u64, ::lib::kernel_error >
 Map a contiguous range [virt, virt+len) → [phys, phys+len).
 mmu_transaction (const mmu_transaction &)=delete
 mmu_transaction (u64 root_phys, dat_level root_level, u64 asce_val, u64 range_start) noexcept
auto operator= (const mmu_transaction &)=delete
template<dat_level Root>
auto arch::s390x::mmu::protect (dat_table< Root > root, u64 virt, page_prot new_prot) noexcept -> ::std::expected< void, ::lib::kernel_error >
 Change protection bits on an existing mapping.
auto arch::s390x::mmu::pte_table_alloc () noexcept -> ::std::expected< dat_table< dat_level::page >, ::lib::kernel_error >
 Allocate and initialize a page table.
template<dat_level Level>
auto arch::s390x::mmu::table_free (dat_table< Level > tbl) noexcept -> void
 Free a previously allocated table.
template<dat_level Root>
auto arch::s390x::mmu::unmap_page (dat_table< Root > root, u64 virt) noexcept -> ::std::expected< u64, ::lib::kernel_error >
 Unmap a single page/large-page at virt.
auto arch::s390x::mmu::unmap_page_dispatch (u64 asce_val, u64 virt) noexcept -> ::std::expected< u64, ::lib::kernel_error >
 Runtime-dispatched unmap keyed on an ASCE value.
template<dat_level Root>
auto arch::s390x::mmu::unmap_range (dat_table< Root > root, u64 virt, u64 len) noexcept -> ::std::expected< u64, ::lib::kernel_error >
 Unmap a contiguous range [virt, virt+len).
template<dat_level Root>
auto arch::s390x::mmu::walk (dat_table< Root > root, u64 virt) noexcept -> ::std::expected< u64, ::lib::kernel_error >
 Walk the page tables to resolve virt → phys.

Files

file  arch/s390x/mmu/core.cxxm
 MMU engine — transactional, type-safe DAT table mapper.
file  arch/s390x/mmu/core.cxx
 MMU engine implementation — DAT table walk/map internals.