diff options
Diffstat (limited to 'cpu/74xx_7xx/interrupts.c')
| -rw-r--r-- | cpu/74xx_7xx/interrupts.c | 109 | 
1 files changed, 5 insertions, 104 deletions
| diff --git a/cpu/74xx_7xx/interrupts.c b/cpu/74xx_7xx/interrupts.c index 2e2e45615..f0ea48526 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 @@ int interrupt_init(void)  	       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 @@ volatile ulong timestamp = 0;   * Trivial implementation - no need to be really accurate.   */  void -timer_interrupt(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) +timer_interrupt_cpu (struct pt_regs *regs)  { -	timestamp = t; +	/* nothing to do here */ +	return;  }  /****************************************************************************/ |