ARM64 中断处理
CPU 核心中有一对管理中断的管脚:IRQ(普通中断)和 FIQ(快速中断)。
关于这两种中断,PSTATE状态寄存器中有 I 位和 F 位分别用于控制 IRQ 和 FIQ 中断的使能状态: - I = 1:IRQ 中断被禁用,CPU 将不会响应 IRQ 中断请求。 - F = 1:FIQ 中断被禁用,CPU 将不会响应 FIQ 中断请求。
实际上,当我们在内核进行异常处理的时候,会自动将 I 和 F 位设置为 1,也就是在处理异常的过程中会禁止其他中断的发生,以确保当前异常处理的完整性和安全性。
ARM 中,除了 CPU 外,还有一个重要的组件叫做 GIC(Generic Interrupt Controller,通用中断控制器),目前已经有gicv4、gicv4.1,gicv4.2了。
- gicv4.0:支持 LPI 直通
- gicv4.1:支持 LPI 直通和 IPI 直通
它负责管理和分发来自外设的中断请求到 CPU。GIC 与 CPU 之间通过 IRQ 和 FIQ 管脚进行通信的通用框图如下: