diff --git a/qemu/tcg/tcg.c b/qemu/tcg/tcg.c index 1fce8bb2..6934af4e 100644 --- a/qemu/tcg/tcg.c +++ b/qemu/tcg/tcg.c @@ -275,6 +275,12 @@ static bool tcg_resolve_relocs(TCGContext *s) return true; } +/* Signal overflow, starting over with fewer guest insns. */ +static void QEMU_NORETURN tcg_raise_tb_overflow(TCGContext *s) +{ + siglongjmp(s->jmp_trans, -2); +} + #define C_PFX1(P, A) P##A #define C_PFX2(P, A, B) P##A##_##B #define C_PFX3(P, A, B, C) P##A##_##B##_##C @@ -648,8 +654,7 @@ static TCGTemp *tcg_temp_alloc(TCGContext *s) int n = s->nb_temps++; if (n >= TCG_MAX_TEMPS) { - /* Signal overflow, starting over with fewer guest insns. */ - siglongjmp(s->jmp_trans, -2); + tcg_raise_tb_overflow(s); } return memset(&s->temps[n], 0, sizeof(TCGTemp)); }