AIA - APLIC之三(附APLIC处理流程图)

本文属于《 RISC-V指令集基础系列教程》之一,欢迎查看其它文章。

1 APLIC复位

APLIC复位后,其所有状态都变得有效且一致,但以下情况除外:

  • 每个中断域的domaincfg寄存器(spec第 4.5.1 节);
  • 可能是machine-level interrupt domain的MSI地址配置寄存器(spec第4.5.3 和4.5.4 节);
  • 每个中断域的genmsi寄存器的Busy位(如果存在)(spec第 4.5.15 节)。

以上这几种情况,在APLIC复位后,需要根据这些寄存器的具体定义来确定。

2 对中断pending位的精确影响

尝试通过写入中断域控制区域中的寄存器,来设置或清除中断源的pending位可能会成功,也可能不会成功,具体取决于相应的中断源模式、中断域的中断投递模式,以及中断源校正输入的状态值(spec第4.5.2节中定义)。
下面列举了,针对给定的中断源源模式,设置或清除pending位时的所有情况。

如果源模式为Detached

  • 仅通过对setip或setipnum寄存器,执行相关写入操作,将pending位设置为1。
  • 当在APLIC处请求中断或由MSI转发中断,或者通过对in_clrip寄存器或clripnum进行相关写入时,将清除pending位。

如果源模式为Edge1Edge0

  • 通过校正输入值,从低到高的跳变,或者通过对setip或setipnum寄存器进行相应写入,将pending位设置为1。
  • 当在APLIC处请求中断或由MSI转发中断,或者通过对in_clrip寄存器或clripnum进行相关写入时,将清除pending位。

如果源模式为Level1Level0,并且中断域配置为直接投递模式(domaincfg.DM = 0):

  • 只要校正后的输入值为高电平,pending位就会设置为1。无法通过写入setip或setipnum寄存器来设置pending位。
  • 只要校正后的输入值为低电平,pending位就会被清除。pending位不能通过 APLIC 处的中断声明来清除,也不能通过写入in_clrip寄存器或clripnum来清除。

如果源模式为Level1Level0,并且中断域配置为MSI投递模式(domaincfg.DM = 1):

  • 通过校正输入值中从低到高的跳变,将pending位设置为1。当经校正的输入值为1时,也可以通过setip或setipnum寄存器的相应写入来设置pending位。
  • 只要校正后的输入值为低电平,或者通过对in_clrip寄存器或clripnum进行相关写入,就会清除pending位。

当中断域处于直接投递模式时,电平触发的中断源的pending位,始终只是整流输入值的副本。即使在MSI传送模式下,当校正输入值为0时,电平触发的中断源的pending位,也不会被设置 (= 1)。

除上述规则外,如spec第4.5.2节中所述,对sourcecfg寄存器的写入,还可导致源的中断挂起位设置为1。

3 直接传递模式

当中断域处于直接投递模式 (domaincfg.DM = 0) 时,中断通过每个hart的唯一信号(通常是专用中断线)从APLIC传递到hart。
在这种情况下,中断域的内存映射控制区域,在末尾包含一组中断传送控制 (IDC) 结构,每个hart都会对应一个IDC结构。
第一个IDC结构,是该中断域内索引为0的hart;第二个是该中断域索引为1的hart;依次类推。

3.1 IDC结构

每个IDC结构都是32字节(对齐到 32 字节地址边界),并具有以下定义的寄存器:
在这里插入图片描述
如果IDC结构,针对的特定hart,对于中断域中的任何实际hart都无效,则这些寄存器,可以选择全部为只读零。否则,寄存器将在下面单独描述。

特定的APLIC,可能被构建为支持最大数量的hartÿ

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

unity学习5:创建一个自己的3D项目

目录 1 在unity里创建1个3D项目 1.1 关于选择universal 3d,built-in render pipeline的区别 1.2 创建1个universal 3d项目 2 打开3D项目 2.1 准备操作面板:操作界面 layout,可以随意更换 2.2 先收集资源:打开 window的 AssetStore 下载…

AI赋能跨境电商:魔珐科技3D数字人破解出海痛点

跨境出海进入狂飙时代,AI应用正在深度渗透并重塑着跨境电商产业链的每一个环节,迎来了发展的高光时刻。生成式AI时代的大幕拉开,AI工具快速迭代,为跨境电商行业的突破与飞跃带来了无限可能性。 由于跨境电商业务自身特性鲜明&…

我用Ai学Android Jetpack Compose之Text

这篇开始学习各种UI元素,答案来自 通义千问,通义千问没法生成图片,图片是我补充的。 下述代码只要复制到第一个工程,做一些import操作,一般import androidx.compose包里的东西,即可看到预览效果。完整工程代…

HashMap总结使用+原理+面试

文章目录 1.Hashmap的基本使用创建hashmap对象。遍历hashmap统计字母出现的次数用来投票计算返回JSON数据 2.hashmap源码阅读put源码阅读 3. HashMap 面试题目hashmap实现的原理什么时候数组需要进行扩容hashmap怎么确定把数据放到那个节点的哪个位置。为什么用 n - 1 与运算&a…

JS中函数基础知识之查漏补缺(写给小白的学习笔记)

