diff --git a/target/riscv/machine.c b/target/riscv/machine.c index ba96ceceef..ef0a8eae24 100644 --- a/target/riscv/machine.c +++ b/target/riscv/machine.c @@ -20,6 +20,7 @@ #include "cpu.h" #include "qemu/error-report.h" #include "system/kvm.h" +#include "system/tcg.h" #include "migration/cpu.h" #include "exec/icount.h" #include "target/riscv/debug.h" @@ -29,21 +30,25 @@ static bool pmp_needed(void *opaque) { RISCVCPU *cpu = opaque; - return cpu->cfg.pmp; + if (kvm_enabled()) { + return false; + } + + return tcg_enabled() && cpu->cfg.pmp; } static int pmp_post_load(void *opaque, int version_id) { +#ifdef CONFIG_TCG RISCVCPU *cpu = opaque; CPURISCVState *env = &cpu->env; - int i; uint8_t pmp_regions = riscv_cpu_cfg(env)->pmp_regions; - for (i = 0; i < pmp_regions; i++) { + for (int i = 0; i < pmp_regions; i++) { pmp_update_rule_addr(env, i); } pmp_update_rule_nums(env); - +#endif return 0; }