Diff for /np2/i386c/ia32/ia32.c between versions 1.8 and 1.13

version 1.8, 2004/02/06 16:49:51 version 1.13, 2004/03/12 13:34:08
Line 34 Line 34
   
 I386CORE        i386core;  I386CORE        i386core;
   
 BYTE    *reg8_b20[0x100];  UINT8   *reg8_b20[0x100];
 BYTE    *reg8_b53[0x100];  UINT8   *reg8_b53[0x100];
 WORD    *reg16_b20[0x100];  UINT16  *reg16_b20[0x100];
 WORD    *reg16_b53[0x100];  UINT16  *reg16_b53[0x100];
 DWORD   *reg32_b20[0x100];  UINT32  *reg32_b20[0x100];
 DWORD   *reg32_b53[0x100];  UINT32  *reg32_b53[0x100];
   
   
 void  void
Line 78  ia32_init(void) Line 78  ia32_init(void)
         }          }
   
         resolve_init();          resolve_init();
 #if defined(IA32_SUPPORT_TLB)  
         tlb_init();  
 #endif  
 #ifdef USE_FPU  #ifdef USE_FPU
         fpu_init();          fpu_init();
 #endif  #endif
Line 130  change_pm(BOOL onoff) Line 127  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 142  change_pg(BOOL onoff) Line 141  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 169  change_vm(BOOL onoff) Line 170  change_vm(BOOL onoff)
  * flags   * flags
  */   */
 static void  static void
 modify_eflags(DWORD new_flags, DWORD mask)  modify_eflags(UINT32 new_flags, UINT32 mask)
 {  {
         DWORD orig = CPU_EFLAG;          UINT32 orig = CPU_EFLAG;
   
         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);
                           }
                 }                  }
         }          }
 }  }
   
   #if !defined(IA32_DONT_USE_SET_EFLAGS_FUNCTION)
 void  void
 set_flags(WORD new_flags, WORD mask)  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, 0xffff0000|mask);          modify_eflags(new_flags, mask);
 }  }
   
 void  void
 set_eflags(DWORD new_flags, DWORD mask)  set_eflags(UINT32 new_flags, UINT32 mask)
 {  {
   
         mask &= I_FLAG|IOPL_FLAG|RF_FLAG|VM_FLAG|VIF_FLAG|VIP_FLAG;          mask &= I_FLAG|IOPL_FLAG|RF_FLAG|VM_FLAG|VIF_FLAG|VIP_FLAG;
Line 206  set_eflags(DWORD new_flags, DWORD mask) Line 210  set_eflags(DWORD new_flags, DWORD 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.8  
changed lines
  Added in v.1.13


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