56 lines
2.1 KiB
Diff
56 lines
2.1 KiB
Diff
From b7440db8874a62631427d0b822922747bad9771b Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@redhat.com>
|
|
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 <clg@redhat.com>
|
|
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 <thuth@redhat.com>
|
|
RH-Acked-by: David Hildenbrand <david@redhat.com>
|
|
RH-Acked-by: Cornelia Huck <cohuck@redhat.com>
|
|
RH-Commit: [8/21] 60abe03ceba239268b72ff79e2945b73822fb72f
|
|
|
|
Bugzilla: https://bugzilla.redhat.com/2169308
|
|
|
|
commit 16ed5f14215b20c8dc49b96e2149032ba3238beb
|
|
Author: Ilya Leoshkevich <iii@linux.ibm.com>
|
|
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 <iii@linux.ibm.com>
|
|
Message-Id: <20220314104232.675863-3-iii@linux.ibm.com>
|
|
Reviewed-by: David Hildenbrand <david@redhat.com>
|
|
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
|
|
Signed-off-by: Thomas Huth <thuth@redhat.com>
|
|
|
|
Signed-off-by: Cédric Le Goater <clg@redhat.com>
|
|
---
|
|
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
|
|
|