机器模式是最高权限级别,默认情况下在设备的整个内存映射中具有读取、写入和执行权限。但是,机器模式以下的特权级别对设备内存映射的任何区域没有读、写或执行权限,除非 PMP 特别允许。对于较低的权限级别,PMP 可以授予对设备内存映射的特定区域的权限,但它也可以在机器模式下撤销权限。
当进行相应编程时,PMP 将在 hart 以管理员或用户模式运行时检查每次访问。对于机器模式,除非在特定区域的 pmpcfgY CSR 中设置锁定位 (L),否则不会发生 PMP 检查。
当机器先前的权限级别是管理员或用户(mstatus.MPP=0x1 或 mstatus.MPP=0x0)并且设置了修改权限位时,PMP 检查也会发生在加载和存储上 (mstatus.MPRV=1)。对于虚拟地址转换,PMP 检查也适用于管理模式下的页表访问。
U54内核 PMP 支持 8 个区域,最小区域大小为 4 字节。
本期介绍 RISC‑V 架构中的 PMP 概念如何应用于 U54。有关 PMP 的更多信息,请参阅 RISC‑V 指令集手册,第 II 卷:特权架构,版本 1.10。
PMP 功能描述U54 PMP 单元有 8 个区域,最小粒度为 4 个字节。对每个区域的访问由 8 位 pmpXcfg 字段和相应的 pmpaddrX 寄存器控制。重叠区域 允许,其中较低编号的 pmpXcfg 和 pmpaddrX 寄存器优先于较高编号的区域。U54 PMP 单元实现架构定义的 pmpcfgY CSR pmpcfg0,支持 8 个区域。
pmpcfg2 已实现,但硬连线为零。访问 pmpcfg1 或 pmpcfg3 会导致非法指令异常。
PMP 寄存器只能在 M 模式下编程。通常,PMP 单元强制执行对 S 模式和 U 模式访问的许可。
PMP 区域锁定PMP 允许区域锁定,一旦区域被锁定,对配置和地址寄存器的进一步写入将被忽略。锁定的 PMP 条目只能通过系统重置解锁。可以通过设置 pmpXcfg 寄存器中的 L 位来锁定一个区域。
除了锁定 PMP 条目外,L 位指示是否对机器模式访问强制执行 R/W/X 权限。当 L 位清零时,R/W/X 权限适用于 S 模式和 U 模式。
-
寄存器
+关注
关注
31文章
5284浏览量
119770 -
内核
+关注
关注
3文章
1359浏览量
40179 -
PMP
+关注
关注
0文章
45浏览量
18125 -
RISC
+关注
关注
6文章
461浏览量
83634 -
sifive
+关注
关注
0文章
35浏览量
9449
发布评论请先 登录
相关推荐
评论