make log a bit verbose for some useful information
[lunaix-os.git] / lunaix-os / kernel / mm / mmio.c
1 #include <lunaix/mm/mmio.h>
2 #include <lunaix/mm/page.h>
3 #include <lunaix/spike.h>
4
5 ptr_t
6 ioremap(ptr_t paddr, u32_t size)
7 {
8     // FIXME implement a page policy interface allow to decouple the 
9     //       arch-dependent caching behaviour
10
11     pfn_t start = pfn(paddr);
12     size_t npages = leaf_count(size);
13     
14     // Ensure the range is reservable (not already in use)
15     assert(pmm_onhold_range(start, npages));
16
17     ptr_t addr = vmap_range(start, npages, KERNEL_DATA);
18     return addr + va_offset(paddr);
19 }
20
21 void
22 iounmap(ptr_t vaddr, u32_t size)
23 {
24     assert(vaddr >= VMAP && vaddr < VMAP_END);
25     vunmap_range(pfn(vaddr), leaf_count(size));
26 }