@samitouri / QOSamiQemu / commits / 6b1230862c

disas/riscv: Allow decode_inst_lift_pseudo to loop

Allow pseudo expansion to proceed in multiple steps. Assert that we don't have simple loops. Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message-ID: <20260812223142.349142-27-richard.henderson@linaro.org> Signed-off-by: Alistair Francis <alistair.francis@wdc.com>

Richard Henderson committed Aug 12, 2026 at 15:31 UTC 6b1230862c221986c1548c423db4b48967de09ea
1 file changed +3 -3
disas/riscv.c
+3 -3
@@ -5259,9 +5259,9 @@ static const rv_opcode_data *decode_inst_lift_pseudo(rv_decode *dec,
5259 if (comp_data) {
5260 while (comp_data->constraints) {
5261 if (check_constraints(dec, comp_data->constraints)) {
5262 - dec->op = comp_data->op;
5263 - op = &dec->opcode_data[dec->op];
5264 - break;
5262 + const rv_opcode_data *new_op = &dec->opcode_data[comp_data->op];
5263 + assert(new_op != op);
5264 + return decode_inst_lift_pseudo(dec, new_op);
5265 }
5266 comp_data++;
5267 }