diff options
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); |
