它是用户态普通指令吗?
不是。该类指令受特权级和扩展支持约束,用户态是否可执行必须看官方特权规则。
Svinval/H 的 G-stage 失效指令:按 GPA>>2 与 VMID 失效,排序由分离围栏提供。
HINVAL.GVMA 是 Hypervisor + Svinval 扩展的 G-stage 地址转换缓存失效指令。它失效与 rs1/rs2 匹配的 G-stage 转换缓存条目;rs1 非 x0 时包含 guest physical address 右移 2 位后的值(GPA>>2),rs2 非 x0 时指定 VMID。rs1=x0 表示所有 guest physical addresses,rs2=x0 表示所有 VMID。它本身只执行失效,排序由 SFENCE.W.INVAL 和 SFENCE.INVAL.IR 提供。
HINVAL.GVMA 是 Svinval/H 的 G-stage 地址转换失效,只执行失效;排序由 SFENCE.W.INVAL 与 SFENCE.INVAL.IR 分离围栏提供。
结合 «hinval.gvma a1, a2 # a1 = GPA >> 2; a2 = VMID» 等实际代码理解该场景。
结合 «hinval.gvma a1, a2 # a1 = GPA >> 2; a2 = VMID» 等实际代码理解该场景。
结合 «hinval.gvma a1, a2 # a1 = GPA >> 2; a2 = VMID» 等实际代码理解该场景。
不是。该类指令受特权级和扩展支持约束,用户态是否可执行必须看官方特权规则。
不能简单替代。地址转换、指令获取和数据内存排序分别有不同的 fence/失效指令。