MADT表以统一中断模型实现描述了系统中所有的中断。支持中断模型包括PC-AT兼容的双8259中断控制器,对于ARM处理器系统,GIC控制器。
MADT格式如下所示:
中断控制器结构体支持的类型很多,这里仅介绍GIC相关的中断控制器结构体类型。
1 GICD结构体
它以全局系统中断GSIV代表所有线中断。在ARM系统中GIC管理系统中的中断。每个中断由INTID区分。ACPI中GSIV对于外设中断一一映射到GIC INTID,可能为SPI或PPI。GICD结构体将GICD描述给OS。GICD结构体如下所示:
2 GICC结构体
在GIC中断模型中,逻辑处理器要求在DSDT中有一个处理器Device Object,使用GICC结构体转换每个处理器GIC信息。
GICC结构体格式如下所示:
GICC CPU Interface标志:
3 GICR结构体
GICR通过提供包含GICR页的物理地址使能GICR基地址的discovery。在MADT中可以有超过一个GICR结构体。GICR结构体仅在GICv3或更高版本且将所有GICR放置always-on电源域时使用。当GICR结构体存在时,OSPM忽略GICC结构体中GICR Base Address域。
4 GIC ITS结构体
在GICv3/v4实现中GIC ITS是可选择的。GIC ITS结构体的格式如下所示:
GICD_ 、GICC_ 、GICV_ 、GICH_ 系列寄存器,因为不讨论虚拟中断,所以我们一般只关心 GICD_ 、GICC_ 开头的寄存器, GICD_ 代表 Distributor 分配器的寄存器, GICC_ 代表 CPU interface 的寄存器。
https://blog.csdn.net/flyingnosky/article/details/127417092