Revision 6676f424 target-ppc/op_helper.c
b/target-ppc/op_helper.c | ||
---|---|---|
68 | 68 |
|
69 | 69 |
/*****************************************************************************/ |
70 | 70 |
/* Registers load and stores */ |
71 |
target_ulong do_load_cr (void)
|
|
71 |
void do_load_cr (void)
|
|
72 | 72 |
{ |
73 |
return (env->crf[0] << 28) |
|
|
74 |
(env->crf[1] << 24) |
|
|
75 |
(env->crf[2] << 20) |
|
|
76 |
(env->crf[3] << 16) |
|
|
77 |
(env->crf[4] << 12) |
|
|
78 |
(env->crf[5] << 8) |
|
|
79 |
(env->crf[6] << 4) |
|
|
80 |
(env->crf[7] << 0);
|
|
73 |
T0 = (env->crf[0] << 28) |
|
|
74 |
(env->crf[1] << 24) | |
|
75 |
(env->crf[2] << 20) | |
|
76 |
(env->crf[3] << 16) | |
|
77 |
(env->crf[4] << 12) | |
|
78 |
(env->crf[5] << 8) | |
|
79 |
(env->crf[6] << 4) | |
|
80 |
(env->crf[7] << 0); |
|
81 | 81 |
} |
82 | 82 |
|
83 | 83 |
void do_store_cr (uint32_t mask) |
... | ... | |
429 | 429 |
} |
430 | 430 |
#endif |
431 | 431 |
|
432 |
target_ulong do_popcntb (target_ulong t0)
|
|
432 |
void do_popcntb (void)
|
|
433 | 433 |
{ |
434 | 434 |
uint32_t ret; |
435 | 435 |
int i; |
436 | 436 |
|
437 | 437 |
ret = 0; |
438 | 438 |
for (i = 0; i < 32; i += 8) |
439 |
ret |= ctpop8((t0 >> i) & 0xFF) << i;
|
|
440 |
return ret;
|
|
439 |
ret |= ctpop8((T0 >> i) & 0xFF) << i;
|
|
440 |
T0 = ret;
|
|
441 | 441 |
} |
442 | 442 |
|
443 | 443 |
#if defined(TARGET_PPC64) |
444 |
target_ulong do_popcntb_64 (target_ulong t0)
|
|
444 |
void do_popcntb_64 (void)
|
|
445 | 445 |
{ |
446 | 446 |
uint64_t ret; |
447 | 447 |
int i; |
448 | 448 |
|
449 | 449 |
ret = 0; |
450 | 450 |
for (i = 0; i < 64; i += 8) |
451 |
ret |= ctpop8((t0 >> i) & 0xFF) << i;
|
|
452 |
return ret;
|
|
451 |
ret |= ctpop8((T0 >> i) & 0xFF) << i;
|
|
452 |
T0 = ret;
|
|
453 | 453 |
} |
454 | 454 |
#endif |
455 | 455 |
|
... | ... | |
1404 | 1404 |
#if !defined (CONFIG_USER_ONLY) |
1405 | 1405 |
void cpu_dump_rfi (target_ulong RA, target_ulong msr); |
1406 | 1406 |
|
1407 |
void do_store_msr (target_ulong t0)
|
|
1407 |
void do_store_msr (void)
|
|
1408 | 1408 |
{ |
1409 |
t0 = hreg_store_msr(env, t0, 0);
|
|
1410 |
if (t0 != 0) {
|
|
1409 |
T0 = hreg_store_msr(env, T0, 0);
|
|
1410 |
if (T0 != 0) {
|
|
1411 | 1411 |
env->interrupt_request |= CPU_INTERRUPT_EXITTB; |
1412 |
do_raise_exception(t0);
|
|
1412 |
do_raise_exception(T0);
|
|
1413 | 1413 |
} |
1414 | 1414 |
} |
1415 | 1415 |
|
1416 |
#if defined (TARGET_PPC64) |
|
1417 |
void do_store_msr_32 (target_ulong t0) |
|
1418 |
{ |
|
1419 |
t0 = (env->msr & ~0xFFFFFFFFULL) | (t0 & 0xFFFFFFFF); |
|
1420 |
do_store_msr(t0); |
|
1421 |
} |
|
1422 |
#endif |
|
1423 |
|
|
1424 | 1416 |
static always_inline void __do_rfi (target_ulong nip, target_ulong msr, |
1425 | 1417 |
target_ulong msrm, int keep_msrh) |
1426 | 1418 |
{ |
Also available in: Unified diff