1 #include <lunaix/mm/mmio.h>
2 #include <lunaix/mm/page.h>
3 #include <lunaix/spike.h>
6 ioremap(ptr_t paddr, u32_t size)
8 // FIXME implement a page policy interface allow to decouple the
9 // arch-dependent caching behaviour
11 pfn_t start = pfn(paddr);
12 size_t npages = leaf_count(size);
14 // Ensure the range is reservable (not already in use)
15 assert(pmm_onhold_range(start, npages));
17 return (void*)vmap_range(start, npages, KERNEL_DATA);
21 iounmap(ptr_t vaddr, u32_t size)
26 // pte_t* ptep = mkptep_va(VMS_SELF, vaddr);
27 // for (size_t i = 0; i < size; i += PAGE_SIZE, ptep++) {
28 // pte_t pte = pte_at(ptep);
30 // set_pte(ptep, null_pte);
31 // if (pte_isloaded(pte))
32 // return_page(ppage_pa(pte_paddr(pte)));