当前位置: 首页 > news >正文

AIA - IMSIC之二(附IMSIC处理流程图)

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

1 ​​​​​​​通过IMSIC接收外部中断的CSR

软件通过《AIA - 新增的CSR》描述的CSR来访问IMSIC。

  • machine level 的 CSR 与 IMSIC 的 machine level interrupt file 可相互互动;
  • 而 supervisor level 的 CSR 也能与 IMSIC 的 supervisor level interrupt file 可相互互动;
  • 同样地当 IMSIC 有 guest interrupt file,VS CSR 可与 guest interrupt file 相互互动。

machine level 相关的CSR有以下:miselect、mireg、mtopei。
supervisor level 相关的 CSR 有以下:siselect、sireg、stopei。
当 hypervisor extension 实现时,与 VS CSR 相关的有以下:vsiselect、vsireg、vstopei。

miselect 和 mireg通过间接的方式,访问machine level的附带寄存器。
同样的,supervispr level的siselect 和 sireg,以及 VS level 的 vsiselect 和 vsireg,也可以间接访问各自 level 的附带寄存器。
需要注意的是:

这些附带寄存器既不是CSR,也不是memory-mapped的寄存器,它们在interrupt file中。

不同level的interrupt file的寄存器组相同,*iselect表示这些寄存器的地址,它的范围在 0x70~0xFF ,会选择相对应在 IMSIC 中 interrupt file的寄存器,interrupt file结构如下:
在这里插入图片描述

寄存器0x71 和 0x73~0x7F 目前被保留。
当 *iselect CSR 具有这些值之一(0x71和0x73~0x7f)时:

  • 从匹配的 *ireg CSR读取,会返回0;
  • 并且会忽略向 *ireg CSR 的写入行为。

eip0 到 eip63 对应所有实现 interrupt ID 的 pending bit,统称之为 eip array;
同样的 eie0 到 eie63 所对应 enabled bit 统称之为 eie array。
每个寄存器32bit,eip0/eie0的bit0无效,因此interrupt ID的有效范围为1-2047,对应这些寄存器组的bit位置。

1.1 interrupt file交互示意图

根据前面章节描述,我们可以得到machine level的CSR 与 IMSIC 的 machine level interrupt file交互,其结构如下所示:
在这里插入图片描述

  • seteipnum_le与seteipnum_be位于内存映射空间中,基址为4KB对齐,这2个寄存器在映射空间中的偏移为0x000和0x004。
  • 向seteipnum_le或seteipnum_be写入Interrupt ID,可将Interrupt ID对应的eip array中某bit置位。
  • 向miselect中写入0x70~0xff任一地址,然后读写mireg,可实现对Interrupt File内部实际寄存器的访问。
http://www.lryc.cn/news/510094.html

相关文章:

  • 数据处理之数据规约
  • 爬虫代理服务要怎么挑选?
  • vue3组件调用解决奇怪问题的详细记录
  • 【物联网技术与应用】实验16:模拟霍尔传感器实验
  • 【机器学习案列】车牌自动识别系统:基于YOLO11的高效实现
  • 高精度问题
  • kong网关使用pre-function插件,改写接口的返回数据
  • 【QT开发自制小工具】PDF/图片转excel---调用百度OCR API接口
  • vue2 elementui if导致的rules判断失效
  • DevOps实战:用Kubernetes和Argo打造自动化CI/CD流程(2)
  • 嵌入式科普(25)Home Assistant米家集成意味着IOT的核心是智能设备
  • spring cloud gateway 3
  • html + css 淘宝网实战
  • 游戏引擎学习第62天
  • LeetCode - Google 校招100题 第6天 回溯法(Backtracking) (8题)
  • C项目 天天酷跑(下篇)
  • 达梦数据守护搭建
  • 记录一次前端绘画海报的过程及遇到的几个问题
  • 24.12.26 SpringMVCDay01
  • 一分钟快速了解Ecovadis认证等级划分
  • 科技云报到:人工智能时代“三大件”:生成式AI、数据、云服务
  • 【网络云计算】2024第52周-每日【2024/12/26】小测-理论实操-备份MySQL数据库并发送邮件-解析
  • 菜鸟带新鸟——基于EPlan2022的部件库制作(3D)
  • Level DB --- MemTable
  • 【山西长治】《长治市市直部门政务信息化建设项目预算编制规范和预算编制标准》(长财行[2022]25号)-省市费用标准解读系列32
  • 海格通信嵌入式面试题及参考答案
  • 前端学习DAY27(盒子模型内边距)
  • 基于cobra开发的k8s命令行管理工具k8s-manager
  • scala基础学习(数据类型)-数组
  • uniapp 微信小程序 页面部分截图实现