卢骏 · 2020年05月28日

ARM GIC(十一) gicv3架构-two secure state

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时,映射如下:
1.png

◾对于group0中断,中断线均映射到FIQ

◾对于group1安全中断,secure EL1或EL0,中断线映射到IRQ,其他EL映射到FIQ

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

2、EL3是AArch32

当EL3是AArch32时,映射如下:
2.png

◾对于group0中断,中断线均映射到FIQ

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

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

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

映射如下:
3.png

◾group0中断线,直接映射到FIQ

◾group1中断线,直接映射到IRQ

四、GICD寄存器

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

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

4.png

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

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

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

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

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

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

系列其他篇

原文首发于骏的世界博客
作者:卢骏.
更多Arm技术相关的文章请关注Arm技术博客极术专栏,每日更新。
推荐阅读
关注数
23565
内容数
1018
Arm相关的技术博客,提供最新Arm技术干货,欢迎关注
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息