CSR 位字段

RISC-V ssp CSR 寄存器详解

地址 0x011特权级 用户级(访问受 xenvcfg.SSE 控制)访问 URW(条件访问) / XLEN用户级 Zicfiss CSR

ssp(0x011)是 Zicfiss 的用户级读写 CSR,保存当前特权模式的 XLEN 位 shadow stack 指针。

字段映射

按 bit 字段理解 ssp

3 个关键字段
XLEN-1:3

SSP

读写

shadow stack 指针的高位。

这个字段控制什么

  • - shadow stack 指针的高位。

常见取值

这个字段更适合结合上下文字段解释,不用按固定枚举背诵。

打开官方手册
2

SSP[2]

条件读写

当 UXLEN 或 SXLEN 可能为 32 时,它是指针位;若二者都不可能为 32,则为只读零。

这个字段控制什么

  • - 当 UXLEN 或 SXLEN 可能为 32 时,它是指针位;若二者都不可能为 32,则为只读零。

常见取值

这个字段更适合结合上下文字段解释,不用按固定枚举背诵。

打开官方手册
1:0

Reserved

只读零

始终读取为零。

这个字段控制什么

  • - 始终读取为零。

常见取值

这个字段更适合结合上下文字段解释,不用按固定枚举背诵。

打开官方手册

读这个 CSR 时先看什么

  • - 若低于 M 模式且 menvcfg.SSE=0,访问触发非法指令异常;U 模式还要求 senvcfg.SSE=1。
  • - VS/VU 的访问可因 henvcfg.SSE 或 senvcfg.SSE 而触发虚拟指令异常。

写入前的风险检查

  • - ssp[1:0] 为只读零。
  • - 写入前应确认目标特权模式的 SSE 访问控制。

放回真实流程里理解

1

由操作系统为启用 Zicfiss 的进程设置 shadow stack。

2

仅在允许访问的特权模式使用 shadow stack 指令。