【ARMv8/v9 GIC 系列 5 -- GIC GICD_CTRL 使用详细介绍】

news2024/10/6 5:59:18

文章目录

  • GICD_CTRL
    • GICD_CTLR 寄存器结构
      • RWP(Register Write Pending)
      • E1NWF(Enable 1 of N Wakeup Functionality)
      • DS(Disable Security)
    • 亲和性路由(Affinity Routing)
      • ARE_NS
      • ARE_S
    • 中断组使能
      • EnableGrp1S
      • EnableGrp1NS)
      • EnableGrp0

GICD_CTRL

GICv3(通用中断控制器版本3)是ARM架构下用于管理和处理中断的关键组件之一。它包含了多个寄存器,用于配置和控制中断的行为。其中,GICD_CTLR(Distributor Control Register)是一个非常重要的寄存器,它用于启用中断和亲和性路由设置。
在这里插入图片描述

下面是对GICD_CTLR寄存器中一些关键位的详细介绍:

GICD_CTLR 寄存器结构

GICD_CTLR的格式取决于访问的安全状态以及系统支持的安全状态数量,这由GICD_CTLR.DS指定。当访问为安全状态,在支持两种安全状态的系统中,其结构如下:

RWP(Register Write Pending)

仅读。指示是否有寄存器写入操作正在进行。

  • 0b0:没有寄存器写入操作正在进行。之前对受影响寄存器字段的写入操作的效果对GIC架构的所有逻辑组件(包括CPU接口)都是可见的。
  • 0b1:寄存器写入操作正在进行。之前对受影响寄存器字段的写入操作的效果不能保证对所有GIC架构的逻辑组件(包括CPU接口)都是可见的,因为更改的效果仍在传播中。

RWP字段跟踪以下内容的写操作:

  • GICD_CTLR[2:0](组启用位,仅限从10的转变)
  • GICD_CTLR[7:4]ARE位,E1NWF位和DS位)
  • GICD_ICENABLER<n>

E1NWF(Enable 1 of N Wakeup Functionality)

如果硬件实现该bit,它将有以下行为:

  • 0b0:处于睡眠状态的PE(处理元素)不能被选为 1 of N中断。
  • 0b1:处于睡眠状态的PE可以根据实现定义的控制被选为 1 of N中断。

DS(Disable Security)

禁用安全性。

  • 0b0:不允许非安全访问访问和修改控制组0中断的寄存器。
  • 0b1:允许非安全访问访问和修改控制组0中断的寄存器。


如果当GICD_CTLR.ARE_S == 1时将DS从0写为1,则对于单一安全状态的GICD_CTLR.ARE是RAO/WI。
如果分配器只支持单一安全状态,此位是RAO/WI。
如果分配器支持两种安全状态,此位是否可编程或实现为RAZ/WI是由实现定义的。设置此字段为1时,所有对GICD_CTLR的访问都访问单一安全状态视图,且所有位都是可访问的。

设置为1后,只能通过硬件重置清除此字段。

如果在以下任何情况为真时将此位从0写为1,则行为是不可预测的:

  • GICD_CTLR.ENABLEGRP0==1
  • GICD_CTLR.ENABLEGRP1S==1
  • GICD_CTLR.ENABLEGRP1NS==1
  • 一个或多个INTID处于激活或激活和挂起状态。

亲和性路由(Affinity Routing)

亲和性路由(Affinity Routing)允许中断被路由到特定的处理器上,从而提高系统的性能和效率。ARE_NSARE_S位分别控制非安全和安全状态下的亲和性路由功能。在修改这些设置之前,需要确保系统处于正确的状态,否则可能会导致不可预测的行为。

以下是对这两个位的详细介绍:

ARE_NS

  • 0b0:非安全状态下禁用亲和性路由。
  • 0b1:非安全状态下启用亲和性路由。

安全状态下的亲和性路由被启用时,这个字段是只读/写入忽略(RAO/WI)。从0变为1的ARE_NS设置变化是不可预测的,除非GICD_CTLR.ENABLEGRP1_NON-SECURE == 0。从1变为0的ARE_NS设置变化也是不可预测的。如果没有实现针对非安全状态的GICv2向后兼容性,那么这个字段是只读/写入忽略(RAO/WI)。

ARE_S

  • 0b0:安全状态下禁用亲和性路由。
  • 0b1:安全状态下启用亲和性路由。

