SHA256
1
0
forked from pool/qemu
qemu/0039-s390x-Fix-stoc-direction.patch
Alexander Graf 02a079660d - Patch queue updated from git://github.com/openSUSE/qemu.git opensuse-2.3
* Patches added:
  0039-s390x-Fix-stoc-direction.patch

- Patch queue updated from git://github.com/openSUSE/qemu.git opensuse-2.3
- Fix s390x stoc instructions
* Patches added:
  0039-s390x-Fix-stoc-direction.patch

- Patch queue updated from git://github.com/openSUSE/qemu.git opensuse-2.3
- Fix s390x stoc instructions
* Patches added:
  0039-s390x-Fix-stoc-direction.patch

- Patch queue updated from git://github.com/openSUSE/qemu.git opensuse-2.3
- Fix s390x stoc instructions
* Patches added:
  0039-s390x-Fix-stoc-direction.patch

OBS-URL: https://build.opensuse.org/package/show/Virtualization/qemu?expand=0&rev=251
2015-04-15 00:37:26 +00:00

32 lines
1.1 KiB
Diff

From fd4142fc207b6d6633f0162631f8ff303807f5f5 Mon Sep 17 00:00:00 2001
From: Alexander Graf <agraf@suse.de>
Date: Wed, 15 Apr 2015 02:28:05 +0200
Subject: [PATCH] s390x: Fix stoc direction
The store conditional instruction wants to store when the condition
is fulfilled, so we should branch out when it's not true.
The code today branches out when the condition is true, clearly
reversing the logic. Fix it up by negating the condition.
Signed-off-by: Alexander Graf <agraf@suse.de>
---
target-s390x/translate.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/target-s390x/translate.c b/target-s390x/translate.c
index 4f82edd..8ae4912 100644
--- a/target-s390x/translate.c
+++ b/target-s390x/translate.c
@@ -3082,6 +3082,10 @@ static ExitStatus op_soc(DisasContext *s, DisasOps *o)
disas_jcc(s, &c, get_field(s->fields, m3));
+ /* We want to store when the condition is fulfilled, so branch
+ out when it's not */
+ c.cond = tcg_invert_cond(c.cond);
+
lab = gen_new_label();
if (c.is_64) {
tcg_gen_brcond_i64(c.cond, c.u.s64.a, c.u.s64.b, lab);