0

我有一个崩溃方法的 objdump。我发现崩溃是由于内存访问错误造成的。内存地址存在于 MIPS 寄存器 a0 中。除了逐步回溯(演练)objdump(a0 从 s3 获得它等等)之外,有没有办法跟踪寄存器是如何获得这个地址的。

我还有一个问题。

如何在内核中完成分页。内核中必须没有虚拟地址的概念,因为它们都已经在内存中。这个问题是因为在我的崩溃中有一个叫做 BADVA(它是 BAD 虚拟地址)的东西持有一个错误的地址。

这是崩溃报告

Cpu 0
Registries dump
Status: 10000302    KERNEL EXL 
**Cause : 00803c08    TLBL**
**BadVA : fdca9b68**
PrId  : 01019378
4

1 回答 1

0

崩溃的直接原因是没有 TLB 条目与 BadVA 中的虚拟地址匹配,并且这发生在 CPU 处于异常模式时。

BadVA 地址 (fdca9b68) 位于虚拟地址空间的 KSEG2 区域中。该区域用于 MIPS Linux 内核中的映射地址(通常用于内核模块)。我会怀疑内核模块中的错误。

如果您想了解 MIPS CPU 中发生的事情,您应该购买并学习请参阅 MIPS Run

于 2012-08-28T22:39:46.697 回答