Diff for /np2/i386c/ia32/interface.c between versions 1.14 and 1.17

version 1.14, 2004/03/05 14:17:35 version 1.17, 2004/03/08 12:56:22
Line 31 Line 31
 #include "cpu.h"  #include "cpu.h"
 #include "ia32.mcr"  #include "ia32.mcr"
   
   #include "pccore.h"
   #include "iocore.h"
 #include "dmap.h"  #include "dmap.h"
 #include "bios.h"  #include "bios.h"
 #if defined(IA32_REBOOT_ON_PANIC)  #if defined(IA32_REBOOT_ON_PANIC)
Line 58  ia32_initreg(void) Line 60  ia32_initreg(void)
   
 #if CPU_FAMILY == 4  #if CPU_FAMILY == 4
         CPU_STATSAVE.cpu_regs.dr[6] = 0xffff1ff0;          CPU_STATSAVE.cpu_regs.dr[6] = 0xffff1ff0;
 #elif (CPU_FAMILY == 5) || (CPU_FAMILY == 6)  #elif CPU_FAMILY >= 5
         CPU_STATSAVE.cpu_regs.dr[6] = 0xffff0ff0;          CPU_STATSAVE.cpu_regs.dr[6] = 0xffff0ff0;
         CPU_STATSAVE.cpu_regs.dr[7] = 0x00000400;          CPU_STATSAVE.cpu_regs.dr[7] = 0x00000400;
 #endif  #endif
Line 115  ia32(void) Line 117  ia32(void)
                 break;                  break;
         }          }
   
   #if defined(IA32_SUPPORT_DEBUG_REGISTER)
         do {          do {
                 exec_1step();                  exec_1step();
         } while (CPU_REMCLOCK > 0);                  if (dmac.working) {
 }                          dmap();
   
 void  
 ia32withtrap(void)  
 {  
         int rv;  
   
         rv = sigsetjmp(exec_1step_jmpbuf, 1);  
         switch (rv) {  
         case 0:  
                 break;  
   
         case 1:  
                 VERBOSE(("ia32withtrap: return from exception"));  
                 break;  
   
         case 2:  
                 VERBOSE(("ia32withtrap: return from panic"));  
                 return;  
   
         default:  
                 VERBOSE(("ia32withtrap: return from unknown cause"));  
                 break;  
         }  
   
         do {  
                 exec_1step();  
                 if (CPU_TRAP) {  
                         ia32_interrupt(1);  
                 }                  }
         } while (CPU_REMCLOCK > 0);          } while (CPU_REMCLOCK > 0);
 }  #else
           if (CPU_TRAP) {
 void                  do {
 ia32withdma(void)                          exec_1step();
 {                          if (CPU_TRAP) {
         int rv;                                  CPU_DR6 |= CPU_DR6_BS;
                                   INTERRUPT(1, TRUE, FALSE, 0);
         rv = sigsetjmp(exec_1step_jmpbuf, 1);                          }
         switch (rv) {                          dmap();
         case 0:                  } while (CPU_REMCLOCK > 0);
                 break;          } else if (dmac.working) {
                   do {
         case 1:                          exec_1step();
                 VERBOSE(("ia32withdma: return from exception"));                          dmap();
                 break;                  } while (CPU_REMCLOCK > 0);
           } else {
         case 2:                  do {
                 VERBOSE(("ia32withdma: return from panic"));                          exec_1step();
                 return;                  } while (CPU_REMCLOCK > 0);
   
         default:  
                 VERBOSE(("ia32withdma: return from unknown cause"));  
                 break;  
         }          }
   #endif
         do {  
                 exec_1step();  
                 dmap_i286();  
         } while (CPU_REMCLOCK > 0);  
 }  }
   
 void  void
Line 205  ia32_step(void) Line 172  ia32_step(void)
   
         do {          do {
                 exec_1step();                  exec_1step();
   #if !defined(IA32_SUPPORT_DEBUG_REGISTER)
                 if (CPU_TRAP) {                  if (CPU_TRAP) {
                         ia32_interrupt(1);                          CPU_DR6 |= CPU_DR6_BS;
                           INTERRUPT(1, TRUE, FALSE, 0);
                   }
   #endif
                   if (dmac.working) {
                           dmap();
                 }                  }
                 dmap_i286();  
         } while (CPU_REMCLOCK > 0);          } while (CPU_REMCLOCK > 0);
 }  }
   
Line 216  void CPUCALL Line 188  void CPUCALL
 ia32_interrupt(int vect)  ia32_interrupt(int vect)
 {  {
   
         INTERRUPT(vect, 0, 0, 0);          INTERRUPT(vect, FALSE, FALSE, 0);
 }  }
   
   
Line 240  ia32_panic(const char *str, ...) Line 212  ia32_panic(const char *str, ...)
   
 #if defined(IA32_REBOOT_ON_PANIC)  #if defined(IA32_REBOOT_ON_PANIC)
         VERBOSE(("ia32_panic: reboot"));          VERBOSE(("ia32_panic: reboot"));
         pccore_cfgupdate();  
         pccore_reset();          pccore_reset();
         siglongjmp(exec_1step_jmpbuf, 2);          siglongjmp(exec_1step_jmpbuf, 2);
 #else  #else

Removed from v.1.14  
changed lines
  Added in v.1.17


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