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