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 ptr_t addr = vmap_range(start, npages, KERNEL_DATA);
18 return addr + va_offset(paddr);
22 iounmap(ptr_t vaddr, u32_t size)
24 assert(vaddr >= VMAP && vaddr < VMAP_END);
25 vunmap_range(pfn(vaddr), leaf_count(size));