GIC spec之介绍6

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中的虚拟中断有效。它是由实现定义的:

  1. 传统操作是否应用于两种安全状态,或仅执行在安全状态;
  2. 当执行在非安全EL1时传统操作是否仅在虚拟CPU接口中有效;

        在GICv3中,下列限制应用于传统操作:

  1. GICv2特性GICC_CTLR.ACKCTL不在GICv2中支持也不在GICv3支持。即使是传统模式,GICv2中GICC_CTLR.ACKCTL位为RAZ/WI;

        NOTE: 支持传统操作的GICv3实现中,当GICV_CTLR.ACKCTL设置为1时允许VM控制非安全中断。但是Arm不造成使用GICV_CTLR.ACKCTL。

  1. GICv2配置lockdown特性和相关的CFGSDISABLE输入信息不支持;
  2. 执行在EL2的hypervisor可以控制PE的虚拟中断,EL2软件执行在PE上,且不能控制其他PE上的虚拟中断。

对于传统操作,不对称的配置也在下列情况支持:

  1. 亲和性路由和系统寄存器访问在非安全状态和EL3上被使能;
  2. 亲和性路由和系统寄存器访问在安全EL1上被禁用;

        这允许执行在安全EL1的安全操作系统使用传统功能,证明它不能配置非安全中断。

        执行在安全状态的GICv2可以使用GICC_AIAR,GICC_AEOIR,GICC_AHPPIR,和GICC_ABPR来控制非安全状态的中断。在非对称配置中没有相等的功能。

猜你喜欢

转载自blog.csdn.net/flyingnosky/article/details/124028997
GIC