* Write-back cache lines for the given address range. * * Must be called only on the range or sub-range returned from * pmap_large_map(). Must not be called on the coalesced ranges. * * Does nothing on CPUs without CLWB, CLFLUSHOPT, or CLFLUSH * instructions support. */
| 10558 | * instructions support. |
| 10559 | */ |
| 10560 | void |
| 10561 | pmap_large_map_wb(void *svap, vm_size_t len) |
| 10562 | { |
| 10563 | vm_offset_t eva, sva; |
| 10564 | |
| 10565 | sva = (vm_offset_t)svap; |
| 10566 | eva = sva + len; |
| 10567 | pmap_large_map_wb_fence(); |
| 10568 | if (sva >= DMAP_MIN_ADDRESS && eva <= DMAP_MIN_ADDRESS + dmaplimit) { |
| 10569 | pmap_large_map_flush_range(sva, len); |
| 10570 | } else { |
| 10571 | KASSERT(sva >= LARGEMAP_MIN_ADDRESS && |
| 10572 | eva <= LARGEMAP_MIN_ADDRESS + lm_ents * NBPML4, |
| 10573 | ("pmap_large_map_wb: not largemap %#lx %#lx", sva, len)); |
| 10574 | pmap_large_map_wb_large(sva, eva); |
| 10575 | } |
| 10576 | pmap_large_map_wb_fence(); |
| 10577 | } |
| 10578 | |
| 10579 | static vm_page_t |
| 10580 | pmap_pti_alloc_page(void) |
nothing calls this directly
no test coverage detected