【ARMv8/v9 GIC 系列 1.5 -- Enabling the distribution of interrupts】

请阅读【ARM GICv3/v4 实战学习 】


文章目录

    • [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

这些控制位和寄存器提供了灵活的中断管理机制,使得系统设计者可以根据系统的安全需求和性能要求,精细地控制不同安全状态下的中断分发和处理。通过合理配置这些控制位,可以优化系统的中断响应时间,提高系统的运行效率和可靠性。