从0变为1的ARE_S设置变化是不可预测的,除非全部满足以下条件:

  • GICD_CTLR.ENABLEGRP0 == 0
  • GICD_CTLR.ENABLEGRP1S == 0
  • GICD_CTLR.ENABLEGRP1NS == 0

从1变为0的ARE_S设置变化也是不可预测的。

中断组使能

GICD_CTLR(Distributor Control Register)寄存器中,有几个位专门用来控制不同安全状态下的中断组的使能状态。这些位包括EnableGrp1SEnableGrp1NSEnableGrp0,它们分别控制安全组1非安全组1组0中断的使能状态。

以下是这些控制位的详细介绍:

EnableGrp1S

Enable Secure Group 1 Interrupts

  • 0b0:安全组1中断被禁用。
  • 0b1:安全组1中断被启用。

这个位允许控制器启用或禁用安全组1的中断。
当设置为1时,安全组1中的中断可以被发送到处理器;
当设置为0时,这些中断被阻止。

EnableGrp1NS)

Enable Non-Secure Group 1 Interrupts

  • 0b0:非安全组1中断被禁用。
  • 0b1:非安全组1中断被启用。

这个位的功能与EnableGrp1S相似,但它专门控制非安全状态下的组1中断。启用这些中断允许非安全环境的中断传递给处理器。

EnableGrp0

Enable Group 0 Interrupts

  • 0b0:组0中断被禁用。
  • 0b1:组0中断被启用。

组0中断通常被用于处理安全相关的中断。通过设置这个位,可以控制这类中断是否能够被分发和处理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1890767.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【分布式数据仓库Hive】常见问题及解决办法

目录 一、启动hive时发现log4j版本和hadoop的版本有冲突 解决办法&#xff1a;删除hive下高版本的slf4j 二、启动hive报错 Exception in thread "main" java.lang.NoSuchMethodError:com.google.common.base.Preconditions.checkArgument(ZLjava/lang/Object;)V …

web自动化(三)鼠标操作键盘

selenuim 键盘操作 import timefrom selenium.webdriver.common.keys import Keys from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.wait import WebDriverWait from selen…

ElementUI中的el-table解决宽度问题 - 根据内容自动撑开

在使用element-ui中&#xff0c;会发现表格组件el-table在未指定宽度情况下&#xff0c;会自动计算并给表格宽度赋值。但实际开发中&#xff0c;有时需要根据内容实际长度自动撑开显示&#xff0c;由内容的多少而决定表格的宽度&#xff0c;而不是默认宽度为100%。在默认情况下…

【Linux】线程——线程的概念、线程的特点、线程的优点和缺点、线程和进程、线程函数的使用

文章目录 Linux线程1. 线程的概念1.1 什么是线程 2. 线程的特点2.1 线程的优点2.2 线程的缺点2.4 线程和进程 3. 线程函数的使用pthread_create() 创建线程pthread_self() 获取线程IDpthread_exit() 线程终止pthread_cancel() 线程取消pthread_join() 线程等待pthread_detach()…

使用Redis实现消息队列:List、Pub/Sub和Stream的实践

摘要 Redis是一个高性能的键值存储系统&#xff0c;它的多种数据结构使其成为实现消息队列的理想选择。本文将探讨如何使用Redis的List、Pub/Sub和Stream数据结构来实现一个高效的消息队列系统。 1. 消息队列的基本概念 消息队列是一种应用程序之间进行通信的机制&#xff0…

docker容器间网络仿真工具-pumba

docker-tc&pumba docker-tc:docker-tc项目仓库 pumba:pumba项目仓库 这两个项目理论上都可以实现对容器间的网络环境进行各种模拟干预&#xff0c;包括延迟&#xff0c;丢包&#xff0c;带宽限制等。 但是我在实际使用时&#xff0c;发现docker-tc这个工具在进行网络进行模…

Docker 部署 Minio 对象存储服务器

文章目录 Github官网文档简介dockerdocker-compose.ymlmc 客户端mc 基础命令Golang 示例创建 test 账号密钥文件上传示例 Github https://github.com/minio/minio 官网 https://min.io/https://www.minio.org.cn/ 文档 https://www.minio.org.cn/docs/minio/kubernetes/up…

摸爬滚打半年,我是如何从小白进阶到渗透测试工程师

前言 工作也好几年了&#xff0c;在这摸爬滚打中&#xff0c;遇到了服务器被黑&#xff0c;网站被人DDOS攻击&#xff0c;数据库被篡改等等。服务器也不是你说不让人上就不让人上的&#xff0c;所以IT安全这个话题还是比较沉重的&#xff0c;涉及的东西很多&#xff0c;只有你…

