diff options
author | Ralf Baechle <ralf@linux-mips.org> | 2006-10-07 14:44:33 -0400 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2006-10-07 21:38:28 -0400 |
commit | 937a801576f954bd030d7c4a5a94571710d87c0b (patch) | |
tree | 48d3440f765b56cf32a89b4b8193dd033d8227a8 /arch/mips/sgi-ip22 | |
parent | 31aa36658a123263a9a69896e348b9600e050679 (diff) |
[MIPS] Complete fixes after removal of pt_regs argument to int handlers.
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips/sgi-ip22')
-rw-r--r-- | arch/mips/sgi-ip22/ip22-berr.c | 4 | ||||
-rw-r--r-- | arch/mips/sgi-ip22/ip22-eisa.c | 5 | ||||
-rw-r--r-- | arch/mips/sgi-ip22/ip22-int.c | 32 | ||||
-rw-r--r-- | arch/mips/sgi-ip22/ip22-time.c | 6 |
4 files changed, 23 insertions, 24 deletions
diff --git a/arch/mips/sgi-ip22/ip22-berr.c b/arch/mips/sgi-ip22/ip22-berr.c index a28dc7800072..de6a0cc32fea 100644 --- a/arch/mips/sgi-ip22/ip22-berr.c +++ b/arch/mips/sgi-ip22/ip22-berr.c | |||
@@ -12,6 +12,7 @@ | |||
12 | #include <asm/system.h> | 12 | #include <asm/system.h> |
13 | #include <asm/traps.h> | 13 | #include <asm/traps.h> |
14 | #include <asm/branch.h> | 14 | #include <asm/branch.h> |
15 | #include <asm/irq_regs.h> | ||
15 | #include <asm/sgi/mc.h> | 16 | #include <asm/sgi/mc.h> |
16 | #include <asm/sgi/hpc3.h> | 17 | #include <asm/sgi/hpc3.h> |
17 | #include <asm/sgi/ioc.h> | 18 | #include <asm/sgi/ioc.h> |
@@ -85,9 +86,10 @@ static void print_buserr(void) | |||
85 | * and then clear the interrupt when this happens. | 86 | * and then clear the interrupt when this happens. |
86 | */ | 87 | */ |
87 | 88 | ||
88 | void ip22_be_interrupt(int irq, struct pt_regs *regs) | 89 | void ip22_be_interrupt(int irq) |
89 | { | 90 | { |
90 | const int field = 2 * sizeof(unsigned long); | 91 | const int field = 2 * sizeof(unsigned long); |
92 | const struct pt_regs *regs = get_irq_regs(); | ||
91 | 93 | ||
92 | save_and_clear_buserr(); | 94 | save_and_clear_buserr(); |
93 | print_buserr(); | 95 | print_buserr(); |
diff --git a/arch/mips/sgi-ip22/ip22-eisa.c b/arch/mips/sgi-ip22/ip22-eisa.c index ee0514a29922..0d18ed47c47a 100644 --- a/arch/mips/sgi-ip22/ip22-eisa.c +++ b/arch/mips/sgi-ip22/ip22-eisa.c | |||
@@ -70,7 +70,7 @@ static char __init *decode_eisa_sig(unsigned long addr) | |||
70 | return sig_str; | 70 | return sig_str; |
71 | } | 71 | } |
72 | 72 | ||
73 | static irqreturn_t ip22_eisa_intr(int irq, void *dev_id, struct pt_regs *regs) | 73 | static irqreturn_t ip22_eisa_intr(int irq, void *dev_id) |
74 | { | 74 | { |
75 | u8 eisa_irq; | 75 | u8 eisa_irq; |
76 | u8 dma1, dma2; | 76 | u8 dma1, dma2; |
@@ -80,7 +80,7 @@ static irqreturn_t ip22_eisa_intr(int irq, void *dev_id, struct pt_regs *regs) | |||
80 | dma2 = inb(EISA_DMA2_STATUS); | 80 | dma2 = inb(EISA_DMA2_STATUS); |
81 | 81 | ||
82 | if (eisa_irq < EISA_MAX_IRQ) { | 82 | if (eisa_irq < EISA_MAX_IRQ) { |
83 | do_IRQ(eisa_irq, regs); | 83 | do_IRQ(eisa_irq); |
84 | return IRQ_HANDLED; | 84 | return IRQ_HANDLED; |
85 | } | 85 | } |
86 | 86 | ||
@@ -89,6 +89,7 @@ static irqreturn_t ip22_eisa_intr(int irq, void *dev_id, struct pt_regs *regs) | |||
89 | 89 | ||
90 | outb(0x20, EISA_INT2_CTRL); | 90 | outb(0x20, EISA_INT2_CTRL); |
91 | outb(0x20, EISA_INT1_CTRL); | 91 | outb(0x20, EISA_INT1_CTRL); |
92 | |||
92 | return IRQ_NONE; | 93 | return IRQ_NONE; |
93 | } | 94 | } |
94 | 95 | ||
diff --git a/arch/mips/sgi-ip22/ip22-int.c b/arch/mips/sgi-ip22/ip22-int.c index f66026e5d64b..af518898eaa1 100644 --- a/arch/mips/sgi-ip22/ip22-int.c +++ b/arch/mips/sgi-ip22/ip22-int.c | |||
@@ -222,7 +222,7 @@ static struct irq_chip ip22_local3_irq_type = { | |||
222 | .end = end_local3_irq, | 222 | .end = end_local3_irq, |
223 | }; | 223 | }; |
224 | 224 | ||
225 | static void indy_local0_irqdispatch(struct pt_regs *regs) | 225 | static void indy_local0_irqdispatch(void) |
226 | { | 226 | { |
227 | u8 mask = sgint->istat0 & sgint->imask0; | 227 | u8 mask = sgint->istat0 & sgint->imask0; |
228 | u8 mask2; | 228 | u8 mask2; |
@@ -236,11 +236,10 @@ static void indy_local0_irqdispatch(struct pt_regs *regs) | |||
236 | 236 | ||
237 | /* if irq == 0, then the interrupt has already been cleared */ | 237 | /* if irq == 0, then the interrupt has already been cleared */ |
238 | if (irq) | 238 | if (irq) |
239 | do_IRQ(irq, regs); | 239 | do_IRQ(irq); |
240 | return; | ||
241 | } | 240 | } |
242 | 241 | ||
243 | static void indy_local1_irqdispatch(struct pt_regs *regs) | 242 | static void indy_local1_irqdispatch(void) |
244 | { | 243 | { |
245 | u8 mask = sgint->istat1 & sgint->imask1; | 244 | u8 mask = sgint->istat1 & sgint->imask1; |
246 | u8 mask2; | 245 | u8 mask2; |
@@ -254,19 +253,18 @@ static void indy_local1_irqdispatch(struct pt_regs *regs) | |||
254 | 253 | ||
255 | /* if irq == 0, then the interrupt has already been cleared */ | 254 | /* if irq == 0, then the interrupt has already been cleared */ |
256 | if (irq) | 255 | if (irq) |
257 | do_IRQ(irq, regs); | 256 | do_IRQ(irq); |
258 | return; | ||
259 | } | 257 | } |
260 | 258 | ||
261 | extern void ip22_be_interrupt(int irq, struct pt_regs *regs); | 259 | extern void ip22_be_interrupt(int irq); |
262 | 260 | ||
263 | static void indy_buserror_irq(struct pt_regs *regs) | 261 | static void indy_buserror_irq(void) |
264 | { | 262 | { |
265 | int irq = SGI_BUSERR_IRQ; | 263 | int irq = SGI_BUSERR_IRQ; |
266 | 264 | ||
267 | irq_enter(); | 265 | irq_enter(); |
268 | kstat_this_cpu.irqs[irq]++; | 266 | kstat_this_cpu.irqs[irq]++; |
269 | ip22_be_interrupt(irq, regs); | 267 | ip22_be_interrupt(irq); |
270 | irq_exit(); | 268 | irq_exit(); |
271 | } | 269 | } |
272 | 270 | ||
@@ -305,8 +303,8 @@ static struct irqaction map1_cascade = { | |||
305 | #define SGI_INTERRUPTS SGINT_LOCAL3 | 303 | #define SGI_INTERRUPTS SGINT_LOCAL3 |
306 | #endif | 304 | #endif |
307 | 305 | ||
308 | extern void indy_r4k_timer_interrupt(struct pt_regs *regs); | 306 | extern void indy_r4k_timer_interrupt(void); |
309 | extern void indy_8254timer_irq(struct pt_regs *regs); | 307 | extern void indy_8254timer_irq(void); |
310 | 308 | ||
311 | /* | 309 | /* |
312 | * IRQs on the INDY look basically (barring software IRQs which we don't use | 310 | * IRQs on the INDY look basically (barring software IRQs which we don't use |
@@ -336,7 +334,7 @@ extern void indy_8254timer_irq(struct pt_regs *regs); | |||
336 | * another exception, big deal. | 334 | * another exception, big deal. |
337 | */ | 335 | */ |
338 | 336 | ||
339 | asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | 337 | asmlinkage void plat_irq_dispatch(void) |
340 | { | 338 | { |
341 | unsigned int pending = read_c0_cause(); | 339 | unsigned int pending = read_c0_cause(); |
342 | 340 | ||
@@ -344,15 +342,15 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | |||
344 | * First we check for r4k counter/timer IRQ. | 342 | * First we check for r4k counter/timer IRQ. |
345 | */ | 343 | */ |
346 | if (pending & CAUSEF_IP7) | 344 | if (pending & CAUSEF_IP7) |
347 | indy_r4k_timer_interrupt(regs); | 345 | indy_r4k_timer_interrupt(); |
348 | else if (pending & CAUSEF_IP2) | 346 | else if (pending & CAUSEF_IP2) |
349 | indy_local0_irqdispatch(regs); | 347 | indy_local0_irqdispatch(); |
350 | else if (pending & CAUSEF_IP3) | 348 | else if (pending & CAUSEF_IP3) |
351 | indy_local1_irqdispatch(regs); | 349 | indy_local1_irqdispatch(); |
352 | else if (pending & CAUSEF_IP6) | 350 | else if (pending & CAUSEF_IP6) |
353 | indy_buserror_irq(regs); | 351 | indy_buserror_irq(); |
354 | else if (pending & (CAUSEF_IP4 | CAUSEF_IP5)) | 352 | else if (pending & (CAUSEF_IP4 | CAUSEF_IP5)) |
355 | indy_8254timer_irq(regs); | 353 | indy_8254timer_irq(); |
356 | } | 354 | } |
357 | 355 | ||
358 | extern void mips_cpu_irq_init(unsigned int irq_base); | 356 | extern void mips_cpu_irq_init(unsigned int irq_base); |
diff --git a/arch/mips/sgi-ip22/ip22-time.c b/arch/mips/sgi-ip22/ip22-time.c index 3462b0d98def..205554734099 100644 --- a/arch/mips/sgi-ip22/ip22-time.c +++ b/arch/mips/sgi-ip22/ip22-time.c | |||
@@ -175,7 +175,7 @@ static __init void indy_time_init(void) | |||
175 | } | 175 | } |
176 | 176 | ||
177 | /* Generic SGI handler for (spurious) 8254 interrupts */ | 177 | /* Generic SGI handler for (spurious) 8254 interrupts */ |
178 | void indy_8254timer_irq(struct pt_regs *regs) | 178 | void indy_8254timer_irq(void) |
179 | { | 179 | { |
180 | int irq = SGI_8254_0_IRQ; | 180 | int irq = SGI_8254_0_IRQ; |
181 | ULONG cnt; | 181 | ULONG cnt; |
@@ -189,16 +189,14 @@ void indy_8254timer_irq(struct pt_regs *regs) | |||
189 | irq_exit(); | 189 | irq_exit(); |
190 | } | 190 | } |
191 | 191 | ||
192 | void indy_r4k_timer_interrupt(struct pt_regs *regs) | 192 | void indy_r4k_timer_interrupt(void) |
193 | { | 193 | { |
194 | struct pt_regs *old_regs = set_irq_regs(regs); | ||
195 | int irq = SGI_TIMER_IRQ; | 194 | int irq = SGI_TIMER_IRQ; |
196 | 195 | ||
197 | irq_enter(); | 196 | irq_enter(); |
198 | kstat_this_cpu.irqs[irq]++; | 197 | kstat_this_cpu.irqs[irq]++; |
199 | timer_interrupt(irq, NULL); | 198 | timer_interrupt(irq, NULL); |
200 | irq_exit(); | 199 | irq_exit(); |
201 | set_irq_regs(old_regs); | ||
202 | } | 200 | } |
203 | 201 | ||
204 | void __init plat_timer_setup(struct irqaction *irq) | 202 | void __init plat_timer_setup(struct irqaction *irq) |