Revision e80e1cc4
b/cpu-exec.c | ||
---|---|---|
262 | 262 |
return EXCP_HALTED; |
263 | 263 |
} |
264 | 264 |
} |
265 |
#elif defined(TARGET_PPC) |
|
266 |
if (env1->msr[MSR_POW]) { |
|
267 |
if (env1->msr[MSR_EE] && |
|
268 |
(env1->interrupt_request & |
|
269 |
(CPU_INTERRUPT_HARD | CPU_INTERRUPT_TIMER))) { |
|
270 |
env1->msr[MSR_POW] = 0; |
|
271 |
} else { |
|
272 |
return EXCP_HALTED; |
|
273 |
} |
|
274 |
} |
|
265 | 275 |
#endif |
266 | 276 |
|
267 | 277 |
cpu_single_env = env1; |
b/monitor.c | ||
---|---|---|
255 | 255 |
term_printf(" pc=0x" TARGET_FMT_lx, env->eip + env->segs[R_CS].base); |
256 | 256 |
if (env->hflags & HF_HALTED_MASK) |
257 | 257 |
term_printf(" (halted)"); |
258 |
#elif defined(TARGET_PPC) |
|
259 |
term_printf(" nip=0x" TARGET_FMT_lx, env->nip); |
|
260 |
if (msr_pow) |
|
261 |
term_printf(" (halted)"); |
|
258 | 262 |
#endif |
259 | 263 |
term_printf("\n"); |
260 | 264 |
} |
b/target-ppc/helper.c | ||
---|---|---|
846 | 846 |
msr_ri = (value >> MSR_RI) & 1; |
847 | 847 |
msr_le = (value >> MSR_LE) & 1; |
848 | 848 |
do_compute_hflags(env); |
849 |
if (msr_pow) { |
|
850 |
/* power save: exit cpu loop */ |
|
851 |
env->exception_index = EXCP_HLT; |
|
852 |
cpu_loop_exit(); |
|
853 |
} |
|
849 | 854 |
} |
850 | 855 |
|
851 | 856 |
float64 do_load_fpscr (CPUPPCState *env) |
b/target-ppc/translate.c | ||
---|---|---|
2097 | 2097 |
RET_PRIVREG(ctx); |
2098 | 2098 |
return; |
2099 | 2099 |
} |
2100 |
gen_op_update_nip((ctx)->nip); |
|
2100 | 2101 |
gen_op_load_gpr_T0(rS(ctx->opcode)); |
2101 | 2102 |
gen_op_store_msr(); |
2102 | 2103 |
/* Must stop the translation as machine state (may have) changed */ |
2103 |
RET_STOP(ctx);
|
|
2104 |
RET_CHG_FLOW(ctx);
|
|
2104 | 2105 |
#endif |
2105 | 2106 |
} |
2106 | 2107 |
|
Also available in: Unified diff