Revision 2f462816 target-ppc/helper_regs.h
b/target-ppc/helper_regs.h | ||
---|---|---|
82 | 82 |
|
83 | 83 |
static always_inline int hreg_store_msr (CPUPPCState *env, target_ulong value) |
84 | 84 |
{ |
85 |
int enter_pm, excp;
|
|
85 |
int excp; |
|
86 | 86 |
|
87 | 87 |
excp = 0; |
88 | 88 |
value &= env->msr_mask; |
... | ... | |
106 | 106 |
#endif |
107 | 107 |
env->msr = value; |
108 | 108 |
hreg_compute_hflags(env); |
109 |
enter_pm = 0; |
|
110 | 109 |
#if !defined (CONFIG_USER_ONLY) |
111 | 110 |
if (unlikely(msr_pow == 1)) { |
112 |
switch (env->excp_model) { |
|
113 |
case POWERPC_EXCP_603: |
|
114 |
case POWERPC_EXCP_603E: |
|
115 |
case POWERPC_EXCP_G2: |
|
116 |
/* Don't handle SLEEP mode: we should disable all clocks... |
|
117 |
* No dynamic power-management. |
|
118 |
*/ |
|
119 |
if ((env->spr[SPR_HID0] & 0x00C00000) != 0) |
|
120 |
enter_pm = 1; |
|
121 |
break; |
|
122 |
case POWERPC_EXCP_604: |
|
123 |
enter_pm = 1; |
|
124 |
break; |
|
125 |
case POWERPC_EXCP_7x0: |
|
126 |
if ((env->spr[SPR_HID0] & 0x00E00000) != 0) |
|
127 |
enter_pm = 1; |
|
128 |
break; |
|
129 |
default: |
|
130 |
break; |
|
131 |
} |
|
132 |
if (enter_pm) { |
|
111 |
if ((*env->check_pow)(env)) { |
|
133 | 112 |
env->halted = 1; |
134 | 113 |
excp = EXCP_HALTED; |
135 | 114 |
} |
Also available in: Unified diff