在ARMv7-A CPU上使用MMU时,就像我的Cortex-A9一样,您可以为部分和页面配置访问权限。
当MMU检测到访问冲突时,会触发数据中止异常。通常,CP15中的数据故障状态寄存器(DFSR)中描述了此数据中止异常的原因(例如,访问冲突或对齐故障)。
在DFSR中,给出了访问类型,即写入或读取以及故障状态。目前我正在观察以下内容:我收到数据中止异常,DFSR告诉我访问类型是写访问,故障状态字段告诉我这是访问冲突。
到目前为止一切顺利。但是,当我查看据称导致中止的指令时,它是以下内容:
S:0x01038628 : POP {r4,pc}
这怎么可以写访问?如果我没记错的话,它就是:
的同义词 LDMIA SP!, {r4, pc}
所以根本没有写访问权限?该指令如何导致访问违反写访问?