函数 函数是ECMAScript中 最有意思的部分之一, 主要是因为函数实际上是对象.-- 每个函数 都是Function类型的实例,Function也有属性和方法. 因为函数是对象,所以函数名就是指向函数对象的指针. 常用的定义函数的语法: ①函数声明 ②函数表达式 ③箭头函数 function sum (n…

Skyeye 云 VUE 版本 v3.15.3 发布,涉及 ERP、OA、财务等

Skyeye 云智能制造,采用 Springboot winUI 的低代码平台、移动端采用 UNI-APP。包含 30 多个应用模块、50 多种电子流程,CRM、PM、ERP、MES、ADM、EHR、笔记、知识库、项目、门店、商城、财务、多班次考勤、薪资、招聘、云售后、论坛、公告、问卷、报表…

LInux单机安装Redis

1. 安装gee工具包 由于Redis是基于c语言编写的所以安装的时候需要先安装gee以及gcc的依赖,yum云用不了可以看一下这个 linux 替换yum源镜像_更换yum镜像源-CSDN博客 yum install -y gcc tcl 2. 添加redis的压缩包 3. 上传到Linux 上传到 /usr/local/src 目录、这个目录一般用于…

热备份路由HSRP及配置案例

✍作者:柒烨带你飞 💪格言:生活的情况越艰难,我越感到自己更坚强;我这个人走得很慢,但我从不后退。 📜系列专栏:网路安全入门系列 目录 一,HSRP的相关概念二,…

java开发springoot

阅读理解 命令之间空一行:表示前面的是配置 红色背景:表示待验证蓝色背景:表示常用或推荐绿色背景:注意/推荐 json 转 对象 import com.fasterxml.jackson.databind.ObjectMapper; public DebangResp convertJsonToObject(Stri…

gesp(C++一级)(17)洛谷:B4062:[GESP202412 一级] 温度转换

gesp(C一级)(17)洛谷:B4062:[GESP202412 一级] 温度转换 题目描述 小杨最近学习了开尔文温度、摄氏温度和华氏温度的转换。令符号 K K K 表开尔文温度,符号 C C C 表摄氏温度,符号 F F F 表华氏温度&am…

windows ping ssh

问题解决1:局域网内,为啥别人ping不到我的IP 问题解决2:ssh连接windows10拒绝连接 第一步:ssh使用的22端口,首先确认windows10的22端口是否开启。 –开启步骤 1.控制面板–>Windws Defender 防火墙–>高级设置…

《Rust权威指南》学习笔记(二)

枚举enum 1.枚举的定义和使用如下图所示: 定义时还可以给枚举的成员指定数据类型,例如:enum IpAddr{V4(u8, u8, u8, u8),V6(String),}。枚举的变体都位于标识符的命名空间下,使用::进行分隔。 2.一个特殊的枚举Option&#xff0…

科研绘图系列:R语言单细胞数据常见的可视化图形

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包数据下载导入数据数据预处理图1图2图3图4图5图6系统信息参考介绍 单细胞数据常见的可视化图形 因为本教程是单细胞数据,因此运行本画图脚本需要电脑的内存最少32Gb 加载…

打造三甲医院人工智能矩阵新引擎(二):医学影像大模型篇--“火眼金睛”TransUNet

一、引言 1.1 研究背景与意义 在现代医疗领域,医学影像作为疾病诊断与治疗的关键依据,发挥着不可替代的作用。从传统的X射线、CT(计算机断层扫描)到MRI(磁共振成像)等先进技术,医学影像能够直观呈现人体内部结构,为医生提供丰富的诊断信息,涵盖疾病识别、病灶定位、…

IP查询于访问控制保护你我安全

IP地址查询 查询方法: 命令行工具: ①在Windows系统中,我们可以使用命令提示符(WINR)查询IP地址,在弹窗中输入“ipconfig”命令查看本地网络适配器的IP地址等配置信息; ②在Linux系统中&…

2025新春烟花代码(一)HTML5夜景放烟花绽放动画效果

标题预览效果 标题HTML代码 <!DOCTYPE html> <html lang"en"> <script>var _hmt _hmt || [];(function () {var hm document.createElement("script");hm.src "https://hm.baidu.com/hm.js?45f95f1bfde85c7777c3d1157e8c2d34&…

【Rust自学】10.6. 生命周期 Pt.2:生命周期的语法与例子

喜欢的话别忘了点赞、收藏加关注哦&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 10.6.1. 生命周期标注语法 生命周期的标注并不会改变引用的生命周期长度。如果某个函数它制定了泛型生命周期参数&#xff0c;那么它就可…

【C语言程序设计——选择结构程序设计】求一元二次方程的根(头歌实践教学平台习题)【合集】

目录&#x1f60b; 任务描述 相关知识 sqrt() 函数 编程要求 测试说明 通关代码 测试结果 任务描述 本关任务&#xff1a;根据求根公式&#xff0c;计算并输出一元二次方程的两个实根&#xff0c;要求精确道小数点后2位。要求方程系数从键盘输入。如果输入的系数不满足求…

【C++数据结构——图】图的邻接矩阵和邻接表的存储(头歌实践教学平台习题)【合集】

目录&#x1f60b; 任务描述 相关知识 1. 带权有向图 2. 图的邻接矩阵 3. 图的邻接表 测试说明 通关代码 测试结果 任务描述 本关任务&#xff1a;编写一个程序实现图的邻接矩阵和邻接表的存储。 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a; 带权有向图…

java 转义 反斜杠 Unexpected internal error near index 1

代码&#xff1a; String str"a\\c"; //出现异常&#xff0c;Unexpected internal error near index 1 //System.out.println(str.replaceAll("\\", "c"));//以下三种都正确 System.out.println(str.replace(\\, c)); System.out.println(str.r…