Revision 61c04807 target-ppc/op.c
b/target-ppc/op.c | ||
---|---|---|
122 | 122 |
#define REG 31 |
123 | 123 |
#include "op_template.h" |
124 | 124 |
|
125 |
void OPPROTO op_print_mem_EA (void) |
|
126 |
{ |
|
127 |
do_print_mem_EA(T0); |
|
128 |
RETURN(); |
|
129 |
} |
|
130 |
|
|
131 | 125 |
/* PowerPC state maintenance operations */ |
132 | 126 |
/* set_Rc0 */ |
133 | 127 |
void OPPROTO op_set_Rc0 (void) |
... | ... | |
136 | 130 |
RETURN(); |
137 | 131 |
} |
138 | 132 |
|
139 |
/* Constants load */ |
|
140 |
void OPPROTO op_reset_T0 (void) |
|
141 |
{ |
|
142 |
T0 = 0; |
|
143 |
RETURN(); |
|
144 |
} |
|
145 |
|
|
146 | 133 |
void OPPROTO op_set_T0 (void) |
147 | 134 |
{ |
148 | 135 |
T0 = (uint32_t)PARAM1; |
... | ... | |
203 | 190 |
do_raise_exception_err(PARAM1, PARAM2); |
204 | 191 |
} |
205 | 192 |
|
206 |
void OPPROTO op_update_nip (void) |
|
207 |
{ |
|
208 |
env->nip = (uint32_t)PARAM1; |
|
209 |
RETURN(); |
|
210 |
} |
|
211 |
|
|
212 |
#if defined(TARGET_PPC64) |
|
213 |
void OPPROTO op_update_nip_64 (void) |
|
214 |
{ |
|
215 |
env->nip = ((uint64_t)PARAM1 << 32) | (uint64_t)PARAM2; |
|
216 |
RETURN(); |
|
217 |
} |
|
218 |
#endif |
|
219 |
|
|
220 | 193 |
void OPPROTO op_debug (void) |
221 | 194 |
{ |
222 | 195 |
do_raise_exception(EXCP_DEBUG); |
223 | 196 |
} |
224 | 197 |
|
225 |
/* Load/store special registers */ |
|
226 |
void OPPROTO op_load_cr (void) |
|
227 |
{ |
|
228 |
do_load_cr(); |
|
229 |
RETURN(); |
|
230 |
} |
|
231 |
|
|
232 |
void OPPROTO op_store_cr (void) |
|
233 |
{ |
|
234 |
do_store_cr(PARAM1); |
|
235 |
RETURN(); |
|
236 |
} |
|
237 |
|
|
238 |
void OPPROTO op_load_cro (void) |
|
239 |
{ |
|
240 |
T0 = env->crf[PARAM1]; |
|
241 |
RETURN(); |
|
242 |
} |
|
243 |
|
|
244 |
void OPPROTO op_store_cro (void) |
|
245 |
{ |
|
246 |
env->crf[PARAM1] = T0; |
|
247 |
RETURN(); |
|
248 |
} |
|
249 |
|
|
250 | 198 |
void OPPROTO op_load_xer_cr (void) |
251 | 199 |
{ |
252 | 200 |
T0 = (xer_so << 3) | (xer_ov << 2) | (xer_ca << 1); |
... | ... | |
352 | 300 |
} |
353 | 301 |
#endif |
354 | 302 |
|
355 |
void OPPROTO op_load_msr (void) |
|
356 |
{ |
|
357 |
T0 = env->msr; |
|
358 |
RETURN(); |
|
359 |
} |
|
360 |
|
|
361 |
void OPPROTO op_store_msr (void) |
|
362 |
{ |
|
363 |
do_store_msr(); |
|
364 |
RETURN(); |
|
365 |
} |
|
366 |
|
|
367 |
#if defined (TARGET_PPC64) |
|
368 |
void OPPROTO op_store_msr_32 (void) |
|
369 |
{ |
|
370 |
T0 = (env->msr & ~0xFFFFFFFFULL) | (T0 & 0xFFFFFFFF); |
|
371 |
do_store_msr(); |
|
372 |
RETURN(); |
|
373 |
} |
|
374 |
#endif |
|
375 |
|
|
376 | 303 |
void OPPROTO op_update_riee (void) |
377 | 304 |
{ |
378 | 305 |
/* We don't call do_store_msr here as we won't trigger |
... | ... | |
1377 | 1304 |
RETURN(); |
1378 | 1305 |
} |
1379 | 1306 |
|
1380 |
void OPPROTO op_popcntb (void) |
|
1381 |
{ |
|
1382 |
do_popcntb(); |
|
1383 |
RETURN(); |
|
1384 |
} |
|
1385 |
|
|
1386 |
#if defined(TARGET_PPC64) |
|
1387 |
void OPPROTO op_popcntb_64 (void) |
|
1388 |
{ |
|
1389 |
do_popcntb_64(); |
|
1390 |
RETURN(); |
|
1391 |
} |
|
1392 |
#endif |
|
1393 |
|
|
1394 | 1307 |
/*** Integer logical ***/ |
1395 | 1308 |
/* and */ |
1396 | 1309 |
void OPPROTO op_and (void) |
Also available in: Unified diff