/[qemu]/qemu/translate-i386.c
ViewVC logotype

Diff of /qemu/translate-i386.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.30 by bellard, Sat May 10 15:07:51 2003 UTC revision 1.31 by bellard, Sat May 10 21:37:05 2003 UTC
# Line 3249  long disas_insn(DisasContext *s, uint8_t Line 3249  long disas_insn(DisasContext *s, uint8_t
3249      case 0x90: /* nop */      case 0x90: /* nop */
3250          break;          break;
3251      case 0xcc: /* int3 */      case 0xcc: /* int3 */
3252          gen_exception(s, EXCP03_INT3, pc_start - s->cs_base);          gen_exception(s, EXCP03_INT3, s->pc - s->cs_base);
3253          break;          break;
3254      case 0xcd: /* int N */      case 0xcd: /* int N */
3255          val = ldub(s->pc++);          val = ldub(s->pc++);
# Line 3261  long disas_insn(DisasContext *s, uint8_t Line 3261  long disas_insn(DisasContext *s, uint8_t
3261      case 0xce: /* into */      case 0xce: /* into */
3262          if (s->cc_op != CC_OP_DYNAMIC)          if (s->cc_op != CC_OP_DYNAMIC)
3263              gen_op_set_cc_op(s->cc_op);              gen_op_set_cc_op(s->cc_op);
3264          gen_op_into();          gen_op_into(s->pc - s->cs_base);
3265          break;          break;
3266      case 0xfa: /* cli */      case 0xfa: /* cli */
3267          if (!s->vm86) {          if (!s->vm86) {
# Line 3343  long disas_insn(DisasContext *s, uint8_t Line 3343  long disas_insn(DisasContext *s, uint8_t
3343          /* XXX: if cpl == 0, then should do something else */          /* XXX: if cpl == 0, then should do something else */
3344          gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base);          gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base);
3345          break;          break;
3346        case 0x102: /* lar */
3347        case 0x103: /* lsl */
3348            if (s->vm86)
3349                goto illegal_op;
3350            ot = dflag ? OT_LONG : OT_WORD;
3351            modrm = ldub(s->pc++);
3352            reg = (modrm >> 3) & 7;
3353            gen_ldst_modrm(s, modrm, ot, OR_TMP0, 0);
3354            gen_op_mov_TN_reg[ot][1][reg]();
3355            if (s->cc_op != CC_OP_DYNAMIC)
3356                gen_op_set_cc_op(s->cc_op);
3357            if (b == 0x102)
3358                gen_op_lar();
3359            else
3360                gen_op_lsl();
3361            s->cc_op = CC_OP_EFLAGS;
3362            gen_op_mov_reg_T1[ot][reg]();
3363            break;
3364      default:      default:
3365          goto illegal_op;          goto illegal_op;
3366      }      }
# Line 3579  static uint16_t opc_write_flags[NB_OPS] Line 3597  static uint16_t opc_write_flags[NB_OPS]
3597      [INDEX_op_cmpxchgl_T0_T1_EAX_cc] = CC_OSZAPC,      [INDEX_op_cmpxchgl_T0_T1_EAX_cc] = CC_OSZAPC,
3598    
3599      [INDEX_op_cmpxchg8b] = CC_Z,      [INDEX_op_cmpxchg8b] = CC_Z,
3600        [INDEX_op_lar] = CC_Z,
3601        [INDEX_op_lsl] = CC_Z,
3602  };  };
3603    
3604  /* simpler form of an operation if no flags need to be generated */  /* simpler form of an operation if no flags need to be generated */

Legend:
Removed from v.1.30  
changed lines
  Added in v.1.31

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26