baron · 3月26日 · 四川

[ARM异常]-ARMV8-aarch64 异常(中断)是如何跳转到向量表的

快速连接

👉👉👉【精选】ARMv8/ARMv9架构入门到精通-目录 👈👈👈


 title=


先看一张框图,在中断产生之后,PC将跳转到VBAR + 中断offset处,例如图中蓝色部分
在这里插入图片描述

那么有三个基地址VBAR_EL1、VBAR_EL3、VBAR_EL1(secure),到底是使用哪一个呢?
由Routing when both EL3 and EL2 are implemented 表来决定,中断routing到了EL1则使用VBAR_EL1,routing到了EL3则使用VBAR_EL3,routing到了secure EL1则使用VBAR_EL1(secure)
在这里插入图片描述
选好了基地址后,再选偏移? 我们看到向量表中有四行,那么选哪一行呢?
由Vector offsets from vector table base address表来决定的
在这里插入图片描述

  • 如果发生异常并不会导致exception level切换,并且使用的栈指针是SP_EL0,那么使用第一组异常向量表。
  • 如果发生异常并不会导致exception level切换,并且使用的栈指针是SP_EL1/2/3,那么使用第二组异常向量表。
  • 如果发生异常会导致exception level切换,并且比目的exception level低一级的exception
    level运行在AARCH64模式,那么使用第三组异常向量表。
  • 如果发生异常会导致exception level切换,并且比目的exception level低一级的exception
    level运行在AARCH32模式,那么使用第四组异常向量表。

选好中断向量表中的某一行之后,那么具体选哪一个偏移呢?
会根据中断的类型来决定,如果是irq和fiq会根据当前PE的状态和中断的配置属性,来决定是IRQ或FIQ
在这里插入图片描述

有关中断的Mask,由下面一张表决定(Physical interrupt target and masking when both EL3 and EL2 are implemented)

在这里插入图片描述在这里插入图片描述


关注"Arm精选"公众号,备注进ARM交流讨论区。
图片1.png

推荐阅读
关注数
9467
内容数
212
以易懂、渐进、有序的方式,深入探讨ARMv8/ARMv9架构的核心概念。我们将从基础知识开始,逐步深入,覆盖最新的架构,不再纠缠于过时技术。本系列内容包含但不限于ARM基础、SOC芯片基础、Trustzone、gic、异常和中断、AMBA、Cache、MMU等内容,并将持续更新。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息