这就是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...
RISC-V ACLINT 规范向后兼容 SiFive CLINT。 回到顶部 CLIC# spec 参见riscv-fast-interrupt/clic.adoc RISC-V 特权架构规范定义了 CSR,例如xip、xie和中断行为。为这种 RISC-V 中断方案提供处理器间中断和定时器功能的简单中断控制器被称为 CLINT。当xtvec.mode 设置为00或01时,本规范将使用术语 CLINT 模式。
描述:扩展状态位,用于指示用户扩展寄存器的状态。 MPRV (Modify Privilege) 位: 位置:位 17 描述:修改特权位,用于指示内存访问的特权级别。 SUM (Supervisor User Memory Access) 位: 位置:位 18 描述:监督模式用户内存访问位,允许监督模式访问用户模式的内存。 MXR (Make eXecutable Readable) 位: 位置:位 19 ...
1. All operations are executed at machine mode privilege level, except that MPRV in mstatus may be ignored according to mprven. 2. All interrupts (including NMI) are masked. 3. Exceptions don’t update any registers. That includes cause, epc, tval, dpc, and mstatus. They do end execu...
当机器的先前特权级别为特权或用户(mstatus.MPP=0x1或mstatus.MPP=0x0)且修改特权位被设置(mstatus.MPRV=1)时,PMP检查也会在加载和存储操作中进行。对于虚拟地址转换,PMP检查也适用于特权模式下的页表访问。 The U7 PMP supports 8 regions with a minimum region size of 4096 bytes. ...
(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的...
MPRV 机制被设想用来提升M-mode 程序仿真缺失硬件特性时的效率,例 如非对齐的load 和store 。 3.1.8 mstatus 寄存器中的扩展上下文状况 (译者注:为了从汉字区别,下文用状况(status )和状态(state )分别说明) 支持丰富的扩展,是 RISC-V 的一个主要目标,因此我们定义了一个标准接口,允许不 改变特权模式代码,...
与FS域类似,XS除了用于上述功能之外还用于操作系统在进行上下文切换时的指引信息,感兴趣的用户请参见RISC-V“特权架构文档版本1.11”原文。7.4.14. mstatus的MPRV域mstatus寄存器中的MPRV域用于控制在Machine Mode下存储器的数据读写(Load和Store)操作是否被当作User Mode下的操作来进行PMP的保护。
MPRV,MXR,SUM:访存控制相关位。mstatus寄存器Supervisor模式下的CSR寄存器作用sscratchSupervisorScratch。保存监管模式的栈顶指针,这一点在离开机器模式进入低特权级模式(如用户模式)时非常重要,因为一旦在低特权级模式发生异常,将可能会回到监管模式处理(假设已通过异常授权),这时监管模式需要用自己的栈保存程序执行的...