可以设置ARM MMU以允许代码执行,但不允许读取

时间:2014-07-26 18:39:04

标签: arm mmu

我想知道是否可以在ARM7(特定于Cortex A8)MMU的页表条目上设置权限,以允许从页面执行代码,但不允许读取。

如果权限是正交的,您可能会认为如果未设置XN(从不执行),则无论是否允许读取,都将允许执行。

当然,一些ARM代码在执行时从自身读取(例如,为了获得存储在函数末尾之外的文字),该代码不太可能有效。

如果您尝试执行的代码没有从自身执行任何读取(更具体地说,从禁用读取的页面),代码是否会按预期执行,或者您是否会获得数据中止(或其他)例外?

1 个答案:

答案 0 :(得分:1)

似乎答案是 no

来自ARM®体系结构参考手册ARMv7-A和ARMv7-R版本部分B3.7.2

  

处理器可以   仅当当前状态的访问权限允许读访问且XN位设置为0时,才从内存区域执行指令。