From d83b1ea283b1cd11c5135b7e774ce4ef0d57d1e0 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Tue, 9 Mar 2021 13:23:01 -0500 Subject: [PATCH] tcg: Split out tcg_raise_tb_overflow Allow other places in tcg to restart with a smaller tb. Backports db6b7d0c6936cd209e3e8d95aea61ad29ceef5e6 --- qemu/tcg/tcg.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) 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)); }