U54内核中断控制和状态寄存器

描述

中断控制和状态寄存器

Machine Status Register (mstatus)

mstatus 寄存器跟踪并控制 hart 的当前操作状态,包括是否启用中断。

内核

通过设置 mstatus 中的 MIE 位来启用中断。在写入 mstatus.MIE=1 之前,建议先在 mie 中开启中断。

Machine Trap Vector (mtvec)

mtvec 寄存器有两个主要功能:定义陷阱向量的基地址,以及设置 U54内核处理中断的模式。对于 Direct 和 Vectored模式,中断处理模式在 mtvec 寄存器的 MODE 字段中定义。mtvec 寄存器在表 86 中描述,mtvec.MODE 字段在表 87 中描述。

内核内核

Mode Direct

在直接模式下操作时,所有中断和异常都会捕获到 mtvec.BASE 地址。在陷阱处理程序内部,软件必须读取 mcause寄存器以确定触发陷阱的原因。

在直接模式下操作时,BASE 必须是 4 字节对齐的。

Mode Vectored

在向量模式下运行时,中断将 pc 设置为 mtvec.BASE + 4 ×异常代码(mcause.EXCCODE)。例如,如果发生机器定时器中断,则将 pc 设置为 mtvec.BASE +0x1C。通常,陷阱向量表填充有跳转指令,以将控制转移到特定于中断的陷阱处理程序。

在向量中断模式下,BASE 必须是 256 字节对齐的。

所有机器外部中断(全局中断)都映射到异常代码 11。因此,当启用中断向量时,pc 设置为任何全局中断的地址 mtvec.BASE +0x2C。

Machine Interrupt Enable (mie)

通过设置 mie 寄存器中的相应位来启用各个中断。

内核

Machine Interrupt Pending (mip)

机器中断挂起 (mip) 寄存器指示当前哪些中断处于挂起状态。

内核

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分