GICv3软件overview手册之GICv3基本功能(4)
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)相关推荐
- GICv3软件overview手册之GICv3基本功能(1)
本章描述与GICV3架构兼容的中断控制的基本操作.它也会描述不同的编程接口. 1. 中断类型 GICV3定义了如下中断类型: (1)SPI共享外设中断 这是一种全局外设中断,可路由到某个PE,或一组P ...
- GICv3软件overview手册之GICv3基本功能(5)
GICv3中断控制器的寄存器接口分为三组: (1)Distributor接口: (2)edistributor接口: (3)CPU接口: Distributor(GICD_*) Distributor ...
- GICv3软件overview手册之GICv3基本功能(3)
GICv3使用亲和路由来区分连接的PE,让中断路由到某个PE或某一组PE.PE的亲和性由4个8bit域表示. <affinity level3>.<affinity level2&g ...
- GICv3软件overview手册之GICv3基本功能(2)
中断控制器对每个SPI/PPI/SGI中断源维护了一个状态机.状态机包含以下四种状态: (1)Inactive:中断源当前没有触发: (2)Pending:中断源被触发,但还未被PE应答: (3)Ac ...
- GICv3软件overview手册之介绍
本文档提供了GICv3特性的软件overview,并且描述GICV3中断控制器的操作.它也只是如何在裸机环境下配置GICV3中断控制器的简介. 本文档是ARM通用中断控制器架构手册V3.0和V4.0的 ...
- GICv3软件overview手册之虚拟化
ARMv8-A 可选择支持虚拟化.GICv3也支持虚拟化.GICv3对虚拟化的支持包括: (1)CPU接口寄存器的硬件虚拟化: (2)虚拟化中断: (3)维护中断: NOTE: GIC架构不提供虚拟化 ...
- GICv3软件overview手册之发送和接受SGI
SGI中断为软件产生中断,软件可以通过写中断控制器的寄存器触发该中断. 1. 产生SGI 在CPU接口中可以通过写SGI寄存器来产生一个SGI中断. 下图为SGI寄存器的基本格式: (1)控制SGI ...
- GICv3软件overview手册之GICv4对虚拟LPI的直接注入(2)
1. vPE和vINTID的映射 EventID-DeviceID的合并被映射到vPE和vINTID.当EventID和DeviceID相同时使用VMAPI命令: VMAPI <DeviceID ...
- GICv3软件overview手册之中断处理(2)
1. 执行优先级&抢占 PMR设置中断发给某个PE的最小优先级.GICv3架构存在执行优先级的概念.当PE应答一个中断时,它的执行优先级变成中断的.当PE写EOI寄存器时执行优先级返回之前的值 ...
最新文章
- Confluence 6 创建小组的公众空间
- jquery实现心算练习
- 【面试题】python怎么合并两个字典
- Visual Studio 2017开发linux程序之libevent使用实例
- oracle 表分析 影响,oracle 表分析
- 使用Thrift RPC编写程序
- CF385C Bear and Prime Numbers 数学
- Notepad++ 配置 Markdown
- 披一张机器皮,智能就有了?!
- 【毕业设计】jsp+sql毕业生招聘系统毕业设计(系统+论文+英文文献+综合材料)
- 心电图分析软件_狼疮性心肌炎39例临床特点及预后分析
- Git学习笔记之廖雪峰Git教程
- Linux — 安装JDK 使用rpm命令安装
- 数据结构 实验 c/c++ 六度空间 图 图论
- 插件77:获取Yahoo!股票新闻
- jmeter压测数据库
- js基础知识(第二篇)
- Java毕设项目藏宝阁游戏交易系统(java+VUE+Mybatis+Maven+Mysql)
- 垃圾邮件的判定标准与识别方法
- mysql的id生成uuid