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
,最终也就能调用到外设的中断处理函数了;
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
嵌入式
+关注
关注
4983文章
18286浏览量
288498 -
Linux
+关注
关注
87文章
10990浏览量
206738 -
子系统
+关注
关注
0文章
100浏览量
12265 -
代码
+关注
关注
30文章
4556浏览量
66784
发布评论请先 登录
相关推荐
如何在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
•1349次阅读
Linux中断(interrupt)子系统之一:arch相关的硬件封装层
Linux的通用中断子系统的一个设计原则就是把底层的硬件实现尽可能地隐藏起来,使得驱动程序的开发人员不用关注底层的实现,要实现这个目标,内核的开发者们必须把硬件相关的内容剥离出来,然后定义一些列标准的接口供上层访问,上层的开发人
发表于 05-13 10:48
•712次阅读
Manjaro和Arch Linux有什么区别
Manjaro 还是 Arch Linux?如果说 Manjaro 是基于 Arch 的,那么它和 Arch 又有什么不同呢?请在这篇比较文章中阅读
全面解读Linux 中断子系统的驱动
GIC 驱动 这里主要分析 linux kernel 中 GIC v3 中断控制器的代码(drivers/irqchip/irq-gic-v3.c)。 设备树 先来看下一个
Arch Linux 系统迁移的详细介绍
镜像下载、域名解析、时间同步请点击 阿里巴巴开源镜像站 备份 Arch Linux 系统 安装 pigz 使用 pigz 多线程压缩比使用 tar 单线程压缩速度明显提升多倍 sudo pacman
发表于 12-16 11:15
•750次阅读
Linux系统中NFC子系统架构分析
目前在Linux系统中,每个厂家都使用不同的方式实现NFC驱动,然后自己在应用层上面做适配。但是Linux也已经推出NFC子系统,很多厂家也逐步在统一。
发表于 01-04 14:01
•1398次阅读
从软件角度分析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
评论