【问题标题】:[ARM Cortex-A]: Permission fault due to code region mapped as read/write[ARM Cortex-A]:由于映射为读/写的代码区域导致的权限错误
【发布时间】:2022-09-27 17:03:47
【问题描述】:

当我尝试从映射为读/写 (AP[2] == 0) 的区域执行代码时,CPU 发出权限错误(异常 class== 0b100001,指令错误状态代码 == 0b001111)。当我将映射更改为只读 (AP[2] == 1) 时,权限错误就消失了。这是 MMU 的预期行为吗?我认为允许从映射为读/写的区域执行代码。有人可以指出“Arm 架构参考手册”中解释这一点的部分吗?

以供参考:

  • 有关 AP(访问权限)位的信息,请参见 ARM DDI 0487I.a,第 D8-5136 页
  • 有关异常类 0b100001 的信息,请参见 ARM DDI 0487I.a,第 D17-5657 页(在未更改异常级别的情况下执行指令中止)
  • 有关指令故障状态代码 0b001111(权限故障,级别 3)的信息,请参见 ARM DDI 0487I.a,第 D17-5680 页

    标签: arm arm64 mmu armv8 cortex-a


    【解决方案1】:

    ARM DDI 0487I.a,第 D8-5142 页有答案。

    “有寄存器控制字段可用于强制将可写内存视为 XN、PXN 或 UXN,而不管相应描述符字段的值如何……”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-25
      • 2014-02-18
      • 1970-01-01
      • 1970-01-01
      • 2013-10-14
      • 2022-06-27
      • 2015-01-25
      • 2013-12-24
      相关资源
      最近更新 更多