中斷控制和狀態(tài)寄存器
Machine Status Register (mstatus)
mstatus 寄存器跟蹤并控制 hart 的當(dāng)前操作狀態(tài),包括是否啟用中斷。
通過設(shè)置 mstatus 中的 MIE 位來啟用中斷。在寫入 mstatus.MIE=1 之前,建議先在 mie 中開啟中斷。
Machine Trap Vector (mtvec)
mtvec 寄存器有兩個主要功能:定義陷阱向量的基地址,以及設(shè)置 U54內(nèi)核處理中斷的模式。對于 Direct 和 Vectored模式,中斷處理模式在 mtvec 寄存器的 MODE 字段中定義。mtvec 寄存器在表 86 中描述,mtvec.MODE 字段在表 87 中描述。
Mode Direct
在直接模式下操作時,所有中斷和異常都會捕獲到 mtvec.BASE 地址。在陷阱處理程序內(nèi)部,軟件必須讀取 mcause寄存器以確定觸發(fā)陷阱的原因。
在直接模式下操作時,BASE 必須是 4 字節(jié)對齊的。
Mode Vectored
在向量模式下運行時,中斷將 pc 設(shè)置為 mtvec.BASE + 4 ×異常代碼(mcause.EXCCODE)。例如,如果發(fā)生機器定時器中斷,則將 pc 設(shè)置為 mtvec.BASE +0x1C。通常,陷阱向量表填充有跳轉(zhuǎn)指令,以將控制轉(zhuǎn)移到特定于中斷的陷阱處理程序。
在向量中斷模式下,BASE 必須是 256 字節(jié)對齊的。
所有機器外部中斷(全局中斷)都映射到異常代碼 11。因此,當(dāng)啟用中斷向量時,pc 設(shè)置為任何全局中斷的地址 mtvec.BASE +0x2C。
Machine Interrupt Enable (mie)
通過設(shè)置 mie 寄存器中的相應(yīng)位來啟用各個中斷。
Machine Interrupt Pending (mip)
機器中斷掛起 (mip) 寄存器指示當(dāng)前哪些中斷處于掛起狀態(tài)。
-
寄存器
+關(guān)注
關(guān)注
31文章
5434瀏覽量
124513 -
內(nèi)核
+關(guān)注
關(guān)注
3文章
1416瀏覽量
41442 -
中斷
+關(guān)注
關(guān)注
5文章
905瀏覽量
42807 -
RISC
+關(guān)注
關(guān)注
6文章
482瀏覽量
84997 -
sifive
+關(guān)注
關(guān)注
0文章
37瀏覽量
9608
發(fā)布評論請先 登錄
STM32串口通信相關(guān)寄存器和中斷回調(diào)函數(shù)

LIC內(nèi)核中斷掛起位和中斷使能

U54內(nèi)核PLIC中斷處理例子

U54內(nèi)核上CLINT的內(nèi)存映射

U54內(nèi)核中斷進(jìn)入和退出

U54內(nèi)核特權(quán)模式中斷介紹

評論