target/riscv: Fix sfence.vm/a both available in any priv version
sfence.vm has been replaced in priv v1.10 spec by sfence.vma. Reported-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Bastian Koppelmann <kbastian@mail.uni-paderborn.de> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Palmer Dabbelt <palmer@sifive.com>
This commit is contained in:
parent
40cf6a54c9
commit
6573777306
@ -1292,10 +1292,14 @@ static void gen_system(CPURISCVState *env, DisasContext *ctx, uint32_t opc,
|
||||
#ifndef CONFIG_USER_ONLY
|
||||
/* Extract funct7 value and check whether it matches SFENCE.VMA */
|
||||
if ((opc == OPC_RISC_ECALL) && ((csr >> 5) == 9)) {
|
||||
/* sfence.vma */
|
||||
/* TODO: handle ASID specific fences */
|
||||
gen_helper_tlb_flush(cpu_env);
|
||||
return;
|
||||
if (env->priv_ver == PRIV_VERSION_1_10_0) {
|
||||
/* sfence.vma */
|
||||
/* TODO: handle ASID specific fences */
|
||||
gen_helper_tlb_flush(cpu_env);
|
||||
return;
|
||||
} else {
|
||||
gen_exception_illegal(ctx);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -1342,7 +1346,11 @@ static void gen_system(CPURISCVState *env, DisasContext *ctx, uint32_t opc,
|
||||
gen_helper_wfi(cpu_env);
|
||||
break;
|
||||
case 0x104: /* SFENCE.VM */
|
||||
gen_helper_tlb_flush(cpu_env);
|
||||
if (env->priv_ver <= PRIV_VERSION_1_09_1) {
|
||||
gen_helper_tlb_flush(cpu_env);
|
||||
} else {
|
||||
gen_exception_illegal(ctx);
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
|
Loading…
Reference in New Issue
Block a user