aboutsummaryrefslogtreecommitdiff
path: root/target-sparc/translate.c
diff options
context:
space:
mode:
authorblueswir1 <blueswir1@c046a42c-6fe2-441c-8c8c-71466251a162>2008-03-18 18:06:54 +0000
committerblueswir1 <blueswir1@c046a42c-6fe2-441c-8c8c-71466251a162>2008-03-18 18:06:54 +0000
commit1f5063fb9756805efcd8c5a438ab747f36f796d9 (patch)
tree3d02c12721ab1b323f519084dc220e2f7e6d82ad /target-sparc/translate.c
parenteb24dadde5f62b532bb887ba38e468f65692d96b (diff)
Convert array8/16/32 and alignaddr to TCG
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4085 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'target-sparc/translate.c')
-rw-r--r--target-sparc/translate.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/target-sparc/translate.c b/target-sparc/translate.c
index cee85c4d81..7032dab115 100644
--- a/target-sparc/translate.c
+++ b/target-sparc/translate.c
@@ -3515,25 +3515,31 @@ static void disas_sparc_insn(DisasContext * dc)
case 0x010: /* VIS I array8 */
gen_movl_reg_T0(rs1);
gen_movl_reg_T1(rs2);
- gen_op_array8();
+ tcg_gen_helper_1_2(helper_array8, cpu_T[0], cpu_T[0],
+ cpu_T[1]);
gen_movl_T0_reg(rd);
break;
case 0x012: /* VIS I array16 */
gen_movl_reg_T0(rs1);
gen_movl_reg_T1(rs2);
- gen_op_array16();
+ tcg_gen_helper_1_2(helper_array8, cpu_T[0], cpu_T[0],
+ cpu_T[1]);
+ tcg_gen_shli_i64(cpu_T[0], cpu_T[0], 1);
gen_movl_T0_reg(rd);
break;
case 0x014: /* VIS I array32 */
gen_movl_reg_T0(rs1);
gen_movl_reg_T1(rs2);
- gen_op_array32();
+ tcg_gen_helper_1_2(helper_array8, cpu_T[0], cpu_T[0],
+ cpu_T[1]);
+ tcg_gen_shli_i64(cpu_T[0], cpu_T[0], 2);
gen_movl_T0_reg(rd);
break;
case 0x018: /* VIS I alignaddr */
gen_movl_reg_T0(rs1);
gen_movl_reg_T1(rs2);
- gen_op_alignaddr();
+ tcg_gen_helper_1_2(helper_alignaddr, cpu_T[0], cpu_T[0],
+ cpu_T[1]);
gen_movl_T0_reg(rd);
break;
case 0x019: /* VIS II bmask */