aboutsummaryrefslogtreecommitdiff
path: root/target-s390x/translate.c
diff options
context:
space:
mode:
authorStefan Weil <weil@mail.berlios.de>2011-05-27 19:03:25 +0200
committerAlexander Graf <agraf@suse.de>2011-06-03 13:34:01 +0200
commitbe82ee2aca363753888fe777215849a86f4e737c (patch)
treec99ae18156ee8f5b8d69a7444a8b09e621653fcf /target-s390x/translate.c
parentd4a3ef69703e289af7b08122d969e72af799d15f (diff)
target-s390x: Fix wrong argument in call of tcg_gen_shl_i64()
tcg_gen_shl_i64 needs a 3rd argument of type TCGv_i64. Set tmp4 so it can be used here. v2: Don't call tcg_const_i64() inside of the loop because it creates additional code. Signed-off-by: Stefan Weil <weil@mail.berlios.de> Signed-off-by: Alexander Graf <agraf@suse.de>
Diffstat (limited to 'target-s390x/translate.c')
-rw-r--r--target-s390x/translate.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/target-s390x/translate.c b/target-s390x/translate.c
index 8e71df3d26..865a9dfa53 100644
--- a/target-s390x/translate.c
+++ b/target-s390x/translate.c
@@ -2056,7 +2056,7 @@ do_mh:
even for very long ones... */
tmp = get_address(s, 0, b2, d2);
tmp3 = tcg_const_i64(stm_len);
- tmp4 = tcg_const_i64(32);
+ tmp4 = tcg_const_i64(op == 0x26 ? 32 : 4);
for (i = r1;; i = (i + 1) % 16) {
switch (op) {
case 0x4:
@@ -2070,7 +2070,7 @@ do_mh:
#else
tmp2 = tcg_temp_new_i64();
tcg_gen_qemu_ld32u(tmp2, tmp, get_mem_index(s));
- tcg_gen_shl_i64(tmp2, tmp2, 4);
+ tcg_gen_shl_i64(tmp2, tmp2, tmp4);
tcg_gen_ext32u_i64(regs[i], regs[i]);
tcg_gen_or_i64(regs[i], regs[i], tmp2);
#endif