文章目录

  • 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...)相关推荐

  1. [armv8-arch64]linux kernel 5.9的异常量表介绍(irq,fiq,sync,svc)

    在entry.S中,定义了异常向量表,从代码中我们可以知道以下信息: 该表的基地址在vectors处(在开机的时候,会将其写入到vbar_el1中) 这个表以".align 11" ...

  2. [ATF]-ATF的异常向量表介绍-(irq,fiq,smc,hyc...)

    文章目录 1.同步异常向量表-(smc) 1.1.handle_sync_exception调用smc_handler64处理同步异常 2.异类步异常向量表-(irq,fiq...) 2.1.get_ ...

  3. [ARM异常]-linux中(aarch/aarch64)异常向量表介绍

    文章目录 1.ARM的异常向量表基地址寄存器--VBAR 1.1.armv8 : VBAR寄存器 1.2.armv7 : VBAR寄存器 2.ARM的异常向量表的定义 2.1 armv8 :异常向量表 ...

  4. linux kernel中的栈的介绍

    目录 1.linux kernel中的中断irq的栈stack (1).arm32体系的irq的栈 (2).arm64体系的irq的栈 2.linux kernel中的栈stack (1).概念介绍: ...

  5. Linux Kernel Namespace实现: namespace API介绍

    1)前言 随着docker的出现, Linux container这种轻量级虚拟化方案越来越在产业里得到大规模的部署和应用. 而Namespace是Linux Container的基础, 了解name ...

  6. linux kernel的spin_lock的详细介绍(以arm64为例)

    1.spin_lock的调用流程: static __always_inline void spin_lock(spinlock_t *lock) {raw_spin_lock(&lock-& ...

  7. Linux Kernel Oops异常分析

    0.linux内核异常常用分析方法 异常地址是否在0附近,确认是否是空指针解引用问题 异常地址是否在iomem映射区,确认是否是设备访问总线异常问题,如PCI异常导致的地址访问异常 异常地址是否在st ...

  8. linux内核oops错误码说明,Linux Kernel Oops异常分析

    0.linux内核异常常用分析方法 异常地址是否在0附近,确认是否是空指针解引用问题 异常地址是否在iomem映射区,确认是否是设备访问总线异常问题,如PCI异常导致的地址访问异常 异常地址是否在st ...

  9. [ARM异常]-ARMV8-aarch32的异常向量表介绍

    快速链接: .

最新文章

  1. 几何分布的期望和方差
  2. .net framework 注册到IIS上
  3. JAVA SE学习day_05: IO与流操作
  4. PMP-【第1章 引论】-2020-12-07(18页-24页)
  5. 浅析高端网站建设策划方案都包括哪些内容?
  6. CatalanStirling数
  7. python取百位数个位数_使用Python把数值形式的金额变成人类可读形式
  8. memmove函数使用时注意的问题
  9. 怎么判断间隙过渡过盈配合_尺寸公差配合与装配方法
  10. shell脚本由基础变量及特殊变量($@、$*、$#等)到实战。
  11. SAP Fiori应用里一些OData错误排查的最佳实践
  12. java jnlp被阻止_JNLP应用程序Web服务访问被拒绝 - java.io.FilePermission
  13. 安装gem_Python安装第三方库及常见问题处理方法汇总
  14. 屏幕居中(DIV/CSS) 的几种方法
  15. 梅林固件刷CFE教程
  16. 如何修改图片尺寸,分辨率大小,三种方式对比。
  17. 旷视研究院参会PRCV2019 推进模式识别与CV技术交流
  18. jersey restful 测试_Jersey实现Restful服务
  19. linux下登录不上oracle,Oracle特定用户登录失败案例 ORA-20001
  20. 猿代码浅谈Python|猿代码科技

热门文章

  1. 即刻智能|MES生产制造管理系统助力企业实现“智慧工厂”
  2. 【FFMPEG】视频转码之VOB视频无声处理
  3. 全网最全RocketMQ 用法及原理总结
  4. 看了这篇,你也是Python文件操作高手
  5. 台式计算机机箱有几种,推荐几款台式电脑机箱 个性鲜明
  6. 投影仪幕布的开关在哪里_投影幕布应该怎么挂?_投影机新闻-中关村在线
  7. 【内网安全】——windows信息收集
  8. 二维平面上点与线段关系的判定
  9. deepin系统TeamViewer网络无法连接解决方法
  10. TeamViewer在局域网中远程桌面控制