概述
在学习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 (???)
最后
以上就是昏睡短靴为你收集整理的ARMv8-A系列学习笔记(9)--GIC的全部内容,希望文章能够帮你解决ARMv8-A系列学习笔记(9)--GIC所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复