Interrupt
读写指示 vscause 低位原因码表示中断还是同步异常。
这个字段控制什么
- - 指示 vscause 低位原因码表示中断还是同步异常。
vscause 保存guest trap 中断标志和原因码,是对应 supervisor CSR 的 VS 副本。
指示 vscause 低位原因码表示中断还是同步异常。
VS trap 原因码;同步异常与中断用 Interrupt 位区分。ECALL 原因码按官方 Supervisor/Hypervisor trap cause 表区分:9 是 S/HS-mode,10 是 VS-mode。这里不把 HS trap-specific 或 G-stage 专用原因当作普通 VS scause substitute 原因列入。
同步异常原因码 0。
同步异常原因码 1。
同步异常原因码 2。
同步异常原因码 3。
同步异常原因码 4。
同步异常原因码 5。
同步异常原因码 6。
同步异常原因码 7。
同步异常原因码 8。
同步异常原因码 9。启用 Hypervisor 扩展时,官方表将 VS-mode 环境调用分配为原因码 10,因此 9 不能解释为 VS-mode ECALL。
同步异常原因码 10;这是启用 Hypervisor 扩展时官方定义的 VS-mode 环境调用原因码。
同步异常原因码 12。
同步异常原因码 13。
同步异常原因码 15。
同步异常原因码 18。
同步异常原因码 19。
当 Interrupt 位为 1 时,低位原因码 1 表示 VS 软件中断。
当 Interrupt 位为 1 时,低位原因码 5 表示 VS 定时器中断。
当 Interrupt 位为 1 时,低位原因码 9 表示 VS 外部中断。
当 Interrupt 位为 1 时,低位原因码 13 表示计数器溢出中断。
vscause 是 VS supervisor 状态/Trap CSR。独立 CSR 地址用于 M/HS 侧管理;当 V=1 时,guest 对相应 supervisor CSR 的访问会替代到 VS 状态,除非官方扩展另有规定。
M/HS 软件可通过独立 CSR 地址访问 vscause 的 VS 副本。
当 V=1 时,guest 访问 scause 类 supervisor CSR 会替代到对应 VS 状态;直接访问独立 VS CSR 地址会触发 virtual-instruction exception。
按官方字段更新,不把 VS 状态混同为普通 HS supervisor 状态。
不能。H 扩展规定 V=1 时 guest 通过对应 supervisor CSR 别名访问 VS 状态;直接读写独立 VS CSR 地址会触发 virtual-instruction exception。
vscause 保存 guest trap 中断标志和原因码,供 hypervisor 管理 guest supervisor 的 trap、状态或执行上下文。