weiqi7777

ARM GIC(九) gicv3架构-two secure state

0
阅读(113) 评论(0)

gicv3中,引入了支持2种安全状态(secure state),也就是对于中断,根据secure状态,分为安全中断和非安全中断。当然也可以只支持一种安全状态。

这里的2种安全状态和1种安全状态,主要是影响中断分组,所使用IRQ和FIQ管脚的映射,以及gic中的寄存器访问。

一、中断线的映射

当gic架构,使用gicv3后,中断的传递,和gicv2有所区别。

gicv3中,将cpu interface从gic中抽离,放入到了cpu中,cpu interface通过gic stream接口,与gic进行通信。

当gic要发送中断,gic通过gic stream接口,给cpu interface发送中断命令,cpu interface收到中断命令后,根据中断线映射配置,决定是通过IRQ还是FIQ管脚,向cpu发送中断。

而中断线映射配置,要根据中断的分组以及当前cpu所处的EL以及seucre状态,来决定。

二、2种安全状态中断线映射

当gic支持2种安全状态,EL3是AArch64和AArch32,映射情况不同

1、EL3是AArch64

当EL3是AArch64时,映射如下:

  • 对于group0中断,中断线均映射到FIQ
  • 对于group1安全中断,secure EL1或EL0,中断线映射到IRQ,其他EL映射到FIQ
  • 对于group1非安全中断,secure EL1或EL0以及EL3,中断线映射到FIQ,其他EL映射到IRQ

2、EL3是AArch32

当EL3是AArch32时,映射如下:

  • 对于group0中断,中断线均映射到FIQ
  • 对于group1安全中断,secure EL0和EL3,中断线映射到IRQ,其余EL映射到FIQ
  • 对于group1非安全中断,secure EL0和EL3,中断线映射到FIQ,其余EL映射到IRQ

 

三、1种安全状态中断线映射

映射如下:

  • group0中断线,直接映射到FIQ
  • group1中断线,直接映射到IRQ

四、GICD寄存器

在GICD中的GICR_CTLR寄存器的DS bit,表示是否支持2种安全模式。

该bit描述如下,如果0,表示支持2种安全状态,为1,表示不支持。

1、支持2种安全模式下GICD_CTLR

在支持2种安全模式下,GICD中寄存器会进行备份成2份,一份提供给secure访问,。一份提供给non-secure访问。

比如对于GICD_CTLR寄存器,secure访问,寄存器描述如下:

而如果是non-secure访问,其寄存器描述如下:

2、支持1种安全模式下GICD_CTLR

在1种安全模式下,寄存器描述如下,此时不论是non-secure访问,还是secure访问,都访问的同一个寄存器。