}
}
+/* MISA.X is set when any of the non-standard extensions is enabled. */
+static void riscv_cpu_update_misa_x(RISCVCPU *cpu)
+{
+ CPURISCVState *env = &cpu->env;
+ const RISCVCPUMultiExtConfig *arr = riscv_cpu_vendor_exts;
+
+ for (int i = 0; arr[i].name != NULL; i++) {
+ if (isa_ext_is_enabled(cpu, arr[i].offset)) {
+ riscv_cpu_set_misa_ext(env, env->misa_ext | RVX);
+ break;
+ }
+ }
+}
+
void riscv_tcg_cpu_finalize_features(RISCVCPU *cpu, Error **errp)
{
CPURISCVState *env = &cpu->env;
riscv_cpu_init_implied_exts_rules();
riscv_cpu_enable_implied_rules(cpu);
riscv_cpu_update_misa_c(cpu);
+ riscv_cpu_update_misa_x(cpu);
riscv_cpu_validate_misa_priv(env, &local_err);
if (local_err != NULL) {