个人博客|PHP源码|支持多国语言切换

一. 前言 今天小编给大家带来了一款可学习&#xff0c;可商用的&#xff0c;支持多国语言的个人博客网站源码&#xff0c;支持二开&#xff0c;无加密。此博客相当简洁&#xff0c;也适合海外。详细界面和功能见下面视频演示。 如果您正好有此需求源码&#xff0c;请联系小编…

SSM学习4:spring整合mybatis、spring整合Junit

spring整合mybatis 之前的内容是有service层&#xff08;业务实现层&#xff09;、dao层&#xff08;操作数据库&#xff09;&#xff0c;现在新添加一个domain&#xff08;与业务相关的实体类&#xff09; 依赖配置 pom.xml <?xml version"1.0" encoding&quo…

一篇文章搞懂弹性云服务器和轻量云服务器的区别

前言 在众多的云服务器类型中&#xff0c;弹性云服务器和轻量云服务器因其各自的特点和优势&#xff0c;受到了广大用户的青睐。那么&#xff0c;这两者之间到底有哪些区别呢&#xff1f;本文将为您详细解析。 弹性云服务器&#xff1a;灵活多变的计算资源池 弹性云服务器&…

鸿蒙开发设备管理:【@ohos.sensor (传感器)】

传感器 说明&#xff1a; 本模块首批接口从API version 8开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。 导入模块 import sensor from ohos.sensor;sensor.on ACCELEROMETER on(type: SensorType.SENSOR_TYPE_ID_ACCELEROMETER, callback: C…

04-ArcGIS For JavaScript的可视域分析功能

文章目录 综述代码实现代码解析结果 综述 在数字孪生或者实景三维的项目中&#xff0c;视频融合和可视域分析&#xff0c;一直都是热点问题。Cesium中&#xff0c;支持对阴影的后处理操作&#xff0c;通过重新编写GLSL代码就能实现视域和视频融合的功能。ArcGIS之前支持的可视…

Vue+Xterm.js+WebSocket+JSch实现Web Shell终端

一、需求 在系统中使用Web Shell连接集群的登录节点 二、实现 前端使用Vue&#xff0c;WebSocket实现前后端通信&#xff0c;后端使用JSch ssh通讯包。 1. 前端核心代码 <template><div class"shell-container"><div id"shell"/>&l…

day01-切片和索引

day01-切片和索引 ndarray对象的内容可以通过索引或切片来访问和修改&#xff0c;与 Python 中list 的切片操作一样。 ndarray数组可以基于0-n的下标进行索引 注意&#xff0c;数组切片并不像列表切片会重新开辟一片空间&#xff0c;而是地址引用&#xff0c;需要使用.copy()…

【Threejs进阶教程-着色器篇】2. Uniform的基本用法与Uniform的调试

Uniform的基本用法与Uniform的调试 关于本Shader教程优化上一篇的效果优化光栅栏高度让透明度和颜色变的更平滑pow()函数借助数学工具更好的理解函数 Unifoms简介编写uniforms修改片元着色器代码借助lil.gui调试uniforms使用uniform控制颜色继续在uniforms添加颜色在着色器中接…

动态住宅代理IP的3个优点

在大数据时代的背景下&#xff0c;代理IP成为了很多企业顺利开展的重要工具。代理IP地址可以分为住宅代理IP地址和数据中心代理IP地址。选择住宅代理IP的好处是可以实现真正的高匿名性&#xff0c;而使用数据中心代理IP可能会暴露自己使用代理的情况。 住宅代理IP是指互联网服务…

JavaScript中location对象的主要属性和方法

属性 href&#xff1a;获取或设置整个URL。protocol&#xff1a;获取URL的协议部分&#xff0c;如"http:"或"https:"。host&#xff1a;获取URL的主机名&#xff08;包括端口号&#xff0c;如果有的话&#xff09;。hostname&#xff1a;获取URL的主机名&…

Android studio 打包低版本的Android项目报错

一、报错内容 Execution failed for task :app:packageRelease. > A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade> com.android.ide.common.signing.KeytoolException: Failed to read key key0 from store "…

【Portswigger 学院】路径遍历

路径遍历&#xff08;Path traversal&#xff09;又称目录遍历&#xff08;Directory traversal&#xff09;&#xff0c;允许攻击者通过应用程序读取或写入服务器上的任意文件&#xff0c;例如读取应用程序源代码和数据、凭证和操作系统文件&#xff0c;或写入应用程序所访问或…