mips64:找到导致NMI看门狗复位的指令(错误epc寄存器)

时间:2014-05-13 11:04:47

标签: debugging linux-kernel mips virtual-memory

我有一个在mips64上运行的设备,由于NMI看门狗复位,每次都会重新启动。我有err epc寄存器的内容,它通过NMI看门狗复位器件时保存指令寄存器的内容。错误的epc寄存器始终保持一个非常相似的地址,但并不总是完全相同,这使我假设设备陷入循环 - 可能是在执行NMI时。

有没有办法找出哪条指令,最好是哪个方法在哪个模块中设备执行只有错误的epc值?第一步是将内容虚拟内存转储到地址周围,但我已经失败了。

我已经检查过/ proc / modules并且发现所有模块都加载到虚拟内存的不同区域(失败的epc在0xffffffff80460980范围内 - 0xffffffff804609d4,所有模块都在0xffffffffc0000000之上),所以我假设这是Linux内核深处的东西。

非常感谢任何关于如何进行的想法/提示!

1 个答案:

答案 0 :(得分:0)

0xffffffff8xxxxxxx映射到kseg0范围内的MIPS64地址和0xffffffffcxxxxxxx范围内的地址映射到kseg2

看起来这台机器上没有MMU,并且在运行kseg0而不是内核的应用程序中触发了NMI。如果您可以知道正在运行的应用程序,您应该能够在失败的EPC周围反汇编代码。