2015-04-29 18:23:43 +02:00
|
|
|
From a8187b81c7ac84123ac4e4fb78d9219473fae1fa Mon Sep 17 00:00:00 2001
|
2015-04-15 02:37:26 +02:00
|
|
|
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);
|