diff options
author | j_mayer <j_mayer@c046a42c-6fe2-441c-8c8c-71466251a162> | 2007-10-25 23:14:50 +0000 |
---|---|---|
committer | j_mayer <j_mayer@c046a42c-6fe2-441c-8c8c-71466251a162> | 2007-10-25 23:14:50 +0000 |
commit | 2f462816ac343a804d51e157dad6b5d91426d3e1 (patch) | |
tree | 1453c7e3d2b44b151f5a81a319a94acf44e6cef4 /target-ppc/helper_regs.h | |
parent | e494ead52114e9d7baa9f33bca0e5b15b577c16b (diff) |
Implement power-management for all defined PowerPC CPUs.
Fix PowerPC 970MP definition.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3440 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'target-ppc/helper_regs.h')
-rw-r--r-- | target-ppc/helper_regs.h | 25 |
1 files changed, 2 insertions, 23 deletions
diff --git a/target-ppc/helper_regs.h b/target-ppc/helper_regs.h index 75a3dddd52..2a5de2ed15 100644 --- a/target-ppc/helper_regs.h +++ b/target-ppc/helper_regs.h @@ -82,7 +82,7 @@ static always_inline void hreg_compute_hflags (CPUPPCState *env) static always_inline int hreg_store_msr (CPUPPCState *env, target_ulong value) { - int enter_pm, excp; + int excp; excp = 0; value &= env->msr_mask; @@ -106,30 +106,9 @@ static always_inline int hreg_store_msr (CPUPPCState *env, target_ulong value) #endif env->msr = value; hreg_compute_hflags(env); - enter_pm = 0; #if !defined (CONFIG_USER_ONLY) if (unlikely(msr_pow == 1)) { - switch (env->excp_model) { - case POWERPC_EXCP_603: - case POWERPC_EXCP_603E: - case POWERPC_EXCP_G2: - /* Don't handle SLEEP mode: we should disable all clocks... - * No dynamic power-management. - */ - if ((env->spr[SPR_HID0] & 0x00C00000) != 0) - enter_pm = 1; - break; - case POWERPC_EXCP_604: - enter_pm = 1; - break; - case POWERPC_EXCP_7x0: - if ((env->spr[SPR_HID0] & 0x00E00000) != 0) - enter_pm = 1; - break; - default: - break; - } - if (enter_pm) { + if ((*env->check_pow)(env)) { env->halted = 1; excp = EXCP_HALTED; } |