| 292 | |
| 293 | #if defined(__aarch64__) |
| 294 | void * |
| 295 | pmap_mapdev_attr(vm_offset_t pa, vm_size_t size, vm_memattr_t ma) |
| 296 | { |
| 297 | vm_offset_t va, offset; |
| 298 | void * rva; |
| 299 | |
| 300 | /* First look in the static mapping table. */ |
| 301 | if ((rva = devmap_ptov(pa, size)) != NULL) |
| 302 | return (rva); |
| 303 | |
| 304 | offset = pa & PAGE_MASK; |
| 305 | pa = trunc_page(pa); |
| 306 | size = round_page(size + offset); |
| 307 | |
| 308 | if (early_boot) { |
| 309 | akva_devmap_vaddr = trunc_page(akva_devmap_vaddr - size); |
| 310 | va = akva_devmap_vaddr; |
| 311 | KASSERT(va >= (VM_MAX_KERNEL_ADDRESS - (PMAP_MAPDEV_EARLY_SIZE)), |
| 312 | ("Too many early devmap mappings 2")); |
| 313 | } else |
| 314 | va = kva_alloc(size); |
| 315 | if (!va) |
| 316 | panic("pmap_mapdev: Couldn't alloc kernel virtual memory"); |
| 317 | |
| 318 | pmap_kenter(va, size, pa, ma); |
| 319 | |
| 320 | return ((void *)(va + offset)); |
| 321 | } |
| 322 | #endif |
| 323 | |
| 324 | /* |
nothing calls this directly
no test coverage detected