VALUE
WARL异常特定值。stval 是 WARL,必须能保存所有有效虚拟地址以及 0;若实现返回非法指令位,还必须能保存小于 2^N 的所有值,其中 N 为 SXLEN 和 ILEN 的较小值。
这个字段控制什么
- - 异常特定值。stval 是 WARL,必须能保存所有有效虚拟地址以及 0;若实现返回非法指令位,还必须能保存小于 2^N 的所有值,其中 N 为 SXLEN 和 ILEN 的较小值。
常见取值
这个字段更适合结合上下文字段解释,不用按固定枚举背诵。
监管者陷阱值寄存器,保存 S 模式陷阱的异常特定信息,或在不提供信息时为 0。
异常特定值。stval 是 WARL,必须能保存所有有效虚拟地址以及 0;若实现返回非法指令位,还必须能保存小于 2^N 的所有值,其中 N 为 SXLEN 和 ILEN 的较小值。
这个字段更适合结合上下文字段解释,不用按固定枚举背诵。
stval 是异常附加信息寄存器,不是每个陷阱都有有意义的值。它是 WARL;为 0 可能表示没有提供信息,也可能是对应异常的有效值。
进入 S 模式陷阱后先读取 scause 判断异常类型。
若异常类型定义了 stval 信息,再读取 stval 作为虚拟地址或非法指令位等附加信息。
若 stval 为 0,不要仅凭该值排除异常;0 可能表示合法值,也可能表示实现未提供信息。
不能只看 CSR 名称判断。官方 CSR 地址编码和表格给出最低访问特权级;stval 当前记录为 S模式,访问不存在 CSR 的指令为保留指令;已实现 CSR 的访问异常仍须按适用的特权、虚拟化及具体 CSR 规则判断。 H 扩展下,VU 访问已实现的非高半 Supervisor CSR,若同种读写在 HS 模式允许(按 mstatus.TVM=0 判断),则触发虚拟指令异常;VU 访问已实现的高半 Supervisor CSR 时,只有 XLEN=32 且对应低半 CSR 的同种访问满足该 HS 条件,才适用该虚拟指令异常规则。
不一定。规范允许某些异常写 0,且 0 也可能是有效值。必须结合 scause 的异常类型解释 stval。