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>
This commit is contained in:
parent
aeb72188e0
commit
b5edcddda3
@ -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 dest = get_address_31fix(env, r1);
|
||||||
uint64_t srclen = env->regs[r2 + 1] & 0xffffff;
|
uint64_t srclen = env->regs[r2 + 1] & 0xffffff;
|
||||||
uint64_t src = get_address_31fix(env, r2);
|
uint64_t src = get_address_31fix(env, r2);
|
||||||
uint8_t pad = src >> 24;
|
uint8_t pad = env->regs[r2 + 1] >> 24;
|
||||||
uint8_t v;
|
uint8_t v;
|
||||||
uint32_t cc;
|
uint32_t cc;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user