target-s390: Convert MOVE LONG
Signed-off-by: Richard Henderson <rth@twiddle.net>
This commit is contained in:
parent
b9836c1acd
commit
e1eaada955
@ -246,6 +246,9 @@
|
||||
C(0xb900, LPGR, RRE, Z, 0, r2, r1, 0, abs, abs64)
|
||||
C(0xb910, LPGFR, RRE, Z, 0, r2_32s, r1, 0, abs, abs64)
|
||||
|
||||
/* MOVE LONG */
|
||||
C(0x0e00, MVCL, RR_a, Z, 0, 0, 0, 0, mvcl, 0)
|
||||
|
||||
/* MULTIPLY */
|
||||
C(0x1c00, MR, RR_a, Z, r1p1_32s, r2_32s, new, r1_D32, mul, 0)
|
||||
C(0x5c00, M, RX_a, Z, r1p1_32s, m2_32s, new, r1_D32, mul, 0)
|
||||
|
@ -2371,17 +2371,6 @@ static void disas_s390_insn(CPUS390XState *env, DisasContext *s)
|
||||
LOG_DISAS("opc 0x%x\n", opc);
|
||||
|
||||
switch (opc) {
|
||||
case 0xe: /* MVCL R1,R2 [RR] */
|
||||
insn = ld_code2(env, s->pc);
|
||||
decode_rr(s, insn, &r1, &r2);
|
||||
tmp32_1 = tcg_const_i32(r1);
|
||||
tmp32_2 = tcg_const_i32(r2);
|
||||
potential_page_fault(s);
|
||||
gen_helper_mvcl(cc_op, cpu_env, tmp32_1, tmp32_2);
|
||||
set_cc_static(s);
|
||||
tcg_temp_free_i32(tmp32_1);
|
||||
tcg_temp_free_i32(tmp32_2);
|
||||
break;
|
||||
case 0x28: /* LDR R1,R2 [RR] */
|
||||
insn = ld_code2(env, s->pc);
|
||||
decode_rr(s, insn, &r1, &r2);
|
||||
@ -3607,6 +3596,18 @@ static ExitStatus op_mov2(DisasContext *s, DisasOps *o)
|
||||
return NO_EXIT;
|
||||
}
|
||||
|
||||
static ExitStatus op_mvcl(DisasContext *s, DisasOps *o)
|
||||
{
|
||||
TCGv_i32 r1 = tcg_const_i32(get_field(s->fields, r1));
|
||||
TCGv_i32 r2 = tcg_const_i32(get_field(s->fields, r2));
|
||||
potential_page_fault(s);
|
||||
gen_helper_mvcl(cc_op, cpu_env, r1, r2);
|
||||
tcg_temp_free_i32(r1);
|
||||
tcg_temp_free_i32(r2);
|
||||
set_cc_static(s);
|
||||
return NO_EXIT;
|
||||
}
|
||||
|
||||
static ExitStatus op_mul(DisasContext *s, DisasOps *o)
|
||||
{
|
||||
tcg_gen_mul_i64(o->out, o->in1, o->in2);
|
||||
|
Loading…
Reference in New Issue
Block a user