From 7237d673904d8568a2f9c290a0247c9d1a07c5d2 Mon Sep 17 00:00:00 2001 From: Kimplul Date: Mon, 11 Oct 2021 23:18:47 +0300 Subject: Start designing vmem framework --- arch/riscv/common/vmem.c | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) (limited to 'arch/riscv/common/vmem.c') 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 #include +#include #include -#include #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 */ +} -- cgit v1.3