Index: firmware/system.c
===================================================================
RCS file: /cvsroot/rockbox/firmware/system.c,v
retrieving revision 1.120
diff -u -r1.120 system.c
--- firmware/system.c	20 Sep 2006 23:21:58 -0000	1.120
+++ firmware/system.c	30 Sep 2006 11:24:58 -0000
@@ -1235,6 +1235,14 @@
 {
     unsigned long postmult;
 
+#if defined(IPOD_COLOR) || defined(IPOD_4G) || defined(IPOD_MINI) || defined(IRIVER_H10) || defined(IRIVER_H10_5GB)
+    
+    unsigned long intslo,intshi;
+    intslo = inl(0x60004020);
+    intshi = inl(0x60004120);
+
+#endif
+
     if (frequency == CPUFREQ_NORMAL)
         postmult = CPUFREQ_NORMAL_MULT;
     else if (frequency == CPUFREQ_MAX)
@@ -1259,18 +1267,8 @@
     outl((inl(0x60006020) & 0x0fffff0f) | 0x20000070, 0x60006020);
 
 #if defined(IPOD_COLOR) || defined(IPOD_4G) || defined(IPOD_MINI) || defined(IRIVER_H10) || defined(IRIVER_H10_5GB)
-    /* We don't know why the timer interrupt gets disabled on the PP5020
-       based ipods, but without the following line, the 4Gs will freeze
-       when CPU frequency changing is enabled.
-
-       Note also that a simple "CPU_INT_EN = TIMER1_MASK;" (as used
-       elsewhere to enable interrupts) doesn't work, we need "|=".
-
-       It's not needed on the PP5021 and PP5022 ipods.
-    */
-
-    /* unmask interrupt source */
-    CPU_INT_EN |= TIMER1_MASK;
+    CPU_INT_EN=intslo;
+    CPU_HI_INT_EN=intshi;
 #endif
 }
 #elif !defined(BOOTLOADER)
