/[qemu]/qemu/target-ppc/op_mem.h
ViewVC logotype

Diff of /qemu/target-ppc/op_mem.h

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

revision 1.5 by bellard, Fri May 21 12:59:31 2004 UTC revision 1.6 by bellard, Mon Jan 3 23:42:39 2005 UTC
# Line 2  Line 2 
2  void glue(do_lsw, MEMSUFFIX) (int dst);  void glue(do_lsw, MEMSUFFIX) (int dst);
3  void glue(do_stsw, MEMSUFFIX) (int src);  void glue(do_stsw, MEMSUFFIX) (int src);
4    
5  static inline uint16_t glue(ld16r, MEMSUFFIX) (void *EA)  static inline uint16_t glue(ld16r, MEMSUFFIX) (target_ulong EA)
6  {  {
7      uint16_t tmp = glue(lduw, MEMSUFFIX)(EA);      uint16_t tmp = glue(lduw, MEMSUFFIX)(EA);
8      return ((tmp & 0xFF00) >> 8) | ((tmp & 0x00FF) << 8);      return ((tmp & 0xFF00) >> 8) | ((tmp & 0x00FF) << 8);
9  }  }
10    
11  static inline uint32_t glue(ld32r, MEMSUFFIX) (void *EA)  static inline uint32_t glue(ld32r, MEMSUFFIX) (target_ulong EA)
12  {  {
13      uint32_t tmp = glue(ldl, MEMSUFFIX)(EA);      uint32_t tmp = glue(ldl, MEMSUFFIX)(EA);
14      return ((tmp & 0xFF000000) >> 24) | ((tmp & 0x00FF0000) >> 8) |      return ((tmp & 0xFF000000) >> 24) | ((tmp & 0x00FF0000) >> 8) |
15          ((tmp & 0x0000FF00) << 8) | ((tmp & 0x000000FF) << 24);          ((tmp & 0x0000FF00) << 8) | ((tmp & 0x000000FF) << 24);
16  }  }
17    
18  static inline void glue(st16r, MEMSUFFIX) (void *EA, uint16_t data)  static inline void glue(st16r, MEMSUFFIX) (target_ulong EA, uint16_t data)
19  {  {
20      uint16_t tmp = ((data & 0xFF00) >> 8) | ((data & 0x00FF) << 8);      uint16_t tmp = ((data & 0xFF00) >> 8) | ((data & 0x00FF) << 8);
21      glue(stw, MEMSUFFIX)(EA, tmp);      glue(stw, MEMSUFFIX)(EA, tmp);
22  }  }
23    
24  static inline void glue(st32r, MEMSUFFIX) (void *EA, uint32_t data)  static inline void glue(st32r, MEMSUFFIX) (target_ulong EA, uint32_t data)
25  {  {
26      uint32_t tmp = ((data & 0xFF000000) >> 24) | ((data & 0x00FF0000) >> 8) |      uint32_t tmp = ((data & 0xFF000000) >> 24) | ((data & 0x00FF0000) >> 8) |
27          ((data & 0x0000FF00) << 8) | ((data & 0x000000FF) << 24);          ((data & 0x0000FF00) << 8) | ((data & 0x000000FF) << 24);
# Line 32  static inline void glue(st32r, MEMSUFFIX Line 32  static inline void glue(st32r, MEMSUFFIX
32  #define PPC_LD_OP(name, op)                                                   \  #define PPC_LD_OP(name, op)                                                   \
33  PPC_OP(glue(glue(l, name), MEMSUFFIX))                                        \  PPC_OP(glue(glue(l, name), MEMSUFFIX))                                        \
34  {                                                                             \  {                                                                             \
35      T1 = glue(op, MEMSUFFIX)((void *)T0);                                     \      T1 = glue(op, MEMSUFFIX)(T0);                                             \
36      RETURN();                                                                 \      RETURN();                                                                 \
37  }  }
38    
39  #define PPC_ST_OP(name, op)                                                   \  #define PPC_ST_OP(name, op)                                                   \
40  PPC_OP(glue(glue(st, name), MEMSUFFIX))                                       \  PPC_OP(glue(glue(st, name), MEMSUFFIX))                                       \
41  {                                                                             \  {                                                                             \
42      glue(op, MEMSUFFIX)((void *)T0, T1);                                      \      glue(op, MEMSUFFIX)(T0, T1);                                              \
43      RETURN();                                                                 \      RETURN();                                                                 \
44  }  }
45    
# Line 65  PPC_OP(glue(lmw, MEMSUFFIX)) Line 65  PPC_OP(glue(lmw, MEMSUFFIX))
65      int dst = PARAM(1);      int dst = PARAM(1);
66    
67      for (; dst < 32; dst++, T0 += 4) {      for (; dst < 32; dst++, T0 += 4) {
68          ugpr(dst) = glue(ldl, MEMSUFFIX)((void *)T0);          ugpr(dst) = glue(ldl, MEMSUFFIX)(T0);
69      }      }
70      RETURN();      RETURN();
71  }  }
# Line 75  PPC_OP(glue(stmw, MEMSUFFIX)) Line 75  PPC_OP(glue(stmw, MEMSUFFIX))
75      int src = PARAM(1);      int src = PARAM(1);
76    
77      for (; src < 32; src++, T0 += 4) {      for (; src < 32; src++, T0 += 4) {
78          glue(stl, MEMSUFFIX)((void *)T0, ugpr(src));          glue(stl, MEMSUFFIX)(T0, ugpr(src));
79      }      }
80      RETURN();      RETURN();
81  }  }
# Line 115  PPC_OP(glue(stsw, MEMSUFFIX)) Line 115  PPC_OP(glue(stsw, MEMSUFFIX))
115  #define PPC_STF_OP(name, op)                                                  \  #define PPC_STF_OP(name, op)                                                  \
116  PPC_OP(glue(glue(st, name), MEMSUFFIX))                                       \  PPC_OP(glue(glue(st, name), MEMSUFFIX))                                       \
117  {                                                                             \  {                                                                             \
118      glue(op, MEMSUFFIX)((void *)T0, FT1);                                     \      glue(op, MEMSUFFIX)(T0, FT1);                                     \
119      RETURN();                                                                 \      RETURN();                                                                 \
120  }  }
121    
# Line 126  PPC_STF_OP(fs, stfl); Line 126  PPC_STF_OP(fs, stfl);
126  #define PPC_LDF_OP(name, op)                                                  \  #define PPC_LDF_OP(name, op)                                                  \
127  PPC_OP(glue(glue(l, name), MEMSUFFIX))                                        \  PPC_OP(glue(glue(l, name), MEMSUFFIX))                                        \
128  {                                                                             \  {                                                                             \
129      FT1 = glue(op, MEMSUFFIX)((void *)T0);                                    \      FT1 = glue(op, MEMSUFFIX)(T0);                                    \
130      RETURN();                                                                 \      RETURN();                                                                 \
131  }  }
132    
# Line 139  PPC_OP(glue(lwarx, MEMSUFFIX)) Line 139  PPC_OP(glue(lwarx, MEMSUFFIX))
139      if (T0 & 0x03) {      if (T0 & 0x03) {
140          do_raise_exception(EXCP_ALIGN);          do_raise_exception(EXCP_ALIGN);
141      } else {      } else {
142         T1 = glue(ldl, MEMSUFFIX)((void *)T0);         T1 = glue(ldl, MEMSUFFIX)(T0);
143         regs->reserve = T0;         regs->reserve = T0;
144      }      }
145      RETURN();      RETURN();
# Line 154  PPC_OP(glue(stwcx, MEMSUFFIX)) Line 154  PPC_OP(glue(stwcx, MEMSUFFIX))
154          if (regs->reserve != T0) {          if (regs->reserve != T0) {
155              env->crf[0] = xer_ov;              env->crf[0] = xer_ov;
156          } else {          } else {
157              glue(stl, MEMSUFFIX)((void *)T0, T1);              glue(stl, MEMSUFFIX)(T0, T1);
158              env->crf[0] = xer_ov | 0x02;              env->crf[0] = xer_ov | 0x02;
159          }          }
160      }      }
# Line 164  PPC_OP(glue(stwcx, MEMSUFFIX)) Line 164  PPC_OP(glue(stwcx, MEMSUFFIX))
164    
165  PPC_OP(glue(dcbz, MEMSUFFIX))  PPC_OP(glue(dcbz, MEMSUFFIX))
166  {  {
167      glue(stl, MEMSUFFIX)((void *)(T0 + 0x00), 0);      glue(stl, MEMSUFFIX)(T0 + 0x00, 0);
168      glue(stl, MEMSUFFIX)((void *)(T0 + 0x04), 0);      glue(stl, MEMSUFFIX)(T0 + 0x04, 0);
169      glue(stl, MEMSUFFIX)((void *)(T0 + 0x08), 0);      glue(stl, MEMSUFFIX)(T0 + 0x08, 0);
170      glue(stl, MEMSUFFIX)((void *)(T0 + 0x0C), 0);      glue(stl, MEMSUFFIX)(T0 + 0x0C, 0);
171      glue(stl, MEMSUFFIX)((void *)(T0 + 0x10), 0);      glue(stl, MEMSUFFIX)(T0 + 0x10, 0);
172      glue(stl, MEMSUFFIX)((void *)(T0 + 0x14), 0);      glue(stl, MEMSUFFIX)(T0 + 0x14, 0);
173      glue(stl, MEMSUFFIX)((void *)(T0 + 0x18), 0);      glue(stl, MEMSUFFIX)(T0 + 0x18, 0);
174      glue(stl, MEMSUFFIX)((void *)(T0 + 0x1C), 0);      glue(stl, MEMSUFFIX)(T0 + 0x1C, 0);
175      RETURN();      RETURN();
176  }  }
177    
178  /* External access */  /* External access */
179  PPC_OP(glue(eciwx, MEMSUFFIX))  PPC_OP(glue(eciwx, MEMSUFFIX))
180  {  {
181      T1 = glue(ldl, MEMSUFFIX)((void *)T0);      T1 = glue(ldl, MEMSUFFIX)(T0);
182      RETURN();      RETURN();
183  }  }
184    
185  PPC_OP(glue(ecowx, MEMSUFFIX))  PPC_OP(glue(ecowx, MEMSUFFIX))
186  {  {
187      glue(stl, MEMSUFFIX)((void *)T0, T1);      glue(stl, MEMSUFFIX)(T0, T1);
188      RETURN();      RETURN();
189  }  }
190    

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.6

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