summaryrefslogtreecommitdiffstats
path: root/target-s390x/translate.c
diff options
context:
space:
mode:
authorAlexander Graf <agraf@suse.de>2015-04-15 03:45:41 +0200
committerAlexander Graf <agraf@suse.de>2015-05-13 14:48:54 +0200
commitc095ed731ce4fecf166e4ac02ddc606b408f5e1f (patch)
tree0f319618c1bda200415f1d5edfeed4f03abee70f /target-s390x/translate.c
parent968bb75c348a401b85e08d5eb1887a3e6c3185f5 (diff)
downloadhqemu-c095ed731ce4fecf166e4ac02ddc606b408f5e1f.zip
hqemu-c095ed731ce4fecf166e4ac02ddc606b408f5e1f.tar.gz
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> Reviewed-by: Richard Henderson <rth@twiddle.net>
Diffstat (limited to 'target-s390x/translate.c')
-rw-r--r--target-s390x/translate.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/target-s390x/translate.c b/target-s390x/translate.c
index 8784112..fa3e334 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);
OpenPOWER on IntegriCloud