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

267 篇文章 367 订阅

快速链接:
.
👉👉👉 个人博客笔记导读目录(全部) 👈👈👈

在这里插入图片描述


先看一张框图,在中断产生之后,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)

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


  • 2
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码改变世界ctw

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值