Previous 199869 Revisions Next

r21478 Thursday 28th February, 2013 at 03:53:37 UTC by Carl
(mess) i386: int 6 on invalid LxS insn.  Makes NTVDM happier. (nw)
[src/emu/cpu/i386]i386op16.c

trunk/src/emu/cpu/i386/i386op16.c
r21477r21478
36603660   CYCLES(cpustate,CYCLES_RET_IMM_INTERSEG);
36613661}
36623662
3663static void I386OP(load_far_pointer16)(i386_state *cpustate, int s)
3663static bool I386OP(load_far_pointer16)(i386_state *cpustate, int s)
36643664{
36653665   UINT8 modrm = FETCH(cpustate);
36663666   UINT16 selector;
36673667
36683668   if( modrm >= 0xc0 ) {
3669      fatalerror("i386: load_far_pointer16 NYI\n");
3669      //logerror("i386: load_far_pointer16 NYI\n"); // don't log, NT will use this a lot
3670      i386_trap(cpustate,6, 0, 0);
3671      return false;
36703672   } else {
36713673      UINT32 ea = GetEA(cpustate,modrm,0);
36723674      STORE_REG16(modrm, READ16(cpustate,ea + 0));
36733675      selector = READ16(cpustate,ea + 2);
36743676      i386_sreg_load(cpustate,selector,s,NULL);
36753677   }
3678   return true;
36763679}
36773680
36783681static void I386OP(lds16)(i386_state *cpustate)             // Opcode 0xc5
36793682{
3680   I386OP(load_far_pointer16)(cpustate, DS);
3681   CYCLES(cpustate,CYCLES_LDS);
3683   if(I386OP(load_far_pointer16)(cpustate, DS))
3684      CYCLES(cpustate,CYCLES_LDS);
36823685}
36833686
36843687static void I386OP(lss16)(i386_state *cpustate)             // Opcode 0x0f 0xb2
36853688{
3686   I386OP(load_far_pointer16)(cpustate, SS);
3687   CYCLES(cpustate,CYCLES_LSS);
3689   if(I386OP(load_far_pointer16)(cpustate, SS))
3690      CYCLES(cpustate,CYCLES_LSS);
36883691}
36893692
36903693static void I386OP(les16)(i386_state *cpustate)             // Opcode 0xc4
36913694{
3692   I386OP(load_far_pointer16)(cpustate, ES);
3693   CYCLES(cpustate,CYCLES_LES);
3695   if(I386OP(load_far_pointer16)(cpustate, ES))
3696      CYCLES(cpustate,CYCLES_LES);
36943697}
36953698
36963699static void I386OP(lfs16)(i386_state *cpustate)             // Opcode 0x0f 0xb4
36973700{
3698   I386OP(load_far_pointer16)(cpustate, FS);
3699   CYCLES(cpustate,CYCLES_LFS);
3701   if(I386OP(load_far_pointer16)(cpustate, FS))
3702      CYCLES(cpustate,CYCLES_LFS);
37003703}
37013704
37023705static void I386OP(lgs16)(i386_state *cpustate)             // Opcode 0x0f 0xb5
37033706{
3704   I386OP(load_far_pointer16)(cpustate, GS);
3705   CYCLES(cpustate,CYCLES_LGS);
3707   if(I386OP(load_far_pointer16)(cpustate, GS))
3708      CYCLES(cpustate,CYCLES_LGS);
37063709}

Previous 199869 Revisions Next


© 1997-2024 The MAME Team