通常来说,mret 指令用于从 NMI 处理模式下退出至正常机器模式。 如果明确希望从 Machine Mode 退出至 User Mode(或者正常机器模式),那么需要软件先修改 mstatus 的 MPP 域的值,然后执行 mret 指令达到模式切换的效果。 注意: 如果在 User Mode 下直接执行 mret 指令会产生非法指令(Illegal Instruction)异常。 User...
RISC-V的机器子模式 除了上述的三种特权模式,RISC-V还支持机器子模式(Machine Sub-Mode)。机器子模式用于进一步细分机器模式的行为。 正常的机器模式:Machine Sub-Mode为0x00。 中断处理模式:Machine Sub-Mode为0x01。 异常处理模式:Machine Sub-Mode为0x02。 NMI处理模式:Machine Sub-Mode为0x03。 模式切换机制 ...
mepc(Machine Exception PC)它指向发生异常/中断的指令。 mcause(Machine Exception Cause)它指示发生异常/中断的原因(类型)。 mie(Machine Interrupt Enable)它指出处理器当前屏蔽了哪些中断。 mip(Machine Interrupt Pending)它列出目前正准备处理的中断(已经到来的中断)。 mtval(Machine Trap Value)它保存了陷入(tr...
RISC-V 架构不仅短小精悍,其不同的部分还能以模块化的方式组成在一起,从而试图通过一套统一的架构满足各种不同的应用场景。用户能够灵活选择不同的模块组合,来实现自己定制化设备的需要,比如针对小面积低功耗嵌入式场景,用户可以选择RV32IC 组合的指令集,仅使用Machine Mode(机器模式);而高性能应用操作系统场景则可以...
machine mode处理函数分析异常原因,判断为时钟中断,为了将时钟中断委托给supervisor mode,于是将mip[stip]置位,并且为了防止在supervisor mode处理时钟中断时继续触发machine mode时钟中断,于是同时将mie[mtie]清零。 is_a_trap: li t0,0x80/*time trap so enable mip/disable mie*/csrc mie, t0 #disable mie tim...
M模式:Machine,机器模式 以RISC-V Linux为例,Linux应用程序处于U模式,Linux内核/uboot处于S模式,M...
M-mode(Machine Mode) :ZSBL、FSBL、BBL S-mode(Supervisor Mode):OS、U-Boot U-mode(User Mode):User 启动流程 D1芯片从上电开始从0x0000 0000启动一个BROM(Boot ROM),这是固化在芯片ROM中的一段引导程序,开始进入bootloader下阶段,否则进入fel模式。BROM是Boot Loader的最初阶段,Zeroth Stage Boot Loader(...
用户能够灵活选择不同的模块组合,来实现自己定制化设备的需要,比如针对于小面积低功耗嵌入式场景,用户可以选择RV32IC组合的指令集,仅使用Machine Mode(机器模式);而高性能应用操作系统场景则可以选择譬如RV32IMFDC的指令集,使用Machine Mode(机器模式)与User Mode(用户模式)两种模式。
Machine Mode:机器模式,简称M Mode。 Supervisor Mode:监督模式,简称S Mode。 User Mode:用户模式,简称U Mode。 RISC-V架构定义M Mode为必选模式,另外两种为可选模式。通过不同的模式组合可以实现不同的系统。 RISC-V架构也支持几种不同的存储器地址管理机制,包括对于物理地址和虚拟地址的管理机制,使得RISC-V架...