1277 |
gen_op_movl_seg_T0(seg_reg, cur_eip); |
gen_op_movl_seg_T0(seg_reg, cur_eip); |
1278 |
else |
else |
1279 |
gen_op_movl_seg_T0_vm(offsetof(CPUX86State,segs[seg_reg])); |
gen_op_movl_seg_T0_vm(offsetof(CPUX86State,segs[seg_reg])); |
1280 |
if (!s->addseg && seg_reg < R_FS) |
/* abort translation because the register may have a non zero base |
1281 |
s->is_jmp = 2; /* abort translation because the register may |
or because ss32 may change */ |
1282 |
have a non zero base */ |
if (seg_reg == R_SS || (!s->addseg && seg_reg < R_FS)) |
1283 |
|
s->is_jmp = 2; |
1284 |
} |
} |
1285 |
|
|
1286 |
/* generate a push. It depends on ss32, addseg and dflag */ |
/* generate a push. It depends on ss32, addseg and dflag */ |
3421 |
gen_op_set_cc_op(s->cc_op); |
gen_op_set_cc_op(s->cc_op); |
3422 |
gen_op_into(s->pc - s->cs_base); |
gen_op_into(s->pc - s->cs_base); |
3423 |
break; |
break; |
3424 |
|
case 0xf1: /* icebp (undocumented, exits to external debugger) */ |
3425 |
|
gen_debug(s, pc_start - s->cs_base); |
3426 |
|
break; |
3427 |
case 0xfa: /* cli */ |
case 0xfa: /* cli */ |
3428 |
if (!s->vm86) { |
if (!s->vm86) { |
3429 |
if (s->cpl <= s->iopl) { |
if (s->cpl <= s->iopl) { |