我是靠谱客的博主 昏睡短靴,最近开发中收集的这篇文章主要介绍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 (???)




最后

以上就是昏睡短靴为你收集整理的ARMv8-A系列学习笔记(9)--GIC的全部内容,希望文章能够帮你解决ARMv8-A系列学习笔记(9)--GIC所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部