/[qemu]/qemu/softmmu_template.h
ViewVC logotype

Diff of /qemu/softmmu_template.h

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

revision 1.14 by bellard, Mon Nov 28 21:19:04 2005 UTC revision 1.15 by bellard, Mon Dec 5 19:57:57 2005 UTC
# Line 97  DATA_TYPE REGPARM(1) glue(glue(__ld, SUF Line 97  DATA_TYPE REGPARM(1) glue(glue(__ld, SUF
97              /* slow unaligned access (it spans two pages or IO) */              /* slow unaligned access (it spans two pages or IO) */
98          do_unaligned_access:          do_unaligned_access:
99              retaddr = GETPC();              retaddr = GETPC();
100    #ifdef ALIGNED_ONLY
101                do_unaligned_access(addr, READ_ACCESS_TYPE, is_user, retaddr);
102    #endif
103              res = glue(glue(slow_ld, SUFFIX), MMUSUFFIX)(addr,              res = glue(glue(slow_ld, SUFFIX), MMUSUFFIX)(addr,
104                                                           is_user, retaddr);                                                           is_user, retaddr);
105          } else {          } else {
106              /* unaligned access in the same page */              /* unaligned/aligned access in the same page */
107    #ifdef ALIGNED_ONLY
108                if ((addr & (DATA_SIZE - 1)) != 0) {
109                    retaddr = GETPC();
110                    do_unaligned_access(addr, READ_ACCESS_TYPE, is_user, retaddr);
111                }
112    #endif
113              res = glue(glue(ld, USUFFIX), _raw)((uint8_t *)(long)physaddr);              res = glue(glue(ld, USUFFIX), _raw)((uint8_t *)(long)physaddr);
114          }          }
115      } else {      } else {
116          /* the page is not in the TLB : fill it */          /* the page is not in the TLB : fill it */
117          retaddr = GETPC();          retaddr = GETPC();
118    #ifdef ALIGNED_ONLY
119            if ((addr & (DATA_SIZE - 1)) != 0)
120                do_unaligned_access(addr, READ_ACCESS_TYPE, is_user, retaddr);
121    #endif
122          tlb_fill(addr, READ_ACCESS_TYPE, is_user, retaddr);          tlb_fill(addr, READ_ACCESS_TYPE, is_user, retaddr);
123          goto redo;          goto redo;
124      }      }
# Line 213  void REGPARM(2) glue(glue(__st, SUFFIX), Line 226  void REGPARM(2) glue(glue(__st, SUFFIX),
226          } else if (((addr & ~TARGET_PAGE_MASK) + DATA_SIZE - 1) >= TARGET_PAGE_SIZE) {          } else if (((addr & ~TARGET_PAGE_MASK) + DATA_SIZE - 1) >= TARGET_PAGE_SIZE) {
227          do_unaligned_access:          do_unaligned_access:
228              retaddr = GETPC();              retaddr = GETPC();
229    #ifdef ALIGNED_ONLY
230                do_unaligned_access(addr, 1, is_user, retaddr);
231    #endif
232              glue(glue(slow_st, SUFFIX), MMUSUFFIX)(addr, val,              glue(glue(slow_st, SUFFIX), MMUSUFFIX)(addr, val,
233                                                     is_user, retaddr);                                                     is_user, retaddr);
234          } else {          } else {
235              /* aligned/unaligned access in the same page */              /* aligned/unaligned access in the same page */
236    #ifdef ALIGNED_ONLY
237                if ((addr & (DATA_SIZE - 1)) != 0) {
238                    retaddr = GETPC();
239                    do_unaligned_access(addr, 1, is_user, retaddr);
240                }
241    #endif
242              glue(glue(st, SUFFIX), _raw)((uint8_t *)(long)physaddr, val);              glue(glue(st, SUFFIX), _raw)((uint8_t *)(long)physaddr, val);
243          }          }
244      } else {      } else {
245          /* the page is not in the TLB : fill it */          /* the page is not in the TLB : fill it */
246          retaddr = GETPC();          retaddr = GETPC();
247    #ifdef ALIGNED_ONLY
248            if ((addr & (DATA_SIZE - 1)) != 0)
249                do_unaligned_access(addr, 1, is_user, retaddr);
250    #endif
251          tlb_fill(addr, 1, is_user, retaddr);          tlb_fill(addr, 1, is_user, retaddr);
252          goto redo;          goto redo;
253      }      }

Legend:
Removed from v.1.14  
changed lines
  Added in v.1.15

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26