Diff for /np2/i386c/ia32/ia32.c between versions 1.11 and 1.15

version 1.11, 2004/03/05 14:17:35 version 1.15, 2004/03/29 05:50:29
Line 101  ia32_setextsize(UINT32 size) Line 101  ia32_setextsize(UINT32 size)
                 }                  }
                 CPU_EXTMEMSIZE = size;                  CPU_EXTMEMSIZE = size;
         }          }
           CPU_EMSPTR[0] = mem + 0xc0000;
           CPU_EMSPTR[1] = mem + 0xc4000;
           CPU_EMSPTR[2] = mem + 0xc8000;
           CPU_EMSPTR[3] = mem + 0xcc000;
 }  }
   
   void
   ia32_setemm(UINT frame, UINT32 addr) {
   
           BYTE    *ptr;
   
           frame &= 3;
           if (addr < USE_HIMEM) {
                   ptr = mem + addr;
           }
           else if ((addr - 0x100000 + 0x4000) <= CPU_EXTMEMSIZE) {
                   ptr = CPU_EXTMEM + (addr - 0x100000);
           }
           else {
                   ptr = mem + 0xc0000 + (frame << 14);
           }
           CPU_EMSPTR[frame] = ptr;
   }
   
   
 /*  /*
  * モード遷移   * モード遷移
  */   */
Line 127  change_pm(BOOL onoff) Line 150  change_pm(BOOL onoff)
         CPU_STAT_SS32 = 0;          CPU_STAT_SS32 = 0;
         CPU_SET_CPL(0);          CPU_SET_CPL(0);
         CPU_STAT_PM = onoff;          CPU_STAT_PM = onoff;
   
           tlb_flush(TRUE);
 }  }
   
 void FASTCALL  void FASTCALL
Line 139  change_pg(BOOL onoff) Line 164  change_pg(BOOL onoff)
                 VERBOSE(("Leaveing from Paging-Mode..."));                  VERBOSE(("Leaveing from Paging-Mode..."));
         }          }
         CPU_STAT_PAGING = onoff;          CPU_STAT_PAGING = onoff;
   
           tlb_flush(TRUE);
 }  }
   
 void FASTCALL  void FASTCALL
Line 149  change_vm(BOOL onoff) Line 176  change_vm(BOOL onoff)
         CPU_STAT_VM86 = onoff;          CPU_STAT_VM86 = onoff;
         if (onoff) {          if (onoff) {
                 for (i = 0; i < CPU_SEGREG_NUM; i++) {                  for (i = 0; i < CPU_SEGREG_NUM; i++) {
                           CPU_STAT_SREGLIMIT(i) = 0xffff;
                         CPU_SET_SEGREG(i, CPU_REGS_SREG(i));                          CPU_SET_SEGREG(i, CPU_REGS_SREG(i));
                 }                  }
                 CPU_INST_OP32 = CPU_INST_AS32 =                  CPU_INST_OP32 = CPU_INST_AS32 =
Line 162  change_vm(BOOL onoff) Line 190  change_vm(BOOL onoff)
         }          }
 }  }
   
   #if !defined(IA32_DONT_USE_SET_EFLAGS_FUNCTION)
 /*  /*
  * flags   * flags
  */   */
Line 172  modify_eflags(UINT32 new_flags, UINT32 m Line 201  modify_eflags(UINT32 new_flags, UINT32 m
   
         new_flags &= ALL_EFLAG;          new_flags &= ALL_EFLAG;
         mask &= ALL_EFLAG;          mask &= ALL_EFLAG;
         CPU_EFLAG = (REAL_EFLAGREG & ~mask) | (new_flags & mask) | 0x2;          CPU_EFLAG = (REAL_EFLAGREG & ~mask) | (new_flags & mask);
   
         CPU_OV = CPU_FLAG & O_FLAG;          CPU_OV = CPU_FLAG & O_FLAG;
         CPU_TRAP = (CPU_FLAG & (I_FLAG|T_FLAG)) == (I_FLAG|T_FLAG);          CPU_TRAP = (CPU_FLAG & (I_FLAG|T_FLAG)) == (I_FLAG|T_FLAG);
         if ((orig ^ CPU_EFLAG) & VM_FLAG) {          if (CPU_STAT_PM) {
                 if (CPU_EFLAG & VM_FLAG) {                  if ((orig ^ CPU_EFLAG) & VM_FLAG) {
                         change_vm(1);                          if (CPU_EFLAG & VM_FLAG) {
                 } else {                                  change_vm(1);
                         change_vm(0);                          } else {
                                   change_vm(0);
                           }
                 }                  }
         }          }
 }  }
Line 190  set_flags(UINT16 new_flags, UINT16 mask) Line 221  set_flags(UINT16 new_flags, UINT16 mask)
 {  {
   
         mask &= I_FLAG|IOPL_FLAG;          mask &= I_FLAG|IOPL_FLAG;
         mask |= (SZAPC_FLAG|T_FLAG|D_FLAG|O_FLAG|NT_FLAG);          mask |= SZAPC_FLAG|T_FLAG|D_FLAG|O_FLAG|NT_FLAG;
         modify_eflags(new_flags, mask);          modify_eflags(new_flags, mask);
 }  }
   
Line 203  set_eflags(UINT32 new_flags, UINT32 mask Line 234  set_eflags(UINT32 new_flags, UINT32 mask
         mask |= AC_FLAG|ID_FLAG;          mask |= AC_FLAG|ID_FLAG;
         modify_eflags(new_flags, mask);          modify_eflags(new_flags, mask);
 }  }
   #endif  /* !IA32_DONT_USE_SET_EFLAGS_FUNCTION */

Removed from v.1.11  
changed lines
  Added in v.1.15


RetroPC.NET-CVS <cvs@retropc.net>