3 支持的配置和兼容性
在Armv8-A中,EL2和EL3是可选的,一个PE可以支持一个,或两个,或都不支持。但是:
(1)一个PE要求EL3支持安全和非安全两种状态;
(2)一个PE要求EL2支持虚拟化;
(3)如果EL3没有实现,仅单个安全状态。这个安全状态可能为安全状态,也可能为非安全状态;
GICv3支持所有配置,AArch32和AArch64执行状态的中断处理。
3.1 亲和性路由配置
GICv3架构支持亲和性路由。它选择性支持:
(1)一个非对称配置,此时亲和性路由对非安全状态使能,对安全状态禁用。它提供一个安全传统环境;
(2)一个仅传统环境,此时亲和性路由对安全状态和非安全状态都禁用。
3.2 系统寄存器配置
当亲和性路由对两种安全状态都使能时,GIC必须配置使用系统寄存器来访问处理物理中断。架构不支持安全状态使能亲和性路由,并不支持系统寄存器访问安全状态。将GIC配置为这种状态会导致无法预测的行为。当亲和性路由在非安全状态执行上使能时,GIC架构选择性的支持对虚拟中断的传统操作,即在执行在EL2上hypervisor控制下,传统中断处理在非安全EL1。
3.3 GIC控制和配置
很多GIC寄存器以不同形式有效,并允许有效中断处理:
(1)两种安全状态;

(2)不同的中断group;
(3)使用GICv3的系统寄存器访问或对传统操作的内存映射访问;
当系统寄存访问被使能,GIC架构的控制和配置由架构系统寄存器和定义GIC编程模型相关的访问来处理。
一些寄存器通常为内存映射的,但GICv3中其他的使用系统寄存器访问。传统操作为内存映射访问。
Table 1-1 内存映射寄存器
寄存器名称的前缀 |
寄存器 |
GICD |
Distributor寄存器 |
GICR |
Redistributor寄存器 |
GITS |
ITS寄存器 |
Table 1-2 对传统操作的内存映射寄存器
GICC |
物理CPU接口寄存器 |
GICV |
虚拟CPU接口寄存器 |
GICH |
虚拟接口控制寄存器 |
Table 1-3 系统寄存器
ICC |
物理CPU接口寄存器 |
ICV |
虚拟CPU接口寄存器 |
ICH |
虚拟接口控制寄存器 |
Armv8支持虚拟化,一个PE运行的异常级别决定是否物理CPU接口寄存器或虚拟CPU接口寄存器被访问。