aboutsummaryrefslogtreecommitdiffstats
path: root/arch/m68k
diff options
context:
space:
mode:
authorAl Viro <viro@ftp.linux.org.uk>2006-10-07 09:16:45 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-10-07 13:51:14 -0400
commit2850bc273776cbb1b510c5828e9e456dffb50a32 (patch)
tree340bd599b6efde40618ef89de59cbe957269eac2 /arch/m68k
parent00079e04fe478cd3c59ae2106ef2fbe779e67024 (diff)
[PATCH] m68k pt_regs fixes
m68k_handle_int() split in two functions: __m68k_handle_int() takes pt_regs * and does set_irq_regs(); m68k_handle_int() doesn't get pt_regs *. Places where we used to call m68k_handle_int() recursively with the same pt_regs have simply lost the second argument, the rest is switched to __m68k_handle_int(). The rest of patch is just dropping pt_regs * where needed. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/m68k')
-rw-r--r--arch/m68k/amiga/amiints.c40
-rw-r--r--arch/m68k/amiga/cia.c4
-rw-r--r--arch/m68k/amiga/config.c5
-rw-r--r--arch/m68k/apollo/config.c14
-rw-r--r--arch/m68k/apollo/dn_ints.c2
-rw-r--r--arch/m68k/atari/config.c2
-rw-r--r--arch/m68k/atari/stdma.c11
-rw-r--r--arch/m68k/atari/time.c2
-rw-r--r--arch/m68k/bvme6000/config.c12
-rw-r--r--arch/m68k/hp300/time.c8
-rw-r--r--arch/m68k/hp300/time.h2
-rw-r--r--arch/m68k/kernel/entry.S4
-rw-r--r--arch/m68k/kernel/ints.c20
-rw-r--r--arch/m68k/kernel/setup.c2
-rw-r--r--arch/m68k/kernel/time.c7
-rw-r--r--arch/m68k/mac/baboon.c6
-rw-r--r--arch/m68k/mac/config.c4
-rw-r--r--arch/m68k/mac/iop.c22
-rw-r--r--arch/m68k/mac/macints.c16
-rw-r--r--arch/m68k/mac/oss.c16
-rw-r--r--arch/m68k/mac/psc.c6
-rw-r--r--arch/m68k/mac/via.c24
-rw-r--r--arch/m68k/mvme147/config.c10
-rw-r--r--arch/m68k/mvme16x/config.c12
-rw-r--r--arch/m68k/q40/config.c2
-rw-r--r--arch/m68k/q40/q40ints.c16
-rw-r--r--arch/m68k/sun3/config.c2
-rw-r--r--arch/m68k/sun3/sun3ints.c11
-rw-r--r--arch/m68k/sun3x/time.c2
-rw-r--r--arch/m68k/sun3x/time.h2
30 files changed, 148 insertions, 138 deletions
diff --git a/arch/m68k/amiga/amiints.c b/arch/m68k/amiga/amiints.c
index 96c79d840cff..28d95cfe8ac0 100644
--- a/arch/m68k/amiga/amiints.c
+++ b/arch/m68k/amiga/amiints.c
@@ -47,10 +47,10 @@
47 47
48static void amiga_enable_irq(unsigned int irq); 48static void amiga_enable_irq(unsigned int irq);
49static void amiga_disable_irq(unsigned int irq); 49static void amiga_disable_irq(unsigned int irq);
50static irqreturn_t ami_int1(int irq, void *dev_id, struct pt_regs *fp); 50static irqreturn_t ami_int1(int irq, void *dev_id);
51static irqreturn_t ami_int3(int irq, void *dev_id, struct pt_regs *fp); 51static irqreturn_t ami_int3(int irq, void *dev_id);
52static irqreturn_t ami_int4(int irq, void *dev_id, struct pt_regs *fp); 52static irqreturn_t ami_int4(int irq, void *dev_id);
53static irqreturn_t ami_int5(int irq, void *dev_id, struct pt_regs *fp); 53static irqreturn_t ami_int5(int irq, void *dev_id);
54 54
55static struct irq_controller amiga_irq_controller = { 55static struct irq_controller amiga_irq_controller = {
56 .name = "amiga", 56 .name = "amiga",
@@ -113,98 +113,98 @@ static void amiga_disable_irq(unsigned int irq)
113 * The builtin Amiga hardware interrupt handlers. 113 * The builtin Amiga hardware interrupt handlers.
114 */ 114 */
115 115
116static irqreturn_t ami_int1(int irq, void *dev_id, struct pt_regs *fp) 116static irqreturn_t ami_int1(int irq, void *dev_id)
117{ 117{
118 unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar; 118 unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar;
119 119
120 /* if serial transmit buffer empty, interrupt */ 120 /* if serial transmit buffer empty, interrupt */
121 if (ints & IF_TBE) { 121 if (ints & IF_TBE) {
122 amiga_custom.intreq = IF_TBE; 122 amiga_custom.intreq = IF_TBE;
123 m68k_handle_int(IRQ_AMIGA_TBE, fp); 123 m68k_handle_int(IRQ_AMIGA_TBE);
124 } 124 }
125 125
126 /* if floppy disk transfer complete, interrupt */ 126 /* if floppy disk transfer complete, interrupt */
127 if (ints & IF_DSKBLK) { 127 if (ints & IF_DSKBLK) {
128 amiga_custom.intreq = IF_DSKBLK; 128 amiga_custom.intreq = IF_DSKBLK;
129 m68k_handle_int(IRQ_AMIGA_DSKBLK, fp); 129 m68k_handle_int(IRQ_AMIGA_DSKBLK);
130 } 130 }
131 131
132 /* if software interrupt set, interrupt */ 132 /* if software interrupt set, interrupt */
133 if (ints & IF_SOFT) { 133 if (ints & IF_SOFT) {
134 amiga_custom.intreq = IF_SOFT; 134 amiga_custom.intreq = IF_SOFT;
135 m68k_handle_int(IRQ_AMIGA_SOFT, fp); 135 m68k_handle_int(IRQ_AMIGA_SOFT);
136 } 136 }
137 return IRQ_HANDLED; 137 return IRQ_HANDLED;
138} 138}
139 139
140static irqreturn_t ami_int3(int irq, void *dev_id, struct pt_regs *fp) 140static irqreturn_t ami_int3(int irq, void *dev_id)
141{ 141{
142 unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar; 142 unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar;
143 143
144 /* if a blitter interrupt */ 144 /* if a blitter interrupt */
145 if (ints & IF_BLIT) { 145 if (ints & IF_BLIT) {
146 amiga_custom.intreq = IF_BLIT; 146 amiga_custom.intreq = IF_BLIT;
147 m68k_handle_int(IRQ_AMIGA_BLIT, fp); 147 m68k_handle_int(IRQ_AMIGA_BLIT);
148 } 148 }
149 149
150 /* if a copper interrupt */ 150 /* if a copper interrupt */
151 if (ints & IF_COPER) { 151 if (ints & IF_COPER) {
152 amiga_custom.intreq = IF_COPER; 152 amiga_custom.intreq = IF_COPER;
153 m68k_handle_int(IRQ_AMIGA_COPPER, fp); 153 m68k_handle_int(IRQ_AMIGA_COPPER);
154 } 154 }
155 155
156 /* if a vertical blank interrupt */ 156 /* if a vertical blank interrupt */
157 if (ints & IF_VERTB) { 157 if (ints & IF_VERTB) {
158 amiga_custom.intreq = IF_VERTB; 158 amiga_custom.intreq = IF_VERTB;
159 m68k_handle_int(IRQ_AMIGA_VERTB, fp); 159 m68k_handle_int(IRQ_AMIGA_VERTB);
160 } 160 }
161 return IRQ_HANDLED; 161 return IRQ_HANDLED;
162} 162}
163 163
164static irqreturn_t ami_int4(int irq, void *dev_id, struct pt_regs *fp) 164static irqreturn_t ami_int4(int irq, void *dev_id)
165{ 165{
166 unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar; 166 unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar;
167 167
168 /* if audio 0 interrupt */ 168 /* if audio 0 interrupt */
169 if (ints & IF_AUD0) { 169 if (ints & IF_AUD0) {
170 amiga_custom.intreq = IF_AUD0; 170 amiga_custom.intreq = IF_AUD0;
171 m68k_handle_int(IRQ_AMIGA_AUD0, fp); 171 m68k_handle_int(IRQ_AMIGA_AUD0);
172 } 172 }
173 173
174 /* if audio 1 interrupt */ 174 /* if audio 1 interrupt */
175 if (ints & IF_AUD1) { 175 if (ints & IF_AUD1) {
176 amiga_custom.intreq = IF_AUD1; 176 amiga_custom.intreq = IF_AUD1;
177 m68k_handle_int(IRQ_AMIGA_AUD1, fp); 177 m68k_handle_int(IRQ_AMIGA_AUD1);
178 } 178 }
179 179
180 /* if audio 2 interrupt */ 180 /* if audio 2 interrupt */
181 if (ints & IF_AUD2) { 181 if (ints & IF_AUD2) {
182 amiga_custom.intreq = IF_AUD2; 182 amiga_custom.intreq = IF_AUD2;
183 m68k_handle_int(IRQ_AMIGA_AUD2, fp); 183 m68k_handle_int(IRQ_AMIGA_AUD2);
184 } 184 }
185 185
186 /* if audio 3 interrupt */ 186 /* if audio 3 interrupt */
187 if (ints & IF_AUD3) { 187 if (ints & IF_AUD3) {
188 amiga_custom.intreq = IF_AUD3; 188 amiga_custom.intreq = IF_AUD3;
189 m68k_handle_int(IRQ_AMIGA_AUD3, fp); 189 m68k_handle_int(IRQ_AMIGA_AUD3);
190 } 190 }
191 return IRQ_HANDLED; 191 return IRQ_HANDLED;
192} 192}
193 193
194static irqreturn_t ami_int5(int irq, void *dev_id, struct pt_regs *fp) 194static irqreturn_t ami_int5(int irq, void *dev_id)
195{ 195{
196 unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar; 196 unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar;
197 197
198 /* if serial receive buffer full interrupt */ 198 /* if serial receive buffer full interrupt */
199 if (ints & IF_RBF) { 199 if (ints & IF_RBF) {
200 /* acknowledge of IF_RBF must be done by the serial interrupt */ 200 /* acknowledge of IF_RBF must be done by the serial interrupt */
201 m68k_handle_int(IRQ_AMIGA_RBF, fp); 201 m68k_handle_int(IRQ_AMIGA_RBF);
202 } 202 }
203 203
204 /* if a disk sync interrupt */ 204 /* if a disk sync interrupt */
205 if (ints & IF_DSKSYN) { 205 if (ints & IF_DSKSYN) {
206 amiga_custom.intreq = IF_DSKSYN; 206 amiga_custom.intreq = IF_DSKSYN;
207 m68k_handle_int(IRQ_AMIGA_DSKSYN, fp); 207 m68k_handle_int(IRQ_AMIGA_DSKSYN);
208 } 208 }
209 return IRQ_HANDLED; 209 return IRQ_HANDLED;
210} 210}
diff --git a/arch/m68k/amiga/cia.c b/arch/m68k/amiga/cia.c
index dbad30054721..7a20058eb380 100644
--- a/arch/m68k/amiga/cia.c
+++ b/arch/m68k/amiga/cia.c
@@ -82,7 +82,7 @@ unsigned char cia_able_irq(struct ciabase *base, unsigned char mask)
82 return old; 82 return old;
83} 83}
84 84
85static irqreturn_t cia_handler(int irq, void *dev_id, struct pt_regs *fp) 85static irqreturn_t cia_handler(int irq, void *dev_id)
86{ 86{
87 struct ciabase *base = (struct ciabase *)dev_id; 87 struct ciabase *base = (struct ciabase *)dev_id;
88 int mach_irq; 88 int mach_irq;
@@ -93,7 +93,7 @@ static irqreturn_t cia_handler(int irq, void *dev_id, struct pt_regs *fp)
93 amiga_custom.intreq = base->int_mask; 93 amiga_custom.intreq = base->int_mask;
94 for (; ints; mach_irq++, ints >>= 1) { 94 for (; ints; mach_irq++, ints >>= 1) {
95 if (ints & 1) 95 if (ints & 1)
96 m68k_handle_int(mach_irq, fp); 96 m68k_handle_int(mach_irq);
97 } 97 }
98 return IRQ_HANDLED; 98 return IRQ_HANDLED;
99} 99}
diff --git a/arch/m68k/amiga/config.c b/arch/m68k/amiga/config.c
index 092e50d2cb13..6f63d62bd7d6 100644
--- a/arch/m68k/amiga/config.c
+++ b/arch/m68k/amiga/config.c
@@ -83,7 +83,7 @@ static char amiga_model_name[13] = "Amiga ";
83 83
84extern char m68k_debug_device[]; 84extern char m68k_debug_device[];
85 85
86static void amiga_sched_init(irqreturn_t (*handler)(int, void *, struct pt_regs *)); 86static void amiga_sched_init(irqreturn_t (*handler)(int, void *));
87/* amiga specific irq functions */ 87/* amiga specific irq functions */
88extern void amiga_init_IRQ (void); 88extern void amiga_init_IRQ (void);
89static void amiga_get_model(char *model); 89static void amiga_get_model(char *model);
@@ -487,8 +487,7 @@ void __init config_amiga(void)
487 487
488static unsigned short jiffy_ticks; 488static unsigned short jiffy_ticks;
489 489
490static void __init amiga_sched_init(irqreturn_t (*timer_routine)(int, void *, 490static void __init amiga_sched_init(irqreturn_t (*timer_routine)(int, void *))
491 struct pt_regs *))
492{ 491{
493 static struct resource sched_res = { 492 static struct resource sched_res = {
494 .name = "timer", .start = 0x00bfd400, .end = 0x00bfd5ff, 493 .name = "timer", .start = 0x00bfd400, .end = 0x00bfd5ff,
diff --git a/arch/m68k/apollo/config.c b/arch/m68k/apollo/config.c
index 6f4581575fb4..b2eea00796ac 100644
--- a/arch/m68k/apollo/config.c
+++ b/arch/m68k/apollo/config.c
@@ -25,7 +25,7 @@ u_long cpuctrl_physaddr;
25u_long timer_physaddr; 25u_long timer_physaddr;
26u_long apollo_model; 26u_long apollo_model;
27 27
28extern void dn_sched_init(irqreturn_t (*handler)(int,void *,struct pt_regs *)); 28extern void dn_sched_init(irqreturn_t (*handler)(int,void *));
29extern void dn_init_IRQ(void); 29extern void dn_init_IRQ(void);
30extern unsigned long dn_gettimeoffset(void); 30extern unsigned long dn_gettimeoffset(void);
31extern int dn_dummy_hwclk(int, struct rtc_time *); 31extern int dn_dummy_hwclk(int, struct rtc_time *);
@@ -38,7 +38,7 @@ extern irqreturn_t dn_process_int(int irq, struct pt_regs *fp);
38#ifdef CONFIG_HEARTBEAT 38#ifdef CONFIG_HEARTBEAT
39static void dn_heartbeat(int on); 39static void dn_heartbeat(int on);
40#endif 40#endif
41static irqreturn_t dn_timer_int(int irq,void *, struct pt_regs *); 41static irqreturn_t dn_timer_int(int irq,void *);
42static void dn_get_model(char *model); 42static void dn_get_model(char *model);
43static const char *apollo_models[] = { 43static const char *apollo_models[] = {
44 [APOLLO_DN3000-APOLLO_DN3000] = "DN3000 (Otter)", 44 [APOLLO_DN3000-APOLLO_DN3000] = "DN3000 (Otter)",
@@ -174,13 +174,13 @@ void config_apollo(void) {
174 174
175} 175}
176 176
177irqreturn_t dn_timer_int(int irq, void *dev_id, struct pt_regs *fp) 177irqreturn_t dn_timer_int(int irq, void *dev_id)
178{ 178{
179 irqreturn_t (*timer_handler)(int, void *, struct pt_regs *) = dev_id; 179 irqreturn_t (*timer_handler)(int, void *) = dev_id;
180 180
181 volatile unsigned char x; 181 volatile unsigned char x;
182 182
183 timer_handler(irq, dev_id, fp); 183 timer_handler(irq, dev_id);
184 184
185 x=*(volatile unsigned char *)(timer+3); 185 x=*(volatile unsigned char *)(timer+3);
186 x=*(volatile unsigned char *)(timer+5); 186 x=*(volatile unsigned char *)(timer+5);
@@ -188,8 +188,8 @@ irqreturn_t dn_timer_int(int irq, void *dev_id, struct pt_regs *fp)
188 return IRQ_HANDLED; 188 return IRQ_HANDLED;
189} 189}
190 190
191void dn_sched_init(irqreturn_t (*timer_routine)(int, void *, struct pt_regs *)) { 191void dn_sched_init(irqreturn_t (*timer_routine)(int, void *))
192 192{
193 /* program timer 1 */ 193 /* program timer 1 */
194 *(volatile unsigned char *)(timer+3)=0x01; 194 *(volatile unsigned char *)(timer+3)=0x01;
195 *(volatile unsigned char *)(timer+1)=0x40; 195 *(volatile unsigned char *)(timer+1)=0x40;
diff --git a/arch/m68k/apollo/dn_ints.c b/arch/m68k/apollo/dn_ints.c
index 9fe07803797b..4274af125998 100644
--- a/arch/m68k/apollo/dn_ints.c
+++ b/arch/m68k/apollo/dn_ints.c
@@ -6,7 +6,7 @@
6 6
7void dn_process_int(unsigned int irq, struct pt_regs *fp) 7void dn_process_int(unsigned int irq, struct pt_regs *fp)
8{ 8{
9 m68k_handle_int(irq, fp); 9 __m68k_handle_int(irq, fp);
10 10
11 *(volatile unsigned char *)(pica)=0x20; 11 *(volatile unsigned char *)(pica)=0x20;
12 *(volatile unsigned char *)(picb)=0x20; 12 *(volatile unsigned char *)(picb)=0x20;
diff --git a/arch/m68k/atari/config.c b/arch/m68k/atari/config.c
index b2079252a954..76760eebbbc5 100644
--- a/arch/m68k/atari/config.c
+++ b/arch/m68k/atari/config.c
@@ -62,7 +62,7 @@ static void atari_heartbeat( int on );
62#endif 62#endif
63 63
64/* atari specific timer functions (in time.c) */ 64/* atari specific timer functions (in time.c) */
65extern void atari_sched_init(irqreturn_t (*)(int, void *, struct pt_regs *)); 65extern void atari_sched_init(irqreturn_t (*)(int, void *));
66extern unsigned long atari_gettimeoffset (void); 66extern unsigned long atari_gettimeoffset (void);
67extern int atari_mste_hwclk (int, struct rtc_time *); 67extern int atari_mste_hwclk (int, struct rtc_time *);
68extern int atari_tt_hwclk (int, struct rtc_time *); 68extern int atari_tt_hwclk (int, struct rtc_time *);
diff --git a/arch/m68k/atari/stdma.c b/arch/m68k/atari/stdma.c
index 288f5e6a124e..5283c73d3f77 100644
--- a/arch/m68k/atari/stdma.c
+++ b/arch/m68k/atari/stdma.c
@@ -44,7 +44,7 @@
44 44
45static int stdma_locked; /* the semaphore */ 45static int stdma_locked; /* the semaphore */
46 /* int func to be called */ 46 /* int func to be called */
47static irqreturn_t (*stdma_isr)(int, void *, struct pt_regs *); 47static irqreturn_t (*stdma_isr)(int, void *);
48static void *stdma_isr_data; /* data passed to isr */ 48static void *stdma_isr_data; /* data passed to isr */
49static DECLARE_WAIT_QUEUE_HEAD(stdma_wait); /* wait queue for ST-DMA */ 49static DECLARE_WAIT_QUEUE_HEAD(stdma_wait); /* wait queue for ST-DMA */
50 50
@@ -53,7 +53,7 @@ static DECLARE_WAIT_QUEUE_HEAD(stdma_wait); /* wait queue for ST-DMA */
53 53
54/***************************** Prototypes *****************************/ 54/***************************** Prototypes *****************************/
55 55
56static irqreturn_t stdma_int (int irq, void *dummy, struct pt_regs *fp); 56static irqreturn_t stdma_int (int irq, void *dummy);
57 57
58/************************* End of Prototypes **************************/ 58/************************* End of Prototypes **************************/
59 59
@@ -75,8 +75,7 @@ static irqreturn_t stdma_int (int irq, void *dummy, struct pt_regs *fp);
75 * 75 *
76 */ 76 */
77 77
78void stdma_lock(irqreturn_t (*handler)(int, void *, struct pt_regs *), 78void stdma_lock(irqreturn_t (*handler)(int, void *), void *data)
79 void *data)
80{ 79{
81 unsigned long flags; 80 unsigned long flags;
82 81
@@ -188,9 +187,9 @@ void __init stdma_init(void)
188 * 187 *
189 */ 188 */
190 189
191static irqreturn_t stdma_int(int irq, void *dummy, struct pt_regs *fp) 190static irqreturn_t stdma_int(int irq, void *dummy)
192{ 191{
193 if (stdma_isr) 192 if (stdma_isr)
194 (*stdma_isr)(irq, stdma_isr_data, fp); 193 (*stdma_isr)(irq, stdma_isr_data);
195 return IRQ_HANDLED; 194 return IRQ_HANDLED;
196} 195}
diff --git a/arch/m68k/atari/time.c b/arch/m68k/atari/time.c
index e79bbc94216d..b8fe71cfc62c 100644
--- a/arch/m68k/atari/time.c
+++ b/arch/m68k/atari/time.c
@@ -20,7 +20,7 @@
20#include <asm/atariints.h> 20#include <asm/atariints.h>
21 21
22void __init 22void __init
23atari_sched_init(irqreturn_t (*timer_routine)(int, void *, struct pt_regs *)) 23atari_sched_init(irqreturn_t (*timer_routine)(int, void *))
24{ 24{
25 /* set Timer C data Register */ 25 /* set Timer C data Register */
26 mfp.tim_dt_c = INT_TICKS; 26 mfp.tim_dt_c = INT_TICKS;
diff --git a/arch/m68k/bvme6000/config.c b/arch/m68k/bvme6000/config.c
index d1e916ae55a8..df64efc940c9 100644
--- a/arch/m68k/bvme6000/config.c
+++ b/arch/m68k/bvme6000/config.c
@@ -38,7 +38,7 @@
38 38
39static void bvme6000_get_model(char *model); 39static void bvme6000_get_model(char *model);
40static int bvme6000_get_hardware_list(char *buffer); 40static int bvme6000_get_hardware_list(char *buffer);
41extern void bvme6000_sched_init(irqreturn_t (*handler)(int, void *, struct pt_regs *)); 41extern void bvme6000_sched_init(irqreturn_t (*handler)(int, void *));
42extern unsigned long bvme6000_gettimeoffset (void); 42extern unsigned long bvme6000_gettimeoffset (void);
43extern int bvme6000_hwclk (int, struct rtc_time *); 43extern int bvme6000_hwclk (int, struct rtc_time *);
44extern int bvme6000_set_clock_mmss (unsigned long); 44extern int bvme6000_set_clock_mmss (unsigned long);
@@ -52,7 +52,7 @@ static unsigned char bin2bcd (unsigned char b);
52/* Save tick handler routine pointer, will point to do_timer() in 52/* Save tick handler routine pointer, will point to do_timer() in
53 * kernel/sched.c, called via bvme6000_process_int() */ 53 * kernel/sched.c, called via bvme6000_process_int() */
54 54
55static irqreturn_t (*tick_handler)(int, void *, struct pt_regs *); 55static irqreturn_t (*tick_handler)(int, void *);
56 56
57 57
58int bvme6000_parse_bootinfo(const struct bi_record *bi) 58int bvme6000_parse_bootinfo(const struct bi_record *bi)
@@ -154,7 +154,7 @@ void __init config_bvme6000(void)
154} 154}
155 155
156 156
157irqreturn_t bvme6000_abort_int (int irq, void *dev_id, struct pt_regs *fp) 157irqreturn_t bvme6000_abort_int (int irq, void *dev_id)
158{ 158{
159 unsigned long *new = (unsigned long *)vectors; 159 unsigned long *new = (unsigned long *)vectors;
160 unsigned long *old = (unsigned long *)0xf8000000; 160 unsigned long *old = (unsigned long *)0xf8000000;
@@ -171,14 +171,14 @@ irqreturn_t bvme6000_abort_int (int irq, void *dev_id, struct pt_regs *fp)
171} 171}
172 172
173 173
174static irqreturn_t bvme6000_timer_int (int irq, void *dev_id, struct pt_regs *fp) 174static irqreturn_t bvme6000_timer_int (int irq, void *dev_id)
175{ 175{
176 volatile RtcPtr_t rtc = (RtcPtr_t)BVME_RTC_BASE; 176 volatile RtcPtr_t rtc = (RtcPtr_t)BVME_RTC_BASE;
177 unsigned char msr = rtc->msr & 0xc0; 177 unsigned char msr = rtc->msr & 0xc0;
178 178
179 rtc->msr = msr | 0x20; /* Ack the interrupt */ 179 rtc->msr = msr | 0x20; /* Ack the interrupt */
180 180
181 return tick_handler(irq, dev_id, fp); 181 return tick_handler(irq, dev_id);
182} 182}
183 183
184/* 184/*
@@ -190,7 +190,7 @@ static irqreturn_t bvme6000_timer_int (int irq, void *dev_id, struct pt_regs *fp
190 * so divide by 8 to get the microsecond result. 190 * so divide by 8 to get the microsecond result.
191 */ 191 */
192 192
193void bvme6000_sched_init (irqreturn_t (*timer_routine)(int, void *, struct pt_regs *)) 193void bvme6000_sched_init (irqreturn_t (*timer_routine)(int, void *))
194{ 194{
195 volatile RtcPtr_t rtc = (RtcPtr_t)BVME_RTC_BASE; 195 volatile RtcPtr_t rtc = (RtcPtr_t)BVME_RTC_BASE;
196 unsigned char msr = rtc->msr & 0xc0; 196 unsigned char msr = rtc->msr & 0xc0;
diff --git a/arch/m68k/hp300/time.c b/arch/m68k/hp300/time.c
index 7df05662b277..086058fd8383 100644
--- a/arch/m68k/hp300/time.c
+++ b/arch/m68k/hp300/time.c
@@ -36,15 +36,15 @@
36 36
37#define INTVAL ((10000 / 4) - 1) 37#define INTVAL ((10000 / 4) - 1)
38 38
39static irqreturn_t hp300_tick(int irq, void *dev_id, struct pt_regs *regs) 39static irqreturn_t hp300_tick(int irq, void *dev_id)
40{ 40{
41 unsigned long tmp; 41 unsigned long tmp;
42 irqreturn_t (*vector)(int, void *, struct pt_regs *) = dev_id; 42 irqreturn_t (*vector)(int, void *) = dev_id;
43 in_8(CLOCKBASE + CLKSR); 43 in_8(CLOCKBASE + CLKSR);
44 asm volatile ("movpw %1@(5),%0" : "=d" (tmp) : "a" (CLOCKBASE)); 44 asm volatile ("movpw %1@(5),%0" : "=d" (tmp) : "a" (CLOCKBASE));
45 /* Turn off the network and SCSI leds */ 45 /* Turn off the network and SCSI leds */
46 blinken_leds(0, 0xe0); 46 blinken_leds(0, 0xe0);
47 return vector(irq, NULL, regs); 47 return vector(irq, NULL);
48} 48}
49 49
50unsigned long hp300_gettimeoffset(void) 50unsigned long hp300_gettimeoffset(void)
@@ -63,7 +63,7 @@ unsigned long hp300_gettimeoffset(void)
63 return (USECS_PER_JIFFY * ticks) / INTVAL; 63 return (USECS_PER_JIFFY * ticks) / INTVAL;
64} 64}
65 65
66void __init hp300_sched_init(irqreturn_t (*vector)(int, void *, struct pt_regs *)) 66void __init hp300_sched_init(irqreturn_t (*vector)(int, void *))
67{ 67{
68 out_8(CLOCKBASE + CLKCR2, 0x1); /* select CR1 */ 68 out_8(CLOCKBASE + CLKCR2, 0x1); /* select CR1 */
69 out_8(CLOCKBASE + CLKCR1, 0x1); /* reset */ 69 out_8(CLOCKBASE + CLKCR1, 0x1); /* reset */
diff --git a/arch/m68k/hp300/time.h b/arch/m68k/hp300/time.h
index 8ef9987b49ab..ca66a039d6f2 100644
--- a/arch/m68k/hp300/time.h
+++ b/arch/m68k/hp300/time.h
@@ -1,4 +1,4 @@
1extern void hp300_sched_init(irqreturn_t (*vector)(int, void *, struct pt_regs *)); 1extern void hp300_sched_init(irqreturn_t (*vector)(int, void *));
2extern unsigned long hp300_gettimeoffset (void); 2extern unsigned long hp300_gettimeoffset (void);
3 3
4 4
diff --git a/arch/m68k/kernel/entry.S b/arch/m68k/kernel/entry.S
index 9083c8b7659f..34bf7bd126d2 100644
--- a/arch/m68k/kernel/entry.S
+++ b/arch/m68k/kernel/entry.S
@@ -205,7 +205,7 @@ ENTRY(auto_inthandler)
205 movel %sp,%sp@- 205 movel %sp,%sp@-
206 movel %d0,%sp@- | put vector # on stack 206 movel %d0,%sp@- | put vector # on stack
207auto_irqhandler_fixup = . + 2 207auto_irqhandler_fixup = . + 2
208 jsr m68k_handle_int | process the IRQ 208 jsr __m68k_handle_int | process the IRQ
209 addql #8,%sp | pop parameters off stack 209 addql #8,%sp | pop parameters off stack
210 210
211ret_from_interrupt: 211ret_from_interrupt:
@@ -239,7 +239,7 @@ user_irqvec_fixup = . + 2
239 movel %sp,%sp@- 239 movel %sp,%sp@-
240 movel %d0,%sp@- | put vector # on stack 240 movel %d0,%sp@- | put vector # on stack
241user_irqhandler_fixup = . + 2 241user_irqhandler_fixup = . + 2
242 jsr m68k_handle_int | process the IRQ 242 jsr __m68k_handle_int | process the IRQ
243 addql #8,%sp | pop parameters off stack 243 addql #8,%sp | pop parameters off stack
244 244
245 subqb #1,%curptr@(TASK_INFO+TINFO_PREEMPT+1) 245 subqb #1,%curptr@(TASK_INFO+TINFO_PREEMPT+1)
diff --git a/arch/m68k/kernel/ints.c b/arch/m68k/kernel/ints.c
index b33e37fb7b0e..6fa893fc5fd6 100644
--- a/arch/m68k/kernel/ints.c
+++ b/arch/m68k/kernel/ints.c
@@ -39,6 +39,7 @@
39#include <asm/page.h> 39#include <asm/page.h>
40#include <asm/machdep.h> 40#include <asm/machdep.h>
41#include <asm/cacheflush.h> 41#include <asm/cacheflush.h>
42#include <asm/irq_regs.h>
42 43
43#ifdef CONFIG_Q40 44#ifdef CONFIG_Q40
44#include <asm/q40ints.h> 45#include <asm/q40ints.h>
@@ -104,7 +105,7 @@ void __init init_IRQ(void)
104 * @handler: called from auto vector interrupts 105 * @handler: called from auto vector interrupts
105 * 106 *
106 * setup the handler to be called from auto vector interrupts instead of the 107 * setup the handler to be called from auto vector interrupts instead of the
107 * standard m68k_handle_int(), it will be called with irq numbers in the range 108 * standard __m68k_handle_int(), it will be called with irq numbers in the range
108 * from IRQ_AUTO_1 - IRQ_AUTO_7. 109 * from IRQ_AUTO_1 - IRQ_AUTO_7.
109 */ 110 */
110void __init m68k_setup_auto_interrupt(void (*handler)(unsigned int, struct pt_regs *)) 111void __init m68k_setup_auto_interrupt(void (*handler)(unsigned int, struct pt_regs *))
@@ -123,7 +124,7 @@ void __init m68k_setup_auto_interrupt(void (*handler)(unsigned int, struct pt_re
123 * setup user vector interrupts, this includes activating the specified range 124 * setup user vector interrupts, this includes activating the specified range
124 * of interrupts, only then these interrupts can be requested (note: this is 125 * of interrupts, only then these interrupts can be requested (note: this is
125 * different from auto vector interrupts). An optional handler can be installed 126 * different from auto vector interrupts). An optional handler can be installed
126 * to be called instead of the default m68k_handle_int(), it will be called 127 * to be called instead of the default __m68k_handle_int(), it will be called
127 * with irq numbers starting from IRQ_USER. 128 * with irq numbers starting from IRQ_USER.
128 */ 129 */
129void __init m68k_setup_user_interrupt(unsigned int vec, unsigned int cnt, 130void __init m68k_setup_user_interrupt(unsigned int vec, unsigned int cnt,
@@ -215,7 +216,7 @@ int setup_irq(unsigned int irq, struct irq_node *node)
215} 216}
216 217
217int request_irq(unsigned int irq, 218int request_irq(unsigned int irq,
218 irqreturn_t (*handler) (int, void *, struct pt_regs *), 219 irqreturn_t (*handler) (int, void *),
219 unsigned long flags, const char *devname, void *dev_id) 220 unsigned long flags, const char *devname, void *dev_id)
220{ 221{
221 struct irq_node *node; 222 struct irq_node *node;
@@ -379,18 +380,25 @@ unsigned int irq_canonicalize(unsigned int irq)
379 380
380EXPORT_SYMBOL(irq_canonicalize); 381EXPORT_SYMBOL(irq_canonicalize);
381 382
382asmlinkage void m68k_handle_int(unsigned int irq, struct pt_regs *regs) 383asmlinkage void m68k_handle_int(unsigned int irq)
383{ 384{
384 struct irq_node *node; 385 struct irq_node *node;
385
386 kstat_cpu(0).irqs[irq]++; 386 kstat_cpu(0).irqs[irq]++;
387 node = irq_list[irq]; 387 node = irq_list[irq];
388 do { 388 do {
389 node->handler(irq, node->dev_id, regs); 389 node->handler(irq, node->dev_id);
390 node = node->next; 390 node = node->next;
391 } while (node); 391 } while (node);
392} 392}
393 393
394asmlinkage void __m68k_handle_int(unsigned int irq, struct pt_regs *regs)
395{
396 struct pt_regs *old_regs;
397 old_regs = set_irq_regs(regs);
398 m68k_handle_int(irq);
399 set_irq_regs(old_regs);
400}
401
394asmlinkage void handle_badint(struct pt_regs *regs) 402asmlinkage void handle_badint(struct pt_regs *regs)
395{ 403{
396 kstat_cpu(0).irqs[0]++; 404 kstat_cpu(0).irqs[0]++;
diff --git a/arch/m68k/kernel/setup.c b/arch/m68k/kernel/setup.c
index f2d7ee0ee18c..869c4861346e 100644
--- a/arch/m68k/kernel/setup.c
+++ b/arch/m68k/kernel/setup.c
@@ -64,7 +64,7 @@ static char m68k_command_line[CL_SIZE];
64 64
65char m68k_debug_device[6] = ""; 65char m68k_debug_device[6] = "";
66 66
67void (*mach_sched_init) (irqreturn_t (*handler)(int, void *, struct pt_regs *)) __initdata = NULL; 67void (*mach_sched_init) (irqreturn_t (*handler)(int, void *)) __initdata = NULL;
68/* machine dependent irq functions */ 68/* machine dependent irq functions */
69void (*mach_init_IRQ) (void) __initdata = NULL; 69void (*mach_init_IRQ) (void) __initdata = NULL;
70void (*mach_get_model) (char *model); 70void (*mach_get_model) (char *model);
diff --git a/arch/m68k/kernel/time.c b/arch/m68k/kernel/time.c
index 28b2fefa4513..2a599c3ed787 100644
--- a/arch/m68k/kernel/time.c
+++ b/arch/m68k/kernel/time.c
@@ -21,6 +21,7 @@
21 21
22#include <asm/machdep.h> 22#include <asm/machdep.h>
23#include <asm/io.h> 23#include <asm/io.h>
24#include <asm/irq_regs.h>
24 25
25#include <linux/time.h> 26#include <linux/time.h>
26#include <linux/timex.h> 27#include <linux/timex.h>
@@ -37,13 +38,13 @@ static inline int set_rtc_mmss(unsigned long nowtime)
37 * timer_interrupt() needs to keep up the real-time clock, 38 * timer_interrupt() needs to keep up the real-time clock,
38 * as well as call the "do_timer()" routine every clocktick 39 * as well as call the "do_timer()" routine every clocktick
39 */ 40 */
40static irqreturn_t timer_interrupt(int irq, void *dummy, struct pt_regs * regs) 41static irqreturn_t timer_interrupt(int irq, void *dummy)
41{ 42{
42 do_timer(1); 43 do_timer(1);
43#ifndef CONFIG_SMP 44#ifndef CONFIG_SMP
44 update_process_times(user_mode(regs)); 45 update_process_times(user_mode(get_irq_regs()));
45#endif 46#endif
46 profile_tick(CPU_PROFILING, regs); 47 profile_tick(CPU_PROFILING);
47 48
48#ifdef CONFIG_HEARTBEAT 49#ifdef CONFIG_HEARTBEAT
49 /* use power LED as a heartbeat instead -- much more useful 50 /* use power LED as a heartbeat instead -- much more useful
diff --git a/arch/m68k/mac/baboon.c b/arch/m68k/mac/baboon.c
index 6eaa881793d1..a1c7ec706741 100644
--- a/arch/m68k/mac/baboon.c
+++ b/arch/m68k/mac/baboon.c
@@ -25,7 +25,7 @@
25int baboon_present,baboon_active; 25int baboon_present,baboon_active;
26volatile struct baboon *baboon; 26volatile struct baboon *baboon;
27 27
28irqreturn_t baboon_irq(int, void *, struct pt_regs *); 28irqreturn_t baboon_irq(int, void *);
29 29
30#if 0 30#if 0
31extern int macide_ack_intr(struct ata_channel *); 31extern int macide_ack_intr(struct ata_channel *);
@@ -64,7 +64,7 @@ void __init baboon_register_interrupts(void)
64 * Baboon interrupt handler. This works a lot like a VIA. 64 * Baboon interrupt handler. This works a lot like a VIA.
65 */ 65 */
66 66
67irqreturn_t baboon_irq(int irq, void *dev_id, struct pt_regs *regs) 67irqreturn_t baboon_irq(int irq, void *dev_id)
68{ 68{
69 int irq_bit,i; 69 int irq_bit,i;
70 unsigned char events; 70 unsigned char events;
@@ -81,7 +81,7 @@ irqreturn_t baboon_irq(int irq, void *dev_id, struct pt_regs *regs)
81 for (i = 0, irq_bit = 1 ; i < 3 ; i++, irq_bit <<= 1) { 81 for (i = 0, irq_bit = 1 ; i < 3 ; i++, irq_bit <<= 1) {
82 if (events & irq_bit/* & baboon_active*/) { 82 if (events & irq_bit/* & baboon_active*/) {
83 baboon_active &= ~irq_bit; 83 baboon_active &= ~irq_bit;
84 m68k_handle_int(IRQ_BABOON_0 + i, regs); 84 m68k_handle_int(IRQ_BABOON_0 + i);
85 baboon_active |= irq_bit; 85 baboon_active |= irq_bit;
86 baboon->mb_ifr &= ~irq_bit; 86 baboon->mb_ifr &= ~irq_bit;
87 } 87 }
diff --git a/arch/m68k/mac/config.c b/arch/m68k/mac/config.c
index 85dda1095b1f..029bae65c5d1 100644
--- a/arch/m68k/mac/config.c
+++ b/arch/m68k/mac/config.c
@@ -72,7 +72,7 @@ extern int show_mac_interrupts(struct seq_file *, void *);
72extern void iop_preinit(void); 72extern void iop_preinit(void);
73extern void iop_init(void); 73extern void iop_init(void);
74extern void via_init(void); 74extern void via_init(void);
75extern void via_init_clock(irqreturn_t (*func)(int, void *, struct pt_regs *)); 75extern void via_init_clock(irqreturn_t (*func)(int, void *));
76extern void via_flush_cache(void); 76extern void via_flush_cache(void);
77extern void oss_init(void); 77extern void oss_init(void);
78extern void psc_init(void); 78extern void psc_init(void);
@@ -88,7 +88,7 @@ extern void mac_debugging_long(int, long);
88 88
89static void mac_get_model(char *str); 89static void mac_get_model(char *str);
90 90
91static void mac_sched_init(irqreturn_t (*vector)(int, void *, struct pt_regs *)) 91static void mac_sched_init(irqreturn_t (*vector)(int, void *))
92{ 92{
93 via_init_clock(vector); 93 via_init_clock(vector);
94} 94}
diff --git a/arch/m68k/mac/iop.c b/arch/m68k/mac/iop.c
index bc657b1057a7..0cea21f58192 100644
--- a/arch/m68k/mac/iop.c
+++ b/arch/m68k/mac/iop.c
@@ -132,7 +132,7 @@ static int iop_get_proc_info(char *, char **, off_t, int);
132 132
133struct listener { 133struct listener {
134 const char *devname; 134 const char *devname;
135 void (*handler)(struct iop_msg *, struct pt_regs *); 135 void (*handler)(struct iop_msg *);
136}; 136};
137 137
138/* 138/*
@@ -152,7 +152,7 @@ static struct iop_msg iop_msg_pool[NUM_IOP_MSGS];
152static struct iop_msg *iop_send_queue[NUM_IOPS][NUM_IOP_CHAN]; 152static struct iop_msg *iop_send_queue[NUM_IOPS][NUM_IOP_CHAN];
153static struct listener iop_listeners[NUM_IOPS][NUM_IOP_CHAN]; 153static struct listener iop_listeners[NUM_IOPS][NUM_IOP_CHAN];
154 154
155irqreturn_t iop_ism_irq(int, void *, struct pt_regs *); 155irqreturn_t iop_ism_irq(int, void *);
156 156
157extern void oss_irq_enable(int); 157extern void oss_irq_enable(int);
158 158
@@ -342,7 +342,7 @@ void __init iop_register_interrupts(void)
342 */ 342 */
343 343
344int iop_listen(uint iop_num, uint chan, 344int iop_listen(uint iop_num, uint chan,
345 void (*handler)(struct iop_msg *, struct pt_regs *), 345 void (*handler)(struct iop_msg *),
346 const char *devname) 346 const char *devname)
347{ 347{
348 if ((iop_num >= NUM_IOPS) || !iop_base[iop_num]) return -EINVAL; 348 if ((iop_num >= NUM_IOPS) || !iop_base[iop_num]) return -EINVAL;
@@ -407,7 +407,7 @@ static void iop_do_send(struct iop_msg *msg)
407 * has gone into the IOP_MSG_COMPLETE state. 407 * has gone into the IOP_MSG_COMPLETE state.
408 */ 408 */
409 409
410static void iop_handle_send(uint iop_num, uint chan, struct pt_regs *regs) 410static void iop_handle_send(uint iop_num, uint chan)
411{ 411{
412 volatile struct mac_iop *iop = iop_base[iop_num]; 412 volatile struct mac_iop *iop = iop_base[iop_num];
413 struct iop_msg *msg,*msg2; 413 struct iop_msg *msg,*msg2;
@@ -426,7 +426,7 @@ static void iop_handle_send(uint iop_num, uint chan, struct pt_regs *regs)
426 for (i = 0 ; i < IOP_MSG_LEN ; i++, offset++) { 426 for (i = 0 ; i < IOP_MSG_LEN ; i++, offset++) {
427 msg->reply[i] = iop_readb(iop, offset); 427 msg->reply[i] = iop_readb(iop, offset);
428 } 428 }
429 if (msg->handler) (*msg->handler)(msg, regs); 429 if (msg->handler) (*msg->handler)(msg);
430 msg2 = msg; 430 msg2 = msg;
431 msg = msg->next; 431 msg = msg->next;
432 iop_free_msg(msg2); 432 iop_free_msg(msg2);
@@ -440,7 +440,7 @@ static void iop_handle_send(uint iop_num, uint chan, struct pt_regs *regs)
440 * gone into the IOP_MSG_NEW state. 440 * gone into the IOP_MSG_NEW state.
441 */ 441 */
442 442
443static void iop_handle_recv(uint iop_num, uint chan, struct pt_regs *regs) 443static void iop_handle_recv(uint iop_num, uint chan)
444{ 444{
445 volatile struct mac_iop *iop = iop_base[iop_num]; 445 volatile struct mac_iop *iop = iop_base[iop_num];
446 int i,offset; 446 int i,offset;
@@ -468,7 +468,7 @@ static void iop_handle_recv(uint iop_num, uint chan, struct pt_regs *regs)
468 /* the message ourselves to avoid possible stalls. */ 468 /* the message ourselves to avoid possible stalls. */
469 469
470 if (msg->handler) { 470 if (msg->handler) {
471 (*msg->handler)(msg, regs); 471 (*msg->handler)(msg);
472 } else { 472 } else {
473#ifdef DEBUG_IOP 473#ifdef DEBUG_IOP
474 printk("iop_handle_recv: unclaimed message on iop %d channel %d\n", iop_num, chan); 474 printk("iop_handle_recv: unclaimed message on iop %d channel %d\n", iop_num, chan);
@@ -492,7 +492,7 @@ static void iop_handle_recv(uint iop_num, uint chan, struct pt_regs *regs)
492 492
493int iop_send_message(uint iop_num, uint chan, void *privdata, 493int iop_send_message(uint iop_num, uint chan, void *privdata,
494 uint msg_len, __u8 *msg_data, 494 uint msg_len, __u8 *msg_data,
495 void (*handler)(struct iop_msg *, struct pt_regs *)) 495 void (*handler)(struct iop_msg *))
496{ 496{
497 struct iop_msg *msg, *q; 497 struct iop_msg *msg, *q;
498 498
@@ -584,7 +584,7 @@ __u8 *iop_compare_code(uint iop_num, __u8 *code_start,
584 * Handle an ISM IOP interrupt 584 * Handle an ISM IOP interrupt
585 */ 585 */
586 586
587irqreturn_t iop_ism_irq(int irq, void *dev_id, struct pt_regs *regs) 587irqreturn_t iop_ism_irq(int irq, void *dev_id)
588{ 588{
589 uint iop_num = (uint) dev_id; 589 uint iop_num = (uint) dev_id;
590 volatile struct mac_iop *iop = iop_base[iop_num]; 590 volatile struct mac_iop *iop = iop_base[iop_num];
@@ -608,7 +608,7 @@ irqreturn_t iop_ism_irq(int irq, void *dev_id, struct pt_regs *regs)
608 printk(" %02X", state); 608 printk(" %02X", state);
609#endif 609#endif
610 if (state == IOP_MSG_COMPLETE) { 610 if (state == IOP_MSG_COMPLETE) {
611 iop_handle_send(iop_num, i, regs); 611 iop_handle_send(iop_num, i);
612 } 612 }
613 } 613 }
614#ifdef DEBUG_IOP 614#ifdef DEBUG_IOP
@@ -628,7 +628,7 @@ irqreturn_t iop_ism_irq(int irq, void *dev_id, struct pt_regs *regs)
628 printk(" %02X", state); 628 printk(" %02X", state);
629#endif 629#endif
630 if (state == IOP_MSG_NEW) { 630 if (state == IOP_MSG_NEW) {
631 iop_handle_recv(iop_num, i, regs); 631 iop_handle_recv(iop_num, i);
632 } 632 }
633 } 633 }
634#ifdef DEBUG_IOP 634#ifdef DEBUG_IOP
diff --git a/arch/m68k/mac/macints.c b/arch/m68k/mac/macints.c
index 694b14bb0de1..f6fcd754d8f6 100644
--- a/arch/m68k/mac/macints.c
+++ b/arch/m68k/mac/macints.c
@@ -133,6 +133,7 @@
133#include <asm/hwtest.h> 133#include <asm/hwtest.h>
134#include <asm/errno.h> 134#include <asm/errno.h>
135#include <asm/macints.h> 135#include <asm/macints.h>
136#include <asm/irq_regs.h>
136 137
137#define DEBUG_SPURIOUS 138#define DEBUG_SPURIOUS
138#define SHUTUP_SONIC 139#define SHUTUP_SONIC
@@ -208,8 +209,8 @@ static void scc_irq_disable(unsigned int);
208 * console_loglevel determines NMI handler function 209 * console_loglevel determines NMI handler function
209 */ 210 */
210 211
211irqreturn_t mac_nmi_handler(int, void *, struct pt_regs *); 212irqreturn_t mac_nmi_handler(int, void *);
212irqreturn_t mac_debug_handler(int, void *, struct pt_regs *); 213irqreturn_t mac_debug_handler(int, void *);
213 214
214/* #define DEBUG_MACINTS */ 215/* #define DEBUG_MACINTS */
215 216
@@ -393,7 +394,7 @@ int mac_irq_pending(unsigned int irq)
393 394
394static int num_debug[8]; 395static int num_debug[8];
395 396
396irqreturn_t mac_debug_handler(int irq, void *dev_id, struct pt_regs *regs) 397irqreturn_t mac_debug_handler(int irq, void *dev_id)
397{ 398{
398 if (num_debug[irq] < 10) { 399 if (num_debug[irq] < 10) {
399 printk("DEBUG: Unexpected IRQ %d\n", irq); 400 printk("DEBUG: Unexpected IRQ %d\n", irq);
@@ -405,7 +406,7 @@ irqreturn_t mac_debug_handler(int irq, void *dev_id, struct pt_regs *regs)
405static int in_nmi; 406static int in_nmi;
406static volatile int nmi_hold; 407static volatile int nmi_hold;
407 408
408irqreturn_t mac_nmi_handler(int irq, void *dev_id, struct pt_regs *fp) 409irqreturn_t mac_nmi_handler(int irq, void *dev_id)
409{ 410{
410 int i; 411 int i;
411 /* 412 /*
@@ -432,6 +433,7 @@ irqreturn_t mac_nmi_handler(int irq, void *dev_id, struct pt_regs *fp)
432 433
433 if (console_loglevel >= 8) { 434 if (console_loglevel >= 8) {
434#if 0 435#if 0
436 struct pt_regs *fp = get_irq_regs();
435 show_state(); 437 show_state();
436 printk("PC: %08lx\nSR: %04x SP: %p\n", fp->pc, fp->sr, fp); 438 printk("PC: %08lx\nSR: %04x SP: %p\n", fp->pc, fp->sr, fp);
437 printk("d0: %08lx d1: %08lx d2: %08lx d3: %08lx\n", 439 printk("d0: %08lx d1: %08lx d2: %08lx d3: %08lx\n",
@@ -479,7 +481,7 @@ static void scc_irq_disable(unsigned int irq)
479 * here is cleaner than hacking it into drivers/char/macserial.c. 481 * here is cleaner than hacking it into drivers/char/macserial.c.
480 */ 482 */
481 483
482void mac_scc_dispatch(int irq, void *dev_id, struct pt_regs *regs) 484void mac_scc_dispatch(int irq, void *dev_id)
483{ 485{
484 volatile unsigned char *scc = (unsigned char *) mac_bi_data.sccbase + 2; 486 volatile unsigned char *scc = (unsigned char *) mac_bi_data.sccbase + 2;
485 unsigned char reg; 487 unsigned char reg;
@@ -504,7 +506,7 @@ void mac_scc_dispatch(int irq, void *dev_id, struct pt_regs *regs)
504 /* pretty much kill the system. */ 506 /* pretty much kill the system. */
505 507
506 if (reg & 0x38) 508 if (reg & 0x38)
507 m68k_handle_int(IRQ_SCCA, regs); 509 m68k_handle_int(IRQ_SCCA);
508 if (reg & 0x07) 510 if (reg & 0x07)
509 m68k_handle_int(IRQ_SCCB, regs); 511 m68k_handle_int(IRQ_SCCB);
510} 512}
diff --git a/arch/m68k/mac/oss.c b/arch/m68k/mac/oss.c
index 63e04365191f..63690819565a 100644
--- a/arch/m68k/mac/oss.c
+++ b/arch/m68k/mac/oss.c
@@ -30,11 +30,11 @@
30int oss_present; 30int oss_present;
31volatile struct mac_oss *oss; 31volatile struct mac_oss *oss;
32 32
33irqreturn_t oss_irq(int, void *, struct pt_regs *); 33irqreturn_t oss_irq(int, void *);
34irqreturn_t oss_nubus_irq(int, void *, struct pt_regs *); 34irqreturn_t oss_nubus_irq(int, void *);
35 35
36extern irqreturn_t via1_irq(int, void *, struct pt_regs *); 36extern irqreturn_t via1_irq(int, void *);
37extern irqreturn_t mac_scc_dispatch(int, void *, struct pt_regs *); 37extern irqreturn_t mac_scc_dispatch(int, void *);
38 38
39/* 39/*
40 * Initialize the OSS 40 * Initialize the OSS
@@ -92,7 +92,7 @@ void __init oss_nubus_init(void)
92 * and SCSI; everything else is routed to its own autovector IRQ. 92 * and SCSI; everything else is routed to its own autovector IRQ.
93 */ 93 */
94 94
95irqreturn_t oss_irq(int irq, void *dev_id, struct pt_regs *regs) 95irqreturn_t oss_irq(int irq, void *dev_id)
96{ 96{
97 int events; 97 int events;
98 98
@@ -113,7 +113,7 @@ irqreturn_t oss_irq(int irq, void *dev_id, struct pt_regs *regs)
113 oss->irq_pending &= ~OSS_IP_SOUND; 113 oss->irq_pending &= ~OSS_IP_SOUND;
114 } else if (events & OSS_IP_SCSI) { 114 } else if (events & OSS_IP_SCSI) {
115 oss->irq_level[OSS_SCSI] = OSS_IRQLEV_DISABLED; 115 oss->irq_level[OSS_SCSI] = OSS_IRQLEV_DISABLED;
116 m68k_handle_int(IRQ_MAC_SCSI, regs); 116 m68k_handle_int(IRQ_MAC_SCSI);
117 oss->irq_pending &= ~OSS_IP_SCSI; 117 oss->irq_pending &= ~OSS_IP_SCSI;
118 oss->irq_level[OSS_SCSI] = OSS_IRQLEV_SCSI; 118 oss->irq_level[OSS_SCSI] = OSS_IRQLEV_SCSI;
119 } else { 119 } else {
@@ -128,7 +128,7 @@ irqreturn_t oss_irq(int irq, void *dev_id, struct pt_regs *regs)
128 * Unlike the VIA/RBV this is on its own autovector interrupt level. 128 * Unlike the VIA/RBV this is on its own autovector interrupt level.
129 */ 129 */
130 130
131irqreturn_t oss_nubus_irq(int irq, void *dev_id, struct pt_regs *regs) 131irqreturn_t oss_nubus_irq(int irq, void *dev_id)
132{ 132{
133 int events, irq_bit, i; 133 int events, irq_bit, i;
134 134
@@ -146,7 +146,7 @@ irqreturn_t oss_nubus_irq(int irq, void *dev_id, struct pt_regs *regs)
146 for (i = 0, irq_bit = 1 ; i < 6 ; i++, irq_bit <<= 1) { 146 for (i = 0, irq_bit = 1 ; i < 6 ; i++, irq_bit <<= 1) {
147 if (events & irq_bit) { 147 if (events & irq_bit) {
148 oss->irq_level[i] = OSS_IRQLEV_DISABLED; 148 oss->irq_level[i] = OSS_IRQLEV_DISABLED;
149 m68k_handle_int(NUBUS_SOURCE_BASE + i, regs); 149 m68k_handle_int(NUBUS_SOURCE_BASE + i);
150 oss->irq_pending &= ~irq_bit; 150 oss->irq_pending &= ~irq_bit;
151 oss->irq_level[i] = OSS_IRQLEV_NUBUS; 151 oss->irq_level[i] = OSS_IRQLEV_NUBUS;
152 } 152 }
diff --git a/arch/m68k/mac/psc.c b/arch/m68k/mac/psc.c
index e26218091755..15378a5878c9 100644
--- a/arch/m68k/mac/psc.c
+++ b/arch/m68k/mac/psc.c
@@ -30,7 +30,7 @@
30int psc_present; 30int psc_present;
31volatile __u8 *psc; 31volatile __u8 *psc;
32 32
33irqreturn_t psc_irq(int, void *, struct pt_regs *); 33irqreturn_t psc_irq(int, void *);
34 34
35/* 35/*
36 * Debugging dump, used in various places to see what's going on. 36 * Debugging dump, used in various places to see what's going on.
@@ -127,7 +127,7 @@ void __init psc_register_interrupts(void)
127 * PSC interrupt handler. It's a lot like the VIA interrupt handler. 127 * PSC interrupt handler. It's a lot like the VIA interrupt handler.
128 */ 128 */
129 129
130irqreturn_t psc_irq(int irq, void *dev_id, struct pt_regs *regs) 130irqreturn_t psc_irq(int irq, void *dev_id)
131{ 131{
132 int pIFR = pIFRbase + ((int) dev_id); 132 int pIFR = pIFRbase + ((int) dev_id);
133 int pIER = pIERbase + ((int) dev_id); 133 int pIER = pIERbase + ((int) dev_id);
@@ -149,7 +149,7 @@ irqreturn_t psc_irq(int irq, void *dev_id, struct pt_regs *regs)
149 for (i = 0, irq_bit = 1 ; i < 4 ; i++, irq_bit <<= 1) { 149 for (i = 0, irq_bit = 1 ; i < 4 ; i++, irq_bit <<= 1) {
150 if (events & irq_bit) { 150 if (events & irq_bit) {
151 psc_write_byte(pIER, irq_bit); 151 psc_write_byte(pIER, irq_bit);
152 m68k_handle_int(base_irq + i, regs); 152 m68k_handle_int(base_irq + i);
153 psc_write_byte(pIFR, irq_bit); 153 psc_write_byte(pIFR, irq_bit);
154 psc_write_byte(pIER, irq_bit | 0x80); 154 psc_write_byte(pIER, irq_bit | 0x80);
155 } 155 }
diff --git a/arch/m68k/mac/via.c b/arch/m68k/mac/via.c
index c4aa345d544e..9b6c80c4bbe2 100644
--- a/arch/m68k/mac/via.c
+++ b/arch/m68k/mac/via.c
@@ -63,14 +63,14 @@ static int gIER,gIFR,gBufA,gBufB;
63static int nubus_active; 63static int nubus_active;
64 64
65void via_debug_dump(void); 65void via_debug_dump(void);
66irqreturn_t via1_irq(int, void *, struct pt_regs *); 66irqreturn_t via1_irq(int, void *);
67irqreturn_t via2_irq(int, void *, struct pt_regs *); 67irqreturn_t via2_irq(int, void *);
68irqreturn_t via_nubus_irq(int, void *, struct pt_regs *); 68irqreturn_t via_nubus_irq(int, void *);
69void via_irq_enable(int irq); 69void via_irq_enable(int irq);
70void via_irq_disable(int irq); 70void via_irq_disable(int irq);
71void via_irq_clear(int irq); 71void via_irq_clear(int irq);
72 72
73extern irqreturn_t mac_scc_dispatch(int, void *, struct pt_regs *); 73extern irqreturn_t mac_scc_dispatch(int, void *);
74extern int oss_present; 74extern int oss_present;
75 75
76/* 76/*
@@ -235,7 +235,7 @@ void __init via_init(void)
235 * Start the 100 Hz clock 235 * Start the 100 Hz clock
236 */ 236 */
237 237
238void __init via_init_clock(irqreturn_t (*func)(int, void *, struct pt_regs *)) 238void __init via_init_clock(irqreturn_t (*func)(int, void *))
239{ 239{
240 via1[vACR] |= 0x40; 240 via1[vACR] |= 0x40;
241 via1[vT1LL] = MAC_CLOCK_LOW; 241 via1[vT1LL] = MAC_CLOCK_LOW;
@@ -412,7 +412,7 @@ void __init via_nubus_init(void)
412 * the machspec interrupt number after clearing the interrupt. 412 * the machspec interrupt number after clearing the interrupt.
413 */ 413 */
414 414
415irqreturn_t via1_irq(int irq, void *dev_id, struct pt_regs *regs) 415irqreturn_t via1_irq(int irq, void *dev_id)
416{ 416{
417 int irq_bit, i; 417 int irq_bit, i;
418 unsigned char events, mask; 418 unsigned char events, mask;
@@ -424,7 +424,7 @@ irqreturn_t via1_irq(int irq, void *dev_id, struct pt_regs *regs)
424 for (i = 0, irq_bit = 1 ; i < 7 ; i++, irq_bit <<= 1) 424 for (i = 0, irq_bit = 1 ; i < 7 ; i++, irq_bit <<= 1)
425 if (events & irq_bit) { 425 if (events & irq_bit) {
426 via1[vIER] = irq_bit; 426 via1[vIER] = irq_bit;
427 m68k_handle_int(VIA1_SOURCE_BASE + i, regs); 427 m68k_handle_int(VIA1_SOURCE_BASE + i);
428 via1[vIFR] = irq_bit; 428 via1[vIFR] = irq_bit;
429 via1[vIER] = irq_bit | 0x80; 429 via1[vIER] = irq_bit | 0x80;
430 } 430 }
@@ -439,14 +439,14 @@ irqreturn_t via1_irq(int irq, void *dev_id, struct pt_regs *regs)
439 /* No, it won't be set. that's why we're doing this. */ 439 /* No, it won't be set. that's why we're doing this. */
440 via_irq_disable(IRQ_MAC_NUBUS); 440 via_irq_disable(IRQ_MAC_NUBUS);
441 via_irq_clear(IRQ_MAC_NUBUS); 441 via_irq_clear(IRQ_MAC_NUBUS);
442 m68k_handle_int(IRQ_MAC_NUBUS, regs); 442 m68k_handle_int(IRQ_MAC_NUBUS);
443 via_irq_enable(IRQ_MAC_NUBUS); 443 via_irq_enable(IRQ_MAC_NUBUS);
444 } 444 }
445#endif 445#endif
446 return IRQ_HANDLED; 446 return IRQ_HANDLED;
447} 447}
448 448
449irqreturn_t via2_irq(int irq, void *dev_id, struct pt_regs *regs) 449irqreturn_t via2_irq(int irq, void *dev_id)
450{ 450{
451 int irq_bit, i; 451 int irq_bit, i;
452 unsigned char events, mask; 452 unsigned char events, mask;
@@ -459,7 +459,7 @@ irqreturn_t via2_irq(int irq, void *dev_id, struct pt_regs *regs)
459 if (events & irq_bit) { 459 if (events & irq_bit) {
460 via2[gIER] = irq_bit; 460 via2[gIER] = irq_bit;
461 via2[gIFR] = irq_bit | rbv_clear; 461 via2[gIFR] = irq_bit | rbv_clear;
462 m68k_handle_int(VIA2_SOURCE_BASE + i, regs); 462 m68k_handle_int(VIA2_SOURCE_BASE + i);
463 via2[gIER] = irq_bit | 0x80; 463 via2[gIER] = irq_bit | 0x80;
464 } 464 }
465 return IRQ_HANDLED; 465 return IRQ_HANDLED;
@@ -470,7 +470,7 @@ irqreturn_t via2_irq(int irq, void *dev_id, struct pt_regs *regs)
470 * VIA2 dispatcher as a fast interrupt handler. 470 * VIA2 dispatcher as a fast interrupt handler.
471 */ 471 */
472 472
473irqreturn_t via_nubus_irq(int irq, void *dev_id, struct pt_regs *regs) 473irqreturn_t via_nubus_irq(int irq, void *dev_id)
474{ 474{
475 int irq_bit, i; 475 int irq_bit, i;
476 unsigned char events; 476 unsigned char events;
@@ -481,7 +481,7 @@ irqreturn_t via_nubus_irq(int irq, void *dev_id, struct pt_regs *regs)
481 for (i = 0, irq_bit = 1 ; i < 7 ; i++, irq_bit <<= 1) { 481 for (i = 0, irq_bit = 1 ; i < 7 ; i++, irq_bit <<= 1) {
482 if (events & irq_bit) { 482 if (events & irq_bit) {
483 via_irq_disable(NUBUS_SOURCE_BASE + i); 483 via_irq_disable(NUBUS_SOURCE_BASE + i);
484 m68k_handle_int(NUBUS_SOURCE_BASE + i, regs); 484 m68k_handle_int(NUBUS_SOURCE_BASE + i);
485 via_irq_enable(NUBUS_SOURCE_BASE + i); 485 via_irq_enable(NUBUS_SOURCE_BASE + i);
486 } 486 }
487 } 487 }
diff --git a/arch/m68k/mvme147/config.c b/arch/m68k/mvme147/config.c
index 0cd0e5bddcee..c864d6415180 100644
--- a/arch/m68k/mvme147/config.c
+++ b/arch/m68k/mvme147/config.c
@@ -38,7 +38,7 @@
38 38
39static void mvme147_get_model(char *model); 39static void mvme147_get_model(char *model);
40static int mvme147_get_hardware_list(char *buffer); 40static int mvme147_get_hardware_list(char *buffer);
41extern void mvme147_sched_init(irqreturn_t (*handler)(int, void *, struct pt_regs *)); 41extern void mvme147_sched_init(irqreturn_t (*handler)(int, void *));
42extern unsigned long mvme147_gettimeoffset (void); 42extern unsigned long mvme147_gettimeoffset (void);
43extern int mvme147_hwclk (int, struct rtc_time *); 43extern int mvme147_hwclk (int, struct rtc_time *);
44extern int mvme147_set_clock_mmss (unsigned long); 44extern int mvme147_set_clock_mmss (unsigned long);
@@ -51,7 +51,7 @@ static int bcd2int (unsigned char b);
51/* Save tick handler routine pointer, will point to do_timer() in 51/* Save tick handler routine pointer, will point to do_timer() in
52 * kernel/sched.c, called via mvme147_process_int() */ 52 * kernel/sched.c, called via mvme147_process_int() */
53 53
54irqreturn_t (*tick_handler)(int, void *, struct pt_regs *); 54irqreturn_t (*tick_handler)(int, void *);
55 55
56 56
57int mvme147_parse_bootinfo(const struct bi_record *bi) 57int mvme147_parse_bootinfo(const struct bi_record *bi)
@@ -114,15 +114,15 @@ void __init config_mvme147(void)
114 114
115/* Using pcc tick timer 1 */ 115/* Using pcc tick timer 1 */
116 116
117static irqreturn_t mvme147_timer_int (int irq, void *dev_id, struct pt_regs *fp) 117static irqreturn_t mvme147_timer_int (int irq, void *dev_id)
118{ 118{
119 m147_pcc->t1_int_cntrl = PCC_TIMER_INT_CLR; 119 m147_pcc->t1_int_cntrl = PCC_TIMER_INT_CLR;
120 m147_pcc->t1_int_cntrl = PCC_INT_ENAB|PCC_LEVEL_TIMER1; 120 m147_pcc->t1_int_cntrl = PCC_INT_ENAB|PCC_LEVEL_TIMER1;
121 return tick_handler(irq, dev_id, fp); 121 return tick_handler(irq, dev_id);
122} 122}
123 123
124 124
125void mvme147_sched_init (irqreturn_t (*timer_routine)(int, void *, struct pt_regs *)) 125void mvme147_sched_init (irqreturn_t (*timer_routine)(int, void *))
126{ 126{
127 tick_handler = timer_routine; 127 tick_handler = timer_routine;
128 request_irq (PCC_IRQ_TIMER1, mvme147_timer_int, 128 request_irq (PCC_IRQ_TIMER1, mvme147_timer_int,
diff --git a/arch/m68k/mvme16x/config.c b/arch/m68k/mvme16x/config.c
index ce2727ed1bc0..2c91cee17093 100644
--- a/arch/m68k/mvme16x/config.c
+++ b/arch/m68k/mvme16x/config.c
@@ -42,7 +42,7 @@ static MK48T08ptr_t volatile rtc = (MK48T08ptr_t)MVME_RTC_BASE;
42 42
43static void mvme16x_get_model(char *model); 43static void mvme16x_get_model(char *model);
44static int mvme16x_get_hardware_list(char *buffer); 44static int mvme16x_get_hardware_list(char *buffer);
45extern void mvme16x_sched_init(irqreturn_t (*handler)(int, void *, struct pt_regs *)); 45extern void mvme16x_sched_init(irqreturn_t (*handler)(int, void *));
46extern unsigned long mvme16x_gettimeoffset (void); 46extern unsigned long mvme16x_gettimeoffset (void);
47extern int mvme16x_hwclk (int, struct rtc_time *); 47extern int mvme16x_hwclk (int, struct rtc_time *);
48extern int mvme16x_set_clock_mmss (unsigned long); 48extern int mvme16x_set_clock_mmss (unsigned long);
@@ -54,7 +54,7 @@ int bcd2int (unsigned char b);
54/* Save tick handler routine pointer, will point to do_timer() in 54/* Save tick handler routine pointer, will point to do_timer() in
55 * kernel/sched.c, called via mvme16x_process_int() */ 55 * kernel/sched.c, called via mvme16x_process_int() */
56 56
57static irqreturn_t (*tick_handler)(int, void *, struct pt_regs *); 57static irqreturn_t (*tick_handler)(int, void *);
58 58
59 59
60unsigned short mvme16x_config; 60unsigned short mvme16x_config;
@@ -190,7 +190,7 @@ void __init config_mvme16x(void)
190 } 190 }
191} 191}
192 192
193static irqreturn_t mvme16x_abort_int (int irq, void *dev_id, struct pt_regs *fp) 193static irqreturn_t mvme16x_abort_int (int irq, void *dev_id)
194{ 194{
195 p_bdid p = &mvme_bdid; 195 p_bdid p = &mvme_bdid;
196 unsigned long *new = (unsigned long *)vectors; 196 unsigned long *new = (unsigned long *)vectors;
@@ -218,13 +218,13 @@ static irqreturn_t mvme16x_abort_int (int irq, void *dev_id, struct pt_regs *fp)
218 return IRQ_HANDLED; 218 return IRQ_HANDLED;
219} 219}
220 220
221static irqreturn_t mvme16x_timer_int (int irq, void *dev_id, struct pt_regs *fp) 221static irqreturn_t mvme16x_timer_int (int irq, void *dev_id)
222{ 222{
223 *(volatile unsigned char *)0xfff4201b |= 8; 223 *(volatile unsigned char *)0xfff4201b |= 8;
224 return tick_handler(irq, dev_id, fp); 224 return tick_handler(irq, dev_id);
225} 225}
226 226
227void mvme16x_sched_init (irqreturn_t (*timer_routine)(int, void *, struct pt_regs *)) 227void mvme16x_sched_init (irqreturn_t (*timer_routine)(int, void *))
228{ 228{
229 p_bdid p = &mvme_bdid; 229 p_bdid p = &mvme_bdid;
230 int irq; 230 int irq;
diff --git a/arch/m68k/q40/config.c b/arch/m68k/q40/config.c
index 9a1827876408..5123f693948f 100644
--- a/arch/m68k/q40/config.c
+++ b/arch/m68k/q40/config.c
@@ -39,7 +39,7 @@ extern irqreturn_t q40_process_int (int level, struct pt_regs *regs);
39extern void q40_init_IRQ (void); 39extern void q40_init_IRQ (void);
40static void q40_get_model(char *model); 40static void q40_get_model(char *model);
41static int q40_get_hardware_list(char *buffer); 41static int q40_get_hardware_list(char *buffer);
42extern void q40_sched_init(irqreturn_t (*handler)(int, void *, struct pt_regs *)); 42extern void q40_sched_init(irqreturn_t (*handler)(int, void *));
43 43
44extern unsigned long q40_gettimeoffset (void); 44extern unsigned long q40_gettimeoffset (void);
45extern int q40_hwclk (int, struct rtc_time *); 45extern int q40_hwclk (int, struct rtc_time *);
diff --git a/arch/m68k/q40/q40ints.c b/arch/m68k/q40/q40ints.c
index 472f41c4158b..4a4ee4dfa6f1 100644
--- a/arch/m68k/q40/q40ints.c
+++ b/arch/m68k/q40/q40ints.c
@@ -125,9 +125,9 @@ void q40_mksound(unsigned int hz, unsigned int ticks)
125 sound_ticks = ticks << 1; 125 sound_ticks = ticks << 1;
126} 126}
127 127
128static irqreturn_t (*q40_timer_routine)(int, void *, struct pt_regs *); 128static irqreturn_t (*q40_timer_routine)(int, void *);
129 129
130static irqreturn_t q40_timer_int (int irq, void * dev, struct pt_regs * regs) 130static irqreturn_t q40_timer_int (int irq, void * dev)
131{ 131{
132 ql_ticks = ql_ticks ? 0 : 1; 132 ql_ticks = ql_ticks ? 0 : 1;
133 if (sound_ticks) { 133 if (sound_ticks) {
@@ -138,11 +138,11 @@ static irqreturn_t q40_timer_int (int irq, void * dev, struct pt_regs * regs)
138 } 138 }
139 139
140 if (!ql_ticks) 140 if (!ql_ticks)
141 q40_timer_routine(irq, dev, regs); 141 q40_timer_routine(irq, dev);
142 return IRQ_HANDLED; 142 return IRQ_HANDLED;
143} 143}
144 144
145void q40_sched_init (irqreturn_t (*timer_routine)(int, void *, struct pt_regs *)) 145void q40_sched_init (irqreturn_t (*timer_routine)(int, void *))
146{ 146{
147 int timer_irq; 147 int timer_irq;
148 148
@@ -218,11 +218,11 @@ static void q40_irq_handler(unsigned int irq, struct pt_regs *fp)
218 switch (irq) { 218 switch (irq) {
219 case 4: 219 case 4:
220 case 6: 220 case 6:
221 m68k_handle_int(Q40_IRQ_SAMPLE, fp); 221 __m68k_handle_int(Q40_IRQ_SAMPLE, fp);
222 return; 222 return;
223 } 223 }
224 if (mir & Q40_IRQ_FRAME_MASK) { 224 if (mir & Q40_IRQ_FRAME_MASK) {
225 m68k_handle_int(Q40_IRQ_FRAME, fp); 225 __m68k_handle_int(Q40_IRQ_FRAME, fp);
226 master_outb(-1, FRAME_CLEAR_REG); 226 master_outb(-1, FRAME_CLEAR_REG);
227 } 227 }
228 if ((mir & Q40_IRQ_SER_MASK) || (mir & Q40_IRQ_EXT_MASK)) { 228 if ((mir & Q40_IRQ_SER_MASK) || (mir & Q40_IRQ_EXT_MASK)) {
@@ -257,7 +257,7 @@ static void q40_irq_handler(unsigned int irq, struct pt_regs *fp)
257 goto iirq; 257 goto iirq;
258 } 258 }
259 q40_state[irq] |= IRQ_INPROGRESS; 259 q40_state[irq] |= IRQ_INPROGRESS;
260 m68k_handle_int(irq, fp); 260 __m68k_handle_int(irq, fp);
261 q40_state[irq] &= ~IRQ_INPROGRESS; 261 q40_state[irq] &= ~IRQ_INPROGRESS;
262 262
263 /* naively enable everything, if that fails than */ 263 /* naively enable everything, if that fails than */
@@ -288,7 +288,7 @@ static void q40_irq_handler(unsigned int irq, struct pt_regs *fp)
288 mir = master_inb(IIRQ_REG); 288 mir = master_inb(IIRQ_REG);
289 /* should test whether keyboard irq is really enabled, doing it in defhand */ 289 /* should test whether keyboard irq is really enabled, doing it in defhand */
290 if (mir & Q40_IRQ_KEYB_MASK) 290 if (mir & Q40_IRQ_KEYB_MASK)
291 m68k_handle_int(Q40_IRQ_KEYBOARD, fp); 291 __m68k_handle_int(Q40_IRQ_KEYBOARD, fp);
292 292
293 return; 293 return;
294} 294}
diff --git a/arch/m68k/sun3/config.c b/arch/m68k/sun3/config.c
index d09d03b3d956..db930f9070ef 100644
--- a/arch/m68k/sun3/config.c
+++ b/arch/m68k/sun3/config.c
@@ -162,7 +162,7 @@ void __init config_sun3(void)
162 sun3_bootmem_alloc(memory_start, memory_end); 162 sun3_bootmem_alloc(memory_start, memory_end);
163} 163}
164 164
165void __init sun3_sched_init(irqreturn_t (*timer_routine)(int, void *, struct pt_regs *)) 165void __init sun3_sched_init(irqreturn_t (*timer_routine)(int, void *))
166{ 166{
167 sun3_disable_interrupts(); 167 sun3_disable_interrupts();
168 intersil_clock->cmd_reg=(INTERSIL_RUN|INTERSIL_INT_DISABLE|INTERSIL_24H_MODE); 168 intersil_clock->cmd_reg=(INTERSIL_RUN|INTERSIL_INT_DISABLE|INTERSIL_24H_MODE);
diff --git a/arch/m68k/sun3/sun3ints.c b/arch/m68k/sun3/sun3ints.c
index dc4ea7e074a6..baf74e8de8b5 100644
--- a/arch/m68k/sun3/sun3ints.c
+++ b/arch/m68k/sun3/sun3ints.c
@@ -15,6 +15,7 @@
15#include <asm/intersil.h> 15#include <asm/intersil.h>
16#include <asm/oplib.h> 16#include <asm/oplib.h>
17#include <asm/sun3ints.h> 17#include <asm/sun3ints.h>
18#include <asm/irq_regs.h>
18#include <linux/seq_file.h> 19#include <linux/seq_file.h>
19 20
20extern void sun3_leds (unsigned char); 21extern void sun3_leds (unsigned char);
@@ -48,7 +49,7 @@ void sun3_disable_irq(unsigned int irq)
48 *sun3_intreg &= ~(1 << irq); 49 *sun3_intreg &= ~(1 << irq);
49} 50}
50 51
51static irqreturn_t sun3_int7(int irq, void *dev_id, struct pt_regs *fp) 52static irqreturn_t sun3_int7(int irq, void *dev_id)
52{ 53{
53 *sun3_intreg |= (1 << irq); 54 *sun3_intreg |= (1 << irq);
54 if (!(kstat_cpu(0).irqs[irq] % 2000)) 55 if (!(kstat_cpu(0).irqs[irq] % 2000))
@@ -56,7 +57,7 @@ static irqreturn_t sun3_int7(int irq, void *dev_id, struct pt_regs *fp)
56 return IRQ_HANDLED; 57 return IRQ_HANDLED;
57} 58}
58 59
59static irqreturn_t sun3_int5(int irq, void *dev_id, struct pt_regs *fp) 60static irqreturn_t sun3_int5(int irq, void *dev_id)
60{ 61{
61#ifdef CONFIG_SUN3 62#ifdef CONFIG_SUN3
62 intersil_clear(); 63 intersil_clear();
@@ -67,14 +68,14 @@ static irqreturn_t sun3_int5(int irq, void *dev_id, struct pt_regs *fp)
67#endif 68#endif
68 do_timer(1); 69 do_timer(1);
69#ifndef CONFIG_SMP 70#ifndef CONFIG_SMP
70 update_process_times(user_mode(fp)); 71 update_process_times(user_mode(get_irq_regs()));
71#endif 72#endif
72 if (!(kstat_cpu(0).irqs[irq] % 20)) 73 if (!(kstat_cpu(0).irqs[irq] % 20))
73 sun3_leds(led_pattern[(kstat_cpu(0).irqs[irq] % 160) / 20]); 74 sun3_leds(led_pattern[(kstat_cpu(0).irqs[irq] % 160) / 20]);
74 return IRQ_HANDLED; 75 return IRQ_HANDLED;
75} 76}
76 77
77static irqreturn_t sun3_vec255(int irq, void *dev_id, struct pt_regs *fp) 78static irqreturn_t sun3_vec255(int irq, void *dev_id)
78{ 79{
79// intersil_clear(); 80// intersil_clear();
80 return IRQ_HANDLED; 81 return IRQ_HANDLED;
@@ -84,7 +85,7 @@ static void sun3_inthandle(unsigned int irq, struct pt_regs *fp)
84{ 85{
85 *sun3_intreg &= ~(1 << irq); 86 *sun3_intreg &= ~(1 << irq);
86 87
87 m68k_handle_int(irq, fp); 88 __m68k_handle_int(irq, fp);
88} 89}
89 90
90static struct irq_controller sun3_irq_controller = { 91static struct irq_controller sun3_irq_controller = {
diff --git a/arch/m68k/sun3x/time.c b/arch/m68k/sun3x/time.c
index 6f4204fbecd7..33eb1ecc888a 100644
--- a/arch/m68k/sun3x/time.c
+++ b/arch/m68k/sun3x/time.c
@@ -90,7 +90,7 @@ static void sun3x_timer_tick(int irq, void *dev_id, struct pt_regs *regs)
90} 90}
91#endif 91#endif
92 92
93void __init sun3x_sched_init(irqreturn_t (*vector)(int, void *, struct pt_regs *)) 93void __init sun3x_sched_init(irqreturn_t (*vector)(int, void *))
94{ 94{
95 95
96 sun3_disable_interrupts(); 96 sun3_disable_interrupts();
diff --git a/arch/m68k/sun3x/time.h b/arch/m68k/sun3x/time.h
index e7e43b4ec4a1..e39079c781d8 100644
--- a/arch/m68k/sun3x/time.h
+++ b/arch/m68k/sun3x/time.h
@@ -3,7 +3,7 @@
3 3
4extern int sun3x_hwclk(int set, struct rtc_time *t); 4extern int sun3x_hwclk(int set, struct rtc_time *t);
5unsigned long sun3x_gettimeoffset (void); 5unsigned long sun3x_gettimeoffset (void);
6void sun3x_sched_init(irqreturn_t (*vector)(int, void *, struct pt_regs *)); 6void sun3x_sched_init(irqreturn_t (*vector)(int, void *));
7 7
8struct mostek_dt { 8struct mostek_dt {
9 volatile unsigned char csr; 9 volatile unsigned char csr;