Diff for /np2/i386c/ia32/cpu_mem.c between versions 1.28 and 1.30

version 1.28, 2012/01/08 11:32:16 version 1.30, 2012/01/08 11:36:47
Line 368  exc: Line 368  exc:
         EXCEPTION(SS_EXCEPTION, s & 0xfffc);          EXCEPTION(SS_EXCEPTION, s & 0xfffc);
 }  }
   
 #if defined(IA32_SUPPORT_DEBUG_REGISTER)  
 static INLINE void  
 check_memory_break_point(UINT32 address, UINT length, UINT rw)  
 {  
         int i;  
   
         if (CPU_STAT_BP && !(CPU_EFLAG & RF_FLAG)) {  
                 for (i = 0; i < CPU_DEBUG_REG_INDEX_NUM; i++) {  
                         if ((CPU_STAT_BP & (1 << i))  
                          && (CPU_DR7_GET_RW(i) & rw)  
   
                          && ((address <= CPU_DR(i) && address + length > CPU_DR(i))  
                           || (address > CPU_DR(i) && address < CPU_DR(i) + CPU_DR7_GET_LEN(i)))) {  
                                 CPU_STAT_BP_EVENT |= CPU_STAT_BP_EVENT_B(i);  
                         }  
                 }  
         }  
 }  
 #else  
 #define check_memory_break_point(address, length, rw)  
 #endif  
   
   
 /*  /*
  * code fetch   * code fetch
Line 580  cpu_vmemoryread_q(int idx, UINT32 offset Line 558  cpu_vmemoryread_q(int idx, UINT32 offset
                         goto range_failure;                          goto range_failure;
         }           } 
         addr = sdp->u.seg.segbase + offset;          addr = sdp->u.seg.segbase + offset;
         check_memory_break_point(addr, 8, CPU_DR7_RW_RO);  
         if (!CPU_STAT_PAGING)          if (!CPU_STAT_PAGING)
                 return cpu_memoryread_q(addr);                  return cpu_memoryread_q(addr);
         return cpu_linear_memory_read_q(addr, CPU_PAGE_READ_DATA | CPU_STAT_USER_MODE);          return cpu_linear_memory_read_q(addr, CPU_PAGE_READ_DATA | CPU_STAT_USER_MODE);
Line 616  cpu_vmemorywrite_q(int idx, UINT32 offse Line 593  cpu_vmemorywrite_q(int idx, UINT32 offse
                         goto range_failure;                          goto range_failure;
         }          }
         addr = sdp->u.seg.segbase + offset;          addr = sdp->u.seg.segbase + offset;
         check_memory_break_point(addr, 8, CPU_DR7_RW_RW);  
         if (!CPU_STAT_PAGING) {          if (!CPU_STAT_PAGING) {
                 cpu_memorywrite_q(addr, value);                  cpu_memorywrite_q(addr, value);
         } else {          } else {
Line 654  cpu_vmemoryread_f(int idx, UINT32 offset Line 630  cpu_vmemoryread_f(int idx, UINT32 offset
                         goto range_failure;                          goto range_failure;
         }           } 
         addr = sdp->u.seg.segbase + offset;          addr = sdp->u.seg.segbase + offset;
         check_memory_break_point(addr, 10, CPU_DR7_RW_RO);  
         if (!CPU_STAT_PAGING)          if (!CPU_STAT_PAGING)
                 return cpu_memoryread_f(addr);                  return cpu_memoryread_f(addr);
         return cpu_linear_memory_read_f(addr, CPU_PAGE_READ_DATA | CPU_PAGE_READ_DATA | CPU_STAT_USER_MODE);          return cpu_linear_memory_read_f(addr, CPU_PAGE_READ_DATA | CPU_PAGE_READ_DATA | CPU_STAT_USER_MODE);
Line 694  cpu_vmemorywrite_f(int idx, UINT32 offse Line 669  cpu_vmemorywrite_f(int idx, UINT32 offse
                         goto range_failure;                          goto range_failure;
         }          }
         addr = sdp->u.seg.segbase + offset;          addr = sdp->u.seg.segbase + offset;
         check_memory_break_point(addr, 10, CPU_DR7_RW_RW);  
         if (!CPU_STAT_PAGING) {          if (!CPU_STAT_PAGING) {
                 cpu_memorywrite_f(addr, value);                  cpu_memorywrite_f(addr, value);
         } else {          } else {

Removed from v.1.28  
changed lines
  Added in v.1.30


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