/[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.10 by bellard, Sun Oct 3 15:04:28 2004 UTC revision 1.11 by bellard, Mon Jan 3 23:35:10 2005 UTC
# Line 45  Line 45 
45  #define READ_ACCESS_TYPE 0  #define READ_ACCESS_TYPE 0
46  #endif  #endif
47    
48  static DATA_TYPE glue(glue(slow_ld, SUFFIX), MMUSUFFIX)(unsigned long addr,  static DATA_TYPE glue(glue(slow_ld, SUFFIX), MMUSUFFIX)(target_ulong addr,
49                                                          int is_user,                                                          int is_user,
50                                                          void *retaddr);                                                          void *retaddr);
51  static inline DATA_TYPE glue(io_read, SUFFIX)(unsigned long physaddr,  static inline DATA_TYPE glue(io_read, SUFFIX)(unsigned long physaddr,
52                                                unsigned long tlb_addr)                                                target_ulong tlb_addr)
53  {  {
54      DATA_TYPE res;      DATA_TYPE res;
55      int index;      int index;
# Line 70  static inline DATA_TYPE glue(io_read, SU Line 70  static inline DATA_TYPE glue(io_read, SU
70  }  }
71    
72  /* handle all cases except unaligned access which span two pages */  /* handle all cases except unaligned access which span two pages */
73  DATA_TYPE REGPARM(1) glue(glue(__ld, SUFFIX), MMUSUFFIX)(unsigned long addr,  DATA_TYPE REGPARM(1) glue(glue(__ld, SUFFIX), MMUSUFFIX)(target_ulong addr,
74                                                           int is_user)                                                           int is_user)
75  {  {
76      DATA_TYPE res;      DATA_TYPE res;
77      int index;      int index;
78      unsigned long physaddr, tlb_addr;      target_ulong tlb_addr;
79        unsigned long physaddr;
80      void *retaddr;      void *retaddr;
81            
82      /* test if there is match for unaligned or IO access */      /* test if there is match for unaligned or IO access */
# Line 110  DATA_TYPE REGPARM(1) glue(glue(__ld, SUF Line 111  DATA_TYPE REGPARM(1) glue(glue(__ld, SUF
111  }  }
112    
113  /* handle all unaligned cases */  /* handle all unaligned cases */
114  static DATA_TYPE glue(glue(slow_ld, SUFFIX), MMUSUFFIX)(unsigned long addr,  static DATA_TYPE glue(glue(slow_ld, SUFFIX), MMUSUFFIX)(target_ulong addr,
115                                                          int is_user,                                                          int is_user,
116                                                          void *retaddr)                                                          void *retaddr)
117  {  {
118      DATA_TYPE res, res1, res2;      DATA_TYPE res, res1, res2;
119      int index, shift;      int index, shift;
120      unsigned long physaddr, tlb_addr, addr1, addr2;      unsigned long physaddr;
121        target_ulong tlb_addr, addr1, addr2;
122    
123      index = (addr >> TARGET_PAGE_BITS) & (CPU_TLB_SIZE - 1);      index = (addr >> TARGET_PAGE_BITS) & (CPU_TLB_SIZE - 1);
124   redo:   redo:
# Line 158  static DATA_TYPE glue(glue(slow_ld, SUFF Line 160  static DATA_TYPE glue(glue(slow_ld, SUFF
160    
161  #ifndef SOFTMMU_CODE_ACCESS  #ifndef SOFTMMU_CODE_ACCESS
162    
163  static void glue(glue(slow_st, SUFFIX), MMUSUFFIX)(unsigned long addr,  static void glue(glue(slow_st, SUFFIX), MMUSUFFIX)(target_ulong addr,
164                                                     DATA_TYPE val,                                                     DATA_TYPE val,
165                                                     int is_user,                                                     int is_user,
166                                                     void *retaddr);                                                     void *retaddr);
167    
168  static inline void glue(io_write, SUFFIX)(unsigned long physaddr,  static inline void glue(io_write, SUFFIX)(unsigned long physaddr,
169                                            DATA_TYPE val,                                            DATA_TYPE val,
170                                            unsigned long tlb_addr,                                            target_ulong tlb_addr,
171                                            void *retaddr)                                            void *retaddr)
172  {  {
173      int index;      int index;
# Line 186  static inline void glue(io_write, SUFFIX Line 188  static inline void glue(io_write, SUFFIX
188  #endif /* SHIFT > 2 */  #endif /* SHIFT > 2 */
189  }  }
190    
191  void REGPARM(2) glue(glue(__st, SUFFIX), MMUSUFFIX)(unsigned long addr,  void REGPARM(2) glue(glue(__st, SUFFIX), MMUSUFFIX)(target_ulong addr,
192                                                      DATA_TYPE val,                                                      DATA_TYPE val,
193                                                      int is_user)                                                      int is_user)
194  {  {
195      unsigned long physaddr, tlb_addr;      unsigned long physaddr;
196        target_ulong tlb_addr;
197      void *retaddr;      void *retaddr;
198      int index;      int index;
199            
# Line 223  void REGPARM(2) glue(glue(__st, SUFFIX), Line 226  void REGPARM(2) glue(glue(__st, SUFFIX),
226  }  }
227    
228  /* handles all unaligned cases */  /* handles all unaligned cases */
229  static void glue(glue(slow_st, SUFFIX), MMUSUFFIX)(unsigned long addr,  static void glue(glue(slow_st, SUFFIX), MMUSUFFIX)(target_ulong addr,
230                                                     DATA_TYPE val,                                                     DATA_TYPE val,
231                                                     int is_user,                                                     int is_user,
232                                                     void *retaddr)                                                     void *retaddr)
233  {  {
234      unsigned long physaddr, tlb_addr;      unsigned long physaddr;
235        target_ulong tlb_addr;
236      int index, i;      int index, i;
237    
238      index = (addr >> TARGET_PAGE_BITS) & (CPU_TLB_SIZE - 1);      index = (addr >> TARGET_PAGE_BITS) & (CPU_TLB_SIZE - 1);

Legend:
Removed from v.1.10  
changed lines
  Added in v.1.11

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