跳转到异常处理程序:处理器将PC值设置为mtvec寄存器中指定的地址,开始执行异常处理程序。 异常处理:在异常处理程序中,根据mcause寄存器中的异常原因进行相应的处理。 恢复现场:处理完成后,根据需要修改mepc寄存器的值,以指定返回时的PC值。 返回主程序:执行mret指令,恢复全局中断使能位(MIE),并将PC值设置为mepc寄存...
异常指令的 PC 被保存在 mepc 中,PC 被设置为 mtvec。(对于同步异常,mepc 指向导致异常的指令;对于中断,它指向中断处理后应该恢复执行的位置。) 根据异常来源设置 mcause(如图 10.3 所示),并将 mtval 设置为出错的地址或 者其它适用于特定异常的信息字。 把控制状态寄存器 mstatus 中的 MIE 位置零以禁用中...
将异常的原因保存到mcause寄存器中。 将产生异常的虚拟地址写入mtval(以前叫做mbadaddr)中。 将mtvec寄存器中的值加载到PC上,即跳转到异常处理程序入口地址处。 软件 当硬件自动将mtvec的值设置到PC上时,即进入到了异常处理程序,之后由软件来完成后续的异常处理。 保存异常上下文到栈中。异常上下文指的是所有通用...
异常指令的PC被保存在mepc中,PC被设置为mtvec。 对于同步异常:pepc指向导致异常的指令。 对于中断:它指向中断处理后应该恢复执行的位置。(这个由软件设置) 根据异常/中断源来设置mcause寄存器。 将mtval设置为出错的地址或者其他适用于特定异常的信息。
mtvec记录的是异常处理函数的起始地址。BASE 字段中的值必须始终对齐于 4 字节边界,并且 MODE 设置可能会对 BASE 字段中的值施加额外的对齐约束。 MODE 目前可以取两种值: 如果MODE 为 0,那么所有的异常处理都有同一个入口地址,否则的话异常处理的入口地址是 BASE+4*CAUSE。(cause 记录在 xcause 中) ...
mtvec(Machine Trap-Vector Base-Address Register) 机器模式下陷阱处理程序的入口地址。 它决定了当处理器在机器模式下遇到异常或中断时,控制权将转移到哪里 MODE 字段 位置:位 1:0 描述:模式字段,决定陷阱向量的处理模式。 00:直接模式(Direct Mode)
mtvec(Machine Trap-Vector Base-Address Register): 机器模式陷阱向量基地址寄存器,用于存储陷阱处理程序的入口地址 mepc(Machine Exception Program Counter): 机器模式异常程序计数器,用于存储发生异常时的程序计数器值。 mcause(Machine Cause Register):
mtvec Machine Trap-Vector Base-Address Register (mtvec)机器模式异常入口基地址寄存器。当程序发生异常时,处理器将会切换到 M-mode 并跳转到 mtvec 寄存器内的地址开始执行,并处理异常。 mcause Machine Cause Register (mcause)机器模式下异常原因寄存器。当异常发生时,mcause 寄存器的对应位将会被置 1,用于表...
mtvec 寄存器有两个主要功能:定义陷阱向量的基地址,以及设置 U54内核处理中断的模式。对于 Direct 和 Vectored 模式,中断处理模式在 mtvec 寄存器的 MODE 字段中定义。mtvec 寄存器在表 86 中描述,mtvec.MODE 字段在表 87 中描述。 Mode Direct 在直接模式下操作时,所有中断和异常都会捕获到 mtvec.BASE 地址。