这就是RISC-V架构的PMP(Phsical Memory Protection,物理内存保护机制)。 PMP 检查一般用于 hart 在监管者模式或用户模式下的所有访问;或者在 mstatus.MPRV = 1 时的 load 和 store 等情况。一旦触发 PMP 保护,RISC-V 要求产生精确中断并处理。 PMP 允许机器模式指定用户模式下可以访问的内存地址。PMP entry 由...
mstatus.mprv(modify PRiVilege)用于修改load和store执行时带有的权级模式,mprv=0时load和store以hart的当前权级模式执行,否则mprv=1时,load和store以mstatus.mpp中的权级执行。注意mprv不影响取指。也注意下段引用: An MRET or SRET instruction that changes the privilege mode to a mode less privileged th...
执行 xRET 指令时,将 xIE 设置为 xPIE;将 xPIE 设置为 1;假设 xPP 值为 y,则将特权模式更改为 y;将 xPP 设置为 U(如果不支持用户模式,则为 M)。如果 xPP≠M,则 xRET 还会设置 MPRV=0。 mtvec# mtvec记录的是异常处理函数的起始地址。BASE 字段中的值必须始终对齐于 4 字节边界,并且 MODE 设...
描述:扩展状态位,用于指示用户扩展寄存器的状态。 MPRV (Modify Privilege) 位: 位置:位 17 描述:修改特权位,用于指示内存访问的特权级别。 SUM (Supervisor User Memory Access) 位: 位置:位 18 描述:监督模式用户内存访问位,允许监督模式访问用户模式的内存。 MXR (Make eXecutable Readable) 位: 位置:位 19 ...
(3<<11);mstatus|=1<<11;// drop mstatus.mprv protectionasm!("csrw mstatus, {}",in(reg)mstatus);// compiler helps us save/restore caller-saved registersdevintr();// restore mstatusmstatus=mstatus&!(3<<11);mstatus|=mpp<<11;mstatus-=1<<17;asm!("csrw mstatus, {}",in(...
PMP checks also occur on loads and stores when the machine previous privilege level is supervisor or user (mstatus.MPP=0x1 or mstatus.MPP=0x0), and the Modify Privilege bit is set (mstatus.MPRV=1). For virtual address translation, PMP checks are also applied to page table accesses in...
(index,pmp_cfgx);}注意:由于一个pmpcfgx中包含4组pmpxcfg(pmp[i+3]cfg/pmp[i+2]cfg/pmp[i+1]cfg/pmp[i]cfg),所以传入的entry_index需要右移2bit,同时在设存器的值,再将pmpxcfg的值改写到entry_index对应的pmpcfgx寄存器的3.在机器模式下,可以通过把mstatus.mprv寄存器设置为1,把mstatus.mpp的...
= M, xRET also sets MPRV=0. Themretandsretinstructions were explained and demonstrated in ourpost on privilege levels, as were thexPP(x Previous Privilege) bits. As a recap: thexPPbits (two bits wide) determine the next privilege level when returning from machine (mret) or supervisor (...
首先判断mstatus.MPRV域的值是否为1: 如果mstatus.MPRV域的值为1,并且mstatus.MPP域的值表示User Mode,则PMP用User Mode下的权限检测规则对存储器的数据读写(Load和Store)操作做权限检测,并根据表项配置的R/W属性进行权限确认,如果违反了权限,则触发异常。 否则继续判断表项是否被锁定: 如果表项没有被锁定,...
MPRV 机制被设想用来提升M-mode 程序仿真缺失硬件特性时的效率,例 如非对齐的load 和store 。 3.1.8 mstatus 寄存器中的扩展上下文状况 (译者注:为了从汉字区别,下文用状况(status )和状态(state )分别说明) 支持丰富的扩展,是 RISC-V 的一个主要目标,因此我们定义了一个标准接口,允许不 改变特权模式代码,...