PMP 配置
PMP 寄存器只能在機(jī)器模式下編程。pmpaddrX 寄存器應(yīng)首先用受保護(hù)區(qū)域的基地址編程,右移兩位。然后,應(yīng)該使用正確配置的 64 位值對pmpcfgY 寄存器進(jìn)行編程,其中包含每個正確對齊的 8 位 pmpXcfg 字段。未使用的字段可以簡單地寫入 0,標(biāo)記它們未使用。
PMP 配置例子
以下示例顯示了僅機(jī)器模式的配置,其中 PMP 權(quán)限應(yīng)用于三個感興趣的區(qū)域,第四個區(qū)域覆蓋剩余的內(nèi)存映射?;叵胍幌?,較低編號的 pmpXcfg 和pmpaddrX 寄存器優(yōu)先于較高編號的區(qū)域。該規(guī)則允許更高編號的 PMP寄存器全面覆蓋整個內(nèi)存映射,同時允許編號較低的區(qū)域?qū)?quán)限應(yīng)用于特定的感興趣區(qū)域。以下示例顯示基地址 0x0 處的 64 KB 閃存區(qū)域、基地址0x2000_0000 處的 32 KB RAM 區(qū)域以及基地址 base 0x3000_0000 處的 4 KB外設(shè)區(qū)域。內(nèi)存映射的其余部分是保留空間。
PMP 訪問場景
L、R、W 和 X 位僅在訪問的所有字節(jié)都被該 PMP 條目覆蓋時確定訪問是否成功。例如,如果 PMP 條目配置為匹配四字節(jié)范圍0xC–0xF,那么對 0x8–0xF 范圍的 8 字節(jié)訪問將失敗,假設(shè) PMP 條目是與這些地址匹配的最高優(yōu)先級條目。
在鎖定位清零 (L=0) 的機(jī)器模式下運(yùn)行時,如果 PMP 條目與訪問的所有字節(jié)匹配,則訪問成功。如果在機(jī)器模式下設(shè)置了鎖定位(L=1),則訪問取決于為該區(qū)域設(shè)置的權(quán)限。同樣,在管理員模式或用戶模式下,訪問權(quán)限取決于為該區(qū)域設(shè)置的權(quán)限。
失敗的讀取或?qū)懭朐L問會生成加載或存儲訪問異常,并且指令訪問錯誤會在失敗的指令獲取時發(fā)生。當(dāng)嘗試從沒有執(zhí)行權(quán)限的區(qū)域執(zhí)行時發(fā)生異常時,錯誤發(fā)生在獲取而不是分支上,因此mepc CSR 將反映目標(biāo)保護(hù)區(qū)的值,而不是分支的地址。
一條指令可能產(chǎn)生多個訪問,這可能不是相互原子的。如果一條指令產(chǎn)生的至少一次訪問失敗,則將發(fā)生異常。一條指令的其他訪問可能會成功,但會產(chǎn)生明顯的副作用。例如,對虛擬內(nèi)存的引用可以分解為多個訪問。
在某些實(shí)現(xiàn)中,未對齊的加載、存儲和指令提取也可能被分解為多個訪問,其中一些可能在訪問異常發(fā)生之前成功。特別是,通過 PMP檢查的未對齊存儲的一部分可能變得可見,即使另一部分未通過 PMP 檢查。對于比 XLEN 位寬的浮點(diǎn)存儲(例如,RV32D 中的 FSD指令),即使存儲地址自然對齊。
-
內(nèi)核
+關(guān)注
關(guān)注
3文章
1416瀏覽量
41414 -
PMP
+關(guān)注
關(guān)注
0文章
45瀏覽量
18432 -
RISC
+關(guān)注
關(guān)注
6文章
481瀏覽量
84966 -
配置
+關(guān)注
關(guān)注
1文章
191瀏覽量
18898 -
sifive
+關(guān)注
關(guān)注
0文章
37瀏覽量
9606
發(fā)布評論請先 登錄
華為支付-(可選)特定場景配置操作
配置Nginx訪問日志
InfiniBand和遠(yuǎn)程直接訪問是什么,如何進(jìn)行配置
OpenHarmony上配置雙網(wǎng)卡案例
PMP是什么 PMP功能描述
PMP物理內(nèi)存保護(hù)介紹
什么是ACL訪問控制列表

評論