处理器的异常与中断——CSR

在这里插入图片描述

进入中断

1.跳转到CSR寄存器mtvec(machine Trap-Vector Base-Address Register)——可读可写——定义的PC地址开始进行
在这里插入图片描述
mode = 0. 跳转到BASE
mode = 1. 跳转到BASE + 4 * CAUSE(异常编号)

2.更新CSR寄存器mcause
在这里插入图片描述
在这里插入图片描述
3.更新CSR寄存器 mepc(机器模式异常PC寄存器 Machine Exception Program Counter,可读可写)
保存返回PC
自动更新mepc为当前遇到指令的pc值
mepc = pc+4(2),下一条尚未执行指令

4.更新CSR寄存器mtval( Machine Trap Value Register ),以反映引起当前异常的存储器访问地址或者指令编码。
存储器访问异常(断点、取指读写异常):mtval = 存储器访问地址
非法指令:mtval = 非法指令编码

5.更新CSR寄存器mstatus (Machine Status register)
在这里插入图片描述
MIE = 1 : machine mode 所有中断都打开,进入异常之后MIE = 0,由此可知RISCV结构不支持硬件中断嵌套,可进行软件中断嵌套
MIE = 0 : machine mode 所有中断关闭
MPIE = 异常发生前的MIE,作用是异常结束之后可以恢复之前MIE
MPP = 异常发生前的模式,如果只支持机器模式,则===11

6.更新CSR寄存器mie(Machine Interrupt Enable Register,可读可写)——该寄存器用来精确的控制中断的屏蔽
在这里插入图片描述
MEIE 域控制机器模式(Machine Mode )下外部中断( External Interrupt )的屏蔽。
MTIE 控制机器模式( Machine Mode )下计时器中断( Timer Interrupt 屏蔽。
MSIE 域控制机器模式(Machine Mode )下软件中断( So ware Interrupt )的屏蔽。
软件可以通过写 mie 寄存器中的值达到屏蔽某些中断的效果。假设 MTIE 域为被设置成 0,则意味着将计时器中断屏蔽, 处理器将无法响应计时器中断

7.更新mip(Machine Interrupt Pending Registers,可读可写)——用于查询中断的等待状态
在这里插入图片描述
MEIP 域反映机器模式(Machine Mode )下的外部中断的等待( Pending )状态,若MEIP = 1,则表示当前有外部中断正在等待(Pending)。
——即使mie中MEIE为0,MEIP仍可为1

执行异常(异常服务程序)

进入异常之后,从mtvec的pc执行,根据cause编号,进入不同 异常服务子程序。

退出异常

相关指令(Trap Return Instruction):MRET,SRET,URET

1.pc = mepc
2.mstatus.MIE = MPIE
3.mstatus.MPIE = 1

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值