[ARM异常]-异常进入和异常退出时的arm core的硬件自动的行为
引流關鍵詞: IRQ,FIQ,Serror, 中斷,同步異常,異步異常,TF-A,TF-M,ATF,TrustedFirmware,trustzone,TEE,optee,trusty,tlk,lk,armv8,armv9,arm,secureboot,BL31,BL32,BL1,BL2,hypervisor,終端安全,secureboot,security,virtulization
快速鏈接:
.
👉👉👉 個人博客筆記導讀目錄(全部) 👈👈👈
當異常進來之后ARM CORE的硬件自動的行為(Exception entry)
[for common]
-
PE(即當前PSTATE)狀態保存在目標異常級別的SPSR_ELx中
-
返回地址保存在目標異常級別的ELR_ELx中
-
所有PSTATE .{D, A, I, F} 都設置為 1。 —即關閉了所有中斷
-
所選的堆棧指針寄存器是目標異常級別的專用堆棧指針寄存器 —即使用sp_elx
-
執行移動到目標異常級別,并從異常向量定義的地址開始 —即跳轉到VBAR_ELx
[for 同步異常]
-
如果異常是同步異常或 SError 中斷,則描述原因的信息, 異常保存在目標異常級別的ESR_ELx中。
-
如果指令中止異常、數據中止異常、PC 對齊錯誤異常或Watchpoint異常,且目標異常是aarch64, 錯誤的虛擬地址保存在FAR_ELx 中。(Instruction Abort exception, Data Abort exception, PC alignment fault exception, or a Watchpoint exception )
-
如果指令中止異常,或數據中止異常被帶到 EL2 并且故障是與第 2 階段轉換,故障 IPA 保存在HPFAR_EL2 中
[for Serror]
-
對于物理 SError 中斷異常,在以下任一情況下,物理 SError 的掛起狀態將被清除
SError 中斷是邊沿觸發的。
FEAT_DoubleFault已實現
如果Reliability, Availability, and Serviceability Extension被實施,并且在采取 SError 時中斷,記錄在ESR_ELx 中的綜合癥指示除IMPLEMENTATION之外的 SError定義或未分類的 SError 中斷綜合癥 -
對于虛擬 SError 中斷異常,虛擬 SError 的掛起狀態,HCR_EL2 .VSE位清零
[for FEAT]
-
PSTATE .SSBS 設置為SCTLR_ELx .DSSBS的值
-
如果FEAT_UAO實現,PSTATE .UAO被設置為0
-
如果FEAT_MTE實現,PSTATE .TCO設置為1
-
如果實現了FEAT_BTI,從 AArch64 到 AArch64 的異步異常,PSTATE .BTYPE 被復制到SPSR_ELx .BTYPE,然后設置為 0
-
如果實現了FEAT_BTI,在將某些類型的同步異常從 AArch64 轉移到 AArch64 時,PSTATE .BTYPE 復制到SPSR_ELx .BTYPE 然后設置為 0 這些類型的同步異常是:
軟件步驟異常。
PC 對齊錯誤異常。
指令中止異常。
斷點異常或地址匹配向量捕獲異常。
非法執行狀態異常。
軟件斷點異常。
分支目標異常。 -
如果FEAT_IESB被實現,當有效數值的的SCTLR_ELx .IESB位在目標異常level為1,PE插入錯誤同步事件
當異常退出時ARM CORE的硬件自動的行為(Exception return)
(On executing an Exception return instruction at ELx)
- PC從ELR_ELx恢復
- PSTATE從SPSR_ELx恢復
總結
以上是生活随笔為你收集整理的[ARM异常]-异常进入和异常退出时的arm core的硬件自动的行为的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Repo 命令参考资料
- 下一篇: [ARM异常]-armv8/armv9异