refactor: one more step towards arch-agnostic design
[lunaix-os.git] / lunaix-os / kernel / mm / vmap.c
index 285debce407359fbd5ef14654fab724e5a4d96fe..35f61e425e45d9e464eb2635e0ee1091016f4ee9 100644 (file)
@@ -2,19 +2,18 @@
 #include <lunaix/mm/vmm.h>
 #include <lunaix/spike.h>
 
-#define VMAP_START PG_MOUNT_BASE + MEM_4MB
-#define VMAP_END VMS_SELF
+#include <sys/mm/mempart.h>
 
-static uintptr_t start = VMAP_START;
+static ptr_t start = VMAP;
 
 void*
-vmm_vmap(uintptr_t paddr, size_t size, pt_attr attr)
+vmm_vmap(ptr_t paddr, size_t size, pt_attr attr)
 {
     // next fit
     assert_msg((paddr & 0xfff) == 0, "vmap: bad alignment");
     size = ROUNDUP(size, PG_SIZE);
 
-    uintptr_t current_addr = start;
+    ptr_t current_addr = start;
     size_t examed_size = 0, wrapped = 0;
     x86_page_table* pd = (x86_page_table*)L1_BASE_VADDR;
 
@@ -47,14 +46,14 @@ vmm_vmap(uintptr_t paddr, size_t size, pt_attr attr)
         if (current_addr >= VMAP_END) {
             wrapped = 1;
             examed_size = 0;
-            current_addr = VMAP_START;
+            current_addr = VMAP;
         }
     }
 
     return NULL;
 
 done:
-    uintptr_t alloc_begin = current_addr - examed_size;
+    ptr_t alloc_begin = current_addr - examed_size;
     for (size_t i = 0; i < size; i += PG_SIZE) {
         vmm_set_mapping(VMS_SELF, alloc_begin + i, paddr + i, PG_PREM_RW, 0);
         pmm_ref_page(KERNEL_PID, paddr + i);