| 10130 | } |
| 10131 | |
| 10132 | static pd_entry_t * |
| 10133 | pmap_large_map_pde(vm_offset_t va) |
| 10134 | { |
| 10135 | pdp_entry_t *pdpe; |
| 10136 | vm_page_t m; |
| 10137 | vm_paddr_t mphys; |
| 10138 | |
| 10139 | retry: |
| 10140 | pdpe = pmap_large_map_pdpe(va); |
| 10141 | if (*pdpe == 0) { |
| 10142 | m = pmap_large_map_getptp(); |
| 10143 | if (m == NULL) |
| 10144 | goto retry; |
| 10145 | mphys = VM_PAGE_TO_PHYS(m); |
| 10146 | *pdpe = mphys | X86_PG_A | X86_PG_RW | X86_PG_V | pg_nx; |
| 10147 | } else { |
| 10148 | MPASS((*pdpe & X86_PG_PS) == 0); |
| 10149 | mphys = *pdpe & PG_FRAME; |
| 10150 | } |
| 10151 | return ((pd_entry_t *)PHYS_TO_DMAP(mphys) + pmap_pde_index(va)); |
| 10152 | } |
| 10153 | |
| 10154 | static pt_entry_t * |
| 10155 | pmap_large_map_pte(vm_offset_t va) |
no test coverage detected