Revision 49d9fdcc target-i386/translate.c
b/target-i386/translate.c | ||
---|---|---|
7305 | 7305 |
#endif |
7306 | 7306 |
{ |
7307 | 7307 |
int label1; |
7308 |
TCGv t0, t1, t2; |
|
7308 |
TCGv t0, t1, t2, a0;
|
|
7309 | 7309 |
|
7310 | 7310 |
if (!s->pe || s->vm86) |
7311 | 7311 |
goto illegal_op; |
... | ... | |
7320 | 7320 |
if (mod != 3) { |
7321 | 7321 |
gen_lea_modrm(s, modrm, ®_addr, &offset_addr); |
7322 | 7322 |
gen_op_ld_v(ot + s->mem_index, t0, cpu_A0); |
7323 |
a0 = tcg_temp_local_new(); |
|
7324 |
tcg_gen_mov_tl(a0, cpu_A0); |
|
7323 | 7325 |
} else { |
7324 | 7326 |
gen_op_mov_v_reg(ot, t0, rm); |
7327 |
TCGV_UNUSED(a0); |
|
7325 | 7328 |
} |
7326 | 7329 |
gen_op_mov_v_reg(ot, t1, reg); |
7327 | 7330 |
tcg_gen_andi_tl(cpu_tmp0, t0, 3); |
... | ... | |
7334 | 7337 |
tcg_gen_movi_tl(t2, CC_Z); |
7335 | 7338 |
gen_set_label(label1); |
7336 | 7339 |
if (mod != 3) { |
7337 |
gen_op_st_v(ot + s->mem_index, t0, cpu_A0); |
|
7338 |
} else { |
|
7340 |
gen_op_st_v(ot + s->mem_index, t0, a0); |
|
7341 |
tcg_temp_free(a0); |
|
7342 |
} else { |
|
7339 | 7343 |
gen_op_mov_reg_v(ot, rm, t0); |
7340 | 7344 |
} |
7341 | 7345 |
if (s->cc_op != CC_OP_DYNAMIC) |
Also available in: Unified diff