MIPS 异常诊断

本文介绍了MIPS架构中常见的异常类型,如TLB Refill、TLB Invalid、Bus Error、Address Error和Reserved Instruction等,并提供了异常处理时的寄存器信息和分析方法,帮助开发者诊断和解决MIPS系统中的异常问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

下边是一个典型的MIPS异常信息表:

备注:在32位CPU(BCM5836)中上述寄存器是32位的;在64位CPU(Bcm1250)上是64位的。

【如何阅读】

● 异常类型(ExType)

打印该异常的类型名

如:TLB invalid exception (load or instruction fetch)

 

● 异常线程(current thread)

出现异常的线程名,即current->name和线程栈起止地址。

 

● CP0异常相关寄存器

MIPS协处理器0负责中断/异常处理,如下几个寄存器都是跟异常或中断相关:

 

寄存器

说明

Cause

cause[2..6]记录了异常码,即异常类型,上面的异常类型名就是根据这个打印

出来的,所以用户可以不用关心这个。

Status

主要跟中断相关,设置中断屏蔽码和异常向量表基址,可不关心。

EPC

引起异常的指令的地址,根据该地址你可以找到引起异常的函数。

ErrPC

与PC相似,只有在(soft)Reset,NMI,Cache Error时记录引起异常的PC指针。

RA

异常所在函数的返回地址,根据这个可以找到引起异常的函数的调用函数。

BadAddr

只在TLB异常中有用,引起TLB异常的逻辑地址。如果发现BadAddr值较小

说明是使用程序中用到了空指针。

ErrCtrl

处理器相关,对异常判断涌出不大。

CacheErr

处理器相关,对异常判断用处不大。

 

● 通用寄存器(GPRs)

打印异常发生时MIPS的32个通用寄存器GPR的值,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值