diff options
| author | Kimplul <kimi.h.kuparinen@gmail.com> | 2021-10-11 23:18:47 +0300 |
|---|---|---|
| committer | Kimplul <kimi.h.kuparinen@gmail.com> | 2021-10-11 23:18:47 +0300 |
| commit | 7237d673904d8568a2f9c290a0247c9d1a07c5d2 (patch) | |
| tree | 7deabe2dc64ddf05016eb3e3a4f22a7e252b5c35 /arch/riscv/common/vmem.c | |
| parent | ebd34a9ab3809167e16e4107c8e72d1d81faff9c (diff) | |
| download | kmi-7237d673904d8568a2f9c290a0247c9d1a07c5d2.tar.gz kmi-7237d673904d8568a2f9c290a0247c9d1a07c5d2.zip | |
Start designing vmem framework
Diffstat (limited to 'arch/riscv/common/vmem.c')
| -rw-r--r-- | arch/riscv/common/vmem.c | 30 |
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 */ +} |
