linux kernel的异常量表介绍(irq,fiq,swi,svc...)
文章目录
- 1、linux kernel - arch64的异常向量表-(irq,fiq,svc......)
- 2、linux kernel - arch的异常向量表-(irq,fiq,swi......)
1、linux kernel - arch64的异常向量表-(irq,fiq,svc…)
armv8-arch64架构下,linux kernel的异常量表,再entry.S中:
/** Exception vectors.*/.align 11
ENTRY(vectors)kernel_ventry 1, sync_invalid // Synchronous EL1tkernel_ventry 1, irq_invalid // IRQ EL1tkernel_ventry 1, fiq_invalid // FIQ EL1tkernel_ventry 1, error_invalid // Error EL1tkernel_ventry 1, sync // Synchronous EL1hkernel_ventry 1, irq // IRQ EL1hkernel_ventry 1, fiq_invalid // FIQ EL1hkernel_ventry 1, error_invalid // Error EL1hkernel_ventry 0, sync // Synchronous 64-bit EL0kernel_ventry 0, irq // IRQ 64-bit EL0kernel_ventry 0, fiq_invalid // FIQ 64-bit EL0kernel_ventry 0, error_invalid // Error 64-bit EL0#ifdef CONFIG_COMPATkernel_ventry 0, sync_compat, 32 // Synchronous 32-bit EL0kernel_ventry 0, irq_compat, 32 // IRQ 32-bit EL0kernel_ventry 0, fiq_invalid_compat, 32 // FIQ 32-bit EL0kernel_ventry 0, error_invalid_compat, 32 // Error 32-bit EL0
#elsekernel_ventry 0, sync_invalid, 32 // Synchronous 32-bit EL0kernel_ventry 0, irq_invalid, 32 // IRQ 32-bit EL0kernel_ventry 0, fiq_invalid, 32 // FIQ 32-bit EL0kernel_ventry 0, error_invalid, 32 // Error 32-bit EL0
#endif
END(vectors)
我们这里讲解如下四行:
kernel_ventry 1, irq // IRQ EL1h
kernel_ventry 0, irq // IRQ 64-bit EL0
kernel_ventry 1, sync // Synchronous EL1h
kernel_ventry 0, sync // Synchronous 64-bit EL0
kernel_ventry是宏,翻译后的函数名分别是:
el1_irq
el0_riq
el1_sync
el0_sync
对应的函数入口我们就找到了,也就是说,当触发irq异常、或svc异常时会跳转到这几个函数中。
2、linux kernel - arch的异常向量表-(irq,fiq,swi…)
在arch架构下,linux kernel的同步异常向量表__stubs_start 和 异步异常向量表__vectors_start,在entry-armv.S中:
.section .stubs, "ax", %progbits
__stubs_start:@ This must be the first word.word vector_swi.section .vectors, "ax", %progbits
__vectors_start:W(b) vector_rstW(b) vector_undW(ldr) pc, __vectors_start + 0x1000W(b) vector_pabtW(b) vector_dabtW(b) vector_addrexcptnW(b) vector_irqW(b) vector_fiq
linux kernel的异常量表介绍(irq,fiq,swi,svc...)相关推荐
- [armv8-arch64]linux kernel 5.9的异常量表介绍(irq,fiq,sync,svc)
在entry.S中,定义了异常向量表,从代码中我们可以知道以下信息: 该表的基地址在vectors处(在开机的时候,会将其写入到vbar_el1中) 这个表以".align 11" ...
- [ATF]-ATF的异常向量表介绍-(irq,fiq,smc,hyc...)
文章目录 1.同步异常向量表-(smc) 1.1.handle_sync_exception调用smc_handler64处理同步异常 2.异类步异常向量表-(irq,fiq...) 2.1.get_ ...
- [ARM异常]-linux中(aarch/aarch64)异常向量表介绍
文章目录 1.ARM的异常向量表基地址寄存器--VBAR 1.1.armv8 : VBAR寄存器 1.2.armv7 : VBAR寄存器 2.ARM的异常向量表的定义 2.1 armv8 :异常向量表 ...
- linux kernel中的栈的介绍
目录 1.linux kernel中的中断irq的栈stack (1).arm32体系的irq的栈 (2).arm64体系的irq的栈 2.linux kernel中的栈stack (1).概念介绍: ...
- Linux Kernel Namespace实现: namespace API介绍
1)前言 随着docker的出现, Linux container这种轻量级虚拟化方案越来越在产业里得到大规模的部署和应用. 而Namespace是Linux Container的基础, 了解name ...
- linux kernel的spin_lock的详细介绍(以arm64为例)
1.spin_lock的调用流程: static __always_inline void spin_lock(spinlock_t *lock) {raw_spin_lock(&lock-& ...
- Linux Kernel Oops异常分析
0.linux内核异常常用分析方法 异常地址是否在0附近,确认是否是空指针解引用问题 异常地址是否在iomem映射区,确认是否是设备访问总线异常问题,如PCI异常导致的地址访问异常 异常地址是否在st ...
- linux内核oops错误码说明,Linux Kernel Oops异常分析
0.linux内核异常常用分析方法 异常地址是否在0附近,确认是否是空指针解引用问题 异常地址是否在iomem映射区,确认是否是设备访问总线异常问题,如PCI异常导致的地址访问异常 异常地址是否在st ...
- [ARM异常]-ARMV8-aarch32的异常向量表介绍
快速链接: .
最新文章
- .Net Reactor 5脱壳教程
- html标签简介(常用)
- python大数据分析实例-Python大数据处理案例
- msm(CentOS 6)及jvm虚拟机性能监控(04)_recv
- ubuntu wireshark 普通用户抓包
- JAndFix: 基于Java实现的Android实时热修复方案
- 博客园速度太快了,快得让人心慌……
- junit测试线程_一个在自己的线程中运行测试的JUnit规则
- android ble 实现自动连接,Android:自动重新连接BLE设备
- mysql count里面能加条件吗_select count(1) 和 count(*),哪个性能更好?
- 不用Linux也可以的强大文本处理方法
- php中函数封装怎么弄,php封装函数步骤
- Scrum立会报告+燃尽图(十月二十二日总第十三次)
- Ubuntu与Docker -- Docker安装、使用、容器环境搭建
- 互联网大厂面试考点————JVM
- 【python】eclipse+Pydev中import报错Unused import解决方案
- 360 2015校园招聘
- Java基础练习(3)
- 2023年pmp的考试时间是什么时候?
- 【笔记】面向数据科学家的实用统计学
热门文章
- 联想创投大数据基于开源技术 助力全球智能制造
- 文件操作(IO技术)
- 同步移动两个窗口(保证窗口的相对位置一起移动)
- ZZULIOJ1075: 聚餐人数统计
- C#错误之 System.Threading.ThreadAbortException:正在中止线程
- Win7系统下使用CCS 5.2.1 进行软件仿真
- 2.STM32F429 学习emWin emWin文件和应用构架
- 远程登录服务器链接外网-启动Teamviewer
- 我“听”得见你爱的心跳
- Jenkins - 默认用户名和密码及启动方法