ARMv8-A系列學習筆記(9)--GIC
在學習MINDSHARE ARMv8-A的時候,碰到幾個要點:
第一:Synchronous v Asynchronous
所謂的Sync exception的特點是:
1. 是在執行一條具體的指令的時候產生的 (如執行 LOAD/STORE指令的時候,對應的虛擬地址無效,則產生異常)
2. 異常處理結束,返回地址,就為產生該異常的指令地址
3. 該異常是精確的(precise)
而所謂的Async,則為外部事件,比如中斷(interrupt)
sync:
1. undefined exception(對應的OPCODE無效,或者在當前EL下,沒有執行許可權,兩種情況),
2. IL (PSTATE中的一位,ERET的情況下產生 ???)
3. PC指標未對齊
堆疊未對齊
DATA ABORT(地址未對齊)
4. 陷入更高級別的EL(???)
5. I&D ABORTS (ADDRESS TRANSLATION)
6. SYSTEM CALL(SVC, HVC, SMC)
7. debug exception
8. floating point exception,
async:
1. physical interrupts (serror, irq, fiq)
2. virtual interrupts (vserror, virq, vfiq ? ? ?)
第二: Precise v Imprecise
所謂的Precise exception的特點是:
異常產生時,其對應的指令
在該指令前的所有指令,均已被PE執行,
在該指令之後的所有指令,包括該指令,均未被PE執行,
如果有明確的劃分,則異常返回後,有明確的返回地址
否則,則為Imprecise exception,導致在異常處理後,並不知道,哪個地址作為正確的返回地址,從新開始執行
IRQ,FIQ,所有的Sync為Precise
SError 與 Async abort為Imprecise
第三:Single-copy atomic v Multiple-copy atomic (???)