* Patch by Gleb Natapov, 19 Sep 2003:
  Move most of the timer interrupt related PPC code to ppc_lib/interrupts.c

* Patch by Anders Larsen, 17 Sep 2003:
  Bring ARM memory layout in sync with the documentation:
  stack and malloc-heap are now located _below_ the U-Boot code
diff --git a/cpu/74xx_7xx/interrupts.c b/cpu/74xx_7xx/interrupts.c
index 2e2e456..f0ea485 100644
--- a/cpu/74xx_7xx/interrupts.c
+++ b/cpu/74xx_7xx/interrupts.c
@@ -32,62 +32,7 @@
 #include <commproc.h>
 #include <command.h>
 
-/****************************************************************************/
-
-unsigned decrementer_count;	     /* count value for 1e6/HZ microseconds */
-
-/****************************************************************************/
-
-static __inline__ unsigned long
-get_msr(void)
-{
-	unsigned long msr;
-
-	asm volatile("mfmsr %0" : "=r" (msr) :);
-	return msr;
-}
-
-static __inline__ void
-set_msr(unsigned long msr)
-{
-	asm volatile("mtmsr %0" : : "r" (msr));
-}
-
-static __inline__ unsigned long
-get_dec(void)
-{
-	unsigned long val;
-
-	asm volatile("mfdec %0" : "=r" (val) :);
-	return val;
-}
-
-
-static __inline__ void
-set_dec(unsigned long val)
-{
-	asm volatile("mtdec %0" : : "r" (val));
-}
-
-
-void
-enable_interrupts(void)
-{
-	set_msr (get_msr() | MSR_EE);
-}
-
-/* returns flag if MSR_EE was set before */
-int
-disable_interrupts(void)
-{
-	ulong msr = get_msr();
-	set_msr (msr & ~MSR_EE);
-	return ((msr & MSR_EE) != 0);
-}
-
-/****************************************************************************/
-
-int interrupt_init(void)
+int interrupt_init_cpu (unsigned *decrementer_count)
 {
 #if defined(DEBUG) && !defined(CONFIG_AMIGAONEG3SE)
 	printf("interrupt_init: GT main cause reg: %08x:%08x\n",
@@ -103,22 +48,8 @@
 	       GTREGREAD(ETHERNET2_INTERRUPT_MASK_REGISTER));
 	puts("interrupt_init: setting decrementer_count\n");
 #endif
-	decrementer_count = get_tbclk() / CFG_HZ;
+	*decrementer_count = get_tbclk() / CFG_HZ;
 
-#ifdef DEBUG
-	puts("interrupt_init: setting actual decremter\n");
-#endif
-	set_dec (get_tbclk() / CFG_HZ);
-
-#ifdef DEBUG
-	printf("interrupt_init: enabling interrupts (msr = %08lx)\n",
-		get_msr());
-#endif
-	set_msr (get_msr() | MSR_EE);
-
-#ifdef DEBUG
-	printf("interrupt_init: done. (msr = %08lx)\n", get_msr());
-#endif
 	return (0);
 }
 
@@ -141,40 +72,10 @@
  * Trivial implementation - no need to be really accurate.
  */
 void
-timer_interrupt(struct pt_regs *regs)
+timer_interrupt_cpu (struct pt_regs *regs)
 {
-	set_dec(decrementer_count);
-	timestamp++;
-
-#if defined(CONFIG_WATCHDOG)
-	if ((timestamp % (CFG_HZ / 2)) == 0) {
-#if defined(CONFIG_PCIPPC2)
-		extern void pcippc2_wdt_reset (void);
-
-		pcippc2_wdt_reset();
-#endif
-	}
-#endif /* CONFIG_WATCHDOG */
-}
-
-/****************************************************************************/
-
-void
-reset_timer(void)
-{
-	timestamp = 0;
-}
-
-ulong
-get_timer(ulong base)
-{
-	return (timestamp - base);
-}
-
-void
-set_timer(ulong t)
-{
-	timestamp = t;
+	/* nothing to do here */
+	return;
 }
 
 /****************************************************************************/