aboutsummaryrefslogtreecommitdiff
path: root/target-s390x
diff options
context:
space:
mode:
authorAurelien Jarno <aurelien@aurel32.net>2015-06-16 22:57:47 +0200
committerAlexander Graf <agraf@suse.de>2015-07-07 17:51:47 +0200
commitb5edcddda31b464e73cc0a79e88457e603c3b247 (patch)
tree95f873d36d2c3c1f3a8c461e26290db518a70348 /target-s390x
parentaeb72188e073d515e1f5a80f6b603692a396477b (diff)
target-s390x: fix MOVE LONG instruction
The MOVE LONG instruction should pad the destination operand with the byte from bit positions 32-39 of the source length (r2 + 1), not with the same byte in the source address. Signed-off-by: Aurelien Jarno <aurelien@aurel32.net> Reviewed-by: Richard Henderson <rth@twiddle.net> Signed-off-by: Alexander Graf <agraf@suse.de>
Diffstat (limited to 'target-s390x')
-rw-r--r--target-s390x/mem_helper.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/target-s390x/mem_helper.c b/target-s390x/mem_helper.c
index 3ccbeb99e4..9f0eb1e32b 100644
--- a/target-s390x/mem_helper.c
+++ b/target-s390x/mem_helper.c
@@ -550,7 +550,7 @@ uint32_t HELPER(mvcl)(CPUS390XState *env, uint32_t r1, uint32_t r2)
uint64_t dest = get_address_31fix(env, r1);
uint64_t srclen = env->regs[r2 + 1] & 0xffffff;
uint64_t src = get_address_31fix(env, r2);
- uint8_t pad = src >> 24;
+ uint8_t pad = env->regs[r2 + 1] >> 24;
uint8_t v;
uint32_t cc;