機器模式是最高權限級別,默認情況下在設備的整個內存映射中具有讀取、寫入和執(zhí)行權限。但是,機器模式以下的特權級別對設備內存映射的任何區(qū)域沒有讀、寫或執(zhí)行權限,除非 PMP 特別允許。對于較低的權限級別,PMP 可以授予對設備內存映射的特定區(qū)域的權限,但它也可以在機器模式下撤銷權限。
當進行相應編程時,PMP 將在 hart 以管理員或用戶模式運行時檢查每次訪問。對于機器模式,除非在特定區(qū)域的 pmpcfgY CSR 中設置鎖定位 (L),否則不會發(fā)生 PMP 檢查。
當機器先前的權限級別是管理員或用戶(mstatus.MPP=0x1 或 mstatus.MPP=0x0)并且設置了修改權限位時,PMP 檢查也會發(fā)生在加載和存儲上 (mstatus.MPRV=1)。對于虛擬地址轉換,PMP 檢查也適用于管理模式下的頁表訪問。
U54內核 PMP 支持 8 個區(qū)域,最小區(qū)域大小為 4 字節(jié)。
本期介紹 RISC?V 架構中的 PMP 概念如何應用于 U54。有關 PMP 的更多信息,請參閱 RISC?V 指令集手冊,第 II 卷:特權架構,版本 1.10。
PMP 功能描述U54 PMP 單元有 8 個區(qū)域,最小粒度為 4 個字節(jié)。對每個區(qū)域的訪問由 8 位 pmpXcfg 字段和相應的 pmpaddrX 寄存器控制。重疊區(qū)域 允許,其中較低編號的 pmpXcfg 和 pmpaddrX 寄存器優(yōu)先于較高編號的區(qū)域。U54 PMP 單元實現(xiàn)架構定義的 pmpcfgY CSR pmpcfg0,支持 8 個區(qū)域。
pmpcfg2 已實現(xiàn),但硬連線為零。訪問 pmpcfg1 或 pmpcfg3 會導致非法指令異常。
PMP 寄存器只能在 M 模式下編程。通常,PMP 單元強制執(zhí)行對 S 模式和 U 模式訪問的許可。
PMP 區(qū)域鎖定PMP 允許區(qū)域鎖定,一旦區(qū)域被鎖定,對配置和地址寄存器的進一步寫入將被忽略。鎖定的 PMP 條目只能通過系統(tǒng)重置解鎖。可以通過設置 pmpXcfg 寄存器中的 L 位來鎖定一個區(qū)域。
除了鎖定 PMP 條目外,L 位指示是否對機器模式訪問強制執(zhí)行 R/W/X 權限。當 L 位清零時,R/W/X 權限適用于 S 模式和 U 模式。
-
寄存器
+關注
關注
31文章
5363瀏覽量
121172 -
內核
+關注
關注
3文章
1382瀏覽量
40425 -
PMP
+關注
關注
0文章
45瀏覽量
18187 -
RISC
+關注
關注
6文章
465瀏覽量
83873 -
sifive
+關注
關注
0文章
36瀏覽量
9473
發(fā)布評論請先 登錄
相關推薦
評論