ICC_SRE_EL3:控制EL3下选择系统寄存器接口,或内存映射接口,作为GIC CPU接口;(非正规表述就是对ICC_*/ICH*寄存器的访问是通过寄存器接口还是内存映射接口,如果使用内存映射接口,则访问寄存器会发生异常,并被本异常等级捕获)

bit3 Enable:使能低异常等级对ICC_SRE_EL1/2的访问;

0-将Secure/non-Secure EL1(ICC_SRE_EL3的SRE==1即使用系统寄存器接口)对ICC_SRE_EL1的访问、EL2对ICC_SRE_EL1/2的访问捕获到EL3;

1-不捕获;

bit2 DIB:禁用IRQ bypass;

0-使能IRQ bypass;

1-禁用IRQ bypass;

bit1 DFB:禁用FIQ bypass,同DIB;

bit0 SRE:使能系统寄存器;

0-必须使用内存映射接口,EL3访问任意ICH_*或ICC_*寄存器(除了ICC_SRE_EL1/2/3)都会捕获到EL3;

1-系统寄存器接口到ICH_*寄存器和EL1/2/3的ICC_*寄存器在EL3中使能;


ICC_SRE_EL2:控制EL2下选择系统寄存器接口或内存映射接口作为GIC CPU接口;

bit3 Enable:使能低异常等级对ICC_SRE_EL1的访问;

0-Non-secure EL1对ICC_SRE_EL1的访问会被捕获到EL2

1-Non-secure EL1对ICC_SRE_EL1的访问不会被捕获到EL2

bit2 DIB:禁用IRQ bypass

bit1 DFB:禁用FIQ bypass

bit0 SRE:使能系统寄存器;

0-必须使用内存映射接口,EL2访问任意ICH_*或ICC_*寄存器(除了ICC_SRE_EL1、ICC_SRE_EL2)都会被捕获到EL2;

1-在EL2中使用系统寄存器接口对ICH_*以及EL1/2的ICC_*寄存器访问;


ICC_SRE_EL1:控制EL1下选择系统寄存器接口或内存映射接口作为GIC CPU接口;

bit2 DIB,bit1 DFB;不比赘述;

bit0 SRE:同EL3/2

0-必须使用内存映射接口,从EL1访问任意ICC*系统寄存器(除了ICC_SRE_EL1)都会被捕获到EL1;

1-当前异常状态使用系统寄存器接口;


msr SCR_EL3, xzr  // 开机处于EL3,NS位置零,于是访问ICC_SRE_EL1其实处理的是ICC_SRE_EL1的安全域接口;

mov x0, #15
msr ICC_SRE_EL3, x0

isb
即设置EL3不捕获对ICC_SRE_EL1/2的访问;IRQ、FIQ的bypass禁用;使用系统寄存器接口。

msr ICC_SRE_EL1, x0

设置ICC_SRE_EL1的安全域接口

mov x3, #(SCR_EL3_RW  | \
              SCR_EL3_SMD | \
              SCR_EL3_HCE |  /*add hce, enable el2*/ \
              SCR_EL3_NS)
msr SCR_EL3, x3
isb

在EL3中切换低异常等级到Non-secure域,这样访问ICC_SRE_EL1就是处理其Non-secure域接口,同样,仅有Non-secure接口的ICC_SRE_EL2也可以处理。

mov x0, #15
msr ICC_SRE_EL2, x0
isb
msr ICC_SRE_EL1, x0

EL3/2/1 Secure/Non-secure域的ICC_SRE_ELx都设置完成;

