中斷控制和狀態寄存器
Machine Status Register (mstatus)
mstatus 寄存器跟蹤并控制 hart 的當前操作狀態,包括是否啟用中斷。
通過設置 mstatus 中的 MIE 位來啟用中斷。在寫入 mstatus.MIE=1 之前,建議先在 mie 中開啟中斷。
Machine Trap Vector (mtvec)
mtvec 寄存器有兩個主要功能:定義陷阱向量的基地址,以及設置 U54內核處理中斷的模式。對于 Direct 和 Vectored模式,中斷處理模式在 mtvec 寄存器的 MODE 字段中定義。mtvec 寄存器在表 86 中描述,mtvec.MODE 字段在表 87 中描述。
Mode Direct
在直接模式下操作時,所有中斷和異常都會捕獲到 mtvec.BASE 地址。在陷阱處理程序內部,軟件必須讀取 mcause寄存器以確定觸發陷阱的原因。
在直接模式下操作時,BASE 必須是 4 字節對齊的。
Mode Vectored
在向量模式下運行時,中斷將 pc 設置為 mtvec.BASE + 4 ×異常代碼(mcause.EXCCODE)。例如,如果發生機器定時器中斷,則將 pc 設置為 mtvec.BASE +0x1C。通常,陷阱向量表填充有跳轉指令,以將控制轉移到特定于中斷的陷阱處理程序。
在向量中斷模式下,BASE 必須是 256 字節對齊的。
所有機器外部中斷(全局中斷)都映射到異常代碼 11。因此,當啟用中斷向量時,pc 設置為任何全局中斷的地址 mtvec.BASE +0x2C。
Machine Interrupt Enable (mie)
通過設置 mie 寄存器中的相應位來啟用各個中斷。
Machine Interrupt Pending (mip)
機器中斷掛起 (mip) 寄存器指示當前哪些中斷處于掛起狀態。
-
寄存器
+關注
關注
31文章
5336瀏覽量
120232 -
內核
+關注
關注
3文章
1372瀏覽量
40280 -
中斷
+關注
關注
5文章
898瀏覽量
41471 -
RISC
+關注
關注
6文章
462瀏覽量
83711 -
sifive
+關注
關注
0文章
36瀏覽量
9458
發布評論請先 登錄
相關推薦
評論