RISC-V PMP功能的整理
2024-09-02 本文已影响0人
jin陵城外
RISC-V的PMP功能主要是用来限制某快区域内存的读、写、执行权限,相关策略如下:
1. 只有在M模式下才能进行PMP读、写、执行权限的设置,U和S模式下不行;
2. 在未设置锁定位的情况下,PMP读、写、执行权限的设置只在U和S模式下生效,M模式下不受影响;
3. 在设置锁定位的情况下,PMP读、写、执行权限的设置在M模式也生效;
4. 在M模式下,可以通过设置mstatus.mprv和mstatus.mpp域从而让CPU当作U和S模式处理,故此时PMP读、写、执行权限也会生效;
5. 在M模式下,未设置PMP表项的内存区域默认可读可写可执行,在U和S模式下,未设置PMP表项的内存区域默认不可访问(通过mstatus.mprv和mstatus.mpp域设置的当作U和S模式处理);
6. 锁定位设置之后,不能再修改,除非复位;
7. NAPOT模式地址匹配的内存大小需要是2的幂次方,同时最小值为8字节;
8. NA4模式地址匹配的内存大小固定为4字节,属于NAPOT的子集;
9. TOR模式需要使用2组PMP entry才能设置一块内存区域的PMP权限;
10. 内存地址需要右移2位再设置到PMP addr寄存器中;
11. 一个PMP cfg寄存器(占32/64位)中存在多组PMP的cfg设置,每组占8位;