From 6907a90418ba856ff9331e6b4ba5d26b76034c2d Mon Sep 17 00:00:00 2001 From: Richard Qin Date: Sat, 2 May 2026 23:31:46 +0800 Subject: feat: add RISC-V configuration and memory management enhancements Co-authored-by: Copilot --- na/arch/riscv/include/arch/config.h | 12 ++++++++---- na/arch/riscv/include/arch/pmap.h | 1 + 2 files changed, 9 insertions(+), 4 deletions(-) (limited to 'na/arch/riscv/include') 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); -- cgit v1.2.3