diff options
| author | Jeff Garzik <jeff@garzik.org> | 2006-04-20 18:36:05 -0400 | 
|---|---|---|
| committer | Jeff Garzik <jeff@garzik.org> | 2006-04-20 18:36:05 -0400 | 
| commit | 857c68f733eea07f11a061caea43a38fed61adb7 (patch) | |
| tree | 4567a9e91f717b22143ac1ccb0fb5323ac15afd3 /arch/mips/lasat/interrupt.c | |
| parent | 4741c336d27dec3ea68a35659abb8dc82b142388 (diff) | |
| parent | 402a26f0c040077ed6f941eefac5a6971f0d5f40 (diff) | |
Merge branch 'master'
Diffstat (limited to 'arch/mips/lasat/interrupt.c')
| -rw-r--r-- | arch/mips/lasat/interrupt.c | 14 | 
1 files changed, 8 insertions, 6 deletions
diff --git a/arch/mips/lasat/interrupt.c b/arch/mips/lasat/interrupt.c index 852a41901a5e..2d3472b21ebb 100644 --- a/arch/mips/lasat/interrupt.c +++ b/arch/mips/lasat/interrupt.c  | |||
| @@ -27,14 +27,13 @@ | |||
| 27 | #include <asm/bootinfo.h> | 27 | #include <asm/bootinfo.h> | 
| 28 | #include <asm/irq.h> | 28 | #include <asm/irq.h> | 
| 29 | #include <asm/lasat/lasatint.h> | 29 | #include <asm/lasat/lasatint.h> | 
| 30 | #include <asm/time.h> | ||
| 30 | #include <asm/gdb-stub.h> | 31 | #include <asm/gdb-stub.h> | 
| 31 | 32 | ||
| 32 | static volatile int *lasat_int_status = NULL; | 33 | static volatile int *lasat_int_status = NULL; | 
| 33 | static volatile int *lasat_int_mask = NULL; | 34 | static volatile int *lasat_int_mask = NULL; | 
| 34 | static volatile int lasat_int_mask_shift; | 35 | static volatile int lasat_int_mask_shift; | 
| 35 | 36 | ||
| 36 | extern asmlinkage void lasatIRQ(void); | ||
| 37 | |||
| 38 | void disable_lasat_irq(unsigned int irq_nr) | 37 | void disable_lasat_irq(unsigned int irq_nr) | 
| 39 | { | 38 | { | 
| 40 | unsigned long flags; | 39 | unsigned long flags; | 
| @@ -109,11 +108,17 @@ static unsigned long get_int_status_200(void) | |||
| 109 | return int_status; | 108 | return int_status; | 
| 110 | } | 109 | } | 
| 111 | 110 | ||
| 112 | void lasat_hw0_irqdispatch(struct pt_regs *regs) | 111 | asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | 
| 113 | { | 112 | { | 
| 114 | unsigned long int_status; | 113 | unsigned long int_status; | 
| 114 | unsigned int cause = read_c0_cause(); | ||
| 115 | int irq; | 115 | int irq; | 
| 116 | 116 | ||
| 117 | if (cause & CAUSEF_IP7) { /* R4000 count / compare IRQ */ | ||
| 118 | ll_timer_interrupt(7, regs); | ||
| 119 | return; | ||
| 120 | } | ||
| 121 | |||
| 117 | int_status = get_int_status(); | 122 | int_status = get_int_status(); | 
| 118 | 123 | ||
| 119 | /* if int_status == 0, then the interrupt has already been cleared */ | 124 | /* if int_status == 0, then the interrupt has already been cleared */ | 
| @@ -147,9 +152,6 @@ void __init arch_init_irq(void) | |||
| 147 | panic("arch_init_irq: mips_machtype incorrect"); | 152 | panic("arch_init_irq: mips_machtype incorrect"); | 
| 148 | } | 153 | } | 
| 149 | 154 | ||
| 150 | /* Now safe to set the exception vector. */ | ||
| 151 | set_except_vector(0, lasatIRQ); | ||
| 152 | |||
| 153 | for (i = 0; i <= LASATINT_END; i++) { | 155 | for (i = 0; i <= LASATINT_END; i++) { | 
| 154 | irq_desc[i].status = IRQ_DISABLED; | 156 | irq_desc[i].status = IRQ_DISABLED; | 
| 155 | irq_desc[i].action = 0; | 157 | irq_desc[i].action = 0; | 
