From: Richard Henderson Date: Wed, 8 Oct 2025 21:55:45 +0000 (-0700) Subject: target/arm: Emit v7m LTPSIZE exception out of line X-Git-Tag: v10.2.0-rc1~67^2~31 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0e15a9a53c56f8ddd6a8c6f691a0507429387d91;p=thirdparty%2Fqemu.git target/arm: Emit v7m LTPSIZE exception out of line Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Message-id: 20251008215613.300150-46-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- diff --git a/target/arm/tcg/translate.c b/target/arm/tcg/translate.c index 57bc8ea4c5..3df0bbcb7f 100644 --- a/target/arm/tcg/translate.c +++ b/target/arm/tcg/translate.c @@ -5598,11 +5598,10 @@ static bool trans_LE(DisasContext *s, arg_LE *a) if (!a->tp && dc_isar_feature(aa32_mve, s) && fpu_active) { /* Need to do a runtime check for LTPSIZE != 4 */ - DisasLabel skipexc = gen_disas_label(s); + TCGLabel *fail = delay_exception(s, EXCP_INVSTATE, syn_uncategorized()); + tmp = load_cpu_field(v7m.ltpsize); - tcg_gen_brcondi_i32(TCG_COND_EQ, tmp, 4, skipexc.label); - gen_exception_insn(s, 0, EXCP_INVSTATE, syn_uncategorized()); - set_disas_label(s, skipexc); + tcg_gen_brcondi_i32(TCG_COND_NE, tmp, 4, fail); } if (a->f) {