projects
/
qemu.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
d944293
)
s390x/tcg: Ignore register content if b1/b2 is zero when handling EXECUTE
author
David Hildenbrand
<david@redhat.com>
Mon, 11 Jan 2021 16:38:45 +0000
(17:38 +0100)
committer
Cornelia Huck
<cohuck@redhat.com>
Thu, 21 Jan 2021 10:19:45 +0000
(11:19 +0100)
In our EXECUTE fast path, we have to ignore the content of r0, if
specified by b1 or b2.
Fixes: d376f123c7de ("target/s390x: Re-implement a few EXECUTE target insns directly")
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Tested-by: Nick Desaulniers <ndesaulniers@google.com>
Tested-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: David Hildenbrand <david@redhat.com>
Message-Id: <
20210111163845
.18148-6-david@redhat.com>
Signed-off-by: Cornelia Huck <cohuck@redhat.com>
target/s390x/mem_helper.c
patch
|
blob
|
history
diff --git
a/target/s390x/mem_helper.c
b/target/s390x/mem_helper.c
index 0108611cc9592e466dec01368b0fb55a3532a96e..1901e9dfc7c61f9f1211b12a6b59883ef496b2f5 100644
(file)
--- a/
target/s390x/mem_helper.c
+++ b/
target/s390x/mem_helper.c
@@
-2473,8
+2473,8
@@
void HELPER(ex)(CPUS390XState *env, uint32_t ilen, uint64_t r1, uint64_t addr)
uint32_t d1 = extract64(insn, 32, 12);
uint32_t b2 = extract64(insn, 28, 4);
uint32_t d2 = extract64(insn, 16, 12);
- uint64_t a1 = wrap_address(env,
env->regs[b1]
+ d1);
- uint64_t a2 = wrap_address(env,
env->regs[b2]
+ d2);
+ uint64_t a1 = wrap_address(env,
(b1 ? env->regs[b1] : 0)
+ d1);
+ uint64_t a2 = wrap_address(env,
(b2 ? env->regs[b2] : 0)
+ d2);
env->cc_op = helper(env, l, a1, a2, 0);
env->psw.addr += ilen;