Linux内核基础 - GICv3中断控制器常用寄存器描述

GICv3 寄存器概述

GICv3(通用中断控制器版本3)为ARM架构提供了一套先进的中断管理框架。它针对大型系统支持、高效虚拟化和增强的中断分发机制引入了改进。以下是标准寄存器、它们的地址偏移以及常见用途或功能的概述。

技术背景

GICv3 是为了满足现代多核处理器系统中复杂的中断管理需求而设计的。与前代相比,GICv3 支持更多的中断,提供了更好的中断隔离和安全特性,以及对虚拟化环境的改进支持。它通过一系列的寄存器和配置选项,允许精细的控制和高效的中断处理,特别是在多核心和虚拟化场景下。

CPU接口寄存器

这些寄存器主要用于管理和处理定向到特定CPU的中断。

  • ICC_SRE_EL1/EL2/EL3(系统寄存器启用)
    • 偏移量:根据实现而变化
    • 功能:启用或禁用系统寄存器接口以控制GIC。
  • ICC_CTLR_EL1/EL3(控制寄存器)
    • 偏移量:根据实现而变化
    • 功能:控制中断行为,如优先级屏蔽和抢占。
  • ICC_PMR_EL1(优先级掩码寄存器)
    • 偏移量:根据实现而变化
    • 功能:为处理器设置优先级掩码,过滤掉优先级较低的中断。
  • ICC_IAR1_EL1(中断认领寄存器)
    • 偏移量:根据实现而变化
    • 功能:从此寄存器读取将认领优先级最高的待处理中断,并返回其ID。
  • ICC_EOIR1_EL1(中断结束寄存器)
    • 偏移量:根据实现而变化
    • 功能:写入一个中断ID表明处理器已完成该中断的处理。
  • ICC_IGRPEN1_EL1(中断组启用寄存器)
    • 偏移量:根据实现而变化
    • 功能:启用或禁用中断组。

分发器寄存器

分发器(Distributor)负责管理所有外设中断的分发,包括中断的启用、禁用、优先级设置和目标CPU的配置。

  • GICD_CTLR(控制寄存器)
    • 偏移量:0x0000
    • 功能:控制GIC分发器的全局行为,例如启用或禁用中断分发。
  • GICD_TYPER(类型寄存器)
    • 偏移量:0x0004
    • 功能:提供分发器支持的信息,包括中断数量和CPU接口数量。
  • GICD_ISENABLERn(中断设置启用寄存器)
    • 偏移量:0x0100 + (n * 0x20),n代表中断组
    • 功能:通过设置相应位来启用特定的中断。
  • GICD_ICENABLERn(中断清除启用寄存器)
    • 偏移量:0x0180 + (n * 0x20),n代表中断组
    • 功能:通过清除相应位来禁用特定的中断。
  • GICD_IPRIORITYRn(中断优先级寄存器)
    • 偏移量:0x0400 + (n * 4),n代表中断编号
    • 功能:设置每个中断的优先级。
  • GICD_ITARGETSRn(中断目标寄存器)
    • 偏移量:0x0800 + (n * 4),n代表中断编号
    • 功能:指定中断的目标CPU处理器。

重分发器寄存器

重分发器(Redistributor)用于处理来自特定CPU的中断,特别是在多核心系统中,它提供了一种更高效的中断管理方式。

  • GICR_CTLR(重分发器控制寄存器)
    • 偏移量:特定于实现
    • 功能:控制重分发器的行为,如启用或禁用局部中断。
  • GICR_IIDR(实现者识别寄存器)
    • 偏移量:特定于实现
    • 功能:提供关于重分发器实现的信息。
  • GICR_TYPER(类型寄存器)
    • 偏移量:特定于实现
    • 功能:标识重分发器的特性,例如支持的中断和处理器编号。
  • GICR_STATUSR(状态寄存器)
    • 偏移量:特定于实现
    • 功能:提供重分发器的当前状态信息,如错误指示。
  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值