1. RSIC-V工作模式
任何情况下,一个RISCV处理器线程必须运行在某个模式下,而区分这些工作模式的原因是为不同的软件栈部件提供保护。当一个线程试图执行当前模式下不允许的操作,将会产生异常。
- 三种工作模式
- 机器模式(M)
必选项,另外两种可选;
通常运行bootloader或者firmware等 - 监督模式(S)
若支持该模式,另外两种须均支持;
该模式下可以运行linux等OS kernel - 用户模式(U)
此类系统实现用户和机器模式的区分,从而实现资源保护;
可以运行应用程序
- 上电时工作模式切换
上电后(reset),RISC-V架构规定,特权模式复位称为机器模式,机器模式可以通过指令mret转换称为用户模式。
PC复位值由硬件自定义。
2. M模式
1 相关指令
- mret
当异常程序处理完成后,最终要从异常服务程序中退出,并返回主程序。riscv中定义了一组退出指令mret,sret,和uret,对于机器模式,对应mret。注意高等级的特权模式可以执行低等级的xRET指令,即M模式可以执行MRET,SRET和URET
在机器模式下退出异常时候,软件必须使用mret。riscv架构规定,处理器执行完mret指令后,硬件行为如下:
- 停止执行当前程序流,转而从csr寄存器mepc定义的pc地址开始执行。
- 执行mret指令不仅会让处理器跳转到上述的pc地址开始执行,还会让硬件同时更新csr寄存器机器模式状态寄存器mstatus。mstatus寄存器MIE域被更新为当前MPIE的值。MPIE 域的值则更新为1。
2 CSR寄存器
- mcause
如果硬件实现需要区分不同的复位类型,那么mcause寄存器的值需要被复位成硬件实现自定义的值;如果硬件实现不需要区分不同的复位类型,那么mcause寄存器的值应复位成0值。
3。
3. S模式
1 相关指令
- SRET
S模式下使用sret指令返回原先指令的下一条指令
2 CSR寄存器
- sstatus
- SIE:使能或失能S
- 模式下CPU的所有中断
4. 异常
同步异常
中断
5. 中断
硬件机制不支持中断嵌套,可以用软件实现中断嵌套
1 外部中断
计时器中断:
软件中断:
调试中断
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之家整理,本文链接:https://www.bmabk.com/index.php/post/82500.html