2015年6月15日 星期一

MIPS Exception


http://scc.ustc.edu.cn/zlsc/lxwycj/200910/W020100308600770617815.pdf
8 Coprocessor 0 Registers, p.73
8.1 Coprocessor 0 Register Summary, p73
8.22 Cause Register (CP0 Register 13, Select 0), p113
Table 8-25 Cause Register ExcCode Field, p116
8.18 Status Register (CP Register 12, Select 0), p98


15.5. MIPS Exception Handling
http://www.cs.uwm.edu/classes/cs315/Bacon/Lecture/HTML/ch15s05.html

MIPS 通用寄存器 + 指令 - gujing001的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/gujing001/article/details/8476685

CPU Registers
https://www.doc.ic.ac.uk/lab/secondyear/spim/node10.html

http://bbs.csdn.net/topics/390067643

这是mips core 报异常了。也就是status的bit 1置位了。
在status的bit1(EXL) 置位的时候, coprocessor 0的某些寄存器可以帮助你分析具体出错的位置,以及原因。

一般,如果不是一些特别的error错误,看epc就可以找到引起kernel panic的位置,可以理解为引起exception的pc值,如果是某些比较特别的错误,就得看 errorepc了。

针对楼主这个问题, cause寄存器的值为 00800034, 看来使用的应该是VI模式的中断机制,其中,bit 2- 6 是 01101, 也 就是 13, 查一下mips的 coprocessor的手册,就会发现,其代表ExcCode, 也就是exception code,为13的 话,就是发生了trap异常。
结合epc,也就是 在 指令地址为 80010ed0 do_ade+0x388/0xa1c 的位置,有一条trap指令执行了。

沒有留言: