From b7440db8874a62631427d0b822922747bad9771b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= Date: Tue, 23 May 2023 12:34:33 +0200 Subject: [PATCH 09/22] s390x/tcg: Fix BRCL with a large negative offset MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit RH-Author: Cédric Le Goater RH-MergeRequest: 279: Backport latest s390x-related fixes from upstream QEMU for qemu-kvm in RHEL 8.9 RH-Bugzilla: 2169308 2209605 RH-Acked-by: Thomas Huth RH-Acked-by: David Hildenbrand RH-Acked-by: Cornelia Huck RH-Commit: [8/21] 60abe03ceba239268b72ff79e2945b73822fb72f Bugzilla: https://bugzilla.redhat.com/2169308 commit 16ed5f14215b20c8dc49b96e2149032ba3238beb Author: Ilya Leoshkevich Date: Mon Mar 14 11:42:31 2022 +0100 s390x/tcg: Fix BRCL with a large negative offset When RI2 is 0x80000000, qemu enters an infinite loop instead of jumping backwards. Fix by adding a missing cast, like in in2_ri2(). Fixes: 7233f2ed1717 ("target-s390: Convert BRANCH ON CONDITION") Signed-off-by: Ilya Leoshkevich Message-Id: <20220314104232.675863-3-iii@linux.ibm.com> Reviewed-by: David Hildenbrand Reviewed-by: Richard Henderson Signed-off-by: Thomas Huth Signed-off-by: Cédric Le Goater --- target/s390x/tcg/translate.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/s390x/tcg/translate.c b/target/s390x/tcg/translate.c index 8147d952df..7ff7f90e23 100644 --- a/target/s390x/tcg/translate.c +++ b/target/s390x/tcg/translate.c @@ -1201,7 +1201,7 @@ static DisasJumpType help_branch(DisasContext *s, DisasCompare *c, bool is_imm, int imm, TCGv_i64 cdest) { DisasJumpType ret; - uint64_t dest = s->base.pc_next + 2 * imm; + uint64_t dest = s->base.pc_next + (int64_t)imm * 2; TCGLabel *lab; /* Take care of the special cases first. */ -- 2.37.3