转换表走行时同步外部中止 [英] Synchronous external abort on translation table walk
问题描述
有人能解释一下这个中止的原因是什么.我在手册中找不到解释.
基本上我在 IFSC
代码中收到此错误 - 转换表遍历时同步外部中止.
IFSC
是 HSR
寄存器中的位,它与使用虚拟化扩展的 ARMv7A 一起使用.
IFSC
基本上是 IFSR
的虚拟化版本.
IFSC 代码 - 转换表遍历时同步外部中止.
这意味着 CPU 难以访问页表.所以你的代码可能已经跳转到某个未映射的地址.第一级 MMU 条目可能包含一个无效条目,或者它包含一个 2nd 级页表地址,该地址在访问时会出现总线错误.基本上,这意味着在执行错误指令时页表中的某些内容没有很好地映射.您需要检查错误代码,然后手动遍历页表以找到错误的实际来源.
如果您最近更改了表基,某些代码可能会从 TLB 缓存中执行,然后在第一次实际遍历时,就会发生这样的错误.>
您可能需要提供有关阅读 IFSC
的上下文的更多信息以获得更多帮助.
Can someone explain what would be the reason of this abort. I could not find an explanation in the manual.
Basically I am getting this error in the IFSC
code - Synchronous external abort on translation table walk.
The IFSC
are bits in the HSR
register which is used with an ARMv7A using the virtualization extensions.
The IFSC
is basically a virtualization version of the IFSR
.
IFSC code - Synchronous external abort on translation table walk.
This means that the CPU had difficulty accessing the page tables. So your code may have jumped to some unmapped address. The first level MMU entry may contain an invalid entry or it contains a 2nd level page table address that gives a bus error when accessed. Basically, it means that something in the page tables did not map well when your faulting instruction executed. You need to inspect the faulting code and then manually walk your page tables to find the actual source of the errors.
If you recently change the table base, some code may execute from the TLB cache and then on the first actual walk, a fault like this will occur.
You probably need to give more information on the context of where the IFSC
is read for more help.
这篇关于转换表走行时同步外部中止的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!