1 #include <lunaix/mm/mmio.h>
2 #include <lunaix/mm/pmm.h>
3 #include <lunaix/mm/vmm.h>
4 #include <lunaix/spike.h>
7 ioremap(ptr_t paddr, u32_t size)
9 // FIXME implement a page policy interface allow to decouple the
10 // arch-dependent caching behaviour
11 void* ptr = (void*)vmap(paddr, size, KERNEL_DATA);
14 pmm_mark_chunk_occupied(pfn(paddr), leaf_count(size), PP_FGLOCKED);
21 iounmap(ptr_t vaddr, u32_t size)
23 pte_t* ptep = mkptep_va(VMS_SELF, vaddr);
24 for (size_t i = 0; i < size; i += PAGE_SIZE, ptep++) {
25 pte_t pte = pte_at(ptep);
27 set_pte(ptep, null_pte);
28 if (pte_isloaded(pte))
29 pmm_free_page(pte_paddr(pte));