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 (???)




你可能感兴趣的:(ARM)