[arch][arm64][mmu] Add ARCH_MMU_FLAG_PERM_NO_EXECUTE support

Change-Id: If88435a87f4b554774ce9373b444a3ea4c748504
This commit is contained in:
Arve Hjønnevåg
2015-08-17 20:01:37 -07:00
committed by Travis Geiselbrecht
parent 18192509eb
commit 52e691fe40

View File

@@ -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);