blob: 960dc2e9cd6e2bc67b9c92ea1b2c320f665fa015 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
|
QEMU crashes with failed assertion when executing compressed instructions with C extension support disabled
Description of problem:
When executing compressed instructions with compressed instruction support disabled (c=off), the tcg riscv translations fails an assertion.
```
qemu-system-riscv64: qemu/accel/tcg/translate-all.c:1449: tb_gen_code: Assertion `tb->size != 0' failed.
```
I believe that the issue is caused due to the fact that the compressed instruction without RVC support branch of the `decode_opc` function does not update `ctx->pc_succ_insn`, which causes `ctx->base.pc_next` to not be updated in `riscv_tr_translate_insn`, which then finally triggers the assertion once the tcg generation returns to `tb_gen_code`.
Side note, it also seems like the `gen_exception_illegal` call in the same if case is not needed, since we also call it again at the end of the function.
|