跳转至

CPU 寄存器映射

1. 通用寄存器 (GPR)

RISC-V 有 32 个 32 位通用寄存器 (x0-x31)。

寄存器 ABI 名称 描述
x0 zero 硬连线 0
x1 ra 返回地址
x2 sp 栈指针
x3 gp 全局指针
x4 tp 线程指针
x5-x7 t0-t2 临时寄存器
x8 s0/fp 保存/帧指针
x9 s1 保存寄存器
x10-x11 a0-a1 参数/返回值
x12-x17 a2-a7 参数寄存器
x18-x27 s2-s11 保存寄存器
x28-x31 t3-t6 临时寄存器

2. 控制状态寄存器 (CSR)

2.1 机器模式 CSR

地址 名称 读写 描述
0x300 mstatus R/W 机器状态
0x301 misa R/W 机器 ISA
0x304 mie R/W 机器中断使能
0x305 mtvec R/W 机器陷阱向量
0x340 mscratch R/W 机器 scratch
0x341 mepc R/W 机器异常程序计数器
0x342 mcause R/W 机器异常原因
0x343 mtval R/W 机器陷阱值
0x344 mip R/W 机器中断挂起
0x30A mcounteren R/W 计数器使能
0xF11 marchid R 架构 ID
0xF12 mimpid R 实现 ID
0xF13 mhartid R 硬件线程 ID
0xF14 mvendorid R 供应商 ID

2.2 mstatus 位定义

名称 描述
0 UIE 用户中断使能
1 SIE 超级用户中断使能
3 MIE 机器模式中断使能
4 UPIE 用户先前的中断使能
5 SPIE 超级用户先前的中断使能
7 MPIE 机器先前的中断使能
8 SPP 超级用户先前的特权模式
11:12 MPP 机器先前的特权模式
17 MPRV 修改特权模式访存

2.3 mcause 值定义

描述
0 用户模式软件中断
1 机器模式软件中断
4 用户模式定时器中断
5 机器模式定时器中断
8 用户模式外部中断
9 机器模式外部中断
0x7FFFFFFF 指令地址未对齐
0x7FFFFFFE 指令访问错误
0x7FFFFFFD 非法指令
0x7FFFFFFC 断点
0x7FFFFFFB 加载地址未对齐
0x7FFFFFFA 加载访问错误
0x7FFFFFF9 存储地址未对齐
0x7FFFFFF8 存储访问错误
0x80000000+ 中断 (MSB=1)

3. 计数器寄存器

地址 名称 读写 描述
0xB00 mcycle R/W 周期计数器
0xB02 minstret R/W 指令退休计数器
0xB80 mcycleh R 周期计数器高 32 位
0xB82 minstreth R 指令退休计数器高 32 位