From 61291639524e4aebf93a3315661e7180ac1b9c1e Mon Sep 17 00:00:00 2001 From: Kimplul Date: Mon, 20 Dec 2021 21:03:37 +0200 Subject: Right up to init_proc, FUCK YEAH + Lots to do still, should keep a more detailed TODO.txt, among other things implement Sv48 support, make more things single truths etc. --- arch/riscv/kernel/vmem.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'arch/riscv/kernel/vmem.c') diff --git a/arch/riscv/kernel/vmem.c b/arch/riscv/kernel/vmem.c index 4cb84a6..744f633 100644 --- a/arch/riscv/kernel/vmem.c +++ b/arch/riscv/kernel/vmem.c @@ -4,11 +4,12 @@ #include #include #include +#include #define pte_ppn(pte) (((pm_t)(pte)) >> 10) #define pte_flags(pte) (((pm_t)(pte)) & 0xff) -#define to_pte(p, f) ((pm_to_pnum(p) << 10) + (f)) -#define pte_addr(pte) (pnum_to_paddr(pte_ppn(pte))) +#define to_pte(p, f) ((pm_to_pnum((pm_t)__pa(p)) << 10) | (f)) +#define pte_addr(pte) __va(pnum_to_paddr(pte_ppn(pte))) #define vm_to_index(a, o) (pm_to_index(a, o)) void mod_vmem(struct vm_branch_t *branch, vm_t vaddr, uint8_t flags, enum mm_order_t order) @@ -51,7 +52,7 @@ void unmap_vmem(struct vm_branch_t *branch, vm_t vaddr, enum mm_order_t order) size_t idx = pm_to_index(vaddr, order); if (branch->leaf[idx]) - free_page(order, pte_addr(branch->leaf[idx])); + free_page(order, (pm_t)pte_addr(branch->leaf[idx])); branch->leaf[idx] = 0; } -- cgit v1.3