[ARM异常]-ARMV8-aarch64 异常(中断)是如何跳转到向量表的
快速鏈接:
.
👉👉👉 個(gè)人博客筆記導(dǎo)讀目錄(全部) 👈👈👈
先看一張框圖,在中斷產(chǎn)生之后,PC將跳轉(zhuǎn)到VBAR + 中斷offset處,例如圖中藍(lán)色部分
那么有三個(gè)基地址VBAR_EL1、VBAR_EL3、VBAR_EL1(secure),到底是使用哪一個(gè)呢?
由Routing when both EL3 and EL2 are implemented 表來(lái)決定,中斷routing到了EL1則使用VBAR_EL1,routing到了EL3則使用VBAR_EL3,routing到了secure EL1則使用VBAR_EL1(secure)
選好了基地址后,再選偏移? 我們看到向量表中有四行,那么選哪一行呢?
由Vector offsets from vector table base address表來(lái)決定的
- 如果發(fā)生異常并不會(huì)導(dǎo)致exception level切換,并且使用的棧指針是SP_EL0,那么使用第一組異常向量表。
- 如果發(fā)生異常并不會(huì)導(dǎo)致exception level切換,并且使用的棧指針是SP_EL1/2/3,那么使用第二組異常向量表。
- 如果發(fā)生異常會(huì)導(dǎo)致exception level切換,并且比目的exception level低一級(jí)的exception
level運(yùn)行在AARCH64模式,那么使用第三組異常向量表。 - 如果發(fā)生異常會(huì)導(dǎo)致exception level切換,并且比目的exception level低一級(jí)的exception
level運(yùn)行在AARCH32模式,那么使用第四組異常向量表。
選好中斷向量表中的某一行之后,那么具體選哪一個(gè)偏移呢?
會(huì)根據(jù)中斷的類型來(lái)決定,如果是irq和fiq會(huì)根據(jù)當(dāng)前PE的狀態(tài)和中斷的配置屬性,來(lái)決定是IRQ或FIQ
有關(guān)中斷的Mask,由下面一張表決定(Physical interrupt target and masking when both EL3 and EL2 are implemented)
總結(jié)
以上是生活随笔為你收集整理的[ARM异常]-ARMV8-aarch64 异常(中断)是如何跳转到向量表的的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python:将json数据写入到exc
- 下一篇: [hypervisor]-ARMV8的h