summaryrefslogtreecommitdiff
path: root/na/arch/riscv/include
diff options
context:
space:
mode:
Diffstat (limited to 'na/arch/riscv/include')
-rw-r--r--na/arch/riscv/include/arch/config.h12
-rw-r--r--na/arch/riscv/include/arch/pmap.h1
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);