shell进入特权模式_我们一起学RISC-V——04-机器模式状态寄存器详解

本文详细介绍了RISC-V架构中的机器模式状态寄存器mstatus,包括其在特权模式和全局中断控制中的作用,基本ISA控制,内存特权,大小端控制,以及虚拟化支持等方面。通过对mstatus寄存器的各个字段解析,揭示了RISC-V处理器在管理模式下的工作原理和控制机制。
摘要由CSDN通过智能技术生成
422e0aad9163e2e96210ab9ecca8b4a6.png

本期内容如下:

  1. mstatus寄存器简介
  2. 特权和全局中断
  3. 基本ISA控制
  4. 内存特权
  5. 大小端控制
  6. 虚拟化支持
  7. 扩展上下文状态

鉴于RISC-V的mstatus和mstatush状态寄存器内容有些多,我这里单独用一章进行介绍。


一、mstatus寄存器简介


RISC-V机器模式状态寄存器(mstatus)是一个MXLEN位宽的可读写寄存器,该寄存器主要用于跟踪和控制Hart电路状态。RV64处理器mstatus结构参见图1,RV32处理器mstatus结构参见图2,图3mstatush仅RV32处理器支持。在S模式下的状态寄存器被命名为sstatus。

487ef26a405340af22eb3f23ac3b3976.png

图1 机器模式状态寄存器mstatus(RV64)

abd7fc0873799cfbe578a270a8c124de.png

图2 机器模式状态寄存器mstatus(RV32)

mstatush[30:4]结构和RV64的mstatus[62:36]位域结构相似,mstatush不包含SD,SXL和UXL位域。

如果处理器没有实现mstatush,每个位域将返回0。

3083517d5c8214895dbbd58731057363.png

图3 机器模式状态寄存器mstatush(RV32 only)

二、特权和全局中断


全局中断使能位MIE和SIE分别用于机器(U)模式和管理(S)模式,这些位主要用于保证当前特权模式下中断处理程序的原子性。

全局xIE位被设置在mstatus的低位,这就要是的单条CSR指令就可以实现xIE的自动置位和清空

当一个hart在x特权模式下执行,当xIE=1,全局中断将被使能,xIE=0,全局中断将被禁用。低特权模式(wx)的中断总是被使能不管在高特权模式中的yIE是如何设定的。高特权模式可以用于分离中断使能位。在交换控制权给低特权模式之前,禁用被选高优先特权模式的中断。

一个更高特权模式y可以禁用所有的中断,在交换控制权给低特权模式之前,但这是不常见的,因为他只会留下一个同步陷阱,不可屏蔽中断或者reset作为重新控制中断的手段。

为了支持嵌套Trap,每个能够响应中断的特权模式x都有一个两级堆栈,包括可中断位和特权模式。 在Trap之前,xPIE保存中断启用位活动的值,xPP保存以前的特权模式。 xPP字段只能容纳的最大特权模式x,因此MPP宽两位,SPP宽一位。 当一个Trap从特权模式y进入特权模式x时,xPIE被设置为xIE的值;xIE被设置为0;xPP被设置为y。

在较低的特权模式中,任何Trap(同步或异步)发生,Trap处理程序通常在较高的特权模式执行,在进入高特权模式时中断被禁用。 较高级别的Trap处理程序被执行时,还会返回使用堆叠的信息,或者,如果不立即返回到中断上下文,则在重新启用中断之前应当保存特权的堆栈,因此每个堆栈只能有一个

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值