GICv3-4零散的寄存器解读(1)相关推荐

  1. 电量模块MODBUS RTU寄存器解读

    ---恢复内容开始--- 最近在写一个关于电量模块的arduino lib,需要了解电量模块的寄存器读写,涉及到硬件底层知识. 先复习一下计算机原理中有关位.字节和字的关系(来自google book ...

  2. 模块DIY——基于DDS直接数字频率合成技术自制的可编程任意波形发生器模块(DDS原理、寄存器解读、原理图设计、驱动程序-适用于AD9833/AD9834/AD9838)

    [系列专栏]:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来! <QT开发实战> <嵌入式通用开发实战> <从0到1学习嵌入式Linux开发>

  3. 【转】ARM GIC中断系列(三):gicv3架构基础

    GICv3架构是GICv2架构的升级版,增加了很多东西.变化在于以下: 使用属性层次(affinity hierarchies),来对core进行标识,使gic支持更多的core 将cpu inter ...

  4. GICv3/v4-软件概述

    目录内容 2 介绍→主要介绍GIC架构历史 3 GICv3基础→概念理解,尤其是编程模型的理解 4 GIC配置→如何配置GIC的各种寄存器,使其正常工作 5 处理中断→讲解中断的处理流程 6 LPI配 ...

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

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

  6. 06-GICv3_v4_overview

    目录 1 简介 2 gic的版本号 3 gic模型 4 gic的基础知识 4.1. 中断类型 4.1.1 外设给gic的中断信号 4.2. 中断的状态 4.2.1 点评中断 4.2.2 边沿中断 4. ...

  7. MSI_MSI-X中断之体验与使用

    MSI_MSI-X中断之体验与使用 文章目录 MSI_MSI-X中断之体验与使用 1. 怎么发出MSI/MSI-X中断 1.1 在RK3399上体验 1.1.1 安装工具 1.1.2 查看设备MSI- ...

  8. 五、c++学习(加餐1:汇编基础学习)

    经过前面几节课的学习,我们在一些地方都会使用汇编来分析,我们学习汇编,只是学习一些基础,主要是在我们需要深入分析语法的时候,使用汇编分析,这样会让我们更熟悉c++编译器和语法. 从这节课开始,会持续加 ...

  9. 从零开始自制一个OS

    目录 本文讨论内容 第一节        自制RTOS快速体验 第二节        CM3架构解读 如何实现多线程/多任务 寄存器解读 MSP和PSP寄存器 第三节        任务调度的实现 O ...

最新文章

  1. 大话设计模式之简单工厂模式
  2. html 滚动条_数十种自定义多彩多样滚动条样式
  3. springboot mysql时区设置_java/springboot/mysql时区问题解决方案
  4. loadrunner解决在项目中的难点解决
  5. WebService基础学习
  6. g120xa变频器调试参数_西门子G120XA变频器如何进行快速调试
  7. NPM 简单实用说明
  8. 《从零开始学Swift》学习笔记(Day 13)——数据类型之整型和浮点型
  9. VS C# 获取文件夹下的所有文件
  10. javascript前端导出Excel简单写法
  11. 电脑断网情况下,自动连接wifi
  12. 计算机休眠唤醒原理,电脑休眠和睡眠区别以及怎么唤醒
  13. 软件测试---UI界面测试点
  14. processson的文件数量已达到上限如何删除老文件新建新的文件创建流程图
  15. 大学实验室面试总结(机器学习)
  16. 【Rust精彩blog】Rust 中几个智能指针的异同与使用场景
  17. 考研380分什么水平计算机,考研380分属于什么水平 算高分吗
  18. 业务流程监控的几点建议
  19. iQQ 学习笔记1 :登录、验证码、收消息
  20. 一文弄懂区块链技术原理

热门文章

  1. u大侠pe系统桌面计算机,如何使用U大侠PE系统修复引导文件
  2. 阿里云ECS最新的实例规格族有哪些
  3. 脱离文档流和恢复文档流的方法
  4. PASCAL VOC2012类型的数据集生成train.txt\val.txt等文件
  5. 三人易行PLC编程培训怎么样?
  6. TTL与非门多余的输入端处置办法及其优缺点
  7. Windows.h 常用API函数【转】
  8. FTP文件传输协议与部署,包括Linux系统、Windows系统和H3C路由交换设备部署
  9. 关于1Byte 1K 1M 1G(换算)
  10. 《如师通语言学习软件(罗塞塔石碑)》(Rosetta Stone) v3.4.5 英语/日语/法语/德语/韩语/俄语/西班牙语/意大利语/阿拉伯语/葡萄牙语/汉语 [云端免安装版]