[arch][arm64][mmu] Add ARCH_MMU_FLAG_PERM_NO_EXECUTE support
Change-Id: If88435a87f4b554774ce9373b444a3ea4c748504
This commit is contained in:
committed by
Travis Geiselbrecht
parent
18192509eb
commit
52e691fe40
@@ -78,6 +78,10 @@ static pte_t mmu_flags_to_pte_attr(uint flags)
|
||||
break;
|
||||
}
|
||||
|
||||
if (flags & ARCH_MMU_FLAG_PERM_NO_EXECUTE) {
|
||||
attr |= MMU_PTE_ATTR_UXN | MMU_PTE_ATTR_PXN;
|
||||
}
|
||||
|
||||
if (flags & ARCH_MMU_FLAG_NS) {
|
||||
attr |= MMU_PTE_ATTR_NON_SECURE;
|
||||
}
|
||||
@@ -167,6 +171,9 @@ status_t arch_mmu_query(vaddr_t vaddr, paddr_t *paddr, uint *flags)
|
||||
*flags |= ARCH_MMU_FLAG_PERM_USER | ARCH_MMU_FLAG_PERM_RO;
|
||||
break;
|
||||
}
|
||||
if ((pte & MMU_PTE_ATTR_UXN) && (pte & MMU_PTE_ATTR_PXN)) {
|
||||
*flags |= ARCH_MMU_FLAG_PERM_NO_EXECUTE;
|
||||
}
|
||||
}
|
||||
LTRACEF("va 0x%lx, paddr 0x%lx, flags 0x%x\n",
|
||||
vaddr, paddr ? *paddr : ~0UL, flags ? *flags : ~0U);
|
||||
|
||||
Reference in New Issue
Block a user