MIPS汇编确定是否发生了硬件I / O中断?

在我的MIPS32异常处理程序中,我想确定异常是否是由I / O中断引起的.必须检查原因寄存器位2-6.什么是MIPS汇编代码来确定这个? 最佳答案 您必须屏蔽每个位以检查中断来自何处.异常处理程序过程如下所示:
ExcHandler http://i47.tinypic.com/5yt47c.png

您可以看到硬件手册,说明中断的来源,以及可以加载到寄存器中的错误代码,并与EPIE寄存器进行比较以查看异常是陷阱还是中断,记得重置EPIE(错误状态寄存器)在从错误返回并启用处理器控制寄存器中的中断位以允许硬件进行中断之前.

这是我在为Nios II编写异常处理程序时使用的方案,MIPS32的过程应该类似.

MIPS assembly language,MIPS: Interrupts and Exceptions page 22

点赞