Diff for /np2/i386c/ia32/cpu.c between versions 1.27 and 1.28

version 1.27, 2012/01/08 11:32:16 version 1.28, 2012/01/08 11:36:05
Line 114  exec_1step(void) Line 114  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 163  exec_1step(void) Line 148  exec_1step(void)
                 cpu_debug_rep_cont = 0;                  cpu_debug_rep_cont = 0;
 #endif  #endif
                 (*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 277  exec_1step(void) Line 258  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, INTR_TYPE_EXCEPTION);  
         }  
         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.27  
changed lines
  Added in v.1.28


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