| 1220 | } |
| 1221 | |
| 1222 | vm_page_t |
| 1223 | PHYS_TO_VM_PAGE(vm_paddr_t pa) |
| 1224 | { |
| 1225 | vm_page_t m; |
| 1226 | |
| 1227 | #ifdef VM_PHYSSEG_SPARSE |
| 1228 | m = vm_phys_paddr_to_vm_page(pa); |
| 1229 | if (m == NULL) |
| 1230 | m = vm_phys_fictitious_to_vm_page(pa); |
| 1231 | return (m); |
| 1232 | #elif defined(VM_PHYSSEG_DENSE) |
| 1233 | long pi; |
| 1234 | |
| 1235 | pi = atop(pa); |
| 1236 | if (pi >= first_page && (pi - first_page) < vm_page_array_size) { |
| 1237 | m = &vm_page_array[pi - first_page]; |
| 1238 | return (m); |
| 1239 | } |
| 1240 | return (vm_phys_fictitious_to_vm_page(pa)); |
| 1241 | #else |
| 1242 | #error "Either VM_PHYSSEG_DENSE or VM_PHYSSEG_SPARSE must be defined." |
| 1243 | #endif |
| 1244 | } |
| 1245 | |
| 1246 | /* |
| 1247 | * vm_page_getfake: |
no test coverage detected