From 3647f612131032e37bced79414bb19ca9682adf6 Mon Sep 17 00:00:00 2001 From: Ville Linde Date: Mon, 17 Jul 2006 13:17:50 +0000 Subject: [PATCH] --- ppc_drc/ppc_drc.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/ppc_drc/ppc_drc.c b/ppc_drc/ppc_drc.c index 988976c..a3d2449 100644 --- a/ppc_drc/ppc_drc.c +++ b/ppc_drc/ppc_drc.c @@ -533,6 +533,9 @@ INLINE void ppc_set_spr(int spr, UINT32 value) ppc_stolen_cycles += ppc_icount; ppc_icount = 0; } + + DEC = value; + return; } write_decrementer(value); return; @@ -632,10 +635,13 @@ INLINE void ppc_set_msr(UINT32 value) if( value & (MSR_ILE | MSR_LE) ) error("ppc: set_msr: little_endian mode not supported !"); - if (ppc.interrupt_pending != 0) + if (value & MSR_EE) { - ppc_stolen_cycles = ppc_icount; - ppc_icount = 0; + if (ppc.interrupt_pending != 0) + { + ppc_stolen_cycles = ppc_icount; + ppc_icount = 0; + } } MSR = value; @@ -950,7 +956,7 @@ void ppc_init(const PPC_CONFIG *config) default: break; } - ppc_dec_divider = (int)(multiplier * 2); + ppc_dec_divider = (int)(multiplier * 4); if (pll_config == -1) {