Commit 2850bc273776cbb1b510c5828e9e456dffb50a32

Authored by Al Viro
Committed by Linus Torvalds
1 parent 00079e04fe

[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>

Showing 44 changed files with 176 additions and 169 deletions Side-by-side Diff

arch/m68k/amiga/amiints.c
... ... @@ -47,10 +47,10 @@
47 47  
48 48 static void amiga_enable_irq(unsigned int irq);
49 49 static void amiga_disable_irq(unsigned int irq);
50   -static irqreturn_t ami_int1(int irq, void *dev_id, struct pt_regs *fp);
51   -static irqreturn_t ami_int3(int irq, void *dev_id, struct pt_regs *fp);
52   -static irqreturn_t ami_int4(int irq, void *dev_id, struct pt_regs *fp);
53   -static irqreturn_t ami_int5(int irq, void *dev_id, struct pt_regs *fp);
  50 +static irqreturn_t ami_int1(int irq, void *dev_id);
  51 +static irqreturn_t ami_int3(int irq, void *dev_id);
  52 +static irqreturn_t ami_int4(int irq, void *dev_id);
  53 +static irqreturn_t ami_int5(int irq, void *dev_id);
54 54  
55 55 static struct irq_controller amiga_irq_controller = {
56 56 .name = "amiga",
57 57  
58 58  
59 59  
60 60  
61 61  
62 62  
63 63  
64 64  
65 65  
66 66  
67 67  
68 68  
69 69  
70 70  
71 71  
... ... @@ -113,98 +113,98 @@
113 113 * The builtin Amiga hardware interrupt handlers.
114 114 */
115 115  
116   -static irqreturn_t ami_int1(int irq, void *dev_id, struct pt_regs *fp)
  116 +static irqreturn_t ami_int1(int irq, void *dev_id)
117 117 {
118 118 unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar;
119 119  
120 120 /* if serial transmit buffer empty, interrupt */
121 121 if (ints & IF_TBE) {
122 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 126 /* if floppy disk transfer complete, interrupt */
127 127 if (ints & IF_DSKBLK) {
128 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 132 /* if software interrupt set, interrupt */
133 133 if (ints & IF_SOFT) {
134 134 amiga_custom.intreq = IF_SOFT;
135   - m68k_handle_int(IRQ_AMIGA_SOFT, fp);
  135 + m68k_handle_int(IRQ_AMIGA_SOFT);
136 136 }
137 137 return IRQ_HANDLED;
138 138 }
139 139  
140   -static irqreturn_t ami_int3(int irq, void *dev_id, struct pt_regs *fp)
  140 +static irqreturn_t ami_int3(int irq, void *dev_id)
141 141 {
142 142 unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar;
143 143  
144 144 /* if a blitter interrupt */
145 145 if (ints & IF_BLIT) {
146 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 150 /* if a copper interrupt */
151 151 if (ints & IF_COPER) {
152 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 156 /* if a vertical blank interrupt */
157 157 if (ints & IF_VERTB) {
158 158 amiga_custom.intreq = IF_VERTB;
159   - m68k_handle_int(IRQ_AMIGA_VERTB, fp);
  159 + m68k_handle_int(IRQ_AMIGA_VERTB);
160 160 }
161 161 return IRQ_HANDLED;
162 162 }
163 163  
164   -static irqreturn_t ami_int4(int irq, void *dev_id, struct pt_regs *fp)
  164 +static irqreturn_t ami_int4(int irq, void *dev_id)
165 165 {
166 166 unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar;
167 167  
168 168 /* if audio 0 interrupt */
169 169 if (ints & IF_AUD0) {
170 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 174 /* if audio 1 interrupt */
175 175 if (ints & IF_AUD1) {
176 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 180 /* if audio 2 interrupt */
181 181 if (ints & IF_AUD2) {
182 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 186 /* if audio 3 interrupt */
187 187 if (ints & IF_AUD3) {
188 188 amiga_custom.intreq = IF_AUD3;
189   - m68k_handle_int(IRQ_AMIGA_AUD3, fp);
  189 + m68k_handle_int(IRQ_AMIGA_AUD3);
190 190 }
191 191 return IRQ_HANDLED;
192 192 }
193 193  
194   -static irqreturn_t ami_int5(int irq, void *dev_id, struct pt_regs *fp)
  194 +static irqreturn_t ami_int5(int irq, void *dev_id)
195 195 {
196 196 unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar;
197 197  
198 198 /* if serial receive buffer full interrupt */
199 199 if (ints & IF_RBF) {
200 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 204 /* if a disk sync interrupt */
205 205 if (ints & IF_DSKSYN) {
206 206 amiga_custom.intreq = IF_DSKSYN;
207   - m68k_handle_int(IRQ_AMIGA_DSKSYN, fp);
  207 + m68k_handle_int(IRQ_AMIGA_DSKSYN);
208 208 }
209 209 return IRQ_HANDLED;
210 210 }
arch/m68k/amiga/cia.c
... ... @@ -82,7 +82,7 @@
82 82 return old;
83 83 }
84 84  
85   -static irqreturn_t cia_handler(int irq, void *dev_id, struct pt_regs *fp)
  85 +static irqreturn_t cia_handler(int irq, void *dev_id)
86 86 {
87 87 struct ciabase *base = (struct ciabase *)dev_id;
88 88 int mach_irq;
... ... @@ -93,7 +93,7 @@
93 93 amiga_custom.intreq = base->int_mask;
94 94 for (; ints; mach_irq++, ints >>= 1) {
95 95 if (ints & 1)
96   - m68k_handle_int(mach_irq, fp);
  96 + m68k_handle_int(mach_irq);
97 97 }
98 98 return IRQ_HANDLED;
99 99 }
arch/m68k/amiga/config.c
... ... @@ -83,7 +83,7 @@
83 83  
84 84 extern char m68k_debug_device[];
85 85  
86   -static void amiga_sched_init(irqreturn_t (*handler)(int, void *, struct pt_regs *));
  86 +static void amiga_sched_init(irqreturn_t (*handler)(int, void *));
87 87 /* amiga specific irq functions */
88 88 extern void amiga_init_IRQ (void);
89 89 static void amiga_get_model(char *model);
... ... @@ -487,8 +487,7 @@
487 487  
488 488 static unsigned short jiffy_ticks;
489 489  
490   -static void __init amiga_sched_init(irqreturn_t (*timer_routine)(int, void *,
491   - struct pt_regs *))
  490 +static void __init amiga_sched_init(irqreturn_t (*timer_routine)(int, void *))
492 491 {
493 492 static struct resource sched_res = {
494 493 .name = "timer", .start = 0x00bfd400, .end = 0x00bfd5ff,
arch/m68k/apollo/config.c
... ... @@ -25,7 +25,7 @@
25 25 u_long timer_physaddr;
26 26 u_long apollo_model;
27 27  
28   -extern void dn_sched_init(irqreturn_t (*handler)(int,void *,struct pt_regs *));
  28 +extern void dn_sched_init(irqreturn_t (*handler)(int,void *));
29 29 extern void dn_init_IRQ(void);
30 30 extern unsigned long dn_gettimeoffset(void);
31 31 extern int dn_dummy_hwclk(int, struct rtc_time *);
... ... @@ -38,7 +38,7 @@
38 38 #ifdef CONFIG_HEARTBEAT
39 39 static void dn_heartbeat(int on);
40 40 #endif
41   -static irqreturn_t dn_timer_int(int irq,void *, struct pt_regs *);
  41 +static irqreturn_t dn_timer_int(int irq,void *);
42 42 static void dn_get_model(char *model);
43 43 static const char *apollo_models[] = {
44 44 [APOLLO_DN3000-APOLLO_DN3000] = "DN3000 (Otter)",
45 45  
46 46  
... ... @@ -174,13 +174,13 @@
174 174  
175 175 }
176 176  
177   -irqreturn_t dn_timer_int(int irq, void *dev_id, struct pt_regs *fp)
  177 +irqreturn_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 181 volatile unsigned char x;
182 182  
183   - timer_handler(irq, dev_id, fp);
  183 + timer_handler(irq, dev_id);
184 184  
185 185 x=*(volatile unsigned char *)(timer+3);
186 186 x=*(volatile unsigned char *)(timer+5);
... ... @@ -188,8 +188,8 @@
188 188 return IRQ_HANDLED;
189 189 }
190 190  
191   -void dn_sched_init(irqreturn_t (*timer_routine)(int, void *, struct pt_regs *)) {
192   -
  191 +void dn_sched_init(irqreturn_t (*timer_routine)(int, void *))
  192 +{
193 193 /* program timer 1 */
194 194 *(volatile unsigned char *)(timer+3)=0x01;
195 195 *(volatile unsigned char *)(timer+1)=0x40;
arch/m68k/apollo/dn_ints.c
... ... @@ -6,7 +6,7 @@
6 6  
7 7 void 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 11 *(volatile unsigned char *)(pica)=0x20;
12 12 *(volatile unsigned char *)(picb)=0x20;
arch/m68k/atari/config.c
... ... @@ -62,7 +62,7 @@
62 62 #endif
63 63  
64 64 /* atari specific timer functions (in time.c) */
65   -extern void atari_sched_init(irqreturn_t (*)(int, void *, struct pt_regs *));
  65 +extern void atari_sched_init(irqreturn_t (*)(int, void *));
66 66 extern unsigned long atari_gettimeoffset (void);
67 67 extern int atari_mste_hwclk (int, struct rtc_time *);
68 68 extern int atari_tt_hwclk (int, struct rtc_time *);
arch/m68k/atari/stdma.c
... ... @@ -44,7 +44,7 @@
44 44  
45 45 static int stdma_locked; /* the semaphore */
46 46 /* int func to be called */
47   -static irqreturn_t (*stdma_isr)(int, void *, struct pt_regs *);
  47 +static irqreturn_t (*stdma_isr)(int, void *);
48 48 static void *stdma_isr_data; /* data passed to isr */
49 49 static DECLARE_WAIT_QUEUE_HEAD(stdma_wait); /* wait queue for ST-DMA */
50 50  
... ... @@ -53,7 +53,7 @@
53 53  
54 54 /***************************** Prototypes *****************************/
55 55  
56   -static irqreturn_t stdma_int (int irq, void *dummy, struct pt_regs *fp);
  56 +static irqreturn_t stdma_int (int irq, void *dummy);
57 57  
58 58 /************************* End of Prototypes **************************/
59 59  
... ... @@ -75,8 +75,7 @@
75 75 *
76 76 */
77 77  
78   -void stdma_lock(irqreturn_t (*handler)(int, void *, struct pt_regs *),
79   - void *data)
  78 +void stdma_lock(irqreturn_t (*handler)(int, void *), void *data)
80 79 {
81 80 unsigned long flags;
82 81  
83 82  
... ... @@ -188,10 +187,10 @@
188 187 *
189 188 */
190 189  
191   -static irqreturn_t stdma_int(int irq, void *dummy, struct pt_regs *fp)
  190 +static irqreturn_t stdma_int(int irq, void *dummy)
192 191 {
193 192 if (stdma_isr)
194   - (*stdma_isr)(irq, stdma_isr_data, fp);
  193 + (*stdma_isr)(irq, stdma_isr_data);
195 194 return IRQ_HANDLED;
196 195 }
arch/m68k/atari/time.c
... ... @@ -20,7 +20,7 @@
20 20 #include <asm/atariints.h>
21 21  
22 22 void __init
23   -atari_sched_init(irqreturn_t (*timer_routine)(int, void *, struct pt_regs *))
  23 +atari_sched_init(irqreturn_t (*timer_routine)(int, void *))
24 24 {
25 25 /* set Timer C data Register */
26 26 mfp.tim_dt_c = INT_TICKS;
arch/m68k/bvme6000/config.c
... ... @@ -38,7 +38,7 @@
38 38  
39 39 static void bvme6000_get_model(char *model);
40 40 static int bvme6000_get_hardware_list(char *buffer);
41   -extern void bvme6000_sched_init(irqreturn_t (*handler)(int, void *, struct pt_regs *));
  41 +extern void bvme6000_sched_init(irqreturn_t (*handler)(int, void *));
42 42 extern unsigned long bvme6000_gettimeoffset (void);
43 43 extern int bvme6000_hwclk (int, struct rtc_time *);
44 44 extern int bvme6000_set_clock_mmss (unsigned long);
... ... @@ -52,7 +52,7 @@
52 52 /* Save tick handler routine pointer, will point to do_timer() in
53 53 * kernel/sched.c, called via bvme6000_process_int() */
54 54  
55   -static irqreturn_t (*tick_handler)(int, void *, struct pt_regs *);
  55 +static irqreturn_t (*tick_handler)(int, void *);
56 56  
57 57  
58 58 int bvme6000_parse_bootinfo(const struct bi_record *bi)
... ... @@ -154,7 +154,7 @@
154 154 }
155 155  
156 156  
157   -irqreturn_t bvme6000_abort_int (int irq, void *dev_id, struct pt_regs *fp)
  157 +irqreturn_t bvme6000_abort_int (int irq, void *dev_id)
158 158 {
159 159 unsigned long *new = (unsigned long *)vectors;
160 160 unsigned long *old = (unsigned long *)0xf8000000;
161 161  
... ... @@ -171,14 +171,14 @@
171 171 }
172 172  
173 173  
174   -static irqreturn_t bvme6000_timer_int (int irq, void *dev_id, struct pt_regs *fp)
  174 +static irqreturn_t bvme6000_timer_int (int irq, void *dev_id)
175 175 {
176 176 volatile RtcPtr_t rtc = (RtcPtr_t)BVME_RTC_BASE;
177 177 unsigned char msr = rtc->msr & 0xc0;
178 178  
179 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 @@
190 190 * so divide by 8 to get the microsecond result.
191 191 */
192 192  
193   -void bvme6000_sched_init (irqreturn_t (*timer_routine)(int, void *, struct pt_regs *))
  193 +void bvme6000_sched_init (irqreturn_t (*timer_routine)(int, void *))
194 194 {
195 195 volatile RtcPtr_t rtc = (RtcPtr_t)BVME_RTC_BASE;
196 196 unsigned char msr = rtc->msr & 0xc0;
arch/m68k/hp300/time.c
... ... @@ -36,15 +36,15 @@
36 36  
37 37 #define INTVAL ((10000 / 4) - 1)
38 38  
39   -static irqreturn_t hp300_tick(int irq, void *dev_id, struct pt_regs *regs)
  39 +static irqreturn_t hp300_tick(int irq, void *dev_id)
40 40 {
41 41 unsigned long tmp;
42   - irqreturn_t (*vector)(int, void *, struct pt_regs *) = dev_id;
  42 + irqreturn_t (*vector)(int, void *) = dev_id;
43 43 in_8(CLOCKBASE + CLKSR);
44 44 asm volatile ("movpw %1@(5),%0" : "=d" (tmp) : "a" (CLOCKBASE));
45 45 /* Turn off the network and SCSI leds */
46 46 blinken_leds(0, 0xe0);
47   - return vector(irq, NULL, regs);
  47 + return vector(irq, NULL);
48 48 }
49 49  
50 50 unsigned long hp300_gettimeoffset(void)
... ... @@ -63,7 +63,7 @@
63 63 return (USECS_PER_JIFFY * ticks) / INTVAL;
64 64 }
65 65  
66   -void __init hp300_sched_init(irqreturn_t (*vector)(int, void *, struct pt_regs *))
  66 +void __init hp300_sched_init(irqreturn_t (*vector)(int, void *))
67 67 {
68 68 out_8(CLOCKBASE + CLKCR2, 0x1); /* select CR1 */
69 69 out_8(CLOCKBASE + CLKCR1, 0x1); /* reset */
arch/m68k/hp300/time.h
1   -extern void hp300_sched_init(irqreturn_t (*vector)(int, void *, struct pt_regs *));
  1 +extern void hp300_sched_init(irqreturn_t (*vector)(int, void *));
2 2 extern unsigned long hp300_gettimeoffset (void);
arch/m68k/kernel/entry.S
... ... @@ -205,7 +205,7 @@
205 205 movel %sp,%sp@-
206 206 movel %d0,%sp@- | put vector # on stack
207 207 auto_irqhandler_fixup = . + 2
208   - jsr m68k_handle_int | process the IRQ
  208 + jsr __m68k_handle_int | process the IRQ
209 209 addql #8,%sp | pop parameters off stack
210 210  
211 211 ret_from_interrupt:
... ... @@ -239,7 +239,7 @@
239 239 movel %sp,%sp@-
240 240 movel %d0,%sp@- | put vector # on stack
241 241 user_irqhandler_fixup = . + 2
242   - jsr m68k_handle_int | process the IRQ
  242 + jsr __m68k_handle_int | process the IRQ
243 243 addql #8,%sp | pop parameters off stack
244 244  
245 245 subqb #1,%curptr@(TASK_INFO+TINFO_PREEMPT+1)
arch/m68k/kernel/ints.c
... ... @@ -39,6 +39,7 @@
39 39 #include <asm/page.h>
40 40 #include <asm/machdep.h>
41 41 #include <asm/cacheflush.h>
  42 +#include <asm/irq_regs.h>
42 43  
43 44 #ifdef CONFIG_Q40
44 45 #include <asm/q40ints.h>
... ... @@ -104,7 +105,7 @@
104 105 * @handler: called from auto vector interrupts
105 106 *
106 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 109 * from IRQ_AUTO_1 - IRQ_AUTO_7.
109 110 */
110 111 void __init m68k_setup_auto_interrupt(void (*handler)(unsigned int, struct pt_regs *))
... ... @@ -123,7 +124,7 @@
123 124 * setup user vector interrupts, this includes activating the specified range
124 125 * of interrupts, only then these interrupts can be requested (note: this is
125 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 128 * with irq numbers starting from IRQ_USER.
128 129 */
129 130 void __init m68k_setup_user_interrupt(unsigned int vec, unsigned int cnt,
... ... @@ -215,7 +216,7 @@
215 216 }
216 217  
217 218 int request_irq(unsigned int irq,
218   - irqreturn_t (*handler) (int, void *, struct pt_regs *),
  219 + irqreturn_t (*handler) (int, void *),
219 220 unsigned long flags, const char *devname, void *dev_id)
220 221 {
221 222 struct irq_node *node;
222 223  
223 224  
224 225  
... ... @@ -379,16 +380,23 @@
379 380  
380 381 EXPORT_SYMBOL(irq_canonicalize);
381 382  
382   -asmlinkage void m68k_handle_int(unsigned int irq, struct pt_regs *regs)
  383 +asmlinkage void m68k_handle_int(unsigned int irq)
383 384 {
384 385 struct irq_node *node;
385   -
386 386 kstat_cpu(0).irqs[irq]++;
387 387 node = irq_list[irq];
388 388 do {
389   - node->handler(irq, node->dev_id, regs);
  389 + node->handler(irq, node->dev_id);
390 390 node = node->next;
391 391 } while (node);
  392 +}
  393 +
  394 +asmlinkage 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);
392 400 }
393 401  
394 402 asmlinkage void handle_badint(struct pt_regs *regs)
arch/m68k/kernel/setup.c
... ... @@ -64,7 +64,7 @@
64 64  
65 65 char m68k_debug_device[6] = "";
66 66  
67   -void (*mach_sched_init) (irqreturn_t (*handler)(int, void *, struct pt_regs *)) __initdata = NULL;
  67 +void (*mach_sched_init) (irqreturn_t (*handler)(int, void *)) __initdata = NULL;
68 68 /* machine dependent irq functions */
69 69 void (*mach_init_IRQ) (void) __initdata = NULL;
70 70 void (*mach_get_model) (char *model);
arch/m68k/kernel/time.c
... ... @@ -21,6 +21,7 @@
21 21  
22 22 #include <asm/machdep.h>
23 23 #include <asm/io.h>
  24 +#include <asm/irq_regs.h>
24 25  
25 26 #include <linux/time.h>
26 27 #include <linux/timex.h>
27 28  
28 29  
... ... @@ -37,13 +38,13 @@
37 38 * timer_interrupt() needs to keep up the real-time clock,
38 39 * as well as call the "do_timer()" routine every clocktick
39 40 */
40   -static irqreturn_t timer_interrupt(int irq, void *dummy, struct pt_regs * regs)
  41 +static irqreturn_t timer_interrupt(int irq, void *dummy)
41 42 {
42 43 do_timer(1);
43 44 #ifndef CONFIG_SMP
44   - update_process_times(user_mode(regs));
  45 + update_process_times(user_mode(get_irq_regs()));
45 46 #endif
46   - profile_tick(CPU_PROFILING, regs);
  47 + profile_tick(CPU_PROFILING);
47 48  
48 49 #ifdef CONFIG_HEARTBEAT
49 50 /* use power LED as a heartbeat instead -- much more useful
arch/m68k/mac/baboon.c
... ... @@ -25,7 +25,7 @@
25 25 int baboon_present,baboon_active;
26 26 volatile struct baboon *baboon;
27 27  
28   -irqreturn_t baboon_irq(int, void *, struct pt_regs *);
  28 +irqreturn_t baboon_irq(int, void *);
29 29  
30 30 #if 0
31 31 extern int macide_ack_intr(struct ata_channel *);
... ... @@ -64,7 +64,7 @@
64 64 * Baboon interrupt handler. This works a lot like a VIA.
65 65 */
66 66  
67   -irqreturn_t baboon_irq(int irq, void *dev_id, struct pt_regs *regs)
  67 +irqreturn_t baboon_irq(int irq, void *dev_id)
68 68 {
69 69 int irq_bit,i;
70 70 unsigned char events;
... ... @@ -81,7 +81,7 @@
81 81 for (i = 0, irq_bit = 1 ; i < 3 ; i++, irq_bit <<= 1) {
82 82 if (events & irq_bit/* & baboon_active*/) {
83 83 baboon_active &= ~irq_bit;
84   - m68k_handle_int(IRQ_BABOON_0 + i, regs);
  84 + m68k_handle_int(IRQ_BABOON_0 + i);
85 85 baboon_active |= irq_bit;
86 86 baboon->mb_ifr &= ~irq_bit;
87 87 }
arch/m68k/mac/config.c
... ... @@ -72,7 +72,7 @@
72 72 extern void iop_preinit(void);
73 73 extern void iop_init(void);
74 74 extern void via_init(void);
75   -extern void via_init_clock(irqreturn_t (*func)(int, void *, struct pt_regs *));
  75 +extern void via_init_clock(irqreturn_t (*func)(int, void *));
76 76 extern void via_flush_cache(void);
77 77 extern void oss_init(void);
78 78 extern void psc_init(void);
... ... @@ -88,7 +88,7 @@
88 88  
89 89 static void mac_get_model(char *str);
90 90  
91   -static void mac_sched_init(irqreturn_t (*vector)(int, void *, struct pt_regs *))
  91 +static void mac_sched_init(irqreturn_t (*vector)(int, void *))
92 92 {
93 93 via_init_clock(vector);
94 94 }
... ... @@ -132,7 +132,7 @@
132 132  
133 133 struct listener {
134 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 @@
152 152 static struct iop_msg *iop_send_queue[NUM_IOPS][NUM_IOP_CHAN];
153 153 static struct listener iop_listeners[NUM_IOPS][NUM_IOP_CHAN];
154 154  
155   -irqreturn_t iop_ism_irq(int, void *, struct pt_regs *);
  155 +irqreturn_t iop_ism_irq(int, void *);
156 156  
157 157 extern void oss_irq_enable(int);
158 158  
... ... @@ -342,7 +342,7 @@
342 342 */
343 343  
344 344 int iop_listen(uint iop_num, uint chan,
345   - void (*handler)(struct iop_msg *, struct pt_regs *),
  345 + void (*handler)(struct iop_msg *),
346 346 const char *devname)
347 347 {
348 348 if ((iop_num >= NUM_IOPS) || !iop_base[iop_num]) return -EINVAL;
... ... @@ -407,7 +407,7 @@
407 407 * has gone into the IOP_MSG_COMPLETE state.
408 408 */
409 409  
410   -static void iop_handle_send(uint iop_num, uint chan, struct pt_regs *regs)
  410 +static void iop_handle_send(uint iop_num, uint chan)
411 411 {
412 412 volatile struct mac_iop *iop = iop_base[iop_num];
413 413 struct iop_msg *msg,*msg2;
... ... @@ -426,7 +426,7 @@
426 426 for (i = 0 ; i < IOP_MSG_LEN ; i++, offset++) {
427 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 430 msg2 = msg;
431 431 msg = msg->next;
432 432 iop_free_msg(msg2);
... ... @@ -440,7 +440,7 @@
440 440 * gone into the IOP_MSG_NEW state.
441 441 */
442 442  
443   -static void iop_handle_recv(uint iop_num, uint chan, struct pt_regs *regs)
  443 +static void iop_handle_recv(uint iop_num, uint chan)
444 444 {
445 445 volatile struct mac_iop *iop = iop_base[iop_num];
446 446 int i,offset;
... ... @@ -468,7 +468,7 @@
468 468 /* the message ourselves to avoid possible stalls. */
469 469  
470 470 if (msg->handler) {
471   - (*msg->handler)(msg, regs);
  471 + (*msg->handler)(msg);
472 472 } else {
473 473 #ifdef DEBUG_IOP
474 474 printk("iop_handle_recv: unclaimed message on iop %d channel %d\n", iop_num, chan);
... ... @@ -492,7 +492,7 @@
492 492  
493 493 int iop_send_message(uint iop_num, uint chan, void *privdata,
494 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 497 struct iop_msg *msg, *q;
498 498  
... ... @@ -584,7 +584,7 @@
584 584 * Handle an ISM IOP interrupt
585 585 */
586 586  
587   -irqreturn_t iop_ism_irq(int irq, void *dev_id, struct pt_regs *regs)
  587 +irqreturn_t iop_ism_irq(int irq, void *dev_id)
588 588 {
589 589 uint iop_num = (uint) dev_id;
590 590 volatile struct mac_iop *iop = iop_base[iop_num];
... ... @@ -608,7 +608,7 @@
608 608 printk(" %02X", state);
609 609 #endif
610 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 614 #ifdef DEBUG_IOP
... ... @@ -628,7 +628,7 @@
628 628 printk(" %02X", state);
629 629 #endif
630 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 634 #ifdef DEBUG_IOP
arch/m68k/mac/macints.c
... ... @@ -133,6 +133,7 @@
133 133 #include <asm/hwtest.h>
134 134 #include <asm/errno.h>
135 135 #include <asm/macints.h>
  136 +#include <asm/irq_regs.h>
136 137  
137 138 #define DEBUG_SPURIOUS
138 139 #define SHUTUP_SONIC
... ... @@ -208,8 +209,8 @@
208 209 * console_loglevel determines NMI handler function
209 210 */
210 211  
211   -irqreturn_t mac_nmi_handler(int, void *, struct pt_regs *);
212   -irqreturn_t mac_debug_handler(int, void *, struct pt_regs *);
  212 +irqreturn_t mac_nmi_handler(int, void *);
  213 +irqreturn_t mac_debug_handler(int, void *);
213 214  
214 215 /* #define DEBUG_MACINTS */
215 216  
... ... @@ -393,7 +394,7 @@
393 394  
394 395 static int num_debug[8];
395 396  
396   -irqreturn_t mac_debug_handler(int irq, void *dev_id, struct pt_regs *regs)
  397 +irqreturn_t mac_debug_handler(int irq, void *dev_id)
397 398 {
398 399 if (num_debug[irq] < 10) {
399 400 printk("DEBUG: Unexpected IRQ %d\n", irq);
... ... @@ -405,7 +406,7 @@
405 406 static int in_nmi;
406 407 static volatile int nmi_hold;
407 408  
408   -irqreturn_t mac_nmi_handler(int irq, void *dev_id, struct pt_regs *fp)
  409 +irqreturn_t mac_nmi_handler(int irq, void *dev_id)
409 410 {
410 411 int i;
411 412 /*
... ... @@ -432,6 +433,7 @@
432 433  
433 434 if (console_loglevel >= 8) {
434 435 #if 0
  436 + struct pt_regs *fp = get_irq_regs();
435 437 show_state();
436 438 printk("PC: %08lx\nSR: %04x SP: %p\n", fp->pc, fp->sr, fp);
437 439 printk("d0: %08lx d1: %08lx d2: %08lx d3: %08lx\n",
... ... @@ -479,7 +481,7 @@
479 481 * here is cleaner than hacking it into drivers/char/macserial.c.
480 482 */
481 483  
482   -void mac_scc_dispatch(int irq, void *dev_id, struct pt_regs *regs)
  484 +void mac_scc_dispatch(int irq, void *dev_id)
483 485 {
484 486 volatile unsigned char *scc = (unsigned char *) mac_bi_data.sccbase + 2;
485 487 unsigned char reg;
486 488  
... ... @@ -504,8 +506,8 @@
504 506 /* pretty much kill the system. */
505 507  
506 508 if (reg & 0x38)
507   - m68k_handle_int(IRQ_SCCA, regs);
  509 + m68k_handle_int(IRQ_SCCA);
508 510 if (reg & 0x07)
509   - m68k_handle_int(IRQ_SCCB, regs);
  511 + m68k_handle_int(IRQ_SCCB);
510 512 }
... ... @@ -30,11 +30,11 @@
30 30 int oss_present;
31 31 volatile struct mac_oss *oss;
32 32  
33   -irqreturn_t oss_irq(int, void *, struct pt_regs *);
34   -irqreturn_t oss_nubus_irq(int, void *, struct pt_regs *);
  33 +irqreturn_t oss_irq(int, void *);
  34 +irqreturn_t oss_nubus_irq(int, void *);
35 35  
36   -extern irqreturn_t via1_irq(int, void *, struct pt_regs *);
37   -extern irqreturn_t mac_scc_dispatch(int, void *, struct pt_regs *);
  36 +extern irqreturn_t via1_irq(int, void *);
  37 +extern irqreturn_t mac_scc_dispatch(int, void *);
38 38  
39 39 /*
40 40 * Initialize the OSS
... ... @@ -92,7 +92,7 @@
92 92 * and SCSI; everything else is routed to its own autovector IRQ.
93 93 */
94 94  
95   -irqreturn_t oss_irq(int irq, void *dev_id, struct pt_regs *regs)
  95 +irqreturn_t oss_irq(int irq, void *dev_id)
96 96 {
97 97 int events;
98 98  
... ... @@ -113,7 +113,7 @@
113 113 oss->irq_pending &= ~OSS_IP_SOUND;
114 114 } else if (events & OSS_IP_SCSI) {
115 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 117 oss->irq_pending &= ~OSS_IP_SCSI;
118 118 oss->irq_level[OSS_SCSI] = OSS_IRQLEV_SCSI;
119 119 } else {
... ... @@ -128,7 +128,7 @@
128 128 * Unlike the VIA/RBV this is on its own autovector interrupt level.
129 129 */
130 130  
131   -irqreturn_t oss_nubus_irq(int irq, void *dev_id, struct pt_regs *regs)
  131 +irqreturn_t oss_nubus_irq(int irq, void *dev_id)
132 132 {
133 133 int events, irq_bit, i;
134 134  
... ... @@ -146,7 +146,7 @@
146 146 for (i = 0, irq_bit = 1 ; i < 6 ; i++, irq_bit <<= 1) {
147 147 if (events & irq_bit) {
148 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 150 oss->irq_pending &= ~irq_bit;
151 151 oss->irq_level[i] = OSS_IRQLEV_NUBUS;
152 152 }
... ... @@ -30,7 +30,7 @@
30 30 int psc_present;
31 31 volatile __u8 *psc;
32 32  
33   -irqreturn_t psc_irq(int, void *, struct pt_regs *);
  33 +irqreturn_t psc_irq(int, void *);
34 34  
35 35 /*
36 36 * Debugging dump, used in various places to see what's going on.
... ... @@ -127,7 +127,7 @@
127 127 * PSC interrupt handler. It's a lot like the VIA interrupt handler.
128 128 */
129 129  
130   -irqreturn_t psc_irq(int irq, void *dev_id, struct pt_regs *regs)
  130 +irqreturn_t psc_irq(int irq, void *dev_id)
131 131 {
132 132 int pIFR = pIFRbase + ((int) dev_id);
133 133 int pIER = pIERbase + ((int) dev_id);
... ... @@ -149,7 +149,7 @@
149 149 for (i = 0, irq_bit = 1 ; i < 4 ; i++, irq_bit <<= 1) {
150 150 if (events & irq_bit) {
151 151 psc_write_byte(pIER, irq_bit);
152   - m68k_handle_int(base_irq + i, regs);
  152 + m68k_handle_int(base_irq + i);
153 153 psc_write_byte(pIFR, irq_bit);
154 154 psc_write_byte(pIER, irq_bit | 0x80);
155 155 }
... ... @@ -63,14 +63,14 @@
63 63 static int nubus_active;
64 64  
65 65 void via_debug_dump(void);
66   -irqreturn_t via1_irq(int, void *, struct pt_regs *);
67   -irqreturn_t via2_irq(int, void *, struct pt_regs *);
68   -irqreturn_t via_nubus_irq(int, void *, struct pt_regs *);
  66 +irqreturn_t via1_irq(int, void *);
  67 +irqreturn_t via2_irq(int, void *);
  68 +irqreturn_t via_nubus_irq(int, void *);
69 69 void via_irq_enable(int irq);
70 70 void via_irq_disable(int irq);
71 71 void via_irq_clear(int irq);
72 72  
73   -extern irqreturn_t mac_scc_dispatch(int, void *, struct pt_regs *);
  73 +extern irqreturn_t mac_scc_dispatch(int, void *);
74 74 extern int oss_present;
75 75  
76 76 /*
... ... @@ -235,7 +235,7 @@
235 235 * Start the 100 Hz clock
236 236 */
237 237  
238   -void __init via_init_clock(irqreturn_t (*func)(int, void *, struct pt_regs *))
  238 +void __init via_init_clock(irqreturn_t (*func)(int, void *))
239 239 {
240 240 via1[vACR] |= 0x40;
241 241 via1[vT1LL] = MAC_CLOCK_LOW;
... ... @@ -412,7 +412,7 @@
412 412 * the machspec interrupt number after clearing the interrupt.
413 413 */
414 414  
415   -irqreturn_t via1_irq(int irq, void *dev_id, struct pt_regs *regs)
  415 +irqreturn_t via1_irq(int irq, void *dev_id)
416 416 {
417 417 int irq_bit, i;
418 418 unsigned char events, mask;
... ... @@ -424,7 +424,7 @@
424 424 for (i = 0, irq_bit = 1 ; i < 7 ; i++, irq_bit <<= 1)
425 425 if (events & irq_bit) {
426 426 via1[vIER] = irq_bit;
427   - m68k_handle_int(VIA1_SOURCE_BASE + i, regs);
  427 + m68k_handle_int(VIA1_SOURCE_BASE + i);
428 428 via1[vIFR] = irq_bit;
429 429 via1[vIER] = irq_bit | 0x80;
430 430 }
431 431  
... ... @@ -439,14 +439,14 @@
439 439 /* No, it won't be set. that's why we're doing this. */
440 440 via_irq_disable(IRQ_MAC_NUBUS);
441 441 via_irq_clear(IRQ_MAC_NUBUS);
442   - m68k_handle_int(IRQ_MAC_NUBUS, regs);
  442 + m68k_handle_int(IRQ_MAC_NUBUS);
443 443 via_irq_enable(IRQ_MAC_NUBUS);
444 444 }
445 445 #endif
446 446 return IRQ_HANDLED;
447 447 }
448 448  
449   -irqreturn_t via2_irq(int irq, void *dev_id, struct pt_regs *regs)
  449 +irqreturn_t via2_irq(int irq, void *dev_id)
450 450 {
451 451 int irq_bit, i;
452 452 unsigned char events, mask;
... ... @@ -459,7 +459,7 @@
459 459 if (events & irq_bit) {
460 460 via2[gIER] = irq_bit;
461 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 463 via2[gIER] = irq_bit | 0x80;
464 464 }
465 465 return IRQ_HANDLED;
... ... @@ -470,7 +470,7 @@
470 470 * VIA2 dispatcher as a fast interrupt handler.
471 471 */
472 472  
473   -irqreturn_t via_nubus_irq(int irq, void *dev_id, struct pt_regs *regs)
  473 +irqreturn_t via_nubus_irq(int irq, void *dev_id)
474 474 {
475 475 int irq_bit, i;
476 476 unsigned char events;
... ... @@ -481,7 +481,7 @@
481 481 for (i = 0, irq_bit = 1 ; i < 7 ; i++, irq_bit <<= 1) {
482 482 if (events & irq_bit) {
483 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 485 via_irq_enable(NUBUS_SOURCE_BASE + i);
486 486 }
487 487 }
arch/m68k/mvme147/config.c
... ... @@ -38,7 +38,7 @@
38 38  
39 39 static void mvme147_get_model(char *model);
40 40 static int mvme147_get_hardware_list(char *buffer);
41   -extern void mvme147_sched_init(irqreturn_t (*handler)(int, void *, struct pt_regs *));
  41 +extern void mvme147_sched_init(irqreturn_t (*handler)(int, void *));
42 42 extern unsigned long mvme147_gettimeoffset (void);
43 43 extern int mvme147_hwclk (int, struct rtc_time *);
44 44 extern int mvme147_set_clock_mmss (unsigned long);
... ... @@ -51,7 +51,7 @@
51 51 /* Save tick handler routine pointer, will point to do_timer() in
52 52 * kernel/sched.c, called via mvme147_process_int() */
53 53  
54   -irqreturn_t (*tick_handler)(int, void *, struct pt_regs *);
  54 +irqreturn_t (*tick_handler)(int, void *);
55 55  
56 56  
57 57 int mvme147_parse_bootinfo(const struct bi_record *bi)
58 58  
59 59  
... ... @@ -114,15 +114,15 @@
114 114  
115 115 /* Using pcc tick timer 1 */
116 116  
117   -static irqreturn_t mvme147_timer_int (int irq, void *dev_id, struct pt_regs *fp)
  117 +static irqreturn_t mvme147_timer_int (int irq, void *dev_id)
118 118 {
119 119 m147_pcc->t1_int_cntrl = PCC_TIMER_INT_CLR;
120 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  
125   -void mvme147_sched_init (irqreturn_t (*timer_routine)(int, void *, struct pt_regs *))
  125 +void mvme147_sched_init (irqreturn_t (*timer_routine)(int, void *))
126 126 {
127 127 tick_handler = timer_routine;
128 128 request_irq (PCC_IRQ_TIMER1, mvme147_timer_int,
arch/m68k/mvme16x/config.c
... ... @@ -42,7 +42,7 @@
42 42  
43 43 static void mvme16x_get_model(char *model);
44 44 static int mvme16x_get_hardware_list(char *buffer);
45   -extern void mvme16x_sched_init(irqreturn_t (*handler)(int, void *, struct pt_regs *));
  45 +extern void mvme16x_sched_init(irqreturn_t (*handler)(int, void *));
46 46 extern unsigned long mvme16x_gettimeoffset (void);
47 47 extern int mvme16x_hwclk (int, struct rtc_time *);
48 48 extern int mvme16x_set_clock_mmss (unsigned long);
... ... @@ -54,7 +54,7 @@
54 54 /* Save tick handler routine pointer, will point to do_timer() in
55 55 * kernel/sched.c, called via mvme16x_process_int() */
56 56  
57   -static irqreturn_t (*tick_handler)(int, void *, struct pt_regs *);
  57 +static irqreturn_t (*tick_handler)(int, void *);
58 58  
59 59  
60 60 unsigned short mvme16x_config;
... ... @@ -190,7 +190,7 @@
190 190 }
191 191 }
192 192  
193   -static irqreturn_t mvme16x_abort_int (int irq, void *dev_id, struct pt_regs *fp)
  193 +static irqreturn_t mvme16x_abort_int (int irq, void *dev_id)
194 194 {
195 195 p_bdid p = &mvme_bdid;
196 196 unsigned long *new = (unsigned long *)vectors;
197 197  
198 198  
... ... @@ -218,13 +218,13 @@
218 218 return IRQ_HANDLED;
219 219 }
220 220  
221   -static irqreturn_t mvme16x_timer_int (int irq, void *dev_id, struct pt_regs *fp)
  221 +static irqreturn_t mvme16x_timer_int (int irq, void *dev_id)
222 222 {
223 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  
227   -void mvme16x_sched_init (irqreturn_t (*timer_routine)(int, void *, struct pt_regs *))
  227 +void mvme16x_sched_init (irqreturn_t (*timer_routine)(int, void *))
228 228 {
229 229 p_bdid p = &mvme_bdid;
230 230 int irq;
arch/m68k/q40/config.c
... ... @@ -39,7 +39,7 @@
39 39 extern void q40_init_IRQ (void);
40 40 static void q40_get_model(char *model);
41 41 static int q40_get_hardware_list(char *buffer);
42   -extern void q40_sched_init(irqreturn_t (*handler)(int, void *, struct pt_regs *));
  42 +extern void q40_sched_init(irqreturn_t (*handler)(int, void *));
43 43  
44 44 extern unsigned long q40_gettimeoffset (void);
45 45 extern int q40_hwclk (int, struct rtc_time *);
arch/m68k/q40/q40ints.c
... ... @@ -125,9 +125,9 @@
125 125 sound_ticks = ticks << 1;
126 126 }
127 127  
128   -static irqreturn_t (*q40_timer_routine)(int, void *, struct pt_regs *);
  128 +static irqreturn_t (*q40_timer_routine)(int, void *);
129 129  
130   -static irqreturn_t q40_timer_int (int irq, void * dev, struct pt_regs * regs)
  130 +static irqreturn_t q40_timer_int (int irq, void * dev)
131 131 {
132 132 ql_ticks = ql_ticks ? 0 : 1;
133 133 if (sound_ticks) {
134 134  
... ... @@ -138,11 +138,11 @@
138 138 }
139 139  
140 140 if (!ql_ticks)
141   - q40_timer_routine(irq, dev, regs);
  141 + q40_timer_routine(irq, dev);
142 142 return IRQ_HANDLED;
143 143 }
144 144  
145   -void q40_sched_init (irqreturn_t (*timer_routine)(int, void *, struct pt_regs *))
  145 +void q40_sched_init (irqreturn_t (*timer_routine)(int, void *))
146 146 {
147 147 int timer_irq;
148 148  
149 149  
... ... @@ -218,11 +218,11 @@
218 218 switch (irq) {
219 219 case 4:
220 220 case 6:
221   - m68k_handle_int(Q40_IRQ_SAMPLE, fp);
  221 + __m68k_handle_int(Q40_IRQ_SAMPLE, fp);
222 222 return;
223 223 }
224 224 if (mir & Q40_IRQ_FRAME_MASK) {
225   - m68k_handle_int(Q40_IRQ_FRAME, fp);
  225 + __m68k_handle_int(Q40_IRQ_FRAME, fp);
226 226 master_outb(-1, FRAME_CLEAR_REG);
227 227 }
228 228 if ((mir & Q40_IRQ_SER_MASK) || (mir & Q40_IRQ_EXT_MASK)) {
... ... @@ -257,7 +257,7 @@
257 257 goto iirq;
258 258 }
259 259 q40_state[irq] |= IRQ_INPROGRESS;
260   - m68k_handle_int(irq, fp);
  260 + __m68k_handle_int(irq, fp);
261 261 q40_state[irq] &= ~IRQ_INPROGRESS;
262 262  
263 263 /* naively enable everything, if that fails than */
... ... @@ -288,7 +288,7 @@
288 288 mir = master_inb(IIRQ_REG);
289 289 /* should test whether keyboard irq is really enabled, doing it in defhand */
290 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 293 return;
294 294 }
arch/m68k/sun3/config.c
... ... @@ -162,7 +162,7 @@
162 162 sun3_bootmem_alloc(memory_start, memory_end);
163 163 }
164 164  
165   -void __init sun3_sched_init(irqreturn_t (*timer_routine)(int, void *, struct pt_regs *))
  165 +void __init sun3_sched_init(irqreturn_t (*timer_routine)(int, void *))
166 166 {
167 167 sun3_disable_interrupts();
168 168 intersil_clock->cmd_reg=(INTERSIL_RUN|INTERSIL_INT_DISABLE|INTERSIL_24H_MODE);
arch/m68k/sun3/sun3ints.c
... ... @@ -15,6 +15,7 @@
15 15 #include <asm/intersil.h>
16 16 #include <asm/oplib.h>
17 17 #include <asm/sun3ints.h>
  18 +#include <asm/irq_regs.h>
18 19 #include <linux/seq_file.h>
19 20  
20 21 extern void sun3_leds (unsigned char);
... ... @@ -48,7 +49,7 @@
48 49 *sun3_intreg &= ~(1 << irq);
49 50 }
50 51  
51   -static irqreturn_t sun3_int7(int irq, void *dev_id, struct pt_regs *fp)
  52 +static irqreturn_t sun3_int7(int irq, void *dev_id)
52 53 {
53 54 *sun3_intreg |= (1 << irq);
54 55 if (!(kstat_cpu(0).irqs[irq] % 2000))
... ... @@ -56,7 +57,7 @@
56 57 return IRQ_HANDLED;
57 58 }
58 59  
59   -static irqreturn_t sun3_int5(int irq, void *dev_id, struct pt_regs *fp)
  60 +static irqreturn_t sun3_int5(int irq, void *dev_id)
60 61 {
61 62 #ifdef CONFIG_SUN3
62 63 intersil_clear();
63 64  
... ... @@ -67,14 +68,14 @@
67 68 #endif
68 69 do_timer(1);
69 70 #ifndef CONFIG_SMP
70   - update_process_times(user_mode(fp));
  71 + update_process_times(user_mode(get_irq_regs()));
71 72 #endif
72 73 if (!(kstat_cpu(0).irqs[irq] % 20))
73 74 sun3_leds(led_pattern[(kstat_cpu(0).irqs[irq] % 160) / 20]);
74 75 return IRQ_HANDLED;
75 76 }
76 77  
77   -static irqreturn_t sun3_vec255(int irq, void *dev_id, struct pt_regs *fp)
  78 +static irqreturn_t sun3_vec255(int irq, void *dev_id)
78 79 {
79 80 // intersil_clear();
80 81 return IRQ_HANDLED;
... ... @@ -84,7 +85,7 @@
84 85 {
85 86 *sun3_intreg &= ~(1 << irq);
86 87  
87   - m68k_handle_int(irq, fp);
  88 + __m68k_handle_int(irq, fp);
88 89 }
89 90  
90 91 static struct irq_controller sun3_irq_controller = {
arch/m68k/sun3x/time.c
... ... @@ -90,7 +90,7 @@
90 90 }
91 91 #endif
92 92  
93   -void __init sun3x_sched_init(irqreturn_t (*vector)(int, void *, struct pt_regs *))
  93 +void __init sun3x_sched_init(irqreturn_t (*vector)(int, void *))
94 94 {
95 95  
96 96 sun3_disable_interrupts();
arch/m68k/sun3x/time.h
... ... @@ -3,7 +3,7 @@
3 3  
4 4 extern int sun3x_hwclk(int set, struct rtc_time *t);
5 5 unsigned long sun3x_gettimeoffset (void);
6   -void sun3x_sched_init(irqreturn_t (*vector)(int, void *, struct pt_regs *));
  6 +void sun3x_sched_init(irqreturn_t (*vector)(int, void *));
7 7  
8 8 struct mostek_dt {
9 9 volatile unsigned char csr;
drivers/char/vme_scc.c
... ... @@ -593,7 +593,7 @@
593 593 local_irq_save(flags);
594 594 SCCmod(INT_AND_DMA_REG, 0xff, IDR_TX_INT_ENAB);
595 595 /* restart the transmitter */
596   - scc_tx_int (0, port, 0);
  596 + scc_tx_int (0, port);
597 597 local_irq_restore(flags);
598 598 }
599 599  
drivers/macintosh/adb-iop.c
... ... @@ -266,7 +266,7 @@
266 266 void adb_iop_poll(void)
267 267 {
268 268 if (adb_iop_state == idle) adb_iop_start();
269   - iop_ism_irq(0, (void *) ADB_IOP, NULL);
  269 + iop_ism_irq(0, (void *) ADB_IOP);
270 270 }
271 271  
272 272 int adb_iop_reset_bus(void)
drivers/macintosh/via-macii.c
... ... @@ -295,7 +295,7 @@
295 295 unsigned long flags;
296 296  
297 297 local_irq_save(flags);
298   - if (via[IFR] & SR_INT) macii_interrupt(0, NULL, NULL);
  298 + if (via[IFR] & SR_INT) macii_interrupt(0, NULL);
299 299 local_irq_restore(flags);
300 300 }
301 301  
drivers/macintosh/via-maciisi.c
... ... @@ -421,7 +421,7 @@
421 421  
422 422 local_irq_save(flags);
423 423 if (via[IFR] & SR_INT) {
424   - maciisi_interrupt(0, NULL, NULL);
  424 + maciisi_interrupt(0, NULL);
425 425 }
426 426 else /* avoid calling this function too quickly in a loop */
427 427 udelay(ADB_DELAY);
drivers/macintosh/via-pmu68k.c
... ... @@ -221,7 +221,7 @@
221 221 }
222 222 if (pmu_state == idle) {
223 223 adb_int_pending = 1;
224   - pmu_interrupt(0, NULL, NULL);
  224 + pmu_interrupt(0, NULL);
225 225 }
226 226 pmu_poll();
227 227 udelay(10);
228 228  
... ... @@ -562,11 +562,11 @@
562 562 local_irq_save(flags);
563 563 if (via1[IFR] & SR_INT) {
564 564 via1[IFR] = SR_INT;
565   - pmu_interrupt(IRQ_MAC_ADB_SR, NULL, NULL);
  565 + pmu_interrupt(IRQ_MAC_ADB_SR, NULL);
566 566 }
567 567 if (via1[IFR] & CB1_INT) {
568 568 via1[IFR] = CB1_INT;
569   - pmu_interrupt(IRQ_MAC_ADB_CL, NULL, NULL);
  569 + pmu_interrupt(IRQ_MAC_ADB_CL, NULL);
570 570 }
571 571 local_irq_restore(flags);
572 572 }
... ... @@ -674,7 +674,7 @@
674 674 WRITERAP(lp, LE_CSR0);
675 675 WRITERDP(lp, LE_C0_STRT);
676 676 spin_unlock (&lp->devlock);
677   - lance_interrupt(dev->irq, dev, NULL);
  677 + lance_interrupt(dev->irq, dev);
678 678 }
679 679 #endif
680 680  
drivers/parport/parport_mfc3.c
... ... @@ -219,7 +219,7 @@
219 219 if (this_port[i] != NULL)
220 220 if (pia(this_port[i])->crb & 128) { /* Board caused interrupt */
221 221 dummy = pia(this_port[i])->pprb; /* clear irq bit */
222   - parport_generic_irq(irq, this_port[i], regs);
  222 + parport_generic_irq(irq, this_port[i]);
223 223 }
224 224 return IRQ_HANDLED;
225 225 }
include/asm-m68k/atari_stdma.h
... ... @@ -8,8 +8,7 @@
8 8  
9 9 /***************************** Prototypes *****************************/
10 10  
11   -void stdma_lock(irqreturn_t (*handler)(int, void *, struct pt_regs *),
12   - void *data);
  11 +void stdma_lock(irqreturn_t (*handler)(int, void *), void *data);
13 12 void stdma_release( void );
14 13 int stdma_others_waiting( void );
15 14 int stdma_islocked( void );
include/asm-m68k/floppy.h
... ... @@ -17,8 +17,7 @@
17 17  
18 18 #include <linux/vmalloc.h>
19 19  
20   -asmlinkage irqreturn_t floppy_hardint(int irq, void *dev_id,
21   - struct pt_regs *regs);
  20 +asmlinkage irqreturn_t floppy_hardint(int irq, void *dev_id);
22 21  
23 22 /* constants... */
24 23  
... ... @@ -184,8 +183,7 @@
184 183  
185 184 /* this is the only truly Q40 specific function */
186 185  
187   -asmlinkage irqreturn_t floppy_hardint(int irq, void *dev_id,
188   - struct pt_regs *regs)
  186 +asmlinkage irqreturn_t floppy_hardint(int irq, void *dev_id)
189 187 {
190 188 register unsigned char st;
191 189  
... ... @@ -198,7 +196,7 @@
198 196 static int dma_wait=0;
199 197 #endif
200 198 if(!doing_pdma) {
201   - floppy_interrupt(irq, dev_id, regs);
  199 + floppy_interrupt(irq, dev_id);
202 200 return IRQ_HANDLED;
203 201 }
204 202  
... ... @@ -246,7 +244,7 @@
246 244 dma_wait=0;
247 245 #endif
248 246 doing_pdma = 0;
249   - floppy_interrupt(irq, dev_id, regs);
  247 + floppy_interrupt(irq, dev_id);
250 248 return IRQ_HANDLED;
251 249 }
252 250 #ifdef TRACE_FLPY_INT
include/asm-m68k/ide.h
... ... @@ -123,7 +123,7 @@
123 123 }
124 124  
125 125 static __inline__ void
126   -ide_get_lock(irqreturn_t (*handler)(int, void *, struct pt_regs *), void *data)
  126 +ide_get_lock(irqreturn_t (*handler)(int, void *), void *data)
127 127 {
128 128 if (MACH_IS_ATARI) {
129 129 if (falconide_intr_lock == 0) {
include/asm-m68k/irq.h
... ... @@ -83,7 +83,7 @@
83 83 * interrupt source (if it supports chaining).
84 84 */
85 85 typedef struct irq_node {
86   - int (*handler)(int, void *, struct pt_regs *);
  86 + int (*handler)(int, void *);
87 87 void *dev_id;
88 88 struct irq_node *next;
89 89 unsigned long flags;
90 90  
... ... @@ -93,12 +93,12 @@
93 93 /*
94 94 * This structure has only 4 elements for speed reasons
95 95 */
96   -typedef struct irq_handler {
97   - int (*handler)(int, void *, struct pt_regs *);
  96 +struct irq_handler {
  97 + int (*handler)(int, void *);
98 98 unsigned long flags;
99 99 void *dev_id;
100 100 const char *devname;
101   -} irq_handler_t;
  101 +};
102 102  
103 103 struct irq_controller {
104 104 const char *name;
... ... @@ -122,7 +122,8 @@
122 122 void (*handler)(unsigned int, struct pt_regs *));
123 123 extern void m68k_setup_irq_controller(struct irq_controller *, unsigned int, unsigned int);
124 124  
125   -asmlinkage void m68k_handle_int(unsigned int, struct pt_regs *);
  125 +asmlinkage void m68k_handle_int(unsigned int);
  126 +asmlinkage void __m68k_handle_int(unsigned int, struct pt_regs *);
126 127  
127 128 #endif /* _M68K_IRQ_H_ */
include/asm-m68k/mac_iop.h
... ... @@ -143,17 +143,17 @@
143 143 int status; /* status of this message */
144 144 __u8 message[IOP_MSG_LEN]; /* the message being sent/received */
145 145 __u8 reply[IOP_MSG_LEN]; /* the reply to the message */
146   - void (*handler)(struct iop_msg *, struct pt_regs *);
  146 + void (*handler)(struct iop_msg *);
147 147 /* function to call when reply recvd */
148 148 };
149 149  
150 150 extern int iop_scc_present,iop_ism_present;
151 151  
152 152 extern int iop_listen(uint, uint,
153   - void (*handler)(struct iop_msg *, struct pt_regs *),
  153 + void (*handler)(struct iop_msg *),
154 154 const char *);
155 155 extern int iop_send_message(uint, uint, void *, uint, __u8 *,
156   - void (*)(struct iop_msg *, struct pt_regs *));
  156 + void (*)(struct iop_msg *));
157 157 extern void iop_complete_message(struct iop_msg *);
158 158 extern void iop_upload_code(uint, __u8 *, uint, __u16);
159 159 extern void iop_download_code(uint, __u8 *, uint, __u16);
include/asm-m68k/machdep.h
... ... @@ -10,7 +10,7 @@
10 10 struct rtc_pll_info;
11 11 struct buffer_head;
12 12  
13   -extern void (*mach_sched_init) (irqreturn_t (*handler)(int, void *, struct pt_regs *));
  13 +extern void (*mach_sched_init) (irqreturn_t (*handler)(int, void *));
14 14 /* machine dependent irq functions */
15 15 extern void (*mach_init_IRQ) (void);
16 16 extern void (*mach_get_model) (char *model);
include/asm-m68k/sun3xflop.h
... ... @@ -111,8 +111,7 @@
111 111 }
112 112  
113 113  
114   -asmlinkage irqreturn_t sun3xflop_hardint(int irq, void *dev_id,
115   - struct pt_regs * regs)
  114 +asmlinkage irqreturn_t sun3xflop_hardint(int irq, void *dev_id)
116 115 {
117 116 register unsigned char st;
118 117  
... ... @@ -125,7 +124,7 @@
125 124 static int dma_wait=0;
126 125 #endif
127 126 if(!doing_pdma) {
128   - floppy_interrupt(irq, dev_id, regs);
  127 + floppy_interrupt(irq, dev_id);
129 128 return IRQ_HANDLED;
130 129 }
131 130  
... ... @@ -189,7 +188,7 @@
189 188 dma_wait=0;
190 189 #endif
191 190  
192   - floppy_interrupt(irq, dev_id, regs);
  191 + floppy_interrupt(irq, dev_id);
193 192 return IRQ_HANDLED;
194 193 }
195 194