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