RISC-V 处理器在复位后自动进入机器模式(M),因此,机器模式是所有RISC-V处理器唯一必须要实现的特权模式。此模式下运行的程序权限最高,支持处理器的所有指令,可以访问处理器的全部资源。用户模式(U)是可选的,权限最低。此模型下仅可访问限定的资源。管理员模式(S)也是可选的,旨在支持 Linux、Windows ...
mstatus/ sstatus / ustatus 在中断使能方面,MIE、SIE、UIE分别提供了 machine mode 、supervisor mode 、user mode 的全局中断使能位,若一个 hart 运行在特权级别x下,当xIE = 1时中断全局打开,反之则关闭。在 hart 于x运行时,无论wIE为何值,低权限中断w < x总是无效的,而无论yIE为何值,高权限中断y >...
status.SPIE的值被复制到status.SIE pc设置为sepc的值 此时,控制权交给了软件 中断延迟 U54内核的中断延迟为四个 external_source_for_core_N_clock 周期,计算方式是从向 hart 发送中断信号到处理程序的第一个指令获取所需的周期数。 通过PLIC 路由的全局中断会导致三个时钟周期的额外延迟,其中 PLIC 由时钟计时。
为了加强对操作系统 和信息安全的支持,RISC-V 替 HART 定义了 3 种工作模式(见图34):机器模式、 超级用户模式(Supervisor Mode,S-Mode)和普通用户模式(User Mode,U-Mode)。 每种模式分别对应一个特权层级(Privilege Levels)。其中机器模式的特权层级最高, 而普通用户模式的特权层级最低。在高特权层级运行的...
在后文中,我们可能会有xstatus`xtvec` 等的写法,其中 x 表示特权级 m 或者 s 或者 u(u 仅仅在实现了用户态中断的 CPU 上存在)。 mcause# 如果陷阱是由中断引起的,则 mcause 寄存器中的“Interrupt”位被设置。Exception Code 字段用于标识最后一个异常或中断的代码。下表列出了可能的机器级异常代码。异常...
通过设置 mstatus 中的 MIE 位来启用中断。在写入 mstatus.MIE=1 之前,建议先在 mie 中开启中断。 Machine Trap Vector (mtvec) mtvec 寄存器有两个主要功能:定义陷阱向量的基地址,以及设置 U54内核处理中断的模式。对于 Direct 和 Vectored 模式,中断处理模式在 mtvec 寄存器的 MODE 字段中定义。mtvec 寄存...
U-mode往往是普通用户或应用使用的模式,是在不可信任运行环境下的特权模式。hart通常在U-mode下运行应用程序代码,直到遇到某些trap(如supervisor call或者timer interrupt)而迫使其切换至trap handler,交给更高特权模式处理异常与安全中断。 2.3 RISC-V 架构的异常与中断 ...
以RISC-V Linux为例,Linux应用程序处于U模式,Linux内核/uboot处于S模式,M模式则是OpenSBI。M模式拥有最高访问权限,Linux内核如果要访问CSR寄存器,则必须由S模式切换到M模式,由OpenSBI读取CSR寄存器,然后将数据返回给内核。 M模式是必须要选择的,RISC-V的裸机代码都运行在M模式下。
机器模式状态寄存器mstatus (Machine Sauns Register) 下文将分别予以详述。 1.1 从mtvec定义的PC地址开始执行 RISCY架构规定,在处理器的程序执行过程中,一旦遇到异常发生, 则终止当前的程序流,处理器被强行跳转到个新的PC地址。该过程在RISCV的架构中定义为“陷阱(trap)”,宇面含义为“跳入陷阱”,更加准确的意泽...