CLINT中斷屬性
為了幫助提高保存和恢復(fù)上下文的效率,可以將中斷屬性應(yīng)用于用于中斷處理的函數(shù)。
void attribute ((interrupt))software_handler (void) {// handler
code}
此屬性將保存和恢復(fù)處理程序中使用的寄存器,并在處理程序的末尾插入一條 mret 指令。
CLINT內(nèi)存映射
下圖是U54 內(nèi)核上 CLINT 的內(nèi)存映射:
注意,在 CLINT 內(nèi)存映射中沒有用于特定中斷的啟用位,因為這些中斷的啟用位于每個中斷的 mie CSR 和 mstatus.mie CSR
位中,它全局啟用所有機器中斷。
相關(guān)寄存器
MSIP Registers
機器模式軟件中斷是通過寫入內(nèi)存映射控制寄存器 msip 來生成的。
msip 寄存器是一個 32 位寬的 WARL 寄存器,其中高 31 位綁定為 0。最低有效位反映在 mip CSR 的 MSIP 位中。msip
寄存器中的其他位被硬連線為零。復(fù)位時,每個 msip 寄存器都清零。
軟件中斷對于多 hart 系統(tǒng)中的處理器間通信最有用,因為 harts 可能會寫入彼此的 msip 位以影響處理器間中斷。
軟件中斷其實更多的用于多核之間,也就是所謂的核間通信。
Timer Registers
與timer有關(guān)的寄存器主要是兩個:mtime和mtimecmp
mtime 是一個 64 位讀寫寄存器,包含從 rtc_toggle 信號計數(shù)的周期數(shù)。
只要 mtime 大于或等于 mtimecmp 寄存器中的值,定時器中斷就會掛起。定時器中斷反映在 mip 寄存器的 mtip 位中。
復(fù)位時,mtime 清零。mtimecmp 不會重置。
特權(quán)模式委托
默認情況下,所有中斷都會陷入機器模式,包括定時器和軟件中斷。
為了讓定時器和軟件中斷直接進入管理員模式,定時器中斷和軟件中斷必須首先委托給管理員模式。
-
寄存器
+關(guān)注
關(guān)注
31文章
5434瀏覽量
124563 -
內(nèi)核
+關(guān)注
關(guān)注
3文章
1416瀏覽量
41446 -
RISC
+關(guān)注
關(guān)注
6文章
482瀏覽量
85007 -
sifive
+關(guān)注
關(guān)注
0文章
37瀏覽量
9609
發(fā)布評論請先 登錄
虛擬機:linux高端內(nèi)存管理之永久內(nèi)核映射

Linux內(nèi)核之內(nèi)存映射原理分析
拆解mmap內(nèi)存映射的本質(zhì)!

Linux內(nèi)核地址映射模型與Linux內(nèi)核高端內(nèi)存詳解

在TC387微控制器上實現(xiàn)內(nèi)存映射,負載增加的原因是什么?
STM32(CM3內(nèi)核) 內(nèi)存映射簡介
淺析linux內(nèi)存映射原理

ARM筆記:內(nèi)核物理內(nèi)存映射區(qū)的虛擬內(nèi)存資料下載

STM32(CM3內(nèi)核) 內(nèi)存映射

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

CLINT中斷控制器優(yōu)先級和搶占

RISC-V SiFive U54內(nèi)核的中斷介紹

U54內(nèi)核中斷控制和狀態(tài)寄存器

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

評論