Diff for /np2/i386c/ia32/cpu.c between versions 1.14 and 1.16

version 1.14, 2004/03/07 02:08:25 version 1.16, 2004/03/08 12:56:22
Line 55  int cpu_inst_trace = 0; Line 55  int cpu_inst_trace = 0;
 #endif  #endif
   
   
 #define IPTRACE                 (1 << 14)  // #define      IPTRACE                 (1 << 14)
   
 #if defined(TRACE) && IPTRACE  #if defined(TRACE) && IPTRACE
 static  UINT    trpos = 0;  static  UINT    trpos = 0;
Line 145  exec_1step(void) Line 145  exec_1step(void)
         }          }
         ctx[ctx_index].opbytes = 0;          ctx[ctx_index].opbytes = 0;
 #endif  #endif
   
   #if defined(IA32_SUPPORT_DEBUG_REGISTER)
           if (CPU_STAT_BP && !(CPU_EFLAG & RF_FLAG)) {
                   int i;
                   for (i = 0; i < CPU_DEBUG_REG_INDEX_NUM; i++) {
                           if ((CPU_STAT_BP & (1 << i))
                            && (CPU_DR7_GET_RW(i) == CPU_DR7_RW_CODE)
                            && (CPU_DR(i) == CPU_EIP)
                            && (CPU_DR7_GET_LEN(i) == 0)) {
                                   CPU_DR6 |= CPU_DR6_B(i);
                                   EXCEPTION(DB_EXCEPTION, 0);
                           }
                   }
           }
   #endif  /* IA32_SUPPORT_DEBUG_REGISTER */
   
         for (prefix = 0; prefix < MAX_PREFIX; prefix++) {          for (prefix = 0; prefix < MAX_PREFIX; prefix++) {
                 GET_PCBYTE(op);                  GET_PCBYTE(op);
 #if defined(IA32_INSTRUCTION_TRACE)  #if defined(IA32_INSTRUCTION_TRACE)
Line 176  exec_1step(void) Line 192  exec_1step(void)
         /* normal / rep, but not use */          /* normal / rep, but not use */
         if (!(insttable_info[op] & INST_STRING) || !CPU_INST_REPUSE) {          if (!(insttable_info[op] & INST_STRING) || !CPU_INST_REPUSE) {
                 (*insttable_1byte[CPU_INST_OP32][op])();                  (*insttable_1byte[CPU_INST_OP32][op])();
   #if defined(IA32_SUPPORT_DEBUG_REGISTER)
                   goto check_break_point;
   #else
                 return;                  return;
   #endif
         }          }
   
         /* rep */          /* rep */
Line 220  exec_1step(void) Line 240  exec_1step(void)
                         }                          }
                 }                  }
         }          }
   
   #if defined(IA32_SUPPORT_DEBUG_REGISTER)
   check_break_point:
           if (CPU_TRAP || (CPU_STAT_BP_EVENT & ~CPU_STAT_BP_EVENT_RF)) {
                   UINT8 orig = CPU_STAT_BP_EVENT & ~CPU_STAT_BP_EVENT_RF;
   
                   CPU_STAT_BP_EVENT &= CPU_STAT_BP_EVENT_RF;
   
                   CPU_DR6 |= (orig & 0xf);
                   if (orig & CPU_STAT_BP_EVENT_TASK) {
                           CPU_DR6 |= CPU_DR6_BT;
                   }
                   if (CPU_TRAP) {
                           CPU_DR6 |= CPU_DR6_BS;
                   }
                   INTERRUPT(DB_EXCEPTION, TRUE, FALSE, 0);
           }
           if (CPU_EFLAG & RF_FLAG) {
                   if (CPU_STAT_BP_EVENT & CPU_STAT_BP_EVENT_RF) {
                           /* after IRETD or task switch */
                           CPU_STAT_BP_EVENT &= ~CPU_STAT_BP_EVENT_RF;
                   } else {
                           CPU_EFLAG &= ~RF_FLAG;
                   }
           }
   #endif  /* IA32_SUPPORT_DEBUG_REGISTER */
 }  }

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


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