blob: b8c194560626fe38426737ffb65ec2c01ec55ef4 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
graphic: 0.810
device: 0.749
network: 0.632
semantic: 0.518
performance: 0.505
socket: 0.456
files: 0.384
debug: 0.384
PID: 0.377
vnc: 0.374
other: 0.295
permissions: 0.236
boot: 0.209
KVM: 0.003
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.
|