aboutsummaryrefslogtreecommitdiffstats
path: root/arch/alpha/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'arch/alpha/kernel')
-rw-r--r--arch/alpha/kernel/core_apecs.c5
-rw-r--r--arch/alpha/kernel/core_cia.c5
-rw-r--r--arch/alpha/kernel/core_lca.c6
-rw-r--r--arch/alpha/kernel/core_mcpcia.c5
-rw-r--r--arch/alpha/kernel/core_polaris.c5
-rw-r--r--arch/alpha/kernel/core_t2.c5
-rw-r--r--arch/alpha/kernel/core_tsunami.c5
-rw-r--r--arch/alpha/kernel/core_wildfire.c5
-rw-r--r--arch/alpha/kernel/err_ev6.c5
-rw-r--r--arch/alpha/kernel/err_ev7.c2
-rw-r--r--arch/alpha/kernel/err_impl.h10
-rw-r--r--arch/alpha/kernel/err_marvel.c4
-rw-r--r--arch/alpha/kernel/err_titan.c14
-rw-r--r--arch/alpha/kernel/irq.c4
-rw-r--r--arch/alpha/kernel/irq_alpha.c22
-rw-r--r--arch/alpha/kernel/irq_i8259.c8
-rw-r--r--arch/alpha/kernel/irq_impl.h10
-rw-r--r--arch/alpha/kernel/irq_pyxis.c6
-rw-r--r--arch/alpha/kernel/irq_srm.c4
-rw-r--r--arch/alpha/kernel/proto.h29
-rw-r--r--arch/alpha/kernel/smp.c6
-rw-r--r--arch/alpha/kernel/sys_alcor.c6
-rw-r--r--arch/alpha/kernel/sys_cabriolet.c16
-rw-r--r--arch/alpha/kernel/sys_dp264.c14
-rw-r--r--arch/alpha/kernel/sys_eb64p.c6
-rw-r--r--arch/alpha/kernel/sys_eiger.c16
-rw-r--r--arch/alpha/kernel/sys_jensen.c8
-rw-r--r--arch/alpha/kernel/sys_marvel.c4
-rw-r--r--arch/alpha/kernel/sys_miata.c4
-rw-r--r--arch/alpha/kernel/sys_mikasa.c11
-rw-r--r--arch/alpha/kernel/sys_nautilus.c7
-rw-r--r--arch/alpha/kernel/sys_noritake.c15
-rw-r--r--arch/alpha/kernel/sys_rawhide.c4
-rw-r--r--arch/alpha/kernel/sys_rx164.c6
-rw-r--r--arch/alpha/kernel/sys_sable.c4
-rw-r--r--arch/alpha/kernel/sys_takara.c16
-rw-r--r--arch/alpha/kernel/sys_titan.c12
-rw-r--r--arch/alpha/kernel/sys_wildfire.c4
-rw-r--r--arch/alpha/kernel/time.c6
39 files changed, 162 insertions, 162 deletions
diff --git a/arch/alpha/kernel/core_apecs.c b/arch/alpha/kernel/core_apecs.c
index a27ba12ba35e..ca46b2c24457 100644
--- a/arch/alpha/kernel/core_apecs.c
+++ b/arch/alpha/kernel/core_apecs.c
@@ -387,8 +387,7 @@ apecs_pci_clr_err(void)
387} 387}
388 388
389void 389void
390apecs_machine_check(unsigned long vector, unsigned long la_ptr, 390apecs_machine_check(unsigned long vector, unsigned long la_ptr)
391 struct pt_regs * regs)
392{ 391{
393 struct el_common *mchk_header; 392 struct el_common *mchk_header;
394 struct el_apecs_procdata *mchk_procdata; 393 struct el_apecs_procdata *mchk_procdata;
@@ -412,7 +411,7 @@ apecs_machine_check(unsigned long vector, unsigned long la_ptr,
412 wrmces(0x7); /* reset machine check pending flag */ 411 wrmces(0x7); /* reset machine check pending flag */
413 mb(); 412 mb();
414 413
415 process_mcheck_info(vector, la_ptr, regs, "APECS", 414 process_mcheck_info(vector, la_ptr, "APECS",
416 (mcheck_expected(0) 415 (mcheck_expected(0)
417 && (mchk_sysdata->epic_dcsr & 0x0c00UL))); 416 && (mchk_sysdata->epic_dcsr & 0x0c00UL)));
418} 417}
diff --git a/arch/alpha/kernel/core_cia.c b/arch/alpha/kernel/core_cia.c
index fd563064363c..1d6ee6c985f9 100644
--- a/arch/alpha/kernel/core_cia.c
+++ b/arch/alpha/kernel/core_cia.c
@@ -1192,8 +1192,7 @@ cia_decode_mchk(unsigned long la_ptr)
1192} 1192}
1193 1193
1194void 1194void
1195cia_machine_check(unsigned long vector, unsigned long la_ptr, 1195cia_machine_check(unsigned long vector, unsigned long la_ptr)
1196 struct pt_regs * regs)
1197{ 1196{
1198 int expected; 1197 int expected;
1199 1198
@@ -1208,5 +1207,5 @@ cia_machine_check(unsigned long vector, unsigned long la_ptr,
1208 expected = mcheck_expected(0); 1207 expected = mcheck_expected(0);
1209 if (!expected && vector == 0x660) 1208 if (!expected && vector == 0x660)
1210 expected = cia_decode_mchk(la_ptr); 1209 expected = cia_decode_mchk(la_ptr);
1211 process_mcheck_info(vector, la_ptr, regs, "CIA", expected); 1210 process_mcheck_info(vector, la_ptr, "CIA", expected);
1212} 1211}
diff --git a/arch/alpha/kernel/core_lca.c b/arch/alpha/kernel/core_lca.c
index 6a5a9145c676..4843f6ec9f3a 100644
--- a/arch/alpha/kernel/core_lca.c
+++ b/arch/alpha/kernel/core_lca.c
@@ -19,6 +19,7 @@
19#include <linux/tty.h> 19#include <linux/tty.h>
20 20
21#include <asm/ptrace.h> 21#include <asm/ptrace.h>
22#include <asm/irq_regs.h>
22#include <asm/smp.h> 23#include <asm/smp.h>
23 24
24#include "proto.h" 25#include "proto.h"
@@ -386,8 +387,7 @@ ioc_error(__u32 stat0, __u32 stat1)
386} 387}
387 388
388void 389void
389lca_machine_check(unsigned long vector, unsigned long la_ptr, 390lca_machine_check(unsigned long vector, unsigned long la_ptr)
390 struct pt_regs *regs)
391{ 391{
392 const char * reason; 392 const char * reason;
393 union el_lca el; 393 union el_lca el;
@@ -397,7 +397,7 @@ lca_machine_check(unsigned long vector, unsigned long la_ptr,
397 wrmces(rdmces()); /* reset machine check pending flag */ 397 wrmces(rdmces()); /* reset machine check pending flag */
398 398
399 printk(KERN_CRIT "LCA machine check: vector=%#lx pc=%#lx code=%#x\n", 399 printk(KERN_CRIT "LCA machine check: vector=%#lx pc=%#lx code=%#x\n",
400 vector, regs->pc, (unsigned int) el.c->code); 400 vector, get_irq_regs()->pc, (unsigned int) el.c->code);
401 401
402 /* 402 /*
403 * The first quadword after the common header always seems to 403 * The first quadword after the common header always seems to
diff --git a/arch/alpha/kernel/core_mcpcia.c b/arch/alpha/kernel/core_mcpcia.c
index 28849c894153..8d019071190a 100644
--- a/arch/alpha/kernel/core_mcpcia.c
+++ b/arch/alpha/kernel/core_mcpcia.c
@@ -572,8 +572,7 @@ mcpcia_print_system_area(unsigned long la_ptr)
572} 572}
573 573
574void 574void
575mcpcia_machine_check(unsigned long vector, unsigned long la_ptr, 575mcpcia_machine_check(unsigned long vector, unsigned long la_ptr)
576 struct pt_regs * regs)
577{ 576{
578 struct el_common *mchk_header; 577 struct el_common *mchk_header;
579 struct el_MCPCIA_uncorrected_frame_mcheck *mchk_logout; 578 struct el_MCPCIA_uncorrected_frame_mcheck *mchk_logout;
@@ -610,7 +609,7 @@ mcpcia_machine_check(unsigned long vector, unsigned long la_ptr,
610 wrmces(0x7); 609 wrmces(0x7);
611 mb(); 610 mb();
612 611
613 process_mcheck_info(vector, la_ptr, regs, "MCPCIA", expected != 0); 612 process_mcheck_info(vector, la_ptr, "MCPCIA", expected != 0);
614 if (!expected && vector != 0x620 && vector != 0x630) { 613 if (!expected && vector != 0x620 && vector != 0x630) {
615 mcpcia_print_uncorrectable(mchk_logout); 614 mcpcia_print_uncorrectable(mchk_logout);
616 mcpcia_print_system_area(la_ptr); 615 mcpcia_print_system_area(la_ptr);
diff --git a/arch/alpha/kernel/core_polaris.c b/arch/alpha/kernel/core_polaris.c
index 277674a500ff..c5a271d37abd 100644
--- a/arch/alpha/kernel/core_polaris.c
+++ b/arch/alpha/kernel/core_polaris.c
@@ -187,8 +187,7 @@ polaris_pci_clr_err(void)
187} 187}
188 188
189void 189void
190polaris_machine_check(unsigned long vector, unsigned long la_ptr, 190polaris_machine_check(unsigned long vector, unsigned long la_ptr)
191 struct pt_regs * regs)
192{ 191{
193 /* Clear the error before any reporting. */ 192 /* Clear the error before any reporting. */
194 mb(); 193 mb();
@@ -198,6 +197,6 @@ polaris_machine_check(unsigned long vector, unsigned long la_ptr,
198 wrmces(0x7); 197 wrmces(0x7);
199 mb(); 198 mb();
200 199
201 process_mcheck_info(vector, la_ptr, regs, "POLARIS", 200 process_mcheck_info(vector, la_ptr, "POLARIS",
202 mcheck_expected(0)); 201 mcheck_expected(0));
203} 202}
diff --git a/arch/alpha/kernel/core_t2.c b/arch/alpha/kernel/core_t2.c
index ecce09e3626a..f5ca5255eb06 100644
--- a/arch/alpha/kernel/core_t2.c
+++ b/arch/alpha/kernel/core_t2.c
@@ -551,8 +551,7 @@ t2_clear_errors(int cpu)
551 * Hence all the taken/expected/any_expected/last_taken stuff... 551 * Hence all the taken/expected/any_expected/last_taken stuff...
552 */ 552 */
553void 553void
554t2_machine_check(unsigned long vector, unsigned long la_ptr, 554t2_machine_check(unsigned long vector, unsigned long la_ptr)
555 struct pt_regs * regs)
556{ 555{
557 int cpu = smp_processor_id(); 556 int cpu = smp_processor_id();
558#ifdef CONFIG_VERBOSE_MCHECK 557#ifdef CONFIG_VERBOSE_MCHECK
@@ -618,5 +617,5 @@ t2_machine_check(unsigned long vector, unsigned long la_ptr,
618 } 617 }
619#endif 618#endif
620 619
621 process_mcheck_info(vector, la_ptr, regs, "T2", mcheck_expected(cpu)); 620 process_mcheck_info(vector, la_ptr, "T2", mcheck_expected(cpu));
622} 621}
diff --git a/arch/alpha/kernel/core_tsunami.c b/arch/alpha/kernel/core_tsunami.c
index 8aa305bd6a2c..ce623c6e55e1 100644
--- a/arch/alpha/kernel/core_tsunami.c
+++ b/arch/alpha/kernel/core_tsunami.c
@@ -443,8 +443,7 @@ tsunami_pci_clr_err(void)
443} 443}
444 444
445void 445void
446tsunami_machine_check(unsigned long vector, unsigned long la_ptr, 446tsunami_machine_check(unsigned long vector, unsigned long la_ptr)
447 struct pt_regs * regs)
448{ 447{
449 /* Clear error before any reporting. */ 448 /* Clear error before any reporting. */
450 mb(); 449 mb();
@@ -454,6 +453,6 @@ tsunami_machine_check(unsigned long vector, unsigned long la_ptr,
454 wrmces(0x7); 453 wrmces(0x7);
455 mb(); 454 mb();
456 455
457 process_mcheck_info(vector, la_ptr, regs, "TSUNAMI", 456 process_mcheck_info(vector, la_ptr, "TSUNAMI",
458 mcheck_expected(smp_processor_id())); 457 mcheck_expected(smp_processor_id()));
459} 458}
diff --git a/arch/alpha/kernel/core_wildfire.c b/arch/alpha/kernel/core_wildfire.c
index 2b767a1bad96..7e072443d7fd 100644
--- a/arch/alpha/kernel/core_wildfire.c
+++ b/arch/alpha/kernel/core_wildfire.c
@@ -322,8 +322,7 @@ wildfire_init_arch(void)
322} 322}
323 323
324void 324void
325wildfire_machine_check(unsigned long vector, unsigned long la_ptr, 325wildfire_machine_check(unsigned long vector, unsigned long la_ptr)
326 struct pt_regs * regs)
327{ 326{
328 mb(); 327 mb();
329 mb(); /* magic */ 328 mb(); /* magic */
@@ -332,7 +331,7 @@ wildfire_machine_check(unsigned long vector, unsigned long la_ptr,
332 wrmces(0x7); 331 wrmces(0x7);
333 mb(); 332 mb();
334 333
335 process_mcheck_info(vector, la_ptr, regs, "WILDFIRE", 334 process_mcheck_info(vector, la_ptr, "WILDFIRE",
336 mcheck_expected(smp_processor_id())); 335 mcheck_expected(smp_processor_id()));
337} 336}
338 337
diff --git a/arch/alpha/kernel/err_ev6.c b/arch/alpha/kernel/err_ev6.c
index 64f59f2fcf5c..69b5f4ea7355 100644
--- a/arch/alpha/kernel/err_ev6.c
+++ b/arch/alpha/kernel/err_ev6.c
@@ -11,6 +11,7 @@
11#include <linux/sched.h> 11#include <linux/sched.h>
12 12
13#include <asm/io.h> 13#include <asm/io.h>
14#include <asm/irq_regs.h>
14#include <asm/hwrpb.h> 15#include <asm/hwrpb.h>
15#include <asm/smp.h> 16#include <asm/smp.h>
16#include <asm/err_common.h> 17#include <asm/err_common.h>
@@ -229,7 +230,7 @@ ev6_process_logout_frame(struct el_common *mchk_header, int print)
229} 230}
230 231
231void 232void
232ev6_machine_check(u64 vector, u64 la_ptr, struct pt_regs *regs) 233ev6_machine_check(u64 vector, u64 la_ptr)
233{ 234{
234 struct el_common *mchk_header = (struct el_common *)la_ptr; 235 struct el_common *mchk_header = (struct el_common *)la_ptr;
235 236
@@ -260,7 +261,7 @@ ev6_machine_check(u64 vector, u64 la_ptr, struct pt_regs *regs)
260 (unsigned int)vector, (int)smp_processor_id()); 261 (unsigned int)vector, (int)smp_processor_id());
261 262
262 ev6_process_logout_frame(mchk_header, 1); 263 ev6_process_logout_frame(mchk_header, 1);
263 dik_show_regs(regs, NULL); 264 dik_show_regs(get_irq_regs(), NULL);
264 265
265 err_print_prefix = saved_err_prefix; 266 err_print_prefix = saved_err_prefix;
266 } 267 }
diff --git a/arch/alpha/kernel/err_ev7.c b/arch/alpha/kernel/err_ev7.c
index fed6b3d1b803..95463ab1cf35 100644
--- a/arch/alpha/kernel/err_ev7.c
+++ b/arch/alpha/kernel/err_ev7.c
@@ -118,7 +118,7 @@ ev7_collect_logout_frame_subpackets(struct el_subpacket *el_ptr,
118} 118}
119 119
120void 120void
121ev7_machine_check(u64 vector, u64 la_ptr, struct pt_regs *regs) 121ev7_machine_check(u64 vector, u64 la_ptr)
122{ 122{
123 struct el_subpacket *el_ptr = (struct el_subpacket *)la_ptr; 123 struct el_subpacket *el_ptr = (struct el_subpacket *)la_ptr;
124 char *saved_err_prefix = err_print_prefix; 124 char *saved_err_prefix = err_print_prefix;
diff --git a/arch/alpha/kernel/err_impl.h b/arch/alpha/kernel/err_impl.h
index 64e9b73809fa..3c12258158e6 100644
--- a/arch/alpha/kernel/err_impl.h
+++ b/arch/alpha/kernel/err_impl.h
@@ -60,26 +60,26 @@ extern struct ev7_lf_subpackets *
60ev7_collect_logout_frame_subpackets(struct el_subpacket *, 60ev7_collect_logout_frame_subpackets(struct el_subpacket *,
61 struct ev7_lf_subpackets *); 61 struct ev7_lf_subpackets *);
62extern void ev7_register_error_handlers(void); 62extern void ev7_register_error_handlers(void);
63extern void ev7_machine_check(u64, u64, struct pt_regs *); 63extern void ev7_machine_check(u64, u64);
64 64
65/* 65/*
66 * err_ev6.c 66 * err_ev6.c
67 */ 67 */
68extern void ev6_register_error_handlers(void); 68extern void ev6_register_error_handlers(void);
69extern int ev6_process_logout_frame(struct el_common *, int); 69extern int ev6_process_logout_frame(struct el_common *, int);
70extern void ev6_machine_check(u64, u64, struct pt_regs *); 70extern void ev6_machine_check(u64, u64);
71 71
72/* 72/*
73 * err_marvel.c 73 * err_marvel.c
74 */ 74 */
75extern void marvel_machine_check(u64, u64, struct pt_regs *); 75extern void marvel_machine_check(u64, u64);
76extern void marvel_register_error_handlers(void); 76extern void marvel_register_error_handlers(void);
77 77
78/* 78/*
79 * err_titan.c 79 * err_titan.c
80 */ 80 */
81extern int titan_process_logout_frame(struct el_common *, int); 81extern int titan_process_logout_frame(struct el_common *, int);
82extern void titan_machine_check(u64, u64, struct pt_regs *); 82extern void titan_machine_check(u64, u64);
83extern void titan_register_error_handlers(void); 83extern void titan_register_error_handlers(void);
84extern int privateer_process_logout_frame(struct el_common *, int); 84extern int privateer_process_logout_frame(struct el_common *, int);
85extern void privateer_machine_check(u64, u64, struct pt_regs *); 85extern void privateer_machine_check(u64, u64);
diff --git a/arch/alpha/kernel/err_marvel.c b/arch/alpha/kernel/err_marvel.c
index 70b38b1d2af3..f2956ac8dccc 100644
--- a/arch/alpha/kernel/err_marvel.c
+++ b/arch/alpha/kernel/err_marvel.c
@@ -1042,7 +1042,7 @@ marvel_process_logout_frame(struct ev7_lf_subpackets *lf_subpackets, int print)
1042} 1042}
1043 1043
1044void 1044void
1045marvel_machine_check(u64 vector, u64 la_ptr, struct pt_regs *regs) 1045marvel_machine_check(u64 vector, u64 la_ptr)
1046{ 1046{
1047 struct el_subpacket *el_ptr = (struct el_subpacket *)la_ptr; 1047 struct el_subpacket *el_ptr = (struct el_subpacket *)la_ptr;
1048 int (*process_frame)(struct ev7_lf_subpackets *, int) = NULL; 1048 int (*process_frame)(struct ev7_lf_subpackets *, int) = NULL;
@@ -1077,7 +1077,7 @@ marvel_machine_check(u64 vector, u64 la_ptr, struct pt_regs *regs)
1077 1077
1078 default: 1078 default:
1079 /* Don't know it - pass it up. */ 1079 /* Don't know it - pass it up. */
1080 ev7_machine_check(vector, la_ptr, regs); 1080 ev7_machine_check(vector, la_ptr);
1081 return; 1081 return;
1082 } 1082 }
1083 1083
diff --git a/arch/alpha/kernel/err_titan.c b/arch/alpha/kernel/err_titan.c
index 7e6720d45f02..febe71c6869f 100644
--- a/arch/alpha/kernel/err_titan.c
+++ b/arch/alpha/kernel/err_titan.c
@@ -379,7 +379,7 @@ titan_process_logout_frame(struct el_common *mchk_header, int print)
379} 379}
380 380
381void 381void
382titan_machine_check(u64 vector, u64 la_ptr, struct pt_regs *regs) 382titan_machine_check(u64 vector, u64 la_ptr)
383{ 383{
384 struct el_common *mchk_header = (struct el_common *)la_ptr; 384 struct el_common *mchk_header = (struct el_common *)la_ptr;
385 struct el_TITAN_sysdata_mcheck *tmchk = 385 struct el_TITAN_sysdata_mcheck *tmchk =
@@ -408,7 +408,7 @@ titan_machine_check(u64 vector, u64 la_ptr, struct pt_regs *regs)
408 * Only handle system errors here 408 * Only handle system errors here
409 */ 409 */
410 if ((vector != SCB_Q_SYSMCHK) && (vector != SCB_Q_SYSERR)) { 410 if ((vector != SCB_Q_SYSMCHK) && (vector != SCB_Q_SYSERR)) {
411 ev6_machine_check(vector, la_ptr, regs); 411 ev6_machine_check(vector, la_ptr);
412 return; 412 return;
413 } 413 }
414 414
@@ -442,7 +442,7 @@ titan_machine_check(u64 vector, u64 la_ptr, struct pt_regs *regs)
442#ifdef CONFIG_VERBOSE_MCHECK 442#ifdef CONFIG_VERBOSE_MCHECK
443 titan_process_logout_frame(mchk_header, alpha_verbose_mcheck); 443 titan_process_logout_frame(mchk_header, alpha_verbose_mcheck);
444 if (alpha_verbose_mcheck) 444 if (alpha_verbose_mcheck)
445 dik_show_regs(regs, NULL); 445 dik_show_regs(get_irq_regs(), NULL);
446#endif /* CONFIG_VERBOSE_MCHECK */ 446#endif /* CONFIG_VERBOSE_MCHECK */
447 447
448 err_print_prefix = saved_err_prefix; 448 err_print_prefix = saved_err_prefix;
@@ -452,7 +452,7 @@ titan_machine_check(u64 vector, u64 la_ptr, struct pt_regs *regs)
452 * machine checks to interrupts 452 * machine checks to interrupts
453 */ 453 */
454 irqmask = tmchk->c_dirx & TITAN_MCHECK_INTERRUPT_MASK; 454 irqmask = tmchk->c_dirx & TITAN_MCHECK_INTERRUPT_MASK;
455 titan_dispatch_irqs(irqmask, regs); 455 titan_dispatch_irqs(irqmask);
456 } 456 }
457 457
458 458
@@ -701,7 +701,7 @@ privateer_process_logout_frame(struct el_common *mchk_header, int print)
701} 701}
702 702
703void 703void
704privateer_machine_check(u64 vector, u64 la_ptr, struct pt_regs *regs) 704privateer_machine_check(u64 vector, u64 la_ptr)
705{ 705{
706 struct el_common *mchk_header = (struct el_common *)la_ptr; 706 struct el_common *mchk_header = (struct el_common *)la_ptr;
707 struct el_TITAN_sysdata_mcheck *tmchk = 707 struct el_TITAN_sysdata_mcheck *tmchk =
@@ -723,7 +723,7 @@ privateer_machine_check(u64 vector, u64 la_ptr, struct pt_regs *regs)
723 * Only handle system events here. 723 * Only handle system events here.
724 */ 724 */
725 if (vector != SCB_Q_SYSEVENT) 725 if (vector != SCB_Q_SYSEVENT)
726 return titan_machine_check(vector, la_ptr, regs); 726 return titan_machine_check(vector, la_ptr);
727 727
728 /* 728 /*
729 * Report the event - System Events should be reported even if no 729 * Report the event - System Events should be reported even if no
@@ -746,7 +746,7 @@ privateer_machine_check(u64 vector, u64 la_ptr, struct pt_regs *regs)
746 /* 746 /*
747 * Dispatch the interrupt(s). 747 * Dispatch the interrupt(s).
748 */ 748 */
749 titan_dispatch_irqs(irqmask, regs); 749 titan_dispatch_irqs(irqmask);
750 750
751 /* 751 /*
752 * Release the logout frame. 752 * Release the logout frame.
diff --git a/arch/alpha/kernel/irq.c b/arch/alpha/kernel/irq.c
index 729c475d2269..facf82a5499a 100644
--- a/arch/alpha/kernel/irq.c
+++ b/arch/alpha/kernel/irq.c
@@ -127,7 +127,7 @@ unlock:
127#define MAX_ILLEGAL_IRQS 16 127#define MAX_ILLEGAL_IRQS 16
128 128
129void 129void
130handle_irq(int irq, struct pt_regs * regs) 130handle_irq(int irq)
131{ 131{
132 /* 132 /*
133 * We ack quickly, we don't want the irq controller 133 * We ack quickly, we don't want the irq controller
@@ -157,6 +157,6 @@ handle_irq(int irq, struct pt_regs * regs)
157 * at IPL 0. 157 * at IPL 0.
158 */ 158 */
159 local_irq_disable(); 159 local_irq_disable();
160 __do_IRQ(irq, regs); 160 __do_IRQ(irq);
161 irq_exit(); 161 irq_exit();
162} 162}
diff --git a/arch/alpha/kernel/irq_alpha.c b/arch/alpha/kernel/irq_alpha.c
index ddf5cf8dcb0b..6dd126b8be85 100644
--- a/arch/alpha/kernel/irq_alpha.c
+++ b/arch/alpha/kernel/irq_alpha.c
@@ -39,6 +39,7 @@ asmlinkage void
39do_entInt(unsigned long type, unsigned long vector, 39do_entInt(unsigned long type, unsigned long vector,
40 unsigned long la_ptr, struct pt_regs *regs) 40 unsigned long la_ptr, struct pt_regs *regs)
41{ 41{
42 struct pt_regs *old_regs;
42 switch (type) { 43 switch (type) {
43 case 0: 44 case 0:
44#ifdef CONFIG_SMP 45#ifdef CONFIG_SMP
@@ -51,6 +52,7 @@ do_entInt(unsigned long type, unsigned long vector,
51#endif 52#endif
52 break; 53 break;
53 case 1: 54 case 1:
55 old_regs = set_irq_regs(regs);
54#ifdef CONFIG_SMP 56#ifdef CONFIG_SMP
55 { 57 {
56 long cpu; 58 long cpu;
@@ -61,18 +63,23 @@ do_entInt(unsigned long type, unsigned long vector,
61 if (cpu != boot_cpuid) { 63 if (cpu != boot_cpuid) {
62 kstat_cpu(cpu).irqs[RTC_IRQ]++; 64 kstat_cpu(cpu).irqs[RTC_IRQ]++;
63 } else { 65 } else {
64 handle_irq(RTC_IRQ, regs); 66 handle_irq(RTC_IRQ);
65 } 67 }
66 } 68 }
67#else 69#else
68 handle_irq(RTC_IRQ, regs); 70 handle_irq(RTC_IRQ);
69#endif 71#endif
72 set_irq_regs(old_regs);
70 return; 73 return;
71 case 2: 74 case 2:
72 alpha_mv.machine_check(vector, la_ptr, regs); 75 old_regs = set_irq_regs(regs);
76 alpha_mv.machine_check(vector, la_ptr);
77 set_irq_regs(old_regs);
73 return; 78 return;
74 case 3: 79 case 3:
75 alpha_mv.device_interrupt(vector, regs); 80 old_regs = set_irq_regs(regs);
81 alpha_mv.device_interrupt(vector);
82 set_irq_regs(old_regs);
76 return; 83 return;
77 case 4: 84 case 4:
78 perf_irq(la_ptr, regs); 85 perf_irq(la_ptr, regs);
@@ -120,8 +127,7 @@ struct mcheck_info __mcheck_info;
120 127
121void 128void
122process_mcheck_info(unsigned long vector, unsigned long la_ptr, 129process_mcheck_info(unsigned long vector, unsigned long la_ptr,
123 struct pt_regs *regs, const char *machine, 130 const char *machine, int expected)
124 int expected)
125{ 131{
126 struct el_common *mchk_header; 132 struct el_common *mchk_header;
127 const char *reason; 133 const char *reason;
@@ -148,7 +154,7 @@ process_mcheck_info(unsigned long vector, unsigned long la_ptr,
148 mchk_header = (struct el_common *)la_ptr; 154 mchk_header = (struct el_common *)la_ptr;
149 155
150 printk(KERN_CRIT "%s machine check: vector=0x%lx pc=0x%lx code=0x%x\n", 156 printk(KERN_CRIT "%s machine check: vector=0x%lx pc=0x%lx code=0x%x\n",
151 machine, vector, regs->pc, mchk_header->code); 157 machine, vector, get_irq_regs()->pc, mchk_header->code);
152 158
153 switch (mchk_header->code) { 159 switch (mchk_header->code) {
154 /* Machine check reasons. Defined according to PALcode sources. */ 160 /* Machine check reasons. Defined according to PALcode sources. */
@@ -189,7 +195,7 @@ process_mcheck_info(unsigned long vector, unsigned long la_ptr,
189 printk(KERN_CRIT "machine check type: %s%s\n", 195 printk(KERN_CRIT "machine check type: %s%s\n",
190 reason, mchk_header->retry ? " (retryable)" : ""); 196 reason, mchk_header->retry ? " (retryable)" : "");
191 197
192 dik_show_regs(regs, NULL); 198 dik_show_regs(get_irq_regs(), NULL);
193 199
194#ifdef CONFIG_VERBOSE_MCHECK 200#ifdef CONFIG_VERBOSE_MCHECK
195 if (alpha_verbose_mcheck > 1) { 201 if (alpha_verbose_mcheck > 1) {
diff --git a/arch/alpha/kernel/irq_i8259.c b/arch/alpha/kernel/irq_i8259.c
index ebbadbc0c36a..9405bee9894e 100644
--- a/arch/alpha/kernel/irq_i8259.c
+++ b/arch/alpha/kernel/irq_i8259.c
@@ -137,7 +137,7 @@ init_i8259a_irqs(void)
137 137
138#if defined(IACK_SC) 138#if defined(IACK_SC)
139void 139void
140isa_device_interrupt(unsigned long vector, struct pt_regs *regs) 140isa_device_interrupt(unsigned long vector)
141{ 141{
142 /* 142 /*
143 * Generate a PCI interrupt acknowledge cycle. The PIC will 143 * Generate a PCI interrupt acknowledge cycle. The PIC will
@@ -147,13 +147,13 @@ isa_device_interrupt(unsigned long vector, struct pt_regs *regs)
147 */ 147 */
148 int j = *(vuip) IACK_SC; 148 int j = *(vuip) IACK_SC;
149 j &= 0xff; 149 j &= 0xff;
150 handle_irq(j, regs); 150 handle_irq(j);
151} 151}
152#endif 152#endif
153 153
154#if defined(CONFIG_ALPHA_GENERIC) || !defined(IACK_SC) 154#if defined(CONFIG_ALPHA_GENERIC) || !defined(IACK_SC)
155void 155void
156isa_no_iack_sc_device_interrupt(unsigned long vector, struct pt_regs *regs) 156isa_no_iack_sc_device_interrupt(unsigned long vector)
157{ 157{
158 unsigned long pic; 158 unsigned long pic;
159 159
@@ -176,7 +176,7 @@ isa_no_iack_sc_device_interrupt(unsigned long vector, struct pt_regs *regs)
176 while (pic) { 176 while (pic) {
177 int j = ffz(~pic); 177 int j = ffz(~pic);
178 pic &= pic - 1; 178 pic &= pic - 1;
179 handle_irq(j, regs); 179 handle_irq(j);
180 } 180 }
181} 181}
182#endif 182#endif
diff --git a/arch/alpha/kernel/irq_impl.h b/arch/alpha/kernel/irq_impl.h
index f201d8ffc0d9..cc9a8a7aa279 100644
--- a/arch/alpha/kernel/irq_impl.h
+++ b/arch/alpha/kernel/irq_impl.h
@@ -15,10 +15,10 @@
15 15
16#define RTC_IRQ 8 16#define RTC_IRQ 8
17 17
18extern void isa_device_interrupt(unsigned long, struct pt_regs *); 18extern void isa_device_interrupt(unsigned long);
19extern void isa_no_iack_sc_device_interrupt(unsigned long, struct pt_regs *); 19extern void isa_no_iack_sc_device_interrupt(unsigned long);
20extern void srm_device_interrupt(unsigned long, struct pt_regs *); 20extern void srm_device_interrupt(unsigned long);
21extern void pyxis_device_interrupt(unsigned long, struct pt_regs *); 21extern void pyxis_device_interrupt(unsigned long);
22 22
23extern struct irqaction timer_irqaction; 23extern struct irqaction timer_irqaction;
24extern struct irqaction isa_cascade_irqaction; 24extern struct irqaction isa_cascade_irqaction;
@@ -39,4 +39,4 @@ extern void i8259a_end_irq(unsigned int);
39extern struct hw_interrupt_type i8259a_irq_type; 39extern struct hw_interrupt_type i8259a_irq_type;
40extern void init_i8259a_irqs(void); 40extern void init_i8259a_irqs(void);
41 41
42extern void handle_irq(int irq, struct pt_regs * regs); 42extern void handle_irq(int irq);
diff --git a/arch/alpha/kernel/irq_pyxis.c b/arch/alpha/kernel/irq_pyxis.c
index 3b581415bab0..d53edbccbfe5 100644
--- a/arch/alpha/kernel/irq_pyxis.c
+++ b/arch/alpha/kernel/irq_pyxis.c
@@ -81,7 +81,7 @@ static struct hw_interrupt_type pyxis_irq_type = {
81}; 81};
82 82
83void 83void
84pyxis_device_interrupt(unsigned long vector, struct pt_regs *regs) 84pyxis_device_interrupt(unsigned long vector)
85{ 85{
86 unsigned long pld; 86 unsigned long pld;
87 unsigned int i; 87 unsigned int i;
@@ -98,9 +98,9 @@ pyxis_device_interrupt(unsigned long vector, struct pt_regs *regs)
98 i = ffz(~pld); 98 i = ffz(~pld);
99 pld &= pld - 1; /* clear least bit set */ 99 pld &= pld - 1; /* clear least bit set */
100 if (i == 7) 100 if (i == 7)
101 isa_device_interrupt(vector, regs); 101 isa_device_interrupt(vector);
102 else 102 else
103 handle_irq(16+i, regs); 103 handle_irq(16+i);
104 } 104 }
105} 105}
106 106
diff --git a/arch/alpha/kernel/irq_srm.c b/arch/alpha/kernel/irq_srm.c
index 8e4d121f84cc..32212014fbe9 100644
--- a/arch/alpha/kernel/irq_srm.c
+++ b/arch/alpha/kernel/irq_srm.c
@@ -72,8 +72,8 @@ init_srm_irqs(long max, unsigned long ignore_mask)
72} 72}
73 73
74void 74void
75srm_device_interrupt(unsigned long vector, struct pt_regs * regs) 75srm_device_interrupt(unsigned long vector)
76{ 76{
77 int irq = (vector - 0x800) >> 4; 77 int irq = (vector - 0x800) >> 4;
78 handle_irq(irq, regs); 78 handle_irq(irq);
79} 79}
diff --git a/arch/alpha/kernel/proto.h b/arch/alpha/kernel/proto.h
index 21f71287b6f5..95912ecc65e1 100644
--- a/arch/alpha/kernel/proto.h
+++ b/arch/alpha/kernel/proto.h
@@ -20,7 +20,7 @@ struct pci_controller;
20extern struct pci_ops apecs_pci_ops; 20extern struct pci_ops apecs_pci_ops;
21extern void apecs_init_arch(void); 21extern void apecs_init_arch(void);
22extern void apecs_pci_clr_err(void); 22extern void apecs_pci_clr_err(void);
23extern void apecs_machine_check(u64, u64, struct pt_regs *); 23extern void apecs_machine_check(u64, u64);
24extern void apecs_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t); 24extern void apecs_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t);
25 25
26/* core_cia.c */ 26/* core_cia.c */
@@ -29,27 +29,27 @@ extern void cia_init_pci(void);
29extern void cia_init_arch(void); 29extern void cia_init_arch(void);
30extern void pyxis_init_arch(void); 30extern void pyxis_init_arch(void);
31extern void cia_kill_arch(int); 31extern void cia_kill_arch(int);
32extern void cia_machine_check(u64, u64, struct pt_regs *); 32extern void cia_machine_check(u64, u64);
33extern void cia_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t); 33extern void cia_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t);
34 34
35/* core_irongate.c */ 35/* core_irongate.c */
36extern struct pci_ops irongate_pci_ops; 36extern struct pci_ops irongate_pci_ops;
37extern int irongate_pci_clr_err(void); 37extern int irongate_pci_clr_err(void);
38extern void irongate_init_arch(void); 38extern void irongate_init_arch(void);
39extern void irongate_machine_check(u64, u64, struct pt_regs *); 39extern void irongate_machine_check(u64, u64);
40#define irongate_pci_tbi ((void *)0) 40#define irongate_pci_tbi ((void *)0)
41 41
42/* core_lca.c */ 42/* core_lca.c */
43extern struct pci_ops lca_pci_ops; 43extern struct pci_ops lca_pci_ops;
44extern void lca_init_arch(void); 44extern void lca_init_arch(void);
45extern void lca_machine_check(u64, u64, struct pt_regs *); 45extern void lca_machine_check(u64, u64);
46extern void lca_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t); 46extern void lca_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t);
47 47
48/* core_marvel.c */ 48/* core_marvel.c */
49extern struct pci_ops marvel_pci_ops; 49extern struct pci_ops marvel_pci_ops;
50extern void marvel_init_arch(void); 50extern void marvel_init_arch(void);
51extern void marvel_kill_arch(int); 51extern void marvel_kill_arch(int);
52extern void marvel_machine_check(u64, u64, struct pt_regs *); 52extern void marvel_machine_check(u64, u64);
53extern void marvel_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t); 53extern void marvel_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t);
54extern int marvel_pa_to_nid(unsigned long); 54extern int marvel_pa_to_nid(unsigned long);
55extern int marvel_cpuid_to_nid(int); 55extern int marvel_cpuid_to_nid(int);
@@ -64,7 +64,7 @@ void io7_clear_errors(struct io7 *io7);
64extern struct pci_ops mcpcia_pci_ops; 64extern struct pci_ops mcpcia_pci_ops;
65extern void mcpcia_init_arch(void); 65extern void mcpcia_init_arch(void);
66extern void mcpcia_init_hoses(void); 66extern void mcpcia_init_hoses(void);
67extern void mcpcia_machine_check(u64, u64, struct pt_regs *); 67extern void mcpcia_machine_check(u64, u64);
68extern void mcpcia_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t); 68extern void mcpcia_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t);
69 69
70/* core_polaris.c */ 70/* core_polaris.c */
@@ -72,21 +72,21 @@ extern struct pci_ops polaris_pci_ops;
72extern int polaris_read_config_dword(struct pci_dev *, int, u32 *); 72extern int polaris_read_config_dword(struct pci_dev *, int, u32 *);
73extern int polaris_write_config_dword(struct pci_dev *, int, u32); 73extern int polaris_write_config_dword(struct pci_dev *, int, u32);
74extern void polaris_init_arch(void); 74extern void polaris_init_arch(void);
75extern void polaris_machine_check(u64, u64, struct pt_regs *); 75extern void polaris_machine_check(u64, u64);
76#define polaris_pci_tbi ((void *)0) 76#define polaris_pci_tbi ((void *)0)
77 77
78/* core_t2.c */ 78/* core_t2.c */
79extern struct pci_ops t2_pci_ops; 79extern struct pci_ops t2_pci_ops;
80extern void t2_init_arch(void); 80extern void t2_init_arch(void);
81extern void t2_kill_arch(int); 81extern void t2_kill_arch(int);
82extern void t2_machine_check(u64, u64, struct pt_regs *); 82extern void t2_machine_check(u64, u64);
83extern void t2_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t); 83extern void t2_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t);
84 84
85/* core_titan.c */ 85/* core_titan.c */
86extern struct pci_ops titan_pci_ops; 86extern struct pci_ops titan_pci_ops;
87extern void titan_init_arch(void); 87extern void titan_init_arch(void);
88extern void titan_kill_arch(int); 88extern void titan_kill_arch(int);
89extern void titan_machine_check(u64, u64, struct pt_regs *); 89extern void titan_machine_check(u64, u64);
90extern void titan_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t); 90extern void titan_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t);
91extern struct _alpha_agp_info *titan_agp_info(void); 91extern struct _alpha_agp_info *titan_agp_info(void);
92 92
@@ -94,14 +94,14 @@ extern struct _alpha_agp_info *titan_agp_info(void);
94extern struct pci_ops tsunami_pci_ops; 94extern struct pci_ops tsunami_pci_ops;
95extern void tsunami_init_arch(void); 95extern void tsunami_init_arch(void);
96extern void tsunami_kill_arch(int); 96extern void tsunami_kill_arch(int);
97extern void tsunami_machine_check(u64, u64, struct pt_regs *); 97extern void tsunami_machine_check(u64, u64);
98extern void tsunami_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t); 98extern void tsunami_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t);
99 99
100/* core_wildfire.c */ 100/* core_wildfire.c */
101extern struct pci_ops wildfire_pci_ops; 101extern struct pci_ops wildfire_pci_ops;
102extern void wildfire_init_arch(void); 102extern void wildfire_init_arch(void);
103extern void wildfire_kill_arch(int); 103extern void wildfire_kill_arch(int);
104extern void wildfire_machine_check(u64, u64, struct pt_regs *); 104extern void wildfire_machine_check(u64, u64);
105extern void wildfire_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t); 105extern void wildfire_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t);
106extern int wildfire_pa_to_nid(unsigned long); 106extern int wildfire_pa_to_nid(unsigned long);
107extern int wildfire_cpuid_to_nid(int); 107extern int wildfire_cpuid_to_nid(int);
@@ -133,7 +133,7 @@ extern void smp_percpu_timer_interrupt(struct pt_regs *);
133/* extern void reset_for_srm(void); */ 133/* extern void reset_for_srm(void); */
134 134
135/* time.c */ 135/* time.c */
136extern irqreturn_t timer_interrupt(int irq, void *dev, struct pt_regs * regs); 136extern irqreturn_t timer_interrupt(int irq, void *dev);
137extern void common_init_rtc(void); 137extern void common_init_rtc(void);
138extern unsigned long est_cycle_freq; 138extern unsigned long est_cycle_freq;
139 139
@@ -177,7 +177,7 @@ extern void dik_show_regs(struct pt_regs *regs, unsigned long *r9_15);
177extern void die_if_kernel(char *, struct pt_regs *, long, unsigned long *); 177extern void die_if_kernel(char *, struct pt_regs *, long, unsigned long *);
178 178
179/* sys_titan.c */ 179/* sys_titan.c */
180extern void titan_dispatch_irqs(u64, struct pt_regs *); 180extern void titan_dispatch_irqs(u64);
181 181
182/* ../mm/init.c */ 182/* ../mm/init.c */
183extern void switch_to_system_map(void); 183extern void switch_to_system_map(void);
@@ -214,5 +214,4 @@ extern struct mcheck_info
214#endif 214#endif
215 215
216extern void process_mcheck_info(unsigned long vector, unsigned long la_ptr, 216extern void process_mcheck_info(unsigned long vector, unsigned long la_ptr,
217 struct pt_regs *regs, const char *machine, 217 const char *machine, int expected);
218 int expected);
diff --git a/arch/alpha/kernel/smp.c b/arch/alpha/kernel/smp.c
index 4dc273e537fd..596780e2c7da 100644
--- a/arch/alpha/kernel/smp.c
+++ b/arch/alpha/kernel/smp.c
@@ -515,12 +515,15 @@ smp_cpus_done(unsigned int max_cpus)
515void 515void
516smp_percpu_timer_interrupt(struct pt_regs *regs) 516smp_percpu_timer_interrupt(struct pt_regs *regs)
517{ 517{
518 struct pt_regs *old_regs;
518 int cpu = smp_processor_id(); 519 int cpu = smp_processor_id();
519 unsigned long user = user_mode(regs); 520 unsigned long user = user_mode(regs);
520 struct cpuinfo_alpha *data = &cpu_data[cpu]; 521 struct cpuinfo_alpha *data = &cpu_data[cpu];
521 522
523 old_regs = set_irq_regs(regs);
524
522 /* Record kernel PC. */ 525 /* Record kernel PC. */
523 profile_tick(CPU_PROFILING, regs); 526 profile_tick(CPU_PROFILING);
524 527
525 if (!--data->prof_counter) { 528 if (!--data->prof_counter) {
526 /* We need to make like a normal interrupt -- otherwise 529 /* We need to make like a normal interrupt -- otherwise
@@ -534,6 +537,7 @@ smp_percpu_timer_interrupt(struct pt_regs *regs)
534 537
535 irq_exit(); 538 irq_exit();
536 } 539 }
540 set_irq_regs(old_regs);
537} 541}
538 542
539int __init 543int __init
diff --git a/arch/alpha/kernel/sys_alcor.c b/arch/alpha/kernel/sys_alcor.c
index d6926b7b1e99..49bedfbbd31b 100644
--- a/arch/alpha/kernel/sys_alcor.c
+++ b/arch/alpha/kernel/sys_alcor.c
@@ -100,7 +100,7 @@ static struct hw_interrupt_type alcor_irq_type = {
100}; 100};
101 101
102static void 102static void
103alcor_device_interrupt(unsigned long vector, struct pt_regs *regs) 103alcor_device_interrupt(unsigned long vector)
104{ 104{
105 unsigned long pld; 105 unsigned long pld;
106 unsigned int i; 106 unsigned int i;
@@ -116,9 +116,9 @@ alcor_device_interrupt(unsigned long vector, struct pt_regs *regs)
116 i = ffz(~pld); 116 i = ffz(~pld);
117 pld &= pld - 1; /* clear least bit set */ 117 pld &= pld - 1; /* clear least bit set */
118 if (i == 31) { 118 if (i == 31) {
119 isa_device_interrupt(vector, regs); 119 isa_device_interrupt(vector);
120 } else { 120 } else {
121 handle_irq(16 + i, regs); 121 handle_irq(16 + i);
122 } 122 }
123 } 123 }
124} 124}
diff --git a/arch/alpha/kernel/sys_cabriolet.c b/arch/alpha/kernel/sys_cabriolet.c
index 25a215067da8..ace475c124f6 100644
--- a/arch/alpha/kernel/sys_cabriolet.c
+++ b/arch/alpha/kernel/sys_cabriolet.c
@@ -82,7 +82,7 @@ static struct hw_interrupt_type cabriolet_irq_type = {
82}; 82};
83 83
84static void 84static void
85cabriolet_device_interrupt(unsigned long v, struct pt_regs *r) 85cabriolet_device_interrupt(unsigned long v)
86{ 86{
87 unsigned long pld; 87 unsigned long pld;
88 unsigned int i; 88 unsigned int i;
@@ -98,15 +98,15 @@ cabriolet_device_interrupt(unsigned long v, struct pt_regs *r)
98 i = ffz(~pld); 98 i = ffz(~pld);
99 pld &= pld - 1; /* clear least bit set */ 99 pld &= pld - 1; /* clear least bit set */
100 if (i == 4) { 100 if (i == 4) {
101 isa_device_interrupt(v, r); 101 isa_device_interrupt(v);
102 } else { 102 } else {
103 handle_irq(16 + i, r); 103 handle_irq(16 + i);
104 } 104 }
105 } 105 }
106} 106}
107 107
108static void __init 108static void __init
109common_init_irq(void (*srm_dev_int)(unsigned long v, struct pt_regs *r)) 109common_init_irq(void (*srm_dev_int)(unsigned long v))
110{ 110{
111 init_i8259a_irqs(); 111 init_i8259a_irqs();
112 112
@@ -154,18 +154,18 @@ cabriolet_init_irq(void)
154 too invasive though. */ 154 too invasive though. */
155 155
156static void 156static void
157pc164_srm_device_interrupt(unsigned long v, struct pt_regs *r) 157pc164_srm_device_interrupt(unsigned long v)
158{ 158{
159 __min_ipl = getipl(); 159 __min_ipl = getipl();
160 srm_device_interrupt(v, r); 160 srm_device_interrupt(v);
161 __min_ipl = 0; 161 __min_ipl = 0;
162} 162}
163 163
164static void 164static void
165pc164_device_interrupt(unsigned long v, struct pt_regs *r) 165pc164_device_interrupt(unsigned long v)
166{ 166{
167 __min_ipl = getipl(); 167 __min_ipl = getipl();
168 cabriolet_device_interrupt(v, r); 168 cabriolet_device_interrupt(v);
169 __min_ipl = 0; 169 __min_ipl = 0;
170} 170}
171 171
diff --git a/arch/alpha/kernel/sys_dp264.c b/arch/alpha/kernel/sys_dp264.c
index dd6103b867e7..85d2f933dd07 100644
--- a/arch/alpha/kernel/sys_dp264.c
+++ b/arch/alpha/kernel/sys_dp264.c
@@ -217,7 +217,7 @@ static struct hw_interrupt_type clipper_irq_type = {
217}; 217};
218 218
219static void 219static void
220dp264_device_interrupt(unsigned long vector, struct pt_regs * regs) 220dp264_device_interrupt(unsigned long vector)
221{ 221{
222#if 1 222#if 1
223 printk("dp264_device_interrupt: NOT IMPLEMENTED YET!! \n"); 223 printk("dp264_device_interrupt: NOT IMPLEMENTED YET!! \n");
@@ -236,9 +236,9 @@ dp264_device_interrupt(unsigned long vector, struct pt_regs * regs)
236 i = ffz(~pld); 236 i = ffz(~pld);
237 pld &= pld - 1; /* clear least bit set */ 237 pld &= pld - 1; /* clear least bit set */
238 if (i == 55) 238 if (i == 55)
239 isa_device_interrupt(vector, regs); 239 isa_device_interrupt(vector);
240 else 240 else
241 handle_irq(16 + i, 16 + i, regs); 241 handle_irq(16 + i);
242#if 0 242#if 0
243 TSUNAMI_cchip->dir0.csr = 1UL << i; mb(); 243 TSUNAMI_cchip->dir0.csr = 1UL << i; mb();
244 tmp = TSUNAMI_cchip->dir0.csr; 244 tmp = TSUNAMI_cchip->dir0.csr;
@@ -248,7 +248,7 @@ dp264_device_interrupt(unsigned long vector, struct pt_regs * regs)
248} 248}
249 249
250static void 250static void
251dp264_srm_device_interrupt(unsigned long vector, struct pt_regs * regs) 251dp264_srm_device_interrupt(unsigned long vector)
252{ 252{
253 int irq; 253 int irq;
254 254
@@ -268,11 +268,11 @@ dp264_srm_device_interrupt(unsigned long vector, struct pt_regs * regs)
268 if (irq >= 32) 268 if (irq >= 32)
269 irq -= 16; 269 irq -= 16;
270 270
271 handle_irq(irq, regs); 271 handle_irq(irq);
272} 272}
273 273
274static void 274static void
275clipper_srm_device_interrupt(unsigned long vector, struct pt_regs * regs) 275clipper_srm_device_interrupt(unsigned long vector)
276{ 276{
277 int irq; 277 int irq;
278 278
@@ -290,7 +290,7 @@ clipper_srm_device_interrupt(unsigned long vector, struct pt_regs * regs)
290 * 290 *
291 * Eg IRQ 24 is DRIR bit 8, etc, etc 291 * Eg IRQ 24 is DRIR bit 8, etc, etc
292 */ 292 */
293 handle_irq(irq, regs); 293 handle_irq(irq);
294} 294}
295 295
296static void __init 296static void __init
diff --git a/arch/alpha/kernel/sys_eb64p.c b/arch/alpha/kernel/sys_eb64p.c
index ed108b66ec09..9c5a306dc0ee 100644
--- a/arch/alpha/kernel/sys_eb64p.c
+++ b/arch/alpha/kernel/sys_eb64p.c
@@ -80,7 +80,7 @@ static struct hw_interrupt_type eb64p_irq_type = {
80}; 80};
81 81
82static void 82static void
83eb64p_device_interrupt(unsigned long vector, struct pt_regs *regs) 83eb64p_device_interrupt(unsigned long vector)
84{ 84{
85 unsigned long pld; 85 unsigned long pld;
86 unsigned int i; 86 unsigned int i;
@@ -97,9 +97,9 @@ eb64p_device_interrupt(unsigned long vector, struct pt_regs *regs)
97 pld &= pld - 1; /* clear least bit set */ 97 pld &= pld - 1; /* clear least bit set */
98 98
99 if (i == 5) { 99 if (i == 5) {
100 isa_device_interrupt(vector, regs); 100 isa_device_interrupt(vector);
101 } else { 101 } else {
102 handle_irq(16 + i, regs); 102 handle_irq(16 + i);
103 } 103 }
104 } 104 }
105} 105}
diff --git a/arch/alpha/kernel/sys_eiger.c b/arch/alpha/kernel/sys_eiger.c
index 64a785baf53a..7ef3b6fb3700 100644
--- a/arch/alpha/kernel/sys_eiger.c
+++ b/arch/alpha/kernel/sys_eiger.c
@@ -91,7 +91,7 @@ static struct hw_interrupt_type eiger_irq_type = {
91}; 91};
92 92
93static void 93static void
94eiger_device_interrupt(unsigned long vector, struct pt_regs * regs) 94eiger_device_interrupt(unsigned long vector)
95{ 95{
96 unsigned intstatus; 96 unsigned intstatus;
97 97
@@ -118,20 +118,20 @@ eiger_device_interrupt(unsigned long vector, struct pt_regs * regs)
118 * despatch an interrupt if it's set. 118 * despatch an interrupt if it's set.
119 */ 119 */
120 120
121 if (intstatus & 8) handle_irq(16+3, regs); 121 if (intstatus & 8) handle_irq(16+3);
122 if (intstatus & 4) handle_irq(16+2, regs); 122 if (intstatus & 4) handle_irq(16+2);
123 if (intstatus & 2) handle_irq(16+1, regs); 123 if (intstatus & 2) handle_irq(16+1);
124 if (intstatus & 1) handle_irq(16+0, regs); 124 if (intstatus & 1) handle_irq(16+0);
125 } else { 125 } else {
126 isa_device_interrupt(vector, regs); 126 isa_device_interrupt(vector);
127 } 127 }
128} 128}
129 129
130static void 130static void
131eiger_srm_device_interrupt(unsigned long vector, struct pt_regs * regs) 131eiger_srm_device_interrupt(unsigned long vector)
132{ 132{
133 int irq = (vector - 0x800) >> 4; 133 int irq = (vector - 0x800) >> 4;
134 handle_irq(irq, regs); 134 handle_irq(irq);
135} 135}
136 136
137static void __init 137static void __init
diff --git a/arch/alpha/kernel/sys_jensen.c b/arch/alpha/kernel/sys_jensen.c
index 4ac2b328b8de..2c3de97de46c 100644
--- a/arch/alpha/kernel/sys_jensen.c
+++ b/arch/alpha/kernel/sys_jensen.c
@@ -129,7 +129,7 @@ static struct hw_interrupt_type jensen_local_irq_type = {
129}; 129};
130 130
131static void 131static void
132jensen_device_interrupt(unsigned long vector, struct pt_regs * regs) 132jensen_device_interrupt(unsigned long vector)
133{ 133{
134 int irq; 134 int irq;
135 135
@@ -189,7 +189,7 @@ jensen_device_interrupt(unsigned long vector, struct pt_regs * regs)
189 if (cc - last_msg > ((JENSEN_CYCLES_PER_SEC) * 3) || 189 if (cc - last_msg > ((JENSEN_CYCLES_PER_SEC) * 3) ||
190 irq != last_irq) { 190 irq != last_irq) {
191 printk(KERN_CRIT " irq %d count %d cc %u @ %lx\n", 191 printk(KERN_CRIT " irq %d count %d cc %u @ %lx\n",
192 irq, count, cc-last_cc, regs->pc); 192 irq, count, cc-last_cc, get_irq_regs()->pc);
193 count = 0; 193 count = 0;
194 last_msg = cc; 194 last_msg = cc;
195 last_irq = irq; 195 last_irq = irq;
@@ -198,7 +198,7 @@ jensen_device_interrupt(unsigned long vector, struct pt_regs * regs)
198 } 198 }
199#endif 199#endif
200 200
201 handle_irq(irq, regs); 201 handle_irq(irq);
202} 202}
203 203
204static void __init 204static void __init
@@ -244,7 +244,7 @@ jensen_init_arch(void)
244} 244}
245 245
246static void 246static void
247jensen_machine_check (u64 vector, u64 la, struct pt_regs *regs) 247jensen_machine_check (u64 vector, u64 la)
248{ 248{
249 printk(KERN_CRIT "Machine check\n"); 249 printk(KERN_CRIT "Machine check\n");
250} 250}
diff --git a/arch/alpha/kernel/sys_marvel.c b/arch/alpha/kernel/sys_marvel.c
index 36d215954376..e349f03b830e 100644
--- a/arch/alpha/kernel/sys_marvel.c
+++ b/arch/alpha/kernel/sys_marvel.c
@@ -38,7 +38,7 @@
38 * Interrupt handling. 38 * Interrupt handling.
39 */ 39 */
40static void 40static void
41io7_device_interrupt(unsigned long vector, struct pt_regs * regs) 41io7_device_interrupt(unsigned long vector)
42{ 42{
43 unsigned int pid; 43 unsigned int pid;
44 unsigned int irq; 44 unsigned int irq;
@@ -64,7 +64,7 @@ io7_device_interrupt(unsigned long vector, struct pt_regs * regs)
64 irq &= MARVEL_IRQ_VEC_IRQ_MASK; /* not too many bits */ 64 irq &= MARVEL_IRQ_VEC_IRQ_MASK; /* not too many bits */
65 irq |= pid << MARVEL_IRQ_VEC_PE_SHIFT; /* merge the pid */ 65 irq |= pid << MARVEL_IRQ_VEC_PE_SHIFT; /* merge the pid */
66 66
67 handle_irq(irq, regs); 67 handle_irq(irq);
68} 68}
69 69
70static volatile unsigned long * 70static volatile unsigned long *
diff --git a/arch/alpha/kernel/sys_miata.c b/arch/alpha/kernel/sys_miata.c
index 61ac56f8eeea..b8b817feb1ee 100644
--- a/arch/alpha/kernel/sys_miata.c
+++ b/arch/alpha/kernel/sys_miata.c
@@ -33,7 +33,7 @@
33 33
34 34
35static void 35static void
36miata_srm_device_interrupt(unsigned long vector, struct pt_regs * regs) 36miata_srm_device_interrupt(unsigned long vector)
37{ 37{
38 int irq; 38 int irq;
39 39
@@ -56,7 +56,7 @@ miata_srm_device_interrupt(unsigned long vector, struct pt_regs * regs)
56 if (irq >= 16) 56 if (irq >= 16)
57 irq = irq + 8; 57 irq = irq + 8;
58 58
59 handle_irq(irq, regs); 59 handle_irq(irq);
60} 60}
61 61
62static void __init 62static void __init
diff --git a/arch/alpha/kernel/sys_mikasa.c b/arch/alpha/kernel/sys_mikasa.c
index cc4c58111366..8d3e9429c5ee 100644
--- a/arch/alpha/kernel/sys_mikasa.c
+++ b/arch/alpha/kernel/sys_mikasa.c
@@ -79,7 +79,7 @@ static struct hw_interrupt_type mikasa_irq_type = {
79}; 79};
80 80
81static void 81static void
82mikasa_device_interrupt(unsigned long vector, struct pt_regs *regs) 82mikasa_device_interrupt(unsigned long vector)
83{ 83{
84 unsigned long pld; 84 unsigned long pld;
85 unsigned int i; 85 unsigned int i;
@@ -97,9 +97,9 @@ mikasa_device_interrupt(unsigned long vector, struct pt_regs *regs)
97 i = ffz(~pld); 97 i = ffz(~pld);
98 pld &= pld - 1; /* clear least bit set */ 98 pld &= pld - 1; /* clear least bit set */
99 if (i < 16) { 99 if (i < 16) {
100 isa_device_interrupt(vector, regs); 100 isa_device_interrupt(vector);
101 } else { 101 } else {
102 handle_irq(i, regs); 102 handle_irq(i);
103 } 103 }
104 } 104 }
105} 105}
@@ -182,8 +182,7 @@ mikasa_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
182 182
183#if defined(CONFIG_ALPHA_GENERIC) || !defined(CONFIG_ALPHA_PRIMO) 183#if defined(CONFIG_ALPHA_GENERIC) || !defined(CONFIG_ALPHA_PRIMO)
184static void 184static void
185mikasa_apecs_machine_check(unsigned long vector, unsigned long la_ptr, 185mikasa_apecs_machine_check(unsigned long vector, unsigned long la_ptr)
186 struct pt_regs * regs)
187{ 186{
188#define MCHK_NO_DEVSEL 0x205U 187#define MCHK_NO_DEVSEL 0x205U
189#define MCHK_NO_TABT 0x204U 188#define MCHK_NO_TABT 0x204U
@@ -202,7 +201,7 @@ mikasa_apecs_machine_check(unsigned long vector, unsigned long la_ptr,
202 mb(); 201 mb();
203 202
204 code = mchk_header->code; 203 code = mchk_header->code;
205 process_mcheck_info(vector, la_ptr, regs, "MIKASA APECS", 204 process_mcheck_info(vector, la_ptr, "MIKASA APECS",
206 (mcheck_expected(0) 205 (mcheck_expected(0)
207 && (code == MCHK_NO_DEVSEL 206 && (code == MCHK_NO_DEVSEL
208 || code == MCHK_NO_TABT))); 207 || code == MCHK_NO_TABT)));
diff --git a/arch/alpha/kernel/sys_nautilus.c b/arch/alpha/kernel/sys_nautilus.c
index c0d696efec5b..93744bab73fb 100644
--- a/arch/alpha/kernel/sys_nautilus.c
+++ b/arch/alpha/kernel/sys_nautilus.c
@@ -124,8 +124,7 @@ naut_sys_machine_check(unsigned long vector, unsigned long la_ptr,
124 in the system. They are analysed separately but all starts here. */ 124 in the system. They are analysed separately but all starts here. */
125 125
126void 126void
127nautilus_machine_check(unsigned long vector, unsigned long la_ptr, 127nautilus_machine_check(unsigned long vector, unsigned long la_ptr)
128 struct pt_regs *regs)
129{ 128{
130 char *mchk_class; 129 char *mchk_class;
131 130
@@ -165,7 +164,7 @@ nautilus_machine_check(unsigned long vector, unsigned long la_ptr,
165 else if (vector == SCB_Q_SYSMCHK) 164 else if (vector == SCB_Q_SYSMCHK)
166 mchk_class = "Fatal"; 165 mchk_class = "Fatal";
167 else { 166 else {
168 ev6_machine_check(vector, la_ptr, regs); 167 ev6_machine_check(vector, la_ptr);
169 return; 168 return;
170 } 169 }
171 170
@@ -173,7 +172,7 @@ nautilus_machine_check(unsigned long vector, unsigned long la_ptr,
173 "[%s System Machine Check (NMI)]\n", 172 "[%s System Machine Check (NMI)]\n",
174 vector, mchk_class); 173 vector, mchk_class);
175 174
176 naut_sys_machine_check(vector, la_ptr, regs); 175 naut_sys_machine_check(vector, la_ptr, get_irq_regs());
177 176
178 /* Tell the PALcode to clear the machine check */ 177 /* Tell the PALcode to clear the machine check */
179 draina(); 178 draina();
diff --git a/arch/alpha/kernel/sys_noritake.c b/arch/alpha/kernel/sys_noritake.c
index 2d3cff7e8c5f..de6ba3432e8a 100644
--- a/arch/alpha/kernel/sys_noritake.c
+++ b/arch/alpha/kernel/sys_noritake.c
@@ -77,7 +77,7 @@ static struct hw_interrupt_type noritake_irq_type = {
77}; 77};
78 78
79static void 79static void
80noritake_device_interrupt(unsigned long vector, struct pt_regs *regs) 80noritake_device_interrupt(unsigned long vector)
81{ 81{
82 unsigned long pld; 82 unsigned long pld;
83 unsigned int i; 83 unsigned int i;
@@ -96,15 +96,15 @@ noritake_device_interrupt(unsigned long vector, struct pt_regs *regs)
96 i = ffz(~pld); 96 i = ffz(~pld);
97 pld &= pld - 1; /* clear least bit set */ 97 pld &= pld - 1; /* clear least bit set */
98 if (i < 16) { 98 if (i < 16) {
99 isa_device_interrupt(vector, regs); 99 isa_device_interrupt(vector);
100 } else { 100 } else {
101 handle_irq(i, regs); 101 handle_irq(i);
102 } 102 }
103 } 103 }
104} 104}
105 105
106static void 106static void
107noritake_srm_device_interrupt(unsigned long vector, struct pt_regs * regs) 107noritake_srm_device_interrupt(unsigned long vector)
108{ 108{
109 int irq; 109 int irq;
110 110
@@ -122,7 +122,7 @@ noritake_srm_device_interrupt(unsigned long vector, struct pt_regs * regs)
122 if (irq >= 16) 122 if (irq >= 16)
123 irq = irq + 1; 123 irq = irq + 1;
124 124
125 handle_irq(irq, regs); 125 handle_irq(irq);
126} 126}
127 127
128static void __init 128static void __init
@@ -264,8 +264,7 @@ noritake_swizzle(struct pci_dev *dev, u8 *pinp)
264 264
265#if defined(CONFIG_ALPHA_GENERIC) || !defined(CONFIG_ALPHA_PRIMO) 265#if defined(CONFIG_ALPHA_GENERIC) || !defined(CONFIG_ALPHA_PRIMO)
266static void 266static void
267noritake_apecs_machine_check(unsigned long vector, unsigned long la_ptr, 267noritake_apecs_machine_check(unsigned long vector, unsigned long la_ptr)
268 struct pt_regs * regs)
269{ 268{
270#define MCHK_NO_DEVSEL 0x205U 269#define MCHK_NO_DEVSEL 0x205U
271#define MCHK_NO_TABT 0x204U 270#define MCHK_NO_TABT 0x204U
@@ -284,7 +283,7 @@ noritake_apecs_machine_check(unsigned long vector, unsigned long la_ptr,
284 mb(); 283 mb();
285 284
286 code = mchk_header->code; 285 code = mchk_header->code;
287 process_mcheck_info(vector, la_ptr, regs, "NORITAKE APECS", 286 process_mcheck_info(vector, la_ptr, "NORITAKE APECS",
288 (mcheck_expected(0) 287 (mcheck_expected(0)
289 && (code == MCHK_NO_DEVSEL 288 && (code == MCHK_NO_DEVSEL
290 || code == MCHK_NO_TABT))); 289 || code == MCHK_NO_TABT)));
diff --git a/arch/alpha/kernel/sys_rawhide.c b/arch/alpha/kernel/sys_rawhide.c
index 949607e3d6fb..581d08c70b92 100644
--- a/arch/alpha/kernel/sys_rawhide.c
+++ b/arch/alpha/kernel/sys_rawhide.c
@@ -134,7 +134,7 @@ static struct hw_interrupt_type rawhide_irq_type = {
134}; 134};
135 135
136static void 136static void
137rawhide_srm_device_interrupt(unsigned long vector, struct pt_regs * regs) 137rawhide_srm_device_interrupt(unsigned long vector)
138{ 138{
139 int irq; 139 int irq;
140 140
@@ -158,7 +158,7 @@ rawhide_srm_device_interrupt(unsigned long vector, struct pt_regs * regs)
158 /* Adjust by which hose it is from. */ 158 /* Adjust by which hose it is from. */
159 irq -= ((irq + 16) >> 2) & 0x38; 159 irq -= ((irq + 16) >> 2) & 0x38;
160 160
161 handle_irq(irq, regs); 161 handle_irq(irq);
162} 162}
163 163
164static void __init 164static void __init
diff --git a/arch/alpha/kernel/sys_rx164.c b/arch/alpha/kernel/sys_rx164.c
index 6ae506052635..ce1faa6f1df1 100644
--- a/arch/alpha/kernel/sys_rx164.c
+++ b/arch/alpha/kernel/sys_rx164.c
@@ -83,7 +83,7 @@ static struct hw_interrupt_type rx164_irq_type = {
83}; 83};
84 84
85static void 85static void
86rx164_device_interrupt(unsigned long vector, struct pt_regs *regs) 86rx164_device_interrupt(unsigned long vector)
87{ 87{
88 unsigned long pld; 88 unsigned long pld;
89 volatile unsigned int *dirr; 89 volatile unsigned int *dirr;
@@ -102,9 +102,9 @@ rx164_device_interrupt(unsigned long vector, struct pt_regs *regs)
102 i = ffz(~pld); 102 i = ffz(~pld);
103 pld &= pld - 1; /* clear least bit set */ 103 pld &= pld - 1; /* clear least bit set */
104 if (i == 20) { 104 if (i == 20) {
105 isa_no_iack_sc_device_interrupt(vector, regs); 105 isa_no_iack_sc_device_interrupt(vector);
106 } else { 106 } else {
107 handle_irq(16+i, regs); 107 handle_irq(16+i);
108 } 108 }
109 } 109 }
110} 110}
diff --git a/arch/alpha/kernel/sys_sable.c b/arch/alpha/kernel/sys_sable.c
index a7a14647b50e..906019cfa681 100644
--- a/arch/alpha/kernel/sys_sable.c
+++ b/arch/alpha/kernel/sys_sable.c
@@ -512,7 +512,7 @@ static struct hw_interrupt_type sable_lynx_irq_type = {
512}; 512};
513 513
514static void 514static void
515sable_lynx_srm_device_interrupt(unsigned long vector, struct pt_regs * regs) 515sable_lynx_srm_device_interrupt(unsigned long vector)
516{ 516{
517 /* Note that the vector reported by the SRM PALcode corresponds 517 /* Note that the vector reported by the SRM PALcode corresponds
518 to the interrupt mask bits, but we have to manage via the 518 to the interrupt mask bits, but we have to manage via the
@@ -526,7 +526,7 @@ sable_lynx_srm_device_interrupt(unsigned long vector, struct pt_regs * regs)
526 printk("%s: vector 0x%lx bit 0x%x irq 0x%x\n", 526 printk("%s: vector 0x%lx bit 0x%x irq 0x%x\n",
527 __FUNCTION__, vector, bit, irq); 527 __FUNCTION__, vector, bit, irq);
528#endif 528#endif
529 handle_irq(irq, regs); 529 handle_irq(irq);
530} 530}
531 531
532static void __init 532static void __init
diff --git a/arch/alpha/kernel/sys_takara.c b/arch/alpha/kernel/sys_takara.c
index 2c75cd1fd81a..9bd9a31450c6 100644
--- a/arch/alpha/kernel/sys_takara.c
+++ b/arch/alpha/kernel/sys_takara.c
@@ -85,7 +85,7 @@ static struct hw_interrupt_type takara_irq_type = {
85}; 85};
86 86
87static void 87static void
88takara_device_interrupt(unsigned long vector, struct pt_regs *regs) 88takara_device_interrupt(unsigned long vector)
89{ 89{
90 unsigned intstatus; 90 unsigned intstatus;
91 91
@@ -112,20 +112,20 @@ takara_device_interrupt(unsigned long vector, struct pt_regs *regs)
112 * despatch an interrupt if it's set. 112 * despatch an interrupt if it's set.
113 */ 113 */
114 114
115 if (intstatus & 8) handle_irq(16+3, regs); 115 if (intstatus & 8) handle_irq(16+3);
116 if (intstatus & 4) handle_irq(16+2, regs); 116 if (intstatus & 4) handle_irq(16+2);
117 if (intstatus & 2) handle_irq(16+1, regs); 117 if (intstatus & 2) handle_irq(16+1);
118 if (intstatus & 1) handle_irq(16+0, regs); 118 if (intstatus & 1) handle_irq(16+0);
119 } else { 119 } else {
120 isa_device_interrupt (vector, regs); 120 isa_device_interrupt (vector);
121 } 121 }
122} 122}
123 123
124static void 124static void
125takara_srm_device_interrupt(unsigned long vector, struct pt_regs * regs) 125takara_srm_device_interrupt(unsigned long vector)
126{ 126{
127 int irq = (vector - 0x800) >> 4; 127 int irq = (vector - 0x800) >> 4;
128 handle_irq(irq, regs); 128 handle_irq(irq);
129} 129}
130 130
131static void __init 131static void __init
diff --git a/arch/alpha/kernel/sys_titan.c b/arch/alpha/kernel/sys_titan.c
index 302aab38d95f..29ab7db81c30 100644
--- a/arch/alpha/kernel/sys_titan.c
+++ b/arch/alpha/kernel/sys_titan.c
@@ -167,18 +167,18 @@ titan_set_irq_affinity(unsigned int irq, cpumask_t affinity)
167} 167}
168 168
169static void 169static void
170titan_device_interrupt(unsigned long vector, struct pt_regs * regs) 170titan_device_interrupt(unsigned long vector)
171{ 171{
172 printk("titan_device_interrupt: NOT IMPLEMENTED YET!! \n"); 172 printk("titan_device_interrupt: NOT IMPLEMENTED YET!! \n");
173} 173}
174 174
175static void 175static void
176titan_srm_device_interrupt(unsigned long vector, struct pt_regs * regs) 176titan_srm_device_interrupt(unsigned long vector)
177{ 177{
178 int irq; 178 int irq;
179 179
180 irq = (vector - 0x800) >> 4; 180 irq = (vector - 0x800) >> 4;
181 handle_irq(irq, regs); 181 handle_irq(irq);
182} 182}
183 183
184 184
@@ -204,7 +204,7 @@ static struct hw_interrupt_type titan_irq_type = {
204}; 204};
205 205
206static irqreturn_t 206static irqreturn_t
207titan_intr_nop(int irq, void *dev_id, struct pt_regs *regs) 207titan_intr_nop(int irq, void *dev_id)
208{ 208{
209 /* 209 /*
210 * This is a NOP interrupt handler for the purposes of 210 * This is a NOP interrupt handler for the purposes of
@@ -243,7 +243,7 @@ titan_legacy_init_irq(void)
243} 243}
244 244
245void 245void
246titan_dispatch_irqs(u64 mask, struct pt_regs *regs) 246titan_dispatch_irqs(u64 mask)
247{ 247{
248 unsigned long vector; 248 unsigned long vector;
249 249
@@ -263,7 +263,7 @@ titan_dispatch_irqs(u64 mask, struct pt_regs *regs)
263 vector = 0x900 + (vector << 4); /* convert to SRM vector */ 263 vector = 0x900 + (vector << 4); /* convert to SRM vector */
264 264
265 /* dispatch it */ 265 /* dispatch it */
266 alpha_mv.device_interrupt(vector, regs); 266 alpha_mv.device_interrupt(vector);
267 } 267 }
268} 268}
269 269
diff --git a/arch/alpha/kernel/sys_wildfire.c b/arch/alpha/kernel/sys_wildfire.c
index 22c5798fe083..42c3eede4d09 100644
--- a/arch/alpha/kernel/sys_wildfire.c
+++ b/arch/alpha/kernel/sys_wildfire.c
@@ -234,7 +234,7 @@ wildfire_init_irq(void)
234} 234}
235 235
236static void 236static void
237wildfire_device_interrupt(unsigned long vector, struct pt_regs * regs) 237wildfire_device_interrupt(unsigned long vector)
238{ 238{
239 int irq; 239 int irq;
240 240
@@ -246,7 +246,7 @@ wildfire_device_interrupt(unsigned long vector, struct pt_regs * regs)
246 * bits 5-0: irq in PCA 246 * bits 5-0: irq in PCA
247 */ 247 */
248 248
249 handle_irq(irq, regs); 249 handle_irq(irq);
250 return; 250 return;
251} 251}
252 252
diff --git a/arch/alpha/kernel/time.c b/arch/alpha/kernel/time.c
index 581ddcc22fc5..cf0666523989 100644
--- a/arch/alpha/kernel/time.c
+++ b/arch/alpha/kernel/time.c
@@ -104,7 +104,7 @@ unsigned long long sched_clock(void)
104 * timer_interrupt() needs to keep up the real-time clock, 104 * timer_interrupt() needs to keep up the real-time clock,
105 * as well as call the "do_timer()" routine every clocktick 105 * as well as call the "do_timer()" routine every clocktick
106 */ 106 */
107irqreturn_t timer_interrupt(int irq, void *dev, struct pt_regs * regs) 107irqreturn_t timer_interrupt(int irq, void *dev)
108{ 108{
109 unsigned long delta; 109 unsigned long delta;
110 __u32 now; 110 __u32 now;
@@ -112,7 +112,7 @@ irqreturn_t timer_interrupt(int irq, void *dev, struct pt_regs * regs)
112 112
113#ifndef CONFIG_SMP 113#ifndef CONFIG_SMP
114 /* Not SMP, do kernel PC profiling here. */ 114 /* Not SMP, do kernel PC profiling here. */
115 profile_tick(CPU_PROFILING, regs); 115 profile_tick(CPU_PROFILING);
116#endif 116#endif
117 117
118 write_seqlock(&xtime_lock); 118 write_seqlock(&xtime_lock);
@@ -132,7 +132,7 @@ irqreturn_t timer_interrupt(int irq, void *dev, struct pt_regs * regs)
132 while (nticks > 0) { 132 while (nticks > 0) {
133 do_timer(1); 133 do_timer(1);
134#ifndef CONFIG_SMP 134#ifndef CONFIG_SMP
135 update_process_times(user_mode(regs)); 135 update_process_times(user_mode(get_irq_regs()));
136#endif 136#endif
137 nticks--; 137 nticks--;
138 } 138 }