m68k: Replace gen_im32() by tcg_const_i32()
Signed-off-by: Laurent Vivier <laurent@vivier.eu> Reviewed-by: Andreas Färber <andreas.faerber@web.de> Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
This commit is contained in:
		
							parent
							
								
									a9899996c8
								
							
						
					
					
						commit
						351326a618
					
				@ -171,9 +171,6 @@ typedef void (*disas_proc)(DisasContext *, uint16_t);
 | 
				
			|||||||
  static void disas_##name (DisasContext *s, uint16_t insn)
 | 
					  static void disas_##name (DisasContext *s, uint16_t insn)
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* FIXME: Remove this.  */
 | 
					 | 
				
			||||||
#define gen_im32(val) tcg_const_i32(val)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* Generate a load from the specified address.  Narrow values are
 | 
					/* Generate a load from the specified address.  Narrow values are
 | 
				
			||||||
   sign extended to full register width.  */
 | 
					   sign extended to full register width.  */
 | 
				
			||||||
static inline TCGv gen_load(DisasContext * s, int opsize, TCGv addr, int sign)
 | 
					static inline TCGv gen_load(DisasContext * s, int opsize, TCGv addr, int sign)
 | 
				
			||||||
@ -339,7 +336,7 @@ static TCGv gen_lea_indexed(DisasContext *s, int opsize, TCGv base)
 | 
				
			|||||||
        if ((ext & 0x80) == 0) {
 | 
					        if ((ext & 0x80) == 0) {
 | 
				
			||||||
            /* base not suppressed */
 | 
					            /* base not suppressed */
 | 
				
			||||||
            if (IS_NULL_QREG(base)) {
 | 
					            if (IS_NULL_QREG(base)) {
 | 
				
			||||||
                base = gen_im32(offset + bd);
 | 
					                base = tcg_const_i32(offset + bd);
 | 
				
			||||||
                bd = 0;
 | 
					                bd = 0;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            if (!IS_NULL_QREG(add)) {
 | 
					            if (!IS_NULL_QREG(add)) {
 | 
				
			||||||
@ -355,7 +352,7 @@ static TCGv gen_lea_indexed(DisasContext *s, int opsize, TCGv base)
 | 
				
			|||||||
                add = tmp;
 | 
					                add = tmp;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            add = gen_im32(bd);
 | 
					            add = tcg_const_i32(bd);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        if ((ext & 3) != 0) {
 | 
					        if ((ext & 3) != 0) {
 | 
				
			||||||
            /* memory indirect */
 | 
					            /* memory indirect */
 | 
				
			||||||
@ -536,15 +533,15 @@ static TCGv gen_lea(DisasContext *s, uint16_t insn, int opsize)
 | 
				
			|||||||
        case 0: /* Absolute short.  */
 | 
					        case 0: /* Absolute short.  */
 | 
				
			||||||
            offset = ldsw_code(s->pc);
 | 
					            offset = ldsw_code(s->pc);
 | 
				
			||||||
            s->pc += 2;
 | 
					            s->pc += 2;
 | 
				
			||||||
            return gen_im32(offset);
 | 
					            return tcg_const_i32(offset);
 | 
				
			||||||
        case 1: /* Absolute long.  */
 | 
					        case 1: /* Absolute long.  */
 | 
				
			||||||
            offset = read_im32(s);
 | 
					            offset = read_im32(s);
 | 
				
			||||||
            return gen_im32(offset);
 | 
					            return tcg_const_i32(offset);
 | 
				
			||||||
        case 2: /* pc displacement  */
 | 
					        case 2: /* pc displacement  */
 | 
				
			||||||
            offset = s->pc;
 | 
					            offset = s->pc;
 | 
				
			||||||
            offset += ldsw_code(s->pc);
 | 
					            offset += ldsw_code(s->pc);
 | 
				
			||||||
            s->pc += 2;
 | 
					            s->pc += 2;
 | 
				
			||||||
            return gen_im32(offset);
 | 
					            return tcg_const_i32(offset);
 | 
				
			||||||
        case 3: /* pc index+displacement.  */
 | 
					        case 3: /* pc index+displacement.  */
 | 
				
			||||||
            return gen_lea_indexed(s, opsize, NULL_QREG);
 | 
					            return gen_lea_indexed(s, opsize, NULL_QREG);
 | 
				
			||||||
        case 4: /* Immediate.  */
 | 
					        case 4: /* Immediate.  */
 | 
				
			||||||
@ -1209,16 +1206,16 @@ DISAS_INSN(arith_im)
 | 
				
			|||||||
        break;
 | 
					        break;
 | 
				
			||||||
    case 2: /* subi */
 | 
					    case 2: /* subi */
 | 
				
			||||||
        tcg_gen_mov_i32(dest, src1);
 | 
					        tcg_gen_mov_i32(dest, src1);
 | 
				
			||||||
        gen_helper_xflag_lt(QREG_CC_X, dest, gen_im32(im));
 | 
					        gen_helper_xflag_lt(QREG_CC_X, dest, tcg_const_i32(im));
 | 
				
			||||||
        tcg_gen_subi_i32(dest, dest, im);
 | 
					        tcg_gen_subi_i32(dest, dest, im);
 | 
				
			||||||
        gen_update_cc_add(dest, gen_im32(im));
 | 
					        gen_update_cc_add(dest, tcg_const_i32(im));
 | 
				
			||||||
        s->cc_op = CC_OP_SUB;
 | 
					        s->cc_op = CC_OP_SUB;
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
    case 3: /* addi */
 | 
					    case 3: /* addi */
 | 
				
			||||||
        tcg_gen_mov_i32(dest, src1);
 | 
					        tcg_gen_mov_i32(dest, src1);
 | 
				
			||||||
        tcg_gen_addi_i32(dest, dest, im);
 | 
					        tcg_gen_addi_i32(dest, dest, im);
 | 
				
			||||||
        gen_update_cc_add(dest, gen_im32(im));
 | 
					        gen_update_cc_add(dest, tcg_const_i32(im));
 | 
				
			||||||
        gen_helper_xflag_lt(QREG_CC_X, dest, gen_im32(im));
 | 
					        gen_helper_xflag_lt(QREG_CC_X, dest, tcg_const_i32(im));
 | 
				
			||||||
        s->cc_op = CC_OP_ADD;
 | 
					        s->cc_op = CC_OP_ADD;
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
    case 5: /* eori */
 | 
					    case 5: /* eori */
 | 
				
			||||||
@ -1228,7 +1225,7 @@ DISAS_INSN(arith_im)
 | 
				
			|||||||
    case 6: /* cmpi */
 | 
					    case 6: /* cmpi */
 | 
				
			||||||
        tcg_gen_mov_i32(dest, src1);
 | 
					        tcg_gen_mov_i32(dest, src1);
 | 
				
			||||||
        tcg_gen_subi_i32(dest, dest, im);
 | 
					        tcg_gen_subi_i32(dest, dest, im);
 | 
				
			||||||
        gen_update_cc_add(dest, gen_im32(im));
 | 
					        gen_update_cc_add(dest, tcg_const_i32(im));
 | 
				
			||||||
        s->cc_op = CC_OP_SUB;
 | 
					        s->cc_op = CC_OP_SUB;
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
    default:
 | 
					    default:
 | 
				
			||||||
@ -1324,8 +1321,8 @@ DISAS_INSN(clr)
 | 
				
			|||||||
    default:
 | 
					    default:
 | 
				
			||||||
        abort();
 | 
					        abort();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    DEST_EA(insn, opsize, gen_im32(0), NULL);
 | 
					    DEST_EA(insn, opsize, tcg_const_i32(0), NULL);
 | 
				
			||||||
    gen_logic_cc(s, gen_im32(0));
 | 
					    gen_logic_cc(s, tcg_const_i32(0));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static TCGv gen_get_ccr(DisasContext *s)
 | 
					static TCGv gen_get_ccr(DisasContext *s)
 | 
				
			||||||
@ -1589,7 +1586,7 @@ DISAS_INSN(jump)
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
    if ((insn & 0x40) == 0) {
 | 
					    if ((insn & 0x40) == 0) {
 | 
				
			||||||
        /* jsr */
 | 
					        /* jsr */
 | 
				
			||||||
        gen_push(s, gen_im32(s->pc));
 | 
					        gen_push(s, tcg_const_i32(s->pc));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    gen_jmp(s, tmp);
 | 
					    gen_jmp(s, tmp);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -1617,7 +1614,7 @@ DISAS_INSN(addsubq)
 | 
				
			|||||||
            tcg_gen_addi_i32(dest, dest, val);
 | 
					            tcg_gen_addi_i32(dest, dest, val);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
        src2 = gen_im32(val);
 | 
					        src2 = tcg_const_i32(val);
 | 
				
			||||||
        if (insn & 0x0100) {
 | 
					        if (insn & 0x0100) {
 | 
				
			||||||
            gen_helper_xflag_lt(QREG_CC_X, dest, src2);
 | 
					            gen_helper_xflag_lt(QREG_CC_X, dest, src2);
 | 
				
			||||||
            tcg_gen_subi_i32(dest, dest, val);
 | 
					            tcg_gen_subi_i32(dest, dest, val);
 | 
				
			||||||
@ -1666,7 +1663,7 @@ DISAS_INSN(branch)
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
    if (op == 1) {
 | 
					    if (op == 1) {
 | 
				
			||||||
        /* bsr */
 | 
					        /* bsr */
 | 
				
			||||||
        gen_push(s, gen_im32(s->pc));
 | 
					        gen_push(s, tcg_const_i32(s->pc));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    gen_flush_cc_op(s);
 | 
					    gen_flush_cc_op(s);
 | 
				
			||||||
    if (op > 1) {
 | 
					    if (op > 1) {
 | 
				
			||||||
@ -1757,7 +1754,7 @@ DISAS_INSN(mov3q)
 | 
				
			|||||||
    val = (insn >> 9) & 7;
 | 
					    val = (insn >> 9) & 7;
 | 
				
			||||||
    if (val == 0)
 | 
					    if (val == 0)
 | 
				
			||||||
        val = -1;
 | 
					        val = -1;
 | 
				
			||||||
    src = gen_im32(val);
 | 
					    src = tcg_const_i32(val);
 | 
				
			||||||
    gen_logic_cc(s, src);
 | 
					    gen_logic_cc(s, src);
 | 
				
			||||||
    DEST_EA(insn, OS_LONG, src, NULL);
 | 
					    DEST_EA(insn, OS_LONG, src, NULL);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -1883,7 +1880,7 @@ DISAS_INSN(shift_im)
 | 
				
			|||||||
    tmp = (insn >> 9) & 7;
 | 
					    tmp = (insn >> 9) & 7;
 | 
				
			||||||
    if (tmp == 0)
 | 
					    if (tmp == 0)
 | 
				
			||||||
        tmp = 8;
 | 
					        tmp = 8;
 | 
				
			||||||
    shift = gen_im32(tmp);
 | 
					    shift = tcg_const_i32(tmp);
 | 
				
			||||||
    /* No need to flush flags becuse we know we will set C flag.  */
 | 
					    /* No need to flush flags becuse we know we will set C flag.  */
 | 
				
			||||||
    if (insn & 0x100) {
 | 
					    if (insn & 0x100) {
 | 
				
			||||||
        gen_helper_shl_cc(reg, cpu_env, reg, shift);
 | 
					        gen_helper_shl_cc(reg, cpu_env, reg, shift);
 | 
				
			||||||
@ -2191,7 +2188,7 @@ DISAS_INSN(fpu)
 | 
				
			|||||||
        switch ((ext >> 10) & 7) {
 | 
					        switch ((ext >> 10) & 7) {
 | 
				
			||||||
        case 4: /* FPCR */
 | 
					        case 4: /* FPCR */
 | 
				
			||||||
            /* Not implemented.  Always return zero.  */
 | 
					            /* Not implemented.  Always return zero.  */
 | 
				
			||||||
            tmp32 = gen_im32(0);
 | 
					            tmp32 = tcg_const_i32(0);
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
        case 1: /* FPIAR */
 | 
					        case 1: /* FPIAR */
 | 
				
			||||||
        case 2: /* FPSR */
 | 
					        case 2: /* FPSR */
 | 
				
			||||||
@ -2592,7 +2589,7 @@ DISAS_INSN(mac)
 | 
				
			|||||||
        /* Skip the accumulate if the value is already saturated.  */
 | 
					        /* Skip the accumulate if the value is already saturated.  */
 | 
				
			||||||
        l1 = gen_new_label();
 | 
					        l1 = gen_new_label();
 | 
				
			||||||
        tmp = tcg_temp_new();
 | 
					        tmp = tcg_temp_new();
 | 
				
			||||||
        gen_op_and32(tmp, QREG_MACSR, gen_im32(MACSR_PAV0 << acc));
 | 
					        gen_op_and32(tmp, QREG_MACSR, tcg_const_i32(MACSR_PAV0 << acc));
 | 
				
			||||||
        gen_op_jmp_nz32(tmp, l1);
 | 
					        gen_op_jmp_nz32(tmp, l1);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@ -2626,7 +2623,7 @@ DISAS_INSN(mac)
 | 
				
			|||||||
            /* Skip the accumulate if the value is already saturated.  */
 | 
					            /* Skip the accumulate if the value is already saturated.  */
 | 
				
			||||||
            l1 = gen_new_label();
 | 
					            l1 = gen_new_label();
 | 
				
			||||||
            tmp = tcg_temp_new();
 | 
					            tmp = tcg_temp_new();
 | 
				
			||||||
            gen_op_and32(tmp, QREG_MACSR, gen_im32(MACSR_PAV0 << acc));
 | 
					            gen_op_and32(tmp, QREG_MACSR, tcg_const_i32(MACSR_PAV0 << acc));
 | 
				
			||||||
            gen_op_jmp_nz32(tmp, l1);
 | 
					            gen_op_jmp_nz32(tmp, l1);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user