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