mirror of https://github.com/proxmox/mirror_qemu
target-s390: Convert MOVE LONG
Signed-off-by: Richard Henderson <rth@twiddle.net>master
parent
b9836c1acd
commit
e1eaada955
|
@ -246,6 +246,9 @@
|
||||||
C(0xb900, LPGR, RRE, Z, 0, r2, r1, 0, abs, abs64)
|
C(0xb900, LPGR, RRE, Z, 0, r2, r1, 0, abs, abs64)
|
||||||
C(0xb910, LPGFR, RRE, Z, 0, r2_32s, 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 */
|
/* MULTIPLY */
|
||||||
C(0x1c00, MR, RR_a, Z, r1p1_32s, r2_32s, new, r1_D32, mul, 0)
|
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)
|
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);
|
LOG_DISAS("opc 0x%x\n", opc);
|
||||||
|
|
||||||
switch (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] */
|
case 0x28: /* LDR R1,R2 [RR] */
|
||||||
insn = ld_code2(env, s->pc);
|
insn = ld_code2(env, s->pc);
|
||||||
decode_rr(s, insn, &r1, &r2);
|
decode_rr(s, insn, &r1, &r2);
|
||||||
|
@ -3607,6 +3596,18 @@ static ExitStatus op_mov2(DisasContext *s, DisasOps *o)
|
||||||
return NO_EXIT;
|
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)
|
static ExitStatus op_mul(DisasContext *s, DisasOps *o)
|
||||||
{
|
{
|
||||||
tcg_gen_mul_i64(o->out, o->in1, o->in2);
|
tcg_gen_mul_i64(o->out, o->in1, o->in2);
|
||||||
|
|
Loading…
Reference in New Issue