GICv3架构支持ARM trustZone技术。每个INTID都赋予给一个group和安全设置。GICv3支持三种合并,如表中所示:

中断类型

使用例子

Secure Group 0

EL3的中断(安全firmware)

Secure Group 1

安全EL1的中断(Trusted OS)

Non-secure Group 1

非安全状态的中断(OS或hypervisior)

Group0中断通常为FIQ。Group1中断可以为IRQ或FIQ,依赖于当前安全状态和PE的异常级别。

EL和PE安全状态

Group0

Group1

Secure

Non-secure

安全EL0/1

FIQ

IRQ

FIQ

非安全EL0/1

FIQ

FIQ

IRQ

EL3

FIQ

FIQ

IRQ

这些规则与ARMv8-A安全状态和异常级别路由兼容。下图显示了一个简化的软件栈,当不同类型的中断发起且执行在EL0时:

在这个例子中,IRQ被路由到EL1(SCR_EL3.IRQ=0)而FIQ路由到EL3(SCR_EL3.FIQ=1)。表中给定描述的规则,在执行在EL1或EL0时,当前安全状态的group1中断被当作IRQ。

另外安全状态的中断会触发FIQ,异常发生在EL3。它允许软件执行在EL3,进行必要的上下文切换。更详细的内容查看章节5.3。

1. 对软件的影响

当配置中断控制器时,软件为中断group控制INTID的分配。仅在安全状态软件的执行可以分配INTID。通常在安全状态的软件执行必须能够访问设置和安全中断的状态。

从非安全状态到安全中断的访问能够被使能。通过寄存器GICD_NSACRn和GICR_NSACR可以控制每个INTID。

NOTE:一个INTID所属的中断group由实现决定。

NOTE: LPI通常为非安全group1中断。

2. 单安全状态的支持

在ARMv8-A和GICv3中对两个安全状态的支持是可选。实现可选择实现其中单个安全状态或两个安全状态。

GICv3支持两个安全状态,可通过GICD_CTLR.DS禁止一个安全状态。

(1)GICD_CTLR.DS=0

两个安全状态都支持。

(2)GICD_CTLR.DS=1

仅支持单个安全状态。仅实现单个安全状态时,该bit为RAO/WI。

当仅支持单个安全状态时,存在两个中断group:group0和group1。

本文档只描述实现两个安全状态的情况。

NOTE: 如果软件设置GICD_CTLR.DS=1,它仅在复位后被清除。

GICv3软件overview手册之GICv3基本功能(4)相关推荐

  1. GICv3软件overview手册之GICv3基本功能(1)

    本章描述与GICV3架构兼容的中断控制的基本操作.它也会描述不同的编程接口. 1. 中断类型 GICV3定义了如下中断类型: (1)SPI共享外设中断 这是一种全局外设中断,可路由到某个PE,或一组P ...

  2. GICv3软件overview手册之GICv3基本功能(5)

    GICv3中断控制器的寄存器接口分为三组: (1)Distributor接口: (2)edistributor接口: (3)CPU接口: Distributor(GICD_*) Distributor ...

  3. GICv3软件overview手册之GICv3基本功能(3)

    GICv3使用亲和路由来区分连接的PE,让中断路由到某个PE或某一组PE.PE的亲和性由4个8bit域表示. <affinity level3>.<affinity level2&g ...

  4. GICv3软件overview手册之GICv3基本功能(2)

    中断控制器对每个SPI/PPI/SGI中断源维护了一个状态机.状态机包含以下四种状态: (1)Inactive:中断源当前没有触发: (2)Pending:中断源被触发,但还未被PE应答: (3)Ac ...

  5. GICv3软件overview手册之介绍

    本文档提供了GICv3特性的软件overview,并且描述GICV3中断控制器的操作.它也只是如何在裸机环境下配置GICV3中断控制器的简介. 本文档是ARM通用中断控制器架构手册V3.0和V4.0的 ...

  6. GICv3软件overview手册之虚拟化

    ARMv8-A 可选择支持虚拟化.GICv3也支持虚拟化.GICv3对虚拟化的支持包括: (1)CPU接口寄存器的硬件虚拟化: (2)虚拟化中断: (3)维护中断: NOTE: GIC架构不提供虚拟化 ...

  7. GICv3软件overview手册之发送和接受SGI

    SGI中断为软件产生中断,软件可以通过写中断控制器的寄存器触发该中断. 1. 产生SGI 在CPU接口中可以通过写SGI寄存器来产生一个SGI中断. 下图为SGI寄存器的基本格式: (1)控制SGI ...

  8. GICv3软件overview手册之GICv4对虚拟LPI的直接注入(2)

    1. vPE和vINTID的映射 EventID-DeviceID的合并被映射到vPE和vINTID.当EventID和DeviceID相同时使用VMAPI命令: VMAPI <DeviceID ...

  9. GICv3软件overview手册之中断处理(2)

    1. 执行优先级&抢占 PMR设置中断发给某个PE的最小优先级.GICv3架构存在执行优先级的概念.当PE应答一个中断时,它的执行优先级变成中断的.当PE写EOI寄存器时执行优先级返回之前的值 ...

最新文章

  1. Confluence 6 创建小组的公众空间
  2. jquery实现心算练习
  3. 【面试题】python怎么合并两个字典
  4. Visual Studio 2017开发linux程序之libevent使用实例
  5. oracle 表分析 影响,oracle 表分析
  6. 使用Thrift RPC编写程序
  7. CF385C Bear and Prime Numbers 数学
  8. Notepad++ 配置 Markdown
  9. 披一张机器皮,智能就有了?!
  10. 【毕业设计】jsp+sql毕业生招聘系统毕业设计(系统+论文+英文文献+综合材料)
  11. 心电图分析软件_狼疮性心肌炎39例临床特点及预后分析
  12. Git学习笔记之廖雪峰Git教程
  13. Linux — 安装JDK 使用rpm命令安装
  14. 数据结构 实验 c/c++ 六度空间 图 图论
  15. 插件77:获取Yahoo!股票新闻
  16. jmeter压测数据库
  17. js基础知识(第二篇)
  18. Java毕设项目藏宝阁游戏交易系统(java+VUE+Mybatis+Maven+Mysql)
  19. 垃圾邮件的判定标准与识别方法
  20. mysql的id生成uuid

热门文章

  1. VS用OLE方式对Excel进行读写操作
  2. C#宿舍管理系统(C#课程设计含源码)
  3. 机器学习 网站大全--陆续更新中
  4. 盘点程序员逃离一线的Plan B
  5. Javascript 判断一个数是否为素数的三种解法
  6. JDK下载(jdk1.8下载与安装教程)
  7. Android精品软件汇总(不断更新)
  8. linux压缩文件和命令
  9. 让柯洁痛哭的AlphaGo,竟耗资3500万美元,耗电量相当于12760个大脑
  10. TCP 的 3 次握手 4 次挥手,小学生都能看懂