mstatus 寄存器:提供全局中断使能控制,通过 MIE 位来启用或禁用所有机器模式的中断。 mie 寄存器:提供具体类型的中断使能控制,通过各个位来启用或禁用特定类型的中断。 Xie寄存器 mstatus 寄存器位的描述 xIE 开启之后,可以响应中断,比如 M模式下可以响应中断的话,就开启MIE UIE (User Interrupt Enable) 位:总开关 ...
将mstatus中的MIE位置置零以禁用中断,并把先前的MIE值保留到MPIE中。 发生异常之前的权限模式保留在mstatus的MPP域中,再把权限模式更改为M。(如果处理器仅实现 M 模式,则有效地跳过这个步骤)。 处理中 为避免覆盖整数寄存器中的内容,异常/中断处理程序先在最开始用mscratch和整数寄存器(例如a0)中的值交换。通常,...
• 全局中断使能 mstatus.MIE 设置为 mcause.MPIE 的值。 • pc 设置为mepc 的值。 此时,控制权交给软件。 中断控制和状态寄存器 Machine Status Register (mstatus) mstatus 寄存器跟踪并控制 hart 的当前操作状态,包括是否启用中断。 通过设置 mstatus 中的 MIE 位来启用中断。在写入 mstatus.MIE=1 之...
1. mvendorid 寄存器 为了对不同厂商设计生产的 RISC-V 处理器加以区分,RISC-V 在其特权架构 标准部分制定了 mvendorid 寄存器,用来存储厂商标识代码。对 RV32 来说,这是 一个 32 位的只读寄存器,它的取值实际上是衍生于 JEDEC 厂商标识代码。 JEDEC 是联合电子设备工程委员会(Joint Electron Device Engineerin...
第29~33行,写mstatus寄存器。 最后就是发出中断信号,中断信号会进入到执行阶段。 有两种情况需要发出中断信号,一种是进入中断,另一种是退出中断。 9~12行,写完mstatus寄存器后发出中断进入信号,中断入口地址就是mtvec寄存器的值。 第13~15行,发出中断退出信号,中断退出地址就是mepc寄存器的值。
1.mvendorid寄存器 为了对不同厂商设计生产的 RISC-V 处理器加以区分,RISC-V 在其特权架构 标准部分制定了 mvendorid 寄存器,用来存储厂商标识代码。对 RV32 来说,这是 一个 32 位的只读寄存器,它的取值实际上是衍生于 JEDEC 厂商标识代码。 JEDEC 是联合电子设备工程委员会(Joint Electron Device Engineering ...
通过设置 mstatus 中的 MIE 位来启用中断。在写入 mstatus.MIE=1 之前,建议先在 mie 中开启中断。 Machine Trap Vector (mtvec) mtvec 寄存器有两个主要功能:定义陷阱向量的基地址,以及设置 U54内核处理中断的模式。对于 Direct 和 Vectored 模式,中断处理模式在 mtvec 寄存器的 MODE 字段中定义。mtvec 寄存...
中断处理的第一条指令地址存储在mtvec中,mie寄存器(不是mstatus寄存器中的mie位)控制哪些中断可以被触发,只有对应位置置一的中断号的中断会触发。 中断处理完成之后需要返回,从机器模式的中断返回需要调用mret指令,它会 将 PC 设置为 mepc,通过将 mstatus 的 MPIE 域复制到MIE 来恢复之前的中断使能设置,并将权限...
除了上述的寄存器,移植还要关心的是几个csr寄存器mstatus,mepc。正常情况下大部分csr只能在机器模式下操作(WCH的v3和v4内核支持机器模式和用户模式)。mstatus中,MIE为中断使能,当进中断时MPIE更新为MIE,返回时MIE更新为MPIE。MPP用于保存进中断之前的特权模式,如果我们设置其为MPP=0b11,那么将一直处于机器模式...