55 lines
2.0 KiB
Diff
55 lines
2.0 KiB
Diff
|
From df0bb58a0bef833451744b9912b3392904e0190e 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/21] 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
|
||
|
RH-Acked-by: Thomas Huth <thuth@redhat.com>
|
||
|
RH-Acked-by: Jon Maloy <jmaloy@redhat.com>
|
||
|
RH-Commit: [8/20] 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
|
||
|
|