Revision be147d08 target-ppc/op_helper.c
b/target-ppc/op_helper.c | ||
---|---|---|
1002 | 1002 |
env->interrupt_request |= CPU_INTERRUPT_EXITTB; |
1003 | 1003 |
} |
1004 | 1004 |
#endif |
1005 |
#if defined(TARGET_PPC64H) |
|
1006 |
void do_hrfid (void) |
|
1007 |
{ |
|
1008 |
if (env->spr[SPR_HSRR1] & (1ULL << MSR_SF)) { |
|
1009 |
env->nip = (uint64_t)(env->spr[SPR_HSRR0] & ~0x00000003); |
|
1010 |
do_store_msr(env, (uint64_t)(env->spr[SPR_HSRR1] & ~0xFFFF0000UL)); |
|
1011 |
} else { |
|
1012 |
env->nip = (uint32_t)(env->spr[SPR_HSRR0] & ~0x00000003); |
|
1013 |
do_store_msr(env, (uint32_t)(env->spr[SPR_HSRR1] & ~0xFFFF0000UL)); |
|
1014 |
} |
|
1015 |
#if defined (DEBUG_OP) |
|
1016 |
cpu_dump_rfi(env->nip, do_load_msr(env)); |
|
1017 |
#endif |
|
1018 |
env->interrupt_request |= CPU_INTERRUPT_EXITTB; |
|
1019 |
} |
|
1020 |
#endif |
|
1005 | 1021 |
#endif |
1006 | 1022 |
|
1007 | 1023 |
void do_tw (int flags) |
Also available in: Unified diff