/[gxemul]/trunk/src/memory_fast_v2h.c
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /trunk/src/memory_fast_v2h.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 4 by dpavlin, Mon Oct 8 16:18:00 2007 UTC revision 12 by dpavlin, Mon Oct 8 16:18:38 2007 UTC
# Line 25  Line 25 
25   *  SUCH DAMAGE.   *  SUCH DAMAGE.
26   *   *
27   *   *
28   *  $Id: memory_fast_v2h.c,v 1.13 2005/04/09 21:13:58 debug Exp $   *  $Id: memory_fast_v2h.c,v 1.15 2005/07/19 10:48:05 debug Exp $
29   *   *
30   *  Fast virtual memory to host address, used by binary translated code.   *  Fast virtual memory to host address, used by binary translated code.
31   */   */
# Line 143  if ((vaddr & 0xc0000000ULL) >= 0xc000000 Line 143  if ((vaddr & 0xc0000000ULL) >= 0xc000000
143                  if (paddr >= (cpu->mem->dev_baseaddr[i] & ~0xfff) &&                  if (paddr >= (cpu->mem->dev_baseaddr[i] & ~0xfff) &&
144                      paddr <= ((cpu->mem->dev_baseaddr[i] +                      paddr <= ((cpu->mem->dev_baseaddr[i] +
145                      cpu->mem->dev_length[i] - 1) | 0xfff)) {                      cpu->mem->dev_length[i] - 1) | 0xfff)) {
146                          if (cpu->mem->dev_flags[i] & MEM_BINTRANS_OK) {                          if (cpu->mem->dev_flags[i] & MEM_DYNTRANS_OK) {
147                                  paddr -= cpu->mem->dev_baseaddr[i];                                  paddr -= cpu->mem->dev_baseaddr[i];
148    
149                                  /*  Within a device _page_ but not within the                                  /*  Within a device _page_ but not within the
# Line 156  if ((vaddr & 0xc0000000ULL) >= 0xc000000 Line 156  if ((vaddr & 0xc0000000ULL) >= 0xc000000
156                                          uint64_t low_paddr = paddr & ~0xfff;                                          uint64_t low_paddr = paddr & ~0xfff;
157                                          uint64_t high_paddr = paddr | 0xfff;                                          uint64_t high_paddr = paddr | 0xfff;
158                                          if (!(cpu->mem->dev_flags[i] &                                          if (!(cpu->mem->dev_flags[i] &
159                                              MEM_BINTRANS_WRITE_OK))                                              MEM_DYNTRANS_WRITE_OK))
160                                                  return NULL;                                                  return NULL;
161    
162                                          if (low_paddr < cpu->mem->                                          if (low_paddr < cpu->mem->
163                                              dev_bintrans_write_low[i])                                              dev_dyntrans_write_low[i])
164                                                  cpu->mem->                                                  cpu->mem->
165                                                      dev_bintrans_write_low[i] =                                                      dev_dyntrans_write_low[i] =
166                                                      low_paddr;                                                      low_paddr;
167                                          if (high_paddr > cpu->mem->                                          if (high_paddr > cpu->mem->
168                                              dev_bintrans_write_high[i])                                              dev_dyntrans_write_high[i])
169                                                  cpu->mem->                                                  cpu->mem->
170                                                      dev_bintrans_write_high[i]                                                      dev_dyntrans_write_high[i]
171                                                      = high_paddr;                                                      = high_paddr;
172                                  }                                  }
173    
# Line 177  if ((vaddr & 0xc0000000ULL) >= 0xc000000 Line 177  if ((vaddr & 0xc0000000ULL) >= 0xc000000
177                                              MAX - 1;                                              MAX - 1;
178                                  cpu->cd.mips.bintrans_data_hostpage[cpu->                                  cpu->cd.mips.bintrans_data_hostpage[cpu->
179                                      cd.mips.bintrans_next_index] = cpu->mem->                                      cd.mips.bintrans_next_index] = cpu->mem->
180                                      dev_bintrans_data[i] + (paddr & ~0xfff);                                      dev_dyntrans_data[i] + (paddr & ~0xfff);
181                                  cpu->cd.mips.bintrans_data_vaddr[cpu->                                  cpu->cd.mips.bintrans_data_vaddr[cpu->
182                                      cd.mips.bintrans_next_index] = vaddr_page;                                      cd.mips.bintrans_next_index] = vaddr_page;
183                                  cpu->cd.mips.bintrans_data_writable[cpu->                                  cpu->cd.mips.bintrans_data_writable[cpu->
184                                      cd.mips.bintrans_next_index] = writeflag;                                      cd.mips.bintrans_next_index] = writeflag;
185                                  return cpu->mem->dev_bintrans_data[i] + paddr;                                  return cpu->mem->dev_dyntrans_data[i] + paddr;
186                          } else                          } else
187                                  return NULL;                                  return NULL;
188                  }                  }

Legend:
Removed from v.4  
changed lines
  Added in v.12

  ViewVC Help
Powered by ViewVC 1.1.26