diff options
| author | Richard Qin <richard.qin.x@gmail.com> | 2026-05-02 23:31:46 +0800 |
|---|---|---|
| committer | Richard Qin <richard.qin.x@gmail.com> | 2026-05-02 23:31:46 +0800 |
| commit | 6907a90418ba856ff9331e6b4ba5d26b76034c2d (patch) | |
| tree | 420223afa8d8c9f4e0fab945ff01fea58a7d219a /na/arch/riscv/include | |
| parent | 1146a45ccbbbf514787eba6082e7acbbbe8e81b8 (diff) | |
| download | lume-6907a90418ba856ff9331e6b4ba5d26b76034c2d.tar.gz lume-6907a90418ba856ff9331e6b4ba5d26b76034c2d.tar.xz | |
feat: add RISC-V configuration and memory management enhancements
Co-authored-by: Copilot <copilot@github.com>
Diffstat (limited to 'na/arch/riscv/include')
| -rw-r--r-- | na/arch/riscv/include/arch/config.h | 12 | ||||
| -rw-r--r-- | na/arch/riscv/include/arch/pmap.h | 1 |
2 files changed, 9 insertions, 4 deletions
diff --git a/na/arch/riscv/include/arch/config.h b/na/arch/riscv/include/arch/config.h index 86cd8b1..c407b25 100644 --- a/na/arch/riscv/include/arch/config.h +++ b/na/arch/riscv/include/arch/config.h @@ -14,11 +14,15 @@ namespace arch { -/* Kernel virtual address offset (higher-half base). - * SV39: top of 39-bit VA space. VA = PA + kVAOffset. */ -inline constexpr uint64 kVAOffset = 0xFFFFFFC000000000ULL; +/* Direct-map virtual base (higher-half base). + * SV39: top of 39-bit VA space. VA = PA + direct_map_base. */ +inline constexpr uint64 kDirectMapBaseDefault = 0xFFFFFFC000000000ULL; +extern uint64 g_direct_map_base; + +/* Dedicated VA base for the Frame descriptor array (vmemmap). */ +inline constexpr uint64 kVmemmapBase = 0xFFFFFFD000000000ULL; /* Physical memory base (where RAM starts on RISC-V virt platform) */ inline constexpr uint64 kPhysBase = 0x80000000ULL; -} // namespace arch +} // namespace arch diff --git a/na/arch/riscv/include/arch/pmap.h b/na/arch/riscv/include/arch/pmap.h index 3f0b142..4504af7 100644 --- a/na/arch/riscv/include/arch/pmap.h +++ b/na/arch/riscv/include/arch/pmap.h @@ -29,6 +29,7 @@ inline constexpr uint64 PTE_D = 1ULL << 7; uint64 create(); void destroy(uint64 root_pa); int map(uint64 root_pa, uint64 va, uint64 pa, uint64 perm); +int map_2mb(uint64 root_pa, uint64 va, uint64 pa, uint64 perm); void unmap(uint64 root_pa, uint64 va); bool lookup(uint64 root_pa, uint64 va, uint64* pa_out); void activate(uint64 root_pa); |
