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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user