| 847 | } |
| 848 | |
| 849 | void |
| 850 | pmap_kenter_device(vm_offset_t va, vm_size_t size, vm_paddr_t pa) |
| 851 | { |
| 852 | |
| 853 | KASSERT((size & PAGE_MASK) == 0, |
| 854 | ("%s: device mapping not page-sized", __func__)); |
| 855 | |
| 856 | for (; size > 0; size -= PAGE_SIZE) { |
| 857 | /* |
| 858 | * XXXCEM: this is somewhat inefficient on SMP systems in that |
| 859 | * every single page is individually TLB-invalidated via |
| 860 | * rendezvous (pmap_update_page()), instead of invalidating the |
| 861 | * entire range via a single rendezvous. |
| 862 | */ |
| 863 | pmap_kenter_attr(va, pa, VM_MEMATTR_UNCACHEABLE); |
| 864 | va += PAGE_SIZE; |
| 865 | pa += PAGE_SIZE; |
| 866 | } |
| 867 | } |
| 868 | |
| 869 | void |
| 870 | pmap_kremove_device(vm_offset_t va, vm_size_t size) |
no test coverage detected