|
|
| version 1.39, 2012/01/24 17:27:58 | version 1.40, 2012/01/29 14:53:26 |
|---|---|
| Line 610 cpu_memory_access_la_region(UINT32 laddr | Line 610 cpu_memory_access_la_region(UINT32 laddr |
| UINT remain; /* page remain */ | UINT remain; /* page remain */ |
| UINT r; | UINT r; |
| if (length == 0) | while (length > 0) { |
| return; | remain = CPU_PAGE_SIZE - (laddr & CPU_PAGE_MASK); |
| remain = CPU_PAGE_SIZE - (laddr & CPU_PAGE_MASK); | |
| for (;;) { | |
| if (!CPU_STAT_PAGING) { | if (!CPU_STAT_PAGING) { |
| paddr = laddr; | paddr = laddr; |
| } else { | } else { |
| Line 628 cpu_memory_access_la_region(UINT32 laddr | Line 625 cpu_memory_access_la_region(UINT32 laddr |
| cpu_memorywrite_region(paddr, data, r); | cpu_memorywrite_region(paddr, data, r); |
| } | } |
| length -= r; | |
| if (length == 0) | |
| break; | |
| data += r; | |
| laddr += r; | laddr += r; |
| remain -= r; | data += r; |
| if (remain <= 0) { | length -= r; |
| /* next page */ | |
| remain += CPU_PAGE_SIZE; | |
| } | |
| } | } |
| } | } |
| Line 655 laddr2paddr(UINT32 laddr, int ucrw) | Line 644 laddr2paddr(UINT32 laddr, int ucrw) |
| static UINT32 MEMCALL | static UINT32 MEMCALL |
| paging(UINT32 laddr, int ucrw) | paging(UINT32 laddr, int ucrw) |
| { | { |
| struct tlb_entry *ep; | |
| UINT32 paddr; /* physical address */ | UINT32 paddr; /* physical address */ |
| UINT32 pde_addr; /* page directory entry address */ | UINT32 pde_addr; /* page directory entry address */ |
| UINT32 pde; /* page directory entry */ | UINT32 pde; /* page directory entry */ |
| Line 662 paging(UINT32 laddr, int ucrw) | Line 652 paging(UINT32 laddr, int ucrw) |
| UINT32 pte; /* page table entry */ | UINT32 pte; /* page table entry */ |
| UINT bit; | UINT bit; |
| UINT err; | UINT err; |
| struct tlb_entry *ep; | |
| ep = tlb_lookup(laddr, ucrw); | ep = tlb_lookup(laddr, ucrw); |
| if (ep != NULL) | if (ep != NULL) |