RISC-V CSR寄存器
CSR是控制狀態(tài)寄存器,RISC-V中CSR寄存器,需要使用csrr、csrw、csrrw等特定指令進(jìn)行訪問(wèn)。
M模式和S模式都有自己的CSR寄存器,但是大體上相同。下面列舉一些常用的CSR。
M模式CSR寄存器
mstatus
狀態(tài)寄存器,保存了全局中斷使能狀態(tài)和其他狀態(tài),例如切換模式前,保存當(dāng)前模式。
mtvec
異常入口基地址寄存器。保存發(fā)生異常時(shí)需要跳轉(zhuǎn)的地址。
medeleg
和mideleg
medeleg是異常委托,mideleg是中斷委托。例如,在M模式下發(fā)生異常或中斷時(shí),可以通過(guò)這兩個(gè)寄存器,將中斷/異常交給S模式或者其他模式處理。
mip
和mie
mie是中斷使能寄存器,對(duì)需要使能的中斷,在對(duì)應(yīng)位使能。
mip是中斷等待寄存器,表示目前正準(zhǔn)備處理的中斷。
hpm
全稱Hardware Performance Monitor,硬件性能單元,用于性能計(jì)數(shù)。包括了兩類寄存器:mhpmcounter和mhpmevent
- mhpmcounter:性能計(jì)數(shù)器
- mhpmevent:用于配置性能事件
mcounteren
和mcountinhibit
這兩個(gè)也是hpm相關(guān)的寄存器,主要用于控制hpm的使能、計(jì)數(shù)禁止。
- mcounteren:計(jì)數(shù)器使能
- mcountinhibit:禁止計(jì)數(shù)
mscratch
用于保存M模式指向hart上下文的指針,并在進(jìn)入M模式的處理程序時(shí),和用戶寄存器交換。
mepc
發(fā)生中斷時(shí),當(dāng)前程序的PC值,保存在mepc中,中斷返回時(shí),會(huì)從mepc讀取PC值。
mcause
用于保存發(fā)生中斷或異常的情況,中斷和異常描述如下:
1代表中斷,0代表異常,每個(gè)異常/中斷都有對(duì)應(yīng)的編碼值,通過(guò)mcause的值,可以很清楚的知道發(fā)生了什么中斷或異常,特別在調(diào)試過(guò)程,mcause
發(fā)揮了很大作用。
mvtal
異常值寄存器,例如發(fā)生異常時(shí),保存出錯(cuò)的地址。
S模式CSR寄存器
S模式的CSR和M模式基本上是一樣的,只不過(guò)將第一個(gè)字母m改為了s,例如mcause
改為了scause
,mvtal
改為了svtal
。它們的功能基本相同,這里就不再贅述了。
需要注意的是,S模式除了擁有M模式相同功能的CSR外,另外還增加了一個(gè)stap
寄存器。
stap
寄存器主要是給MMU使用,stap
寄存器保存了頁(yè)表的基地址,MMU通過(guò)stap
可以找到第一級(jí)頁(yè)表,進(jìn)而找到物理地址。stap
寄存器涉及到的內(nèi)容比較多,關(guān)于stap
相關(guān)內(nèi)容,以后會(huì)詳細(xì)展開講講。
-
寄存器
+關(guān)注
關(guān)注
31文章
5250瀏覽量
119197 -
內(nèi)核
+關(guān)注
關(guān)注
3文章
1336瀏覽量
40084 -
Linux
+關(guān)注
關(guān)注
87文章
11123瀏覽量
207900 -
CSR
+關(guān)注
關(guān)注
3文章
117瀏覽量
69535 -
計(jì)數(shù)器
+關(guān)注
關(guān)注
32文章
2241瀏覽量
93970 -
RISC
+關(guān)注
關(guān)注
6文章
460瀏覽量
83566
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論