aboutsummaryrefslogtreecommitdiff
path: root/arch/riscv/common/vmem.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/riscv/common/vmem.c')
-rw-r--r--arch/riscv/common/vmem.c30
1 files changed, 28 insertions, 2 deletions
diff --git a/arch/riscv/common/vmem.c b/arch/riscv/common/vmem.c
index ef89ec3..207df34 100644
--- a/arch/riscv/common/vmem.c
+++ b/arch/riscv/common/vmem.c
@@ -1,7 +1,7 @@
#include <apos/string.h>
#include <apos/pmem.h>
+#include <apos/vmem.h>
#include <pages.h>
-#include <vmem.h>
#define pte_ppn(pte) (((pm_t)(pte)) >> 10)
#define pte_flags(pte) (((pm_t)(pte)) & 0xff)
@@ -13,7 +13,7 @@ void map_vmem(struct vm_branch_t *branch,
pm_t paddr, vm_t vaddr,
uint8_t flags, enum mm_order_t order)
{
- enum mm_order_t top = MAX_ORDER;
+ enum mm_order_t top = __mm_max_order;
while(top != order){
size_t idx = pm_to_index(vaddr, top);
@@ -45,3 +45,29 @@ void unmap_vmem(struct vm_branch_t *branch,
branch->leaf[idx] = 0;
}
+
+vm_t map_vregion(struct vm_branch_t *branch, pm_t base, pm_t top, vm_t start, vm_t end)
+{
+ /* TODO: figure out how to find first suitable memory region */
+
+ /* find first free page, iterate forward until we either fit the whole
+ * physical region or hit a used page
+ *
+ * continue until we hit end?
+ */
+}
+
+void unmap_vregion(struct vm_branch_t *branch, pm_t base, pm_t top)
+{
+ /* TODO */
+}
+
+vm_t map_vsize(struct vm_branch_t *branch, size_t size)
+{
+ /* TODO */
+}
+
+void unmap_vsize(struct vm_branch_t *branch, size_t size)
+{
+ /* TODO */
+}