3.4 Armv8架构状态
Table 1-4呈示了Armv8架构状态用于或影响GIC的操作。
AArch64 |
AArch32 |
Purpose |
||
State |
Field |
State |
Field |
|
PSTATE |
A |
PSTATE |
A |
SError中断屏蔽位(AA64) 异步abort屏蔽位(AA32) |
I |
I |
IRQ屏蔽位 |
||
F |
F |
FIQ屏蔽位 |
||
DFSR |
STATUS/FS |
Fault状态 |
||
EXT |
External abort类型 |
|||
ESR_ELx |
EC |
HSR |
EC |
异常分类 |
IL |
IL |
同步异常的指令长度 |
||
ISS |
ISS |
指令特定综合征 |
||
HCR_EL2 |
AMO |
HCR |
AMO |
SError中断路由(AA64) 异常外部abort中断路由(AA32) |
IMO |
IMO |
物理IRQ路由 |
||
FMO |
FMO |
物理FIQ路由 |
||
RW |
RES0 |
更低异常级别的执行状态控制(AA64) |
||
VA |
VA |
虚拟SError abort异常(AA64) 虚拟异步abort异常(AA32) |
||
VI |
VI |
虚拟IRQ中断 |
||
VF |
VF |
虚拟FIQ中断 |
||
TGE |
TGE |
陷入通用异常 |
||
HSTR_EL2 |
T<n> |
HSTR |
T<n> |
Hypervisor系统陷入 |
I |
I |
IRQ pending |
||
F |
F |
FIQ pending |
||
ID_AA64PFR0_EL1 |
GIC |
系统寄存器GIC接口支持 |
||
ID_PFR1_EL1 |
GIC |
ID_PFR1 |
GIC |
系统寄存器GIC CPU接口支持 |
ISR_EL1 |
A |
ISR |
A |
SError pending(AA64) 外部abort pending(AA32) |
MPIDR_EL1 |
Aff3 |
MPIDR |
Aff3 |
Affinity level 3 |
Aff2 |
Aff2 |
Affinity level 2 |
||
Aff1 |
Aff1 |
Affinity level 1 |
||
Aff0 |
Aff0 |
Affinity level 0 |
||
SCR_EL3 |
RW |
SCR |
RES0 |
更低异常级别的执行状态控制(AA64) |
EA |
EA |
SError中断路由(AA64) 外部abort中断路由(AA32) |
||
FIQ |
FIQ |
物理FIQ路由 |
||
IRQ |
IRQ |
物理IRQ路由 |
||
NS |
NS |
非安全位 |
||
EEL2 |
安全EL2使能 |
3.5 不支持传统操作的GIC
在不支持传统操作的GIC实现中,亲和性路由和系统寄存器访问固定使能的。这意味着相关的控制位都为RAO/WI。表1-5呈现了受影响的寄存器位。
Table 1-5 对亲和性路由和系统寄存器控制控制位
AArch64寄存器 |
AArch32寄存器 |
内存映射的寄存器 |
ICC_SRE_EL1.SRE |
ICC_SRE.SRE |
|
ICC_SRE_EL2.SRE |
ICC_HSRE.SRE |
|
ICC_SRE_EL3.SRE |
ICC_MSRE.SRE |
|
GICD_CTLR.ARE_S |
||
GICD_CTLR.ARE_NS |
3.6 支持传统操作的GICv3
传统操作是以一种形式向后兼容GICv2,它允许系统使用GICv3跑GICv2的代码,代码满足本章节描述的限制。
在支持传统操作的GICv3实现中,最多8个PE,内存映射寄存器接口都独立支持,对物理中断目标和给定VM中的虚拟中断有效。它是由实现定义的:
- 传统操作是否应用于两种安全状态,或仅执行在安全状态;
- 当执行在非安全EL1时传统操作是否仅在虚拟CPU接口中有效;
在GICv3中,下列限制应用于传统操作:
- GICv2特性GICC_CTLR.ACKCTL不在GICv2中支持也不在GICv3支持。即使是传统模式,GICv2中GICC_CTLR.ACKCTL位为RAZ/WI;
NOTE: 支持传统操作的GICv3实现中,当GICV_CTLR.ACKCTL设置为1时允许VM控制非安全中断。但是Arm不造成使用GICV_CTLR.ACKCTL。
- GICv2配置lockdown特性和相关的CFGSDISABLE输入信息不支持;
- 执行在EL2的hypervisor可以控制PE的虚拟中断,EL2软件执行在PE上,且不能控制其他PE上的虚拟中断。
对于传统操作,不对称的配置也在下列情况支持:
- 亲和性路由和系统寄存器访问在非安全状态和EL3上被使能;
- 亲和性路由和系统寄存器访问在安全EL1上被禁用;
这允许执行在安全EL1的安全操作系统使用传统功能,证明它不能配置非安全中断。
执行在安全状态的GICv2可以使用GICC_AIAR,GICC_AEOIR,GICC_AHPPIR,和GICC_ABPR来控制非安全状态的中断。在非对称配置中没有相等的功能。