diff --git a/qemu/target/arm/translate.c b/qemu/target/arm/translate.c index 15946d46..b4701ddd 100644 --- a/qemu/target/arm/translate.c +++ b/qemu/target/arm/translate.c @@ -11090,7 +11090,6 @@ static void disas_thumb2_insn(DisasContext *s, uint32_t insn) static void disas_thumb_insn(DisasContext *s, uint32_t insn) { TCGContext *tcg_ctx = s->uc->tcg_ctx; - uint32_t val; int32_t offset; TCGv_i32 tmp; TCGv_i32 tmp2; @@ -11136,12 +11135,8 @@ static void disas_thumb_insn(DisasContext *s, uint32_t insn) gen_bx(s, tmp); break; } - /* unconditional branch */ - val = read_pc(s); - offset = ((int32_t)insn << 21) >> 21; - val += offset << 1; - gen_jmp(s, val); - break; + /* unconditional branch, in decodetree */ + goto illegal_op; case 15: /* thumb_insn_is_16bit() ensures we can't get here for