Revision 50443c98 target-ppc/helper.c

b/target-ppc/helper.c
807 807

  
808 808
void do_store_msr (CPUPPCState *env, target_ulong value)
809 809
{
810
    int enter_pm;
811

  
810 812
    value &= env->msr_mask;
811 813
    if (((value >> MSR_IR) & 1) != msr_ir ||
812 814
        ((value >> MSR_DR) & 1) != msr_dr) {
......
846 848
    msr_ri  = (value >> MSR_RI)  & 1;
847 849
    msr_le  = (value >> MSR_LE)  & 1;
848 850
    do_compute_hflags(env);
849
    if (msr_pow) {
851

  
852
    enter_pm = 0;
853
    switch (PPC_EXCP(env)) {
854
    case PPC_FLAGS_EXCP_7x0:
855
	if (msr_pow == 1 && (env->spr[SPR_HID0] & 0x00E00000) != 0)
856
            enter_pm = 1;
857
        break;
858
    default:
859
        break;
860
    }
861
    if (enter_pm) {
850 862
        /* power save: exit cpu loop */
863
        env->halted = 1;
851 864
        env->exception_index = EXCP_HLT;
852 865
        cpu_loop_exit();
853 866
    }

Also available in: Unified diff