Arch-speicific代碼分析
- 中斷也是異常模式的一種,當外設觸發中斷時,處理器會切換到特定的異常模式進行處理,而這部分代碼都是架構相關的;ARM64的代碼位于
arch/arm64/kernel/entry.S
。 - ARM64處理器有四個異常級別Exception Level:0~3,EL0級對應用戶態程序,EL1級對應操作系統內核態,EL2級對應Hypervisor,EL3級對應Secure Monitor;
- 異常觸發時,處理器進行切換,并且跳轉到異常向量表開始執行,針對中斷異常,最終會跳轉到
irq_handler
中;
代碼比較簡單,如下:
/*
* Interrupt handling.
*/
.macro irq_handler
ldr_l x1, handle_arch_irq
mov x0, sp
irq_stack_entry
blr x1
irq_stack_exit
.endm
來張圖:
- 中斷觸發,處理器去異常向量表找到對應的入口,比如EL0的中斷跳轉到
el0_irq
處,EL1則跳轉到el1_irq
處; - 在GIC驅動中,會調用
set_handle_irq
接口來設置handle_arch_irq
的函數指針,讓它指向gic_handle_irq
,因此中斷觸發的時候會跳轉到gic_handle_irq
處執行; gic_handle_irq
函數處理時,分為兩種情況,一種是外設觸發的中斷,硬件中斷號在16 ~ 1020
之間,一種是軟件觸發的中斷,用于處理器之間的交互,硬件中斷號在16以內;- 外設觸發中斷后,根據
irq domain
去查找對應的Linux IRQ中斷號,進而得到中斷描述符irq_desc
,最終也就能調用到外設的中斷處理函數了;
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
嵌入式
+關注
關注
5082文章
19126瀏覽量
305260 -
Linux
+關注
關注
87文章
11304瀏覽量
209524 -
子系統
+關注
關注
0文章
109瀏覽量
12402 -
代碼
+關注
關注
30文章
4788瀏覽量
68617
發布評論請先 登錄
相關推薦
如何在Arch Linux系統中安裝Cutefish桌面環境
現在你可以在 Arch Linux 中體驗 Cutefish 桌面了。本文概述了在 Arch Linux 系統中安裝 Cutefish 桌面
Arch Linux教程詳解
最近在評論區看到很多人對Linux開始感到興趣,身為一個精通各種系統開關機,各種發行版安裝與卸載的老司機,我覺得我有必要站出來為大家安利一下Arch Linux了。
發表于 09-21 16:15
?0次下載
Arch Linux 有何優缺點?
Arch Linux 于 2002 年發布,由 Aaron Grifin 領頭,是當下最熱門的 Linux 發行版之一。從設計上說,Arch Lin
需要了解的Linux的IRQ中斷子系統
在Linux中斷子系統(generic irq)出現之前,內核使用__do_IRQ處理所有的中斷,這意味著__do_IRQ中要處理各種類型的中斷
發表于 05-10 10:56
?1475次閱讀
Linux中斷(interrupt)子系統之一:arch相關的硬件封裝層
Linux的通用中斷子系統的一個設計原則就是把底層的硬件實現盡可能地隱藏起來,使得驅動程序的開發人員不用關注底層的實現,要實現這個目標,內核的開發者們必須把硬件相關的內容剝離出來,然后定義一些列標準的接口供上層訪問,上層的開發人
發表于 05-13 10:48
?850次閱讀
Manjaro和Arch Linux有什么區別
Manjaro 還是 Arch Linux?如果說 Manjaro 是基于 Arch 的,那么它和 Arch 又有什么不同呢?請在這篇比較文章中閱讀
更容易設置和使用的基于Arch的Linux發行版
事實上,只是最開始的步驟,安裝 Arch Linux 就足以把很多人嚇跑。與大多數其他發行版不同,Arch Linux 沒有一個易于使用的圖形安裝程序。安裝過程中涉及到的磁盤分區,連接
Arch Linux 系統遷移的詳細介紹
鏡像下載、域名解析、時間同步請點擊 阿里巴巴開源鏡像站 備份 Arch Linux 系統 安裝 pigz 使用 pigz 多線程壓縮比使用 tar 單線程壓縮速度明顯提升多倍 sudo pacman
發表于 12-16 11:15
?909次閱讀
從軟件角度分析linux內核USB子系統的熱插拔過程
本文從軟件角度分析linux內核USB子系統的熱插拔過程,以實際分析思路和過程行文,基于linux內核版本:4.19.4,記錄
龍架構Arch Linux發行版正式發布
近日,龍架構Arch Linux發行版官方網站宣布結束beta狀態,正式支持龍架構。Arch Linux是一種輕量級、可定制、靈活的Linux
Linux Led子系統代碼框架分析
代碼框架分析 led-class.c (led 子系統框架的入口) 維護 LED 子系統的所有 LED 設備,為 LED 設備提供注冊操作函數: led_classdev_regist
評論