CSR地址空间映射:
地址范围bit[11:10]bit[9:8]bit[7:4]访问模式访问权限0x000 ~ 0x0FF0000xxxxURW0x400 ~ 0x4FF0100xxxxURW0x800 ~ 0x8FF1000xxxxURW(用户自定义系统寄存器)0xC00 ~ 0xC7F11000xxxURO0xC80 ~ 0xCBF110010xxURO0xCC0 ~ 0xCFF110011xxURO0x100 ~ 0x1FF0001xxxxSRW0x500 ~ 0x57F01010xxxSRW0x580 ~ 0x5BF010110xxSRW0x5C0 ~ 0x5FF010111xxSRW(用户自定义系统寄存器)0x900 ~ 0x97F10010xxxSRW0x980 ~ 0x9BF100110xxSRW0x9C0 ~ 0x9FF100111xxSRW(用户自定义系统寄存器)0xD00 ~ 0xD7F11010xxxSRO0xD80 ~ 0xDBF110110xxSRO0xDC0 ~ 0xDFF110111xxSRO(用户自定义系统寄存器)0x300 ~ 0x3FF0011xxxxMRW0x700 ~ 0x77F01110xxxMRW0x780 ~ 0x79F1011100xMRW0x7A0 ~ 0x7AF01111010MRW(用于调试寄存器)0x7B0 ~ 0x7BF01111011MRW(只能用于调试寄存器)0x7C0 ~ 0x7FF011111xxMRW(用户自定义系统寄存器)0xB00 ~ 0xB7F10110xxxMRW0xB80 ~ 0xBBF101110xxMRW0xBC0 ~ 0xBFF101111xxMRW(用户自定义系统寄存器)0xF00 ~ 0xF7F11110xxxMRO0xF80 ~ 0xFBF111110xxMRO0xFC0 ~ 0xFFF111111xxMRO(用户自定义系统寄存器) 出发非法指令异常的行为: 访问不存在或未实现的寄存器;写入RO的系统寄存器低级别处理器模式下访问高级别处理器模式的系统寄存器(模式级别:M > S > U) 2.1 U模式 系统寄存器 地址CSR名称属性说明0x001fflagsURW浮点数累积异常(accrued exception)0x002frmURW浮点数动态舍入模式(dynamic rounding mode)0x003fcsrURW浮点数控制和状态寄存器0xC00cycleURO读取时钟周期,映射到RDCYCLE伪指令0xC01timeURO读取time系统寄存器的值,映射到RDTIME伪指令0xC02instretURO执行指令数目,映射到RDINSTRET伪指令0xC03 ~ 0xC1Fhpmcounter3 ~hpmcounter31性能检测寄存器 补充: RDCYCLE伪指令读取cycle系统寄存器的值,返回物理处理器内核的时钟周期数(并非处理器硬件线程的始终周期数)。主要用于性能监控和调优;RDTIME伪指令读取time系统寄存器的值,获取系统实际时间。系统每次启动时读取CMOS上的RTC计数值,当时钟中断到来时,更新该计数;RDINSTRET伪指令读取instret系统寄存器的值,返回处理器执行线程已经执行的指令数量;hpmcounter用于系统性能检测的寄存器,这些计数器的计数记录平台的事件,并通过额外的特权寄存器进行配置。 2.2 S模式 系统寄存器 地址CSR名称属性说明0x100sstatusSRWS模式下的处理器状态寄存器0x104sieSRWS模式下的中断使能寄存器0x105stvecSRWS模式下的异常向量表入口地址寄存器0x106scounterenSRWS模式下的计数使能寄存器0x10AsenvcfgSRWS模式下的环境配置寄存器0x140scratchSRW用于异常处理的临时寄存器0x141sepcSRWS模式下的异常模式程序计数器(PC)寄存器0x142scauseSRWS模式下的异常原因寄存器0x143stvalSRWS模式下的异常向量寄存器(记录发生异常的虚拟地址)0x144sipSRWS模式下的中断待定寄存器0x180satpSRWS模式下的地址转换与保护寄存器0x5A8scontextSRWS模式下的上下文寄存器(用于调试) 说明: scounteren用于在S模式下,使能U模式下的硬件性能检测和计数寄存器(cycle, time, instret, HPM3~31) scratch在从S模式返回U模式时,保存S模式时的进程控制块。 2.3 M模式 系统寄存器 2.3.1 总览表 地址CSR名称属性说明0xF11mvendoridMRO机器厂商ID寄存器0xF12marchidMRO处理器体系结构ID寄存器0xF13mimpidMRO处理器实现版本编号寄存器0xF14mhartidMRO处理器硬件线程(hart)ID寄存器0xF15mconfigptrMRO配置数据结构寄存器0x300mstatusMRWM模式下的处理器状态寄存器0x301misaMRW指令集体系结构和扩展寄存器0x302medelegMRWM模式下的异常委托寄存器,把异常委托到S模式下处理0x303midelegMRWM模式下的中断委托寄存器,把中断委托到S模式下处理0x304mieMRWM模式下的中断使能寄存器0x305mtvecMRWM模式下的异常向量入口地址寄存器0x306mcounterenMRWM模式下的计数使能寄存器。用于使能S模式或U模式下的硬件性能检测和计数寄存器。0x340mscratchMRW用于异常处理的临时寄存器0x341mepcMRWM模式下的异常模式PC寄存器。处理器陷入M模式时,保存中断或遇到的异常的指令的虚拟地址0x342mcauseMRWM模式下的异常原因寄存器0x343mtvalMRWM模式下的异常向量寄存器。处理器陷入M模式时,mtval记录发生异常的虚拟地址。0x344mipMRWM模式下的中断待定寄存器。表示哪些中断处与待定状态。0x34AmtinstMRWM模式下的陷入指令(用于虚拟化)0x34Bmtval2MRWM模式下的异常向量寄存器(用于虚拟化) 2.3.2 补充 2.3.2.1 misa寄存器 misa:表示处理器支持的体系结构和扩展 Extensions(bit[25:0]):表示处理器支持的扩展MXL(bit[63:62):表示M模式下寄存器长度 1:32位2:64位3:128位 位名称说明0A原子操作扩展1B位操作扩展2C压缩指令扩展3D双精度浮点数扩展4ERV32E指令集扩展5F单精度浮点数扩展6G保留7H虚拟化扩展8IRV32I/RV64I/RV128I基础指令集扩展9J动态翻译语言扩展10K保留11L保留12M整数乘/除扩展13N用户中断扩展14O保留15PSIMD扩展16Q4倍精度浮点数扩展17R保留18S支持S模式19T保留20U支持U模式21V可伸缩矢量扩展22W保留23X非标准扩展24Y保留25Z保留 2.3.2.2 mstatus寄存器 字段尾段说明UIEbit[0]SIEbit[1]中断使能位,用于使能和关闭S模式下所有的中断MIEbit[3]中断使能位,用于使能和关闭M模式下所有的中断SPIEbit[5]中断使能保存位。当一个异常陷入S模式时,SIE的值保存到SPIE中,SIE设置为0。当调用SRET指令返回时,从SPIE中恢复SIE,然后SPIE设置为1UBEbit[6]控制U模式下加载和存储指令访问内存的大小端模式。 0:小端。 1:大端。MPIEbit[7]中断使能保存位。当一个异常陷入M模式时,MIE的值保存到MPIE中,MIE设置为0。当调用MRET指令返回时,从MPIE中恢复MIE,然后MPIE设置为1SPPbit[8]陷入S模式之前的CPU处理模式。 0:从U模式陷入到S模式。 1:在S模式触发的异常。VSbir[10:9]使能可伸缩矢量扩展MPPbit[12:11]陷入M模式之前CPU的处理模式。 0:从U模式陷入到M模式。 1:从S模式陷入到M模式 2:在M模式触发的异常。FSbit[14:13]使能浮点数单元XSbit[16:15使能U模式下扩展的其他状态MPRVbit[17]修改有效特权模式: 0:加载和存储指令按照当前的处理器模式进行地址转换和内存保护。 加载和存储指令按照MPP字段中存储的处理器模式的权限进行内存保护与检查SUMbit[18]指定在S模式下是否允许访问U模式的内存。 0:在S模式下访问U模式下的内存是会触发异常。 1:在S模式下可以访问U模式下的内存MXRbit[19]指定访问内存的权限。 0:可以加载只读页面。 1:可以加载可读和可执行的页面TVMbit[20] 支持拦截S模式下的虚拟内存管理操作TWbit[21]支持拦截WFI指令。 0:WFI指令可以在低权限模式下执行。 1:TSRbit[22]支持拦截SRET指令。 0:在S模式下正常执行SRET指令。 1:在S模式下执行SRET指令会触发非法指令异常。UXLbit[33:32]U模式下寄存器长度SXLbit[35:34]S模式下寄存器长度SBEbit[36]控制S模式下加载和内存访问的大小端模式。 0:小端。 1:大端。MBEbit[37]控制M模式下加载和内存访问的大小端模式。 0:小端。 1:大端。【RISC-V】RISC-V寄存器,DVD碟片 日本黄
cpugpu芯片开发光刻机
半导体技术突破
1
文件名:【RISC-V】RISC-V寄存器,DVD碟片 日本黄
【RISC-V】RISC-V寄存器
一、通用寄存器 32位RISC-V体系结构提供32个32位的整型通用寄存器 寄存器别名全称说明X0zero零寄存器可做源寄存器(rs)或目标寄存器(rd)X1ra链接寄存器保存函数返回地址X2sp栈指针寄存器指向栈的地址X3gp全局寄存器用于链接器松弛优化X4tp线程寄存器常用于在OS中保存指向进程控制块(task_struct)数据结构的指针X5 ~ X7 X28 ~ X31t0 ~ t6临时寄存器X8s0/fp帧指针寄存器用于函数调用,被调用函数需保存数据X9s1用于函数调用 ,被调用函数需要保存的数据X10 ~ X17a0 ~ a7用于函数调用,传递参数和返回值X18 ~ X27s2 ~ s11用于函数调用 ,被调用函数需要保存的数据 二、系统寄存器 系统控制状态寄存器(CSR)。
同类推荐
-

【PTA题目】7-15 寻找数中连续数字构成的最大素数 分数 20,d7000 d7100
查看 -
![【PWN · 栈迁移】[CISCN 2019东南]PWN2,nx6130](https://wap.0ev.cc/zb_users/cache/thumbs/23e6181118b51d9a0b36fcaeaa9a7ece-80-80-1.jpg)
【PWN · 栈迁移】[CISCN 2019东南]PWN2,nx6130
查看 -

【QGIS入门实战精品教程】10.2:QGIS中DEM三维显示方法,8600gts
查看 -

【QML】QML与C++混合编程,结构体参数互相传递,小米1299
查看 -

【QT 网络云盘客户端】——登录界面功能的实现,三星s5820怎么样
查看 -

【QT】容器类,西门子cx65(西门子 cx65)
查看 -

【QT】飞机大战,35phone(qt飞机大战游戏)
查看 -

【QandA C++】内存分段和内存分页等重点知识汇总,3g安卓市场
查看 -

【Qt QML 入门】TextArea,酷派5890电信版
查看
控制面板
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接