SXLEN-1:0
VALUE
读写供 S 模式使用的完整 scratch 值;特权架构不为该值定义内部位字段。
这个字段控制什么
- - 供 S 模式使用的完整 scratch 值;特权架构不为该值定义内部位字段。
常见取值
这个字段更适合结合上下文字段解释,不用按固定枚举背诵。
监管者 scratch 寄存器,是供 S 模式软件使用的 SXLEN 位读写 CSR。
供 S 模式使用的完整 scratch 值;特权架构不为该值定义内部位字段。
这个字段更适合结合上下文字段解释,不用按固定枚举背诵。
sscratch 是地址 0x140 的 SXLEN 位 S 模式读写 scratch CSR。它通常保存 hart-local supervisor 上下文指针;具体内容由 S 模式软件约定,而不是由硬件位字段定义。
S 模式初始化代码为每个 hart 写入约定的 scratch 值。
陷阱入口用 CSR 读写指令与通用寄存器交换或读取 sscratch。
陷阱处理和返回路径按同一 S 模式软件约定恢复或更新该值。
不能只看 CSR 名称判断。官方 CSR 地址编码和表格给出最低访问特权级;sscratch 当前记录为 S模式,访问不存在 CSR 的指令为保留指令;已实现 CSR 的访问异常仍须按适用的特权、虚拟化及具体 CSR 规则判断。 H 扩展下,VU 访问已实现的非高半 Supervisor CSR,若同种读写在 HS 模式允许(按 mstatus.TVM=0 判断),则触发虚拟指令异常;VU 访问已实现的高半 Supervisor CSR 时,只有 XLEN=32 且对应低半 CSR 的同种访问满足该 HS 条件,才适用该虚拟指令异常规则。
不要把 sscratch 当成硬件定义的位字段寄存器。写入值的含义由 S 模式陷阱软件约定决定,错误覆盖可能破坏陷阱入口使用的上下文指针或临时值。