Diff for /np2/i386c/ia32/cpu_mem.c between versions 1.22 and 1.24

version 1.22, 2008/03/22 04:03:07 version 1.24, 2011/12/16 09:05:42
Line 1 Line 1
 /*      $Id$    */  
   
 /*  /*
  * Copyright (c) 2002-2004 NONAKA Kimihiro   * Copyright (c) 2002-2004 NONAKA Kimihiro
  * All rights reserved.   * All rights reserved.
Line 399  cpu_codefetch(UINT32 offset) Line 397  cpu_codefetch(UINT32 offset)
 {  {
         descriptor_t *sdp;          descriptor_t *sdp;
         UINT32 addr;          UINT32 addr;
 #if defined(IA32_SUPPORT_TLB)  
         TLB_ENTRY_T *ep;          TLB_ENTRY_T *ep;
 #endif  
   
         sdp = &CPU_CS_DESC;          sdp = &CPU_CS_DESC;
         if (offset <= sdp->u.seg.limit) {          if (offset <= sdp->u.seg.limit) {
                 addr = sdp->u.seg.segbase + offset;                  addr = sdp->u.seg.segbase + offset;
                 if (!CPU_STAT_PAGING)                  if (!CPU_STAT_PAGING)
                         return cpu_memoryread(addr);                          return cpu_memoryread(addr);
 #if defined(IA32_SUPPORT_TLB)  
                 ep = tlb_lookup(addr, ucrw);                  ep = tlb_lookup(addr, ucrw);
                 if (ep != NULL && ep->memp != NULL) {                  if (ep != NULL && ep->memp != NULL) {
                         return ep->memp[addr & 0xfff];                          return ep->memp[addr & 0xfff];
                 }                  }
 #endif  
                 return cpu_linear_memory_read_b(addr, ucrw);                  return cpu_linear_memory_read_b(addr, ucrw);
         }          }
         EXCEPTION(GP_EXCEPTION, 0);          EXCEPTION(GP_EXCEPTION, 0);
Line 425  cpu_codefetch_w(UINT32 offset) Line 419  cpu_codefetch_w(UINT32 offset)
 {  {
         descriptor_t *sdp;          descriptor_t *sdp;
         UINT32 addr;          UINT32 addr;
 #if defined(IA32_SUPPORT_TLB)  
         TLB_ENTRY_T *ep;          TLB_ENTRY_T *ep;
         UINT16 value;          UINT16 value;
 #endif  
   
         sdp = &CPU_CS_DESC;          sdp = &CPU_CS_DESC;
         if (offset <= sdp->u.seg.limit - 1) {          if (offset <= sdp->u.seg.limit - 1) {
                 addr = sdp->u.seg.segbase + offset;                  addr = sdp->u.seg.segbase + offset;
                 if (!CPU_STAT_PAGING)                  if (!CPU_STAT_PAGING)
                         return cpu_memoryread_w(addr);                          return cpu_memoryread_w(addr);
 #if defined(IA32_SUPPORT_TLB)  
                 ep = tlb_lookup(addr, ucrw);                  ep = tlb_lookup(addr, ucrw);
                 if (ep != NULL && ep->memp != NULL) {                  if (ep != NULL && ep->memp != NULL) {
                         if ((addr + 1) & 0x00000fff) {                          if ((addr + 1) & 0x00000fff) {
Line 448  cpu_codefetch_w(UINT32 offset) Line 439  cpu_codefetch_w(UINT32 offset)
                                 return value;                                  return value;
                         }                          }
                 }                  }
 #endif  
                 return cpu_linear_memory_read_w(addr, ucrw);                  return cpu_linear_memory_read_w(addr, ucrw);
         }          }
         EXCEPTION(GP_EXCEPTION, 0);          EXCEPTION(GP_EXCEPTION, 0);
Line 460  cpu_codefetch_d(UINT32 offset) Line 450  cpu_codefetch_d(UINT32 offset)
 {  {
         descriptor_t *sdp;          descriptor_t *sdp;
         UINT32 addr;          UINT32 addr;
 #if defined(IA32_SUPPORT_TLB)  
         TLB_ENTRY_T *ep[2];          TLB_ENTRY_T *ep[2];
         UINT32 value;          UINT32 value;
         UINT remain;          UINT remain;
 #endif  
   
         sdp = &CPU_CS_DESC;          sdp = &CPU_CS_DESC;
         if (offset <= sdp->u.seg.limit - 3) {          if (offset <= sdp->u.seg.limit - 3) {
                 addr = sdp->u.seg.segbase + offset;                  addr = sdp->u.seg.segbase + offset;
                 if (!CPU_STAT_PAGING)                  if (!CPU_STAT_PAGING)
                         return cpu_memoryread_d(addr);                          return cpu_memoryread_d(addr);
 #if defined(IA32_SUPPORT_TLB)  
                 ep[0] = tlb_lookup(addr, ucrw);                  ep[0] = tlb_lookup(addr, ucrw);
                 if (ep[0] != NULL && ep[0]->memp != NULL) {                  if (ep[0] != NULL && ep[0]->memp != NULL) {
                         remain = 0x1000 - (addr & 0xfff);                          remain = 0x1000 - (addr & 0xfff);
Line 505  cpu_codefetch_d(UINT32 offset) Line 492  cpu_codefetch_d(UINT32 offset)
                                 return value;                                  return value;
                         }                          }
                 }                  }
 #endif  
                 return cpu_linear_memory_read_d(addr, ucrw);                  return cpu_linear_memory_read_d(addr, ucrw);
         }          }
         EXCEPTION(GP_EXCEPTION, 0);          EXCEPTION(GP_EXCEPTION, 0);

Removed from v.1.22  
changed lines
  Added in v.1.24


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