特權(quán)模式中斷
U54內(nèi)核支持有選擇地將中斷和異常定向到S模式。
該功能由中斷和異常委托CSR處理:mideleg和medeleg。S模式中斷和異??梢酝ㄟ^stvec、sip、sie 和 scause 管理。
在M模式下,軟件還可以直接寫入SIP寄存器,從而有效地向S模式發(fā)送中斷。這對(duì)于定時(shí)器和軟件中斷特別有用,因?yàn)榭赡苄枰贛模式和S模式下處理這些中斷。
Delegation Registers (mideleg and medeleg)
默認(rèn)情況下,所有的trap都在M模式下處理。M模式下軟件可以通過CSR 有選擇地將中斷和異常委托給S模式。具體的映射如表 92 和表 93 。
注意,本地中斷可以委托給M模式。
Supervisor Status Register (sstatus)
與M模式類似,S模式有一個(gè)寄存器,專門用于跟蹤 hart 的當(dāng)前狀態(tài),稱為 sstatus。sstatus 實(shí)際上是 mstatus的受限視圖,因?yàn)閷?duì) sstatus 所做的更改反映在 mstatus 中。
通過在 sstatus 中設(shè)置 SIE 位并在 sie 寄存器中啟用所需的單個(gè)中斷來啟用中斷。
Supervisor Interrupt Enable Register (sie)
通過在 sie 寄存器中設(shè)置適當(dāng)?shù)奈粊韱⒂霉芾韱T中斷。
Supervisor Interrupt Pending (sip)
S模式中斷掛起 (sip) 寄存器指示當(dāng)前哪些中斷掛起。
Supervisor Cause Register (scause)
當(dāng)S模式下捕獲陷阱時(shí),將導(dǎo)致陷阱的事件的代碼寫入 cause。當(dāng)導(dǎo)致陷阱的事件是中斷時(shí),最高有效位 scause 設(shè)置為1,最低有效位表示中斷號(hào),使用與 sip 中的位置相同的編碼。例如,S模式定時(shí)器中斷導(dǎo)致 cause 被設(shè)置為0x8000_0000_0000_0005。
scause 也用于指示同步異常的原因,在這種情況下,scause 的最高有效位設(shè)置為 0。有關(guān)同步異常代碼的列表,請(qǐng)參見表 98。
Supervisor Trap Vector (stvec)
默認(rèn)情況下,所有中斷都會(huì)捕獲到 stvec 寄存器中定義的單個(gè)地址。由中斷處理程序讀取原因并做出相應(yīng)的反應(yīng)。RISC?V 和 U54內(nèi)核還支持選擇性地啟用中斷向量的能力。當(dāng)啟用向量時(shí),在 sie 中定義的每個(gè)中斷都會(huì)陷入到它自己特定中斷處理程序中。
當(dāng) stvec 寄存器的 MODE 字段設(shè)置為 1 時(shí),向量中斷被啟用。
如果向量中斷被禁用 (stvec.MODE=0),所有中斷都會(huì)陷入 stvec.BASE 地址。如果啟用矢量中斷 (stvec.MODE=1),中斷pc 設(shè)置為 stvec.BASE + 4 × 異常代碼 (scause.EXCCODE)。例如,如果發(fā)生管理定時(shí)器中斷,則 pc 設(shè)置為 stvec.BASE+ 0x14。通常,陷阱向量表中填充有跳轉(zhuǎn)指令,以將控制轉(zhuǎn)移到特定于中斷的陷阱處理程序。
在向量中斷模式下,BASE 必須是 128 字節(jié)對(duì)齊的。
所有主管外部中斷(全局中斷)都映射到異常代碼 9。因此,當(dāng)啟用中斷向量時(shí),pc 被設(shè)置為任何全局中斷的地址 stvec.BASE +0x24。
Delegated Interrupt Handling
接受委派陷阱后,會(huì)發(fā)生以下情況:
sstatus.SIE 的值被復(fù)制到 sstatus.SPIE,然后 sstatus.SIE 被清除,有效地禁用中斷。
當(dāng)前pc被復(fù)制到sepc寄存器中,然后pc被設(shè)置為stvec的值。在啟用矢量中斷的情況下,pc 設(shè)置為 stvec.BASE + 4 × 異常代碼(scause.EXCCODE)。
中斷前的特權(quán)模式編碼在 sstatus.SPP 中
此時(shí),控制權(quán)移交給中斷處理程序中的軟件,中斷被禁用??梢酝ㄟ^顯式設(shè)置 sstatus.SIE 或執(zhí)行 SRET 指令退出處理程序來重新啟用中斷。執(zhí)行SRET 指令時(shí),會(huì)發(fā)生以下情況:
特權(quán)模式設(shè)置為 sstatus.SPP 中編碼的值
status.SPIE 的值被復(fù)制到 status.SIE
pc 設(shè)置為 sepc 的值
此時(shí),控制權(quán)交給了軟件
-
寄存器
+關(guān)注
關(guān)注
31文章
5272瀏覽量
119655 -
內(nèi)核
+關(guān)注
關(guān)注
3文章
1348瀏覽量
40153 -
RISC
+關(guān)注
關(guān)注
6文章
461瀏覽量
83614 -
模式
+關(guān)注
關(guān)注
0文章
65瀏覽量
13357 -
sifive
+關(guān)注
關(guān)注
0文章
35瀏覽量
9448
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論