文章目录
-
- [Enabling the distribution of interrupts](#Enabling the distribution of interrupts)
-
- [GIC Distributor 中断组分发控制](#GIC Distributor 中断组分发控制)
- [CPU Interface 中断组分发控制](#CPU Interface 中断组分发控制)
- [Physical LPIs 的启用](#Physical LPIs 的启用)
- Summary
Enabling the distribution of interrupts
在ARM GICv3和GICv4体系结构中,中断分发的启用与禁用是通过一系列控制位来实现的。这些控制位分布在不同的控制寄存器中,用于控制中断分组的分发以及CPU接口处的中断分组分发。
GIC Distributor 中断组分发控制
以下控制位用于启用和禁用中断的分发:
GICD_CTLR.EnableGrp1S
:启用或禁用安全状态下的Group 1中断分发。GICD_CTLR.EnableGrp1NS
:启用或禁用非安全状态下的Group 1中断分发。GICD_CTLR.EnableGrp0
:启用或禁用Group 0中断分发。
关于 GICD_CTRL
见文章【ARMv8/v9 GIC 系列 5 -- GIC GICD_CTRL 使用详细介绍】。代码中配置GICD的第一个配置的寄存器。
CPU Interface 中断组分发控制
以下控制位用于在CPU Interface 启用和禁用中断组的分发:
ICC_IGRPEN0_EL1.Enable
:用于启用或禁用Group 0中断。这一设置控制CPU是否处理Group 0中断。ICC_IGRPEN1_EL1.Enable
:用于启用或禁用Group 1中断。这一设置控制CPU是否处理Group 1中断。该寄存器有安全和非安全两个副本,分别控制相应安全状态下的Group 1中断处理。ICC_IGRPEN1_EL3.{EnableGrp1S, EnableGrp1NS}
:在EL3级别,分别用于启用或禁用安全状态和非安全状态下Group 1中断的处理。
Physical LPIs 的启用
GICR_CTLR.EnableLPIs
:通过写入此位来启用物理局部中断(LPIs)。LPIs是一类特殊的中断类型,主要用于支持大量中断源,常见于服务器和复杂的嵌入式系统中。
Summary
这些控制位和寄存器提供了灵活的中断管理机制,使得系统设计者可以根据系统的安全需求和性能要求,精细地控制不同安全状态下的中断分发和处理。通过合理配置这些控制位,可以优化系统的中断响应时间,提高系统的运行效率和可靠性。