Changeset View
Changeset View
Standalone View
Standalone View
sys/arm64/arm64/efirt_machdep.c
Show First 20 Lines • Show All 209 Lines • ▼ Show 20 Lines | else if ((p->md_attr & EFI_MD_ATTR_WT) != 0) | ||||
mode = VM_MEMATTR_WRITE_THROUGH; | mode = VM_MEMATTR_WRITE_THROUGH; | ||||
else if ((p->md_attr & EFI_MD_ATTR_WC) != 0) | else if ((p->md_attr & EFI_MD_ATTR_WC) != 0) | ||||
mode = VM_MEMATTR_WRITE_COMBINING; | mode = VM_MEMATTR_WRITE_COMBINING; | ||||
else | else | ||||
mode = VM_MEMATTR_DEVICE; | mode = VM_MEMATTR_DEVICE; | ||||
printf("MAP %lx mode %x pages %lu\n", p->md_phys, mode, p->md_pages); | printf("MAP %lx mode %x pages %lu\n", p->md_phys, mode, p->md_pages); | ||||
l3_attr = ATTR_DEFAULT | ATTR_IDX(mode) | ATTR_AP(ATTR_AP_RW) | | l3_attr = ATTR_DEFAULT | ATTR_S1_IDX(mode) | | ||||
ATTR_nG | L3_PAGE; | ATTR_S1_AP(ATTR_S1_AP_RW) | ATTR_S1_nG | L3_PAGE; | ||||
if (mode == VM_MEMATTR_DEVICE || p->md_attr & EFI_MD_ATTR_XP) | if (mode == VM_MEMATTR_DEVICE || p->md_attr & EFI_MD_ATTR_XP) | ||||
l3_attr |= ATTR_UXN | ATTR_PXN; | l3_attr |= ATTR_S1_XN; | ||||
VM_OBJECT_WLOCK(obj_1t1_pt); | VM_OBJECT_WLOCK(obj_1t1_pt); | ||||
for (va = p->md_phys, idx = 0; idx < p->md_pages; idx++, | for (va = p->md_phys, idx = 0; idx < p->md_pages; idx++, | ||||
va += PAGE_SIZE) { | va += PAGE_SIZE) { | ||||
l3 = efi_1t1_l3(va); | l3 = efi_1t1_l3(va); | ||||
*l3 = va | l3_attr; | *l3 = va | l3_attr; | ||||
} | } | ||||
VM_OBJECT_WUNLOCK(obj_1t1_pt); | VM_OBJECT_WUNLOCK(obj_1t1_pt); | ||||
▲ Show 20 Lines • Show All 51 Lines • Show Last 20 Lines |