Diff for /np2/i386c/ia32/paging.c between versions 1.4 and 1.7

version 1.4, 2004/01/23 14:33:26 version 1.7, 2004/01/27 15:56:57
Line 214  cpu_linear_memory_read(DWORD laddr, DWOR Line 214  cpu_linear_memory_read(DWORD laddr, DWOR
                 r = (remain > length) ? length : remain;                  r = (remain > length) ? length : remain;
                 switch (r) {                  switch (r) {
                 case 1:                  case 1:
                         value = (DWORD)cpu_memoryread(paddr) << shift;                          value |= (DWORD)cpu_memoryread(paddr) << shift;
                         shift += 8;                          shift += 8;
                         break;                          break;
   
Line 225  cpu_linear_memory_read(DWORD laddr, DWOR Line 225  cpu_linear_memory_read(DWORD laddr, DWOR
   
                 case 3:                  case 3:
                         value |= (DWORD)cpu_memoryread_w(paddr) << shift;                          value |= (DWORD)cpu_memoryread_w(paddr) << shift;
                         value |= (DWORD)cpu_memoryread(paddr + 2) << (shift+16);                          shift += 16;
                         shift += 24;                          value |= (DWORD)cpu_memoryread(paddr + 2) << shift;
                           shift += 8;
                         break;                          break;
   
                 case 4:                  case 4:
                         value = cpu_memoryread_d(paddr);                          value = cpu_memoryread_d(paddr);
                         shift += 32;  
                         break;                          break;
   
                 default:                  default:
Line 239  cpu_linear_memory_read(DWORD laddr, DWOR Line 239  cpu_linear_memory_read(DWORD laddr, DWOR
                         break;                          break;
                 }                  }
   
                 if (length == r)                  length -= r;
                   if (length == 0)
                         break;                          break;
   
                 laddr += r;                  laddr += r;
                 length -= r;  
                 remain -= r;                  remain -= r;
                 if (remain <= 0)                  if (remain <= 0) {
                           /* next page */
                         remain += 0x1000;                          remain += 0x1000;
                   }
         }          }
   
         return value;          return value;
Line 273  cpu_linear_memory_write(DWORD laddr, DWO Line 275  cpu_linear_memory_write(DWORD laddr, DWO
                 r = (remain > length) ? length : remain;                  r = (remain > length) ? length : remain;
                 switch (r) {                  switch (r) {
                 case 1:                  case 1:
                         cpu_memorywrite(paddr, value);                          cpu_memorywrite(paddr, value & 0xff);
                         value >>= 8;                          value >>= 8;
                         break;                          break;
   
                 case 2:                  case 2:
                         cpu_memorywrite_w(paddr, value);                          cpu_memorywrite_w(paddr, value & 0xffff);
                         value >>= 16;                          value >>= 16;
                         break;                          break;
   
                 case 3:                  case 3:
                         cpu_memorywrite_w(paddr, value);                          cpu_memorywrite_w(paddr, value & 0xffff);
                         cpu_memorywrite(paddr, value >> 16);                          value >>= 16;
                         value >>= 24;                          cpu_memorywrite(paddr + 2, value & 0xff);
                           value >>= 8;
                         break;                          break;
   
                 case 4:                  case 4:
Line 297  cpu_linear_memory_write(DWORD laddr, DWO Line 300  cpu_linear_memory_write(DWORD laddr, DWO
                         break;                          break;
                 }                  }
   
                 if (length == r)                  length -= r;
                   if (length == 0)
                         break;                          break;
   
                 laddr += r;                  laddr += r;
                 length -= r;  
                 remain -= r;                  remain -= r;
                 if (remain <= 0)                  if (remain <= 0) {
                           /* next page */
                         remain += 0x1000;                          remain += 0x1000;
                   }
         }          }
 }  }
   
Line 326  paging_check(DWORD laddr, DWORD length,  Line 331  paging_check(DWORD laddr, DWORD length, 
                 paddr = paging(laddr, crw, pl);                  paddr = paging(laddr, crw, pl);
   
                 r = (remain > length) ? length : remain;                  r = (remain > length) ? length : remain;
                 if (length == r)  
                   length -= r;
                   if (length == 0)
                         break;                          break;
   
                 laddr += r;                  laddr += r;
                 length -= r;  
                 remain -= r;                  remain -= r;
                 if (remain <= 0)                  if (remain <= 0) {
                           /* next page */
                         remain += 0x1000;                          remain += 0x1000;
                   }
         }          }
 }  }
   
Line 346  paging(DWORD laddr, int crw, int user_mo Line 354  paging(DWORD laddr, int crw, int user_mo
         DWORD pte_addr; /* page table entry address */          DWORD pte_addr; /* page table entry address */
         DWORD pte;      /* page table entry */          DWORD pte;      /* page table entry */
         DWORD bit;          DWORD bit;
         DWORD err = 0;          DWORD err;
   
 #if defined(IA32_SUPPORT_TLB)  #if defined(IA32_SUPPORT_TLB)
         if (tlb_lookup(laddr, crw, &paddr))          if (tlb_lookup(laddr, crw, &paddr))

Removed from v.1.4  
changed lines
  Added in v.1.7


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