aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm')
-rw-r--r--arch/arm/common/locomo.c25
-rw-r--r--arch/arm/common/sa1111.c8
-rw-r--r--arch/arm/common/sharpsl_pm.c6
-rw-r--r--arch/arm/common/time-acorn.c4
-rw-r--r--arch/arm/kernel/ecard.c8
-rw-r--r--arch/arm/kernel/irq.c4
-rw-r--r--arch/arm/kernel/time.c6
-rw-r--r--arch/arm/mach-aaec2000/core.c4
-rw-r--r--arch/arm/mach-at91rm9200/at91rm9200_time.c4
-rw-r--r--arch/arm/mach-at91rm9200/gpio.c4
-rw-r--r--arch/arm/mach-clps711x/time.c4
-rw-r--r--arch/arm/mach-clps7500/core.c4
-rw-r--r--arch/arm/mach-ebsa110/core.c4
-rw-r--r--arch/arm/mach-ep93xx/core.c10
-rw-r--r--arch/arm/mach-footbridge/dc21285-timer.c4
-rw-r--r--arch/arm/mach-footbridge/dc21285.c12
-rw-r--r--arch/arm/mach-footbridge/isa-irq.c6
-rw-r--r--arch/arm/mach-footbridge/isa-timer.c4
-rw-r--r--arch/arm/mach-h720x/common.c29
-rw-r--r--arch/arm/mach-h720x/cpu-h7201.c4
-rw-r--r--arch/arm/mach-h720x/cpu-h7202.c11
-rw-r--r--arch/arm/mach-imx/dma.c12
-rw-r--r--arch/arm/mach-imx/irq.c24
-rw-r--r--arch/arm/mach-imx/time.c4
-rw-r--r--arch/arm/mach-integrator/core.c6
-rw-r--r--arch/arm/mach-integrator/integrator_cp.c6
-rw-r--r--arch/arm/mach-integrator/pci_v3.c3
-rw-r--r--arch/arm/mach-integrator/time.c3
-rw-r--r--arch/arm/mach-ixp2000/core.c12
-rw-r--r--arch/arm/mach-ixp2000/ixdp2x00.c4
-rw-r--r--arch/arm/mach-ixp2000/ixdp2x01.c4
-rw-r--r--arch/arm/mach-ixp23xx/core.c8
-rw-r--r--arch/arm/mach-ixp23xx/ixdp2351.c8
-rw-r--r--arch/arm/mach-ixp4xx/common.c4
-rw-r--r--arch/arm/mach-ixp4xx/nas100d-power.c2
-rw-r--r--arch/arm/mach-ixp4xx/nslu2-power.c4
-rw-r--r--arch/arm/mach-lh7a40x/arch-kev7a400.c5
-rw-r--r--arch/arm/mach-lh7a40x/arch-lpd7a40x.c3
-rw-r--r--arch/arm/mach-lh7a40x/irq-kev7a400.c5
-rw-r--r--arch/arm/mach-lh7a40x/irq-lpd7a40x.c3
-rw-r--r--arch/arm/mach-lh7a40x/time.c4
-rw-r--r--arch/arm/mach-netx/generic.c5
-rw-r--r--arch/arm/mach-netx/time.c4
-rw-r--r--arch/arm/mach-omap1/board-osk.c2
-rw-r--r--arch/arm/mach-omap1/fpga.c5
-rw-r--r--arch/arm/mach-omap1/pm.c3
-rw-r--r--arch/arm/mach-omap1/serial.c3
-rw-r--r--arch/arm/mach-omap1/time.c8
-rw-r--r--arch/arm/mach-omap2/board-apollon.c2
-rw-r--r--arch/arm/mach-omap2/timer-gp.c5
-rw-r--r--arch/arm/mach-pnx4008/dma.c10
-rw-r--r--arch/arm/mach-pnx4008/time.c5
-rw-r--r--arch/arm/mach-pxa/corgi.c2
-rw-r--r--arch/arm/mach-pxa/dma.c8
-rw-r--r--arch/arm/mach-pxa/idp.c2
-rw-r--r--arch/arm/mach-pxa/irq.c11
-rw-r--r--arch/arm/mach-pxa/lpd270.c5
-rw-r--r--arch/arm/mach-pxa/lubbock.c13
-rw-r--r--arch/arm/mach-pxa/mainstone.c7
-rw-r--r--arch/arm/mach-pxa/poodle.c2
-rw-r--r--arch/arm/mach-pxa/spitz.c2
-rw-r--r--arch/arm/mach-pxa/ssp.c2
-rw-r--r--arch/arm/mach-pxa/time.c8
-rw-r--r--arch/arm/mach-pxa/tosa.c2
-rw-r--r--arch/arm/mach-pxa/trizeps4.c2
-rw-r--r--arch/arm/mach-realview/core.c6
-rw-r--r--arch/arm/mach-rpc/dma.c2
-rw-r--r--arch/arm/mach-s3c2410/bast-irq.c5
-rw-r--r--arch/arm/mach-s3c2410/dma.c2
-rw-r--r--arch/arm/mach-s3c2410/irq.c41
-rw-r--r--arch/arm/mach-s3c2410/mach-amlm5900.c2
-rw-r--r--arch/arm/mach-s3c2410/s3c2440-irq.c7
-rw-r--r--arch/arm/mach-s3c2410/s3c244x-irq.c7
-rw-r--r--arch/arm/mach-s3c2410/time.c4
-rw-r--r--arch/arm/mach-s3c2410/usb-simtec.c2
-rw-r--r--arch/arm/mach-sa1100/dma.c2
-rw-r--r--arch/arm/mach-sa1100/h3600.c6
-rw-r--r--arch/arm/mach-sa1100/irq.c5
-rw-r--r--arch/arm/mach-sa1100/neponset.c8
-rw-r--r--arch/arm/mach-sa1100/ssp.c2
-rw-r--r--arch/arm/mach-sa1100/time.c8
-rw-r--r--arch/arm/mach-shark/core.c4
-rw-r--r--arch/arm/mach-shark/irq.c2
-rw-r--r--arch/arm/mach-versatile/core.c10
-rw-r--r--arch/arm/mm/ioremap.c6
-rw-r--r--arch/arm/oprofile/op_model_xscale.c4
-rw-r--r--arch/arm/plat-iop/time.c4
-rw-r--r--arch/arm/plat-omap/dma.c9
-rw-r--r--arch/arm/plat-omap/gpio.c5
-rw-r--r--arch/arm/plat-omap/mcbsp.c4
-rw-r--r--arch/arm/plat-omap/timer32k.c15
91 files changed, 266 insertions, 313 deletions
diff --git a/arch/arm/common/locomo.c b/arch/arm/common/locomo.c
index 181ef1ead5b8..80a72c75214f 100644
--- a/arch/arm/common/locomo.c
+++ b/arch/arm/common/locomo.c
@@ -163,8 +163,7 @@ static struct locomo_dev_info locomo_devices[] = {
163#define LOCOMO_IRQ_LT_START (IRQ_LOCOMO_LT) 163#define LOCOMO_IRQ_LT_START (IRQ_LOCOMO_LT)
164#define LOCOMO_IRQ_SPI_START (IRQ_LOCOMO_SPI_RFR) 164#define LOCOMO_IRQ_SPI_START (IRQ_LOCOMO_SPI_RFR)
165 165
166static void locomo_handler(unsigned int irq, struct irqdesc *desc, 166static void locomo_handler(unsigned int irq, struct irqdesc *desc)
167 struct pt_regs *regs)
168{ 167{
169 int req, i; 168 int req, i;
170 struct irqdesc *d; 169 struct irqdesc *d;
@@ -182,7 +181,7 @@ static void locomo_handler(unsigned int irq, struct irqdesc *desc,
182 d = irq_desc + irq; 181 d = irq_desc + irq;
183 for (i = 0; i <= 3; i++, d++, irq++) { 182 for (i = 0; i <= 3; i++, d++, irq++) {
184 if (req & (0x0100 << i)) { 183 if (req & (0x0100 << i)) {
185 desc_handle_irq(irq, d, regs); 184 desc_handle_irq(irq, d);
186 } 185 }
187 186
188 } 187 }
@@ -218,15 +217,14 @@ static struct irq_chip locomo_chip = {
218 .unmask = locomo_unmask_irq, 217 .unmask = locomo_unmask_irq,
219}; 218};
220 219
221static void locomo_key_handler(unsigned int irq, struct irqdesc *desc, 220static void locomo_key_handler(unsigned int irq, struct irqdesc *desc)
222 struct pt_regs *regs)
223{ 221{
224 struct irqdesc *d; 222 struct irqdesc *d;
225 void __iomem *mapbase = get_irq_chipdata(irq); 223 void __iomem *mapbase = get_irq_chipdata(irq);
226 224
227 if (locomo_readl(mapbase + LOCOMO_KEYBOARD + LOCOMO_KIC) & 0x0001) { 225 if (locomo_readl(mapbase + LOCOMO_KEYBOARD + LOCOMO_KIC) & 0x0001) {
228 d = irq_desc + LOCOMO_IRQ_KEY_START; 226 d = irq_desc + LOCOMO_IRQ_KEY_START;
229 desc_handle_irq(LOCOMO_IRQ_KEY_START, d, regs); 227 desc_handle_irq(LOCOMO_IRQ_KEY_START, d);
230 } 228 }
231} 229}
232 230
@@ -264,8 +262,7 @@ static struct irq_chip locomo_key_chip = {
264 .unmask = locomo_key_unmask_irq, 262 .unmask = locomo_key_unmask_irq,
265}; 263};
266 264
267static void locomo_gpio_handler(unsigned int irq, struct irqdesc *desc, 265static void locomo_gpio_handler(unsigned int irq, struct irqdesc *desc)
268 struct pt_regs *regs)
269{ 266{
270 int req, i; 267 int req, i;
271 struct irqdesc *d; 268 struct irqdesc *d;
@@ -280,7 +277,7 @@ static void locomo_gpio_handler(unsigned int irq, struct irqdesc *desc,
280 d = irq_desc + LOCOMO_IRQ_GPIO_START; 277 d = irq_desc + LOCOMO_IRQ_GPIO_START;
281 for (i = 0; i <= 15; i++, irq++, d++) { 278 for (i = 0; i <= 15; i++, irq++, d++) {
282 if (req & (0x0001 << i)) { 279 if (req & (0x0001 << i)) {
283 desc_handle_irq(irq, d, regs); 280 desc_handle_irq(irq, d);
284 } 281 }
285 } 282 }
286 } 283 }
@@ -328,15 +325,14 @@ static struct irq_chip locomo_gpio_chip = {
328 .unmask = locomo_gpio_unmask_irq, 325 .unmask = locomo_gpio_unmask_irq,
329}; 326};
330 327
331static void locomo_lt_handler(unsigned int irq, struct irqdesc *desc, 328static void locomo_lt_handler(unsigned int irq, struct irqdesc *desc)
332 struct pt_regs *regs)
333{ 329{
334 struct irqdesc *d; 330 struct irqdesc *d;
335 void __iomem *mapbase = get_irq_chipdata(irq); 331 void __iomem *mapbase = get_irq_chipdata(irq);
336 332
337 if (locomo_readl(mapbase + LOCOMO_LTINT) & 0x0001) { 333 if (locomo_readl(mapbase + LOCOMO_LTINT) & 0x0001) {
338 d = irq_desc + LOCOMO_IRQ_LT_START; 334 d = irq_desc + LOCOMO_IRQ_LT_START;
339 desc_handle_irq(LOCOMO_IRQ_LT_START, d, regs); 335 desc_handle_irq(LOCOMO_IRQ_LT_START, d);
340 } 336 }
341} 337}
342 338
@@ -374,8 +370,7 @@ static struct irq_chip locomo_lt_chip = {
374 .unmask = locomo_lt_unmask_irq, 370 .unmask = locomo_lt_unmask_irq,
375}; 371};
376 372
377static void locomo_spi_handler(unsigned int irq, struct irqdesc *desc, 373static void locomo_spi_handler(unsigned int irq, struct irqdesc *desc)
378 struct pt_regs *regs)
379{ 374{
380 int req, i; 375 int req, i;
381 struct irqdesc *d; 376 struct irqdesc *d;
@@ -388,7 +383,7 @@ static void locomo_spi_handler(unsigned int irq, struct irqdesc *desc,
388 383
389 for (i = 0; i <= 3; i++, irq++, d++) { 384 for (i = 0; i <= 3; i++, irq++, d++) {
390 if (req & (0x0001 << i)) { 385 if (req & (0x0001 << i)) {
391 desc_handle_irq(irq, d, regs); 386 desc_handle_irq(irq, d);
392 } 387 }
393 } 388 }
394 } 389 }
diff --git a/arch/arm/common/sa1111.c b/arch/arm/common/sa1111.c
index 30046ad41ced..d5f72010a6f3 100644
--- a/arch/arm/common/sa1111.c
+++ b/arch/arm/common/sa1111.c
@@ -147,7 +147,7 @@ void __init sa1111_adjust_zones(int node, unsigned long *size, unsigned long *ho
147 * will call us again if there are more interrupts to process. 147 * will call us again if there are more interrupts to process.
148 */ 148 */
149static void 149static void
150sa1111_irq_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs) 150sa1111_irq_handler(unsigned int irq, struct irqdesc *desc)
151{ 151{
152 unsigned int stat0, stat1, i; 152 unsigned int stat0, stat1, i;
153 void __iomem *base = get_irq_data(irq); 153 void __iomem *base = get_irq_data(irq);
@@ -162,17 +162,17 @@ sa1111_irq_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs)
162 sa1111_writel(stat1, base + SA1111_INTSTATCLR1); 162 sa1111_writel(stat1, base + SA1111_INTSTATCLR1);
163 163
164 if (stat0 == 0 && stat1 == 0) { 164 if (stat0 == 0 && stat1 == 0) {
165 do_bad_IRQ(irq, desc, regs); 165 do_bad_IRQ(irq, desc);
166 return; 166 return;
167 } 167 }
168 168
169 for (i = IRQ_SA1111_START; stat0; i++, stat0 >>= 1) 169 for (i = IRQ_SA1111_START; stat0; i++, stat0 >>= 1)
170 if (stat0 & 1) 170 if (stat0 & 1)
171 handle_edge_irq(i, irq_desc + i, regs); 171 handle_edge_irq(i, irq_desc + i);
172 172
173 for (i = IRQ_SA1111_START + 32; stat1; i++, stat1 >>= 1) 173 for (i = IRQ_SA1111_START + 32; stat1; i++, stat1 >>= 1)
174 if (stat1 & 1) 174 if (stat1 & 1)
175 handle_edge_irq(i, irq_desc + i, regs); 175 handle_edge_irq(i, irq_desc + i);
176 176
177 /* For level-based interrupts */ 177 /* For level-based interrupts */
178 desc->chip->unmask(irq); 178 desc->chip->unmask(irq);
diff --git a/arch/arm/common/sharpsl_pm.c b/arch/arm/common/sharpsl_pm.c
index f412dedda684..605dedf96790 100644
--- a/arch/arm/common/sharpsl_pm.c
+++ b/arch/arm/common/sharpsl_pm.c
@@ -258,7 +258,7 @@ static void sharpsl_ac_timer(unsigned long data)
258} 258}
259 259
260 260
261irqreturn_t sharpsl_ac_isr(int irq, void *dev_id, struct pt_regs *fp) 261irqreturn_t sharpsl_ac_isr(int irq, void *dev_id)
262{ 262{
263 /* Delay the event slightly to debounce */ 263 /* Delay the event slightly to debounce */
264 /* Must be a smaller delay than the chrg_full_isr below */ 264 /* Must be a smaller delay than the chrg_full_isr below */
@@ -293,7 +293,7 @@ static void sharpsl_chrg_full_timer(unsigned long data)
293/* Charging Finished Interrupt (Not present on Corgi) */ 293/* Charging Finished Interrupt (Not present on Corgi) */
294/* Can trigger at the same time as an AC staus change so 294/* Can trigger at the same time as an AC staus change so
295 delay until after that has been processed */ 295 delay until after that has been processed */
296irqreturn_t sharpsl_chrg_full_isr(int irq, void *dev_id, struct pt_regs *fp) 296irqreturn_t sharpsl_chrg_full_isr(int irq, void *dev_id)
297{ 297{
298 if (sharpsl_pm.flags & SHARPSL_SUSPENDED) 298 if (sharpsl_pm.flags & SHARPSL_SUSPENDED)
299 return IRQ_HANDLED; 299 return IRQ_HANDLED;
@@ -304,7 +304,7 @@ irqreturn_t sharpsl_chrg_full_isr(int irq, void *dev_id, struct pt_regs *fp)
304 return IRQ_HANDLED; 304 return IRQ_HANDLED;
305} 305}
306 306
307irqreturn_t sharpsl_fatal_isr(int irq, void *dev_id, struct pt_regs *fp) 307irqreturn_t sharpsl_fatal_isr(int irq, void *dev_id)
308{ 308{
309 int is_fatal = 0; 309 int is_fatal = 0;
310 310
diff --git a/arch/arm/common/time-acorn.c b/arch/arm/common/time-acorn.c
index 3f60dd9aca80..34038eccbba9 100644
--- a/arch/arm/common/time-acorn.c
+++ b/arch/arm/common/time-acorn.c
@@ -67,10 +67,10 @@ void __init ioctime_init(void)
67} 67}
68 68
69static irqreturn_t 69static irqreturn_t
70ioc_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 70ioc_timer_interrupt(int irq, void *dev_id)
71{ 71{
72 write_seqlock(&xtime_lock); 72 write_seqlock(&xtime_lock);
73 timer_tick(regs); 73 timer_tick();
74 write_sequnlock(&xtime_lock); 74 write_sequnlock(&xtime_lock);
75 return IRQ_HANDLED; 75 return IRQ_HANDLED;
76} 76}
diff --git a/arch/arm/kernel/ecard.c b/arch/arm/kernel/ecard.c
index 3e14b1348c0b..b27513a0f11e 100644
--- a/arch/arm/kernel/ecard.c
+++ b/arch/arm/kernel/ecard.c
@@ -567,7 +567,7 @@ static void ecard_check_lockup(struct irqdesc *desc)
567} 567}
568 568
569static void 569static void
570ecard_irq_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs) 570ecard_irq_handler(unsigned int irq, struct irqdesc *desc)
571{ 571{
572 ecard_t *ec; 572 ecard_t *ec;
573 int called = 0; 573 int called = 0;
@@ -586,7 +586,7 @@ ecard_irq_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs)
586 586
587 if (pending) { 587 if (pending) {
588 struct irqdesc *d = irq_desc + ec->irq; 588 struct irqdesc *d = irq_desc + ec->irq;
589 desc_handle_irq(ec->irq, d, regs); 589 desc_handle_irq(ec->irq, d);
590 called ++; 590 called ++;
591 } 591 }
592 } 592 }
@@ -609,7 +609,7 @@ static unsigned char first_set[] =
609}; 609};
610 610
611static void 611static void
612ecard_irqexp_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs) 612ecard_irqexp_handler(unsigned int irq, struct irqdesc *desc)
613{ 613{
614 const unsigned int statusmask = 15; 614 const unsigned int statusmask = 15;
615 unsigned int status; 615 unsigned int status;
@@ -633,7 +633,7 @@ ecard_irqexp_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *reg
633 * Serial cards should go in 0/1, ethernet/scsi in 2/3 633 * Serial cards should go in 0/1, ethernet/scsi in 2/3
634 * otherwise you will lose serial data at high speeds! 634 * otherwise you will lose serial data at high speeds!
635 */ 635 */
636 desc_handle_irq(ec->irq, d, regs); 636 desc_handle_irq(ec->irq, d);
637 } else { 637 } else {
638 printk(KERN_WARNING "card%d: interrupt from unclaimed " 638 printk(KERN_WARNING "card%d: interrupt from unclaimed "
639 "card???\n", slot); 639 "card???\n", slot);
diff --git a/arch/arm/kernel/irq.c b/arch/arm/kernel/irq.c
index 2e1bf830fe11..2c4ff1cbe334 100644
--- a/arch/arm/kernel/irq.c
+++ b/arch/arm/kernel/irq.c
@@ -111,6 +111,7 @@ static struct irq_desc bad_irq_desc = {
111 */ 111 */
112asmlinkage void asm_do_IRQ(unsigned int irq, struct pt_regs *regs) 112asmlinkage void asm_do_IRQ(unsigned int irq, struct pt_regs *regs)
113{ 113{
114 struct pt_regs *old_regs = set_irq_regs(regs);
114 struct irqdesc *desc = irq_desc + irq; 115 struct irqdesc *desc = irq_desc + irq;
115 116
116 /* 117 /*
@@ -122,12 +123,13 @@ asmlinkage void asm_do_IRQ(unsigned int irq, struct pt_regs *regs)
122 123
123 irq_enter(); 124 irq_enter();
124 125
125 desc_handle_irq(irq, desc, regs); 126 desc_handle_irq(irq, desc);
126 127
127 /* AT91 specific workaround */ 128 /* AT91 specific workaround */
128 irq_finish(irq); 129 irq_finish(irq);
129 130
130 irq_exit(); 131 irq_exit();
132 set_irq_regs(old_regs);
131} 133}
132 134
133void set_irq_flags(unsigned int irq, unsigned int iflags) 135void set_irq_flags(unsigned int irq, unsigned int iflags)
diff --git a/arch/arm/kernel/time.c b/arch/arm/kernel/time.c
index b030320b17c7..c03cab5c4c79 100644
--- a/arch/arm/kernel/time.c
+++ b/arch/arm/kernel/time.c
@@ -27,6 +27,7 @@
27#include <linux/profile.h> 27#include <linux/profile.h>
28#include <linux/sysdev.h> 28#include <linux/sysdev.h>
29#include <linux/timer.h> 29#include <linux/timer.h>
30#include <linux/irq.h>
30 31
31#include <asm/leds.h> 32#include <asm/leds.h>
32#include <asm/thread_info.h> 33#include <asm/thread_info.h>
@@ -324,9 +325,10 @@ EXPORT_SYMBOL(restore_time_delta);
324/* 325/*
325 * Kernel system timer support. 326 * Kernel system timer support.
326 */ 327 */
327void timer_tick(struct pt_regs *regs) 328void timer_tick(void)
328{ 329{
329 profile_tick(CPU_PROFILING, regs); 330 struct pt_regs *regs = get_irq_regs();
331 profile_tick(CPU_PROFILING);
330 do_leds(); 332 do_leds();
331 do_set_rtc(); 333 do_set_rtc();
332 do_timer(1); 334 do_timer(1);
diff --git a/arch/arm/mach-aaec2000/core.c b/arch/arm/mach-aaec2000/core.c
index baa997c857dc..fe3d297d682d 100644
--- a/arch/arm/mach-aaec2000/core.c
+++ b/arch/arm/mach-aaec2000/core.c
@@ -127,12 +127,12 @@ static unsigned long aaec2000_gettimeoffset(void)
127 127
128/* We enter here with IRQs enabled */ 128/* We enter here with IRQs enabled */
129static irqreturn_t 129static irqreturn_t
130aaec2000_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 130aaec2000_timer_interrupt(int irq, void *dev_id)
131{ 131{
132 /* TODO: Check timer accuracy */ 132 /* TODO: Check timer accuracy */
133 write_seqlock(&xtime_lock); 133 write_seqlock(&xtime_lock);
134 134
135 timer_tick(regs); 135 timer_tick();
136 TIMER1_CLEAR = 1; 136 TIMER1_CLEAR = 1;
137 137
138 write_sequnlock(&xtime_lock); 138 write_sequnlock(&xtime_lock);
diff --git a/arch/arm/mach-at91rm9200/at91rm9200_time.c b/arch/arm/mach-at91rm9200/at91rm9200_time.c
index a92a8622c78a..07c9cea8961d 100644
--- a/arch/arm/mach-at91rm9200/at91rm9200_time.c
+++ b/arch/arm/mach-at91rm9200/at91rm9200_time.c
@@ -65,13 +65,13 @@ static unsigned long at91rm9200_gettimeoffset(void)
65/* 65/*
66 * IRQ handler for the timer. 66 * IRQ handler for the timer.
67 */ 67 */
68static irqreturn_t at91rm9200_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 68static irqreturn_t at91rm9200_timer_interrupt(int irq, void *dev_id)
69{ 69{
70 if (at91_sys_read(AT91_ST_SR) & AT91_ST_PITS) { /* This is a shared interrupt */ 70 if (at91_sys_read(AT91_ST_SR) & AT91_ST_PITS) { /* This is a shared interrupt */
71 write_seqlock(&xtime_lock); 71 write_seqlock(&xtime_lock);
72 72
73 while (((read_CRTR() - last_crtr) & AT91_ST_ALMV) >= LATCH) { 73 while (((read_CRTR() - last_crtr) & AT91_ST_ALMV) >= LATCH) {
74 timer_tick(regs); 74 timer_tick();
75 last_crtr = (last_crtr + LATCH) & AT91_ST_ALMV; 75 last_crtr = (last_crtr + LATCH) & AT91_ST_ALMV;
76 } 76 }
77 77
diff --git a/arch/arm/mach-at91rm9200/gpio.c b/arch/arm/mach-at91rm9200/gpio.c
index 58c9bf5e9520..7467d644f0a3 100644
--- a/arch/arm/mach-at91rm9200/gpio.c
+++ b/arch/arm/mach-at91rm9200/gpio.c
@@ -332,7 +332,7 @@ static struct irq_chip gpio_irqchip = {
332 .set_wake = gpio_irq_set_wake, 332 .set_wake = gpio_irq_set_wake,
333}; 333};
334 334
335static void gpio_irq_handler(unsigned irq, struct irqdesc *desc, struct pt_regs *regs) 335static void gpio_irq_handler(unsigned irq, struct irqdesc *desc)
336{ 336{
337 unsigned pin; 337 unsigned pin;
338 struct irqdesc *gpio; 338 struct irqdesc *gpio;
@@ -363,7 +363,7 @@ static void gpio_irq_handler(unsigned irq, struct irqdesc *desc, struct pt_regs
363 gpio_irq_mask(pin); 363 gpio_irq_mask(pin);
364 } 364 }
365 else 365 else
366 desc_handle_irq(pin, gpio, regs); 366 desc_handle_irq(pin, gpio);
367 } 367 }
368 pin++; 368 pin++;
369 gpio++; 369 gpio++;
diff --git a/arch/arm/mach-clps711x/time.c b/arch/arm/mach-clps711x/time.c
index a071eac4a30a..428493dd4687 100644
--- a/arch/arm/mach-clps711x/time.c
+++ b/arch/arm/mach-clps711x/time.c
@@ -48,10 +48,10 @@ static unsigned long clps711x_gettimeoffset(void)
48 * IRQ handler for the timer 48 * IRQ handler for the timer
49 */ 49 */
50static irqreturn_t 50static irqreturn_t
51p720t_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 51p720t_timer_interrupt(int irq, void *dev_id)
52{ 52{
53 write_seqlock(&xtime_lock); 53 write_seqlock(&xtime_lock);
54 timer_tick(regs); 54 timer_tick();
55 write_sequnlock(&xtime_lock); 55 write_sequnlock(&xtime_lock);
56 return IRQ_HANDLED; 56 return IRQ_HANDLED;
57} 57}
diff --git a/arch/arm/mach-clps7500/core.c b/arch/arm/mach-clps7500/core.c
index 92eaebdd5606..fb10cf252588 100644
--- a/arch/arm/mach-clps7500/core.c
+++ b/arch/arm/mach-clps7500/core.c
@@ -292,11 +292,11 @@ extern void ioctime_init(void);
292extern unsigned long ioc_timer_gettimeoffset(void); 292extern unsigned long ioc_timer_gettimeoffset(void);
293 293
294static irqreturn_t 294static irqreturn_t
295clps7500_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 295clps7500_timer_interrupt(int irq, void *dev_id)
296{ 296{
297 write_seqlock(&xtime_lock); 297 write_seqlock(&xtime_lock);
298 298
299 timer_tick(regs); 299 timer_tick();
300 300
301 /* Why not using do_leds interface?? */ 301 /* Why not using do_leds interface?? */
302 { 302 {
diff --git a/arch/arm/mach-ebsa110/core.c b/arch/arm/mach-ebsa110/core.c
index 70dd12ef3c40..90103ab373a6 100644
--- a/arch/arm/mach-ebsa110/core.c
+++ b/arch/arm/mach-ebsa110/core.c
@@ -174,7 +174,7 @@ static unsigned long ebsa110_gettimeoffset(void)
174} 174}
175 175
176static irqreturn_t 176static irqreturn_t
177ebsa110_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 177ebsa110_timer_interrupt(int irq, void *dev_id)
178{ 178{
179 u32 count; 179 u32 count;
180 180
@@ -190,7 +190,7 @@ ebsa110_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
190 __raw_writeb(count & 0xff, PIT_T1); 190 __raw_writeb(count & 0xff, PIT_T1);
191 __raw_writeb(count >> 8, PIT_T1); 191 __raw_writeb(count >> 8, PIT_T1);
192 192
193 timer_tick(regs); 193 timer_tick();
194 194
195 write_sequnlock(&xtime_lock); 195 write_sequnlock(&xtime_lock);
196 196
diff --git a/arch/arm/mach-ep93xx/core.c b/arch/arm/mach-ep93xx/core.c
index a87a784b9201..e3fd1ab6adcc 100644
--- a/arch/arm/mach-ep93xx/core.c
+++ b/arch/arm/mach-ep93xx/core.c
@@ -97,7 +97,7 @@ static unsigned int last_jiffy_time;
97 97
98#define TIMER4_TICKS_PER_JIFFY ((CLOCK_TICK_RATE + (HZ/2)) / HZ) 98#define TIMER4_TICKS_PER_JIFFY ((CLOCK_TICK_RATE + (HZ/2)) / HZ)
99 99
100static int ep93xx_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 100static int ep93xx_timer_interrupt(int irq, void *dev_id)
101{ 101{
102 write_seqlock(&xtime_lock); 102 write_seqlock(&xtime_lock);
103 103
@@ -106,7 +106,7 @@ static int ep93xx_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
106 (__raw_readl(EP93XX_TIMER4_VALUE_LOW) - last_jiffy_time) 106 (__raw_readl(EP93XX_TIMER4_VALUE_LOW) - last_jiffy_time)
107 >= TIMER4_TICKS_PER_JIFFY) { 107 >= TIMER4_TICKS_PER_JIFFY) {
108 last_jiffy_time += TIMER4_TICKS_PER_JIFFY; 108 last_jiffy_time += TIMER4_TICKS_PER_JIFFY;
109 timer_tick(regs); 109 timer_tick();
110 } 110 }
111 111
112 write_sequnlock(&xtime_lock); 112 write_sequnlock(&xtime_lock);
@@ -245,7 +245,7 @@ EXPORT_SYMBOL(gpio_line_set);
245 * EP93xx IRQ handling 245 * EP93xx IRQ handling
246 *************************************************************************/ 246 *************************************************************************/
247static void ep93xx_gpio_ab_irq_handler(unsigned int irq, 247static void ep93xx_gpio_ab_irq_handler(unsigned int irq,
248 struct irqdesc *desc, struct pt_regs *regs) 248 struct irqdesc *desc)
249{ 249{
250 unsigned char status; 250 unsigned char status;
251 int i; 251 int i;
@@ -254,7 +254,7 @@ static void ep93xx_gpio_ab_irq_handler(unsigned int irq,
254 for (i = 0; i < 8; i++) { 254 for (i = 0; i < 8; i++) {
255 if (status & (1 << i)) { 255 if (status & (1 << i)) {
256 desc = irq_desc + IRQ_EP93XX_GPIO(0) + i; 256 desc = irq_desc + IRQ_EP93XX_GPIO(0) + i;
257 desc_handle_irq(IRQ_EP93XX_GPIO(0) + i, desc, regs); 257 desc_handle_irq(IRQ_EP93XX_GPIO(0) + i, desc);
258 } 258 }
259 } 259 }
260 260
@@ -262,7 +262,7 @@ static void ep93xx_gpio_ab_irq_handler(unsigned int irq,
262 for (i = 0; i < 8; i++) { 262 for (i = 0; i < 8; i++) {
263 if (status & (1 << i)) { 263 if (status & (1 << i)) {
264 desc = irq_desc + IRQ_EP93XX_GPIO(8) + i; 264 desc = irq_desc + IRQ_EP93XX_GPIO(8) + i;
265 desc_handle_irq(IRQ_EP93XX_GPIO(8) + i, desc, regs); 265 desc_handle_irq(IRQ_EP93XX_GPIO(8) + i, desc);
266 } 266 }
267 } 267 }
268} 268}
diff --git a/arch/arm/mach-footbridge/dc21285-timer.c b/arch/arm/mach-footbridge/dc21285-timer.c
index 2af610811ca4..fa6be870c6c2 100644
--- a/arch/arm/mach-footbridge/dc21285-timer.c
+++ b/arch/arm/mach-footbridge/dc21285-timer.c
@@ -28,13 +28,13 @@ static unsigned long timer1_gettimeoffset (void)
28} 28}
29 29
30static irqreturn_t 30static irqreturn_t
31timer1_interrupt(int irq, void *dev_id, struct pt_regs *regs) 31timer1_interrupt(int irq, void *dev_id)
32{ 32{
33 write_seqlock(&xtime_lock); 33 write_seqlock(&xtime_lock);
34 34
35 *CSR_TIMER1_CLR = 0; 35 *CSR_TIMER1_CLR = 0;
36 36
37 timer_tick(regs); 37 timer_tick();
38 38
39 write_sequnlock(&xtime_lock); 39 write_sequnlock(&xtime_lock);
40 40
diff --git a/arch/arm/mach-footbridge/dc21285.c b/arch/arm/mach-footbridge/dc21285.c
index a1ae49df5c3b..fa5d4976f514 100644
--- a/arch/arm/mach-footbridge/dc21285.c
+++ b/arch/arm/mach-footbridge/dc21285.c
@@ -154,7 +154,7 @@ static void dc21285_enable_error(unsigned long __data)
154/* 154/*
155 * Warn on PCI errors. 155 * Warn on PCI errors.
156 */ 156 */
157static irqreturn_t dc21285_abort_irq(int irq, void *dev_id, struct pt_regs *regs) 157static irqreturn_t dc21285_abort_irq(int irq, void *dev_id)
158{ 158{
159 unsigned int cmd; 159 unsigned int cmd;
160 unsigned int status; 160 unsigned int status;
@@ -165,7 +165,7 @@ static irqreturn_t dc21285_abort_irq(int irq, void *dev_id, struct pt_regs *regs
165 165
166 if (status & PCI_STATUS_REC_MASTER_ABORT) { 166 if (status & PCI_STATUS_REC_MASTER_ABORT) {
167 printk(KERN_DEBUG "PCI: master abort, pc=0x%08lx\n", 167 printk(KERN_DEBUG "PCI: master abort, pc=0x%08lx\n",
168 instruction_pointer(regs)); 168 instruction_pointer(get_irq_regs()));
169 cmd |= PCI_STATUS_REC_MASTER_ABORT << 16; 169 cmd |= PCI_STATUS_REC_MASTER_ABORT << 16;
170 } 170 }
171 171
@@ -184,7 +184,7 @@ static irqreturn_t dc21285_abort_irq(int irq, void *dev_id, struct pt_regs *regs
184 return IRQ_HANDLED; 184 return IRQ_HANDLED;
185} 185}
186 186
187static irqreturn_t dc21285_serr_irq(int irq, void *dev_id, struct pt_regs *regs) 187static irqreturn_t dc21285_serr_irq(int irq, void *dev_id)
188{ 188{
189 struct timer_list *timer = dev_id; 189 struct timer_list *timer = dev_id;
190 unsigned int cntl; 190 unsigned int cntl;
@@ -206,7 +206,7 @@ static irqreturn_t dc21285_serr_irq(int irq, void *dev_id, struct pt_regs *regs)
206 return IRQ_HANDLED; 206 return IRQ_HANDLED;
207} 207}
208 208
209static irqreturn_t dc21285_discard_irq(int irq, void *dev_id, struct pt_regs *regs) 209static irqreturn_t dc21285_discard_irq(int irq, void *dev_id)
210{ 210{
211 printk(KERN_DEBUG "PCI: discard timer expired\n"); 211 printk(KERN_DEBUG "PCI: discard timer expired\n");
212 *CSR_SA110_CNTL &= 0xffffde07; 212 *CSR_SA110_CNTL &= 0xffffde07;
@@ -214,7 +214,7 @@ static irqreturn_t dc21285_discard_irq(int irq, void *dev_id, struct pt_regs *re
214 return IRQ_HANDLED; 214 return IRQ_HANDLED;
215} 215}
216 216
217static irqreturn_t dc21285_dparity_irq(int irq, void *dev_id, struct pt_regs *regs) 217static irqreturn_t dc21285_dparity_irq(int irq, void *dev_id)
218{ 218{
219 unsigned int cmd; 219 unsigned int cmd;
220 220
@@ -228,7 +228,7 @@ static irqreturn_t dc21285_dparity_irq(int irq, void *dev_id, struct pt_regs *re
228 return IRQ_HANDLED; 228 return IRQ_HANDLED;
229} 229}
230 230
231static irqreturn_t dc21285_parity_irq(int irq, void *dev_id, struct pt_regs *regs) 231static irqreturn_t dc21285_parity_irq(int irq, void *dev_id)
232{ 232{
233 struct timer_list *timer = dev_id; 233 struct timer_list *timer = dev_id;
234 unsigned int cmd; 234 unsigned int cmd;
diff --git a/arch/arm/mach-footbridge/isa-irq.c b/arch/arm/mach-footbridge/isa-irq.c
index 87448c2d6baa..888dedd501b9 100644
--- a/arch/arm/mach-footbridge/isa-irq.c
+++ b/arch/arm/mach-footbridge/isa-irq.c
@@ -85,17 +85,17 @@ static struct irqchip isa_hi_chip = {
85}; 85};
86 86
87static void 87static void
88isa_irq_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs) 88isa_irq_handler(unsigned int irq, struct irqdesc *desc)
89{ 89{
90 unsigned int isa_irq = *(unsigned char *)PCIIACK_BASE; 90 unsigned int isa_irq = *(unsigned char *)PCIIACK_BASE;
91 91
92 if (isa_irq < _ISA_IRQ(0) || isa_irq >= _ISA_IRQ(16)) { 92 if (isa_irq < _ISA_IRQ(0) || isa_irq >= _ISA_IRQ(16)) {
93 do_bad_IRQ(isa_irq, desc, regs); 93 do_bad_IRQ(isa_irq, desc);
94 return; 94 return;
95 } 95 }
96 96
97 desc = irq_desc + isa_irq; 97 desc = irq_desc + isa_irq;
98 desc_handle_irq(isa_irq, desc, regs); 98 desc_handle_irq(isa_irq, desc);
99} 99}
100 100
101static struct irqaction irq_cascade = { 101static struct irqaction irq_cascade = {
diff --git a/arch/arm/mach-footbridge/isa-timer.c b/arch/arm/mach-footbridge/isa-timer.c
index c4810a40c8e1..d884a3954fb4 100644
--- a/arch/arm/mach-footbridge/isa-timer.c
+++ b/arch/arm/mach-footbridge/isa-timer.c
@@ -62,10 +62,10 @@ static unsigned long isa_gettimeoffset(void)
62} 62}
63 63
64static irqreturn_t 64static irqreturn_t
65isa_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 65isa_timer_interrupt(int irq, void *dev_id)
66{ 66{
67 write_seqlock(&xtime_lock); 67 write_seqlock(&xtime_lock);
68 timer_tick(regs); 68 timer_tick();
69 write_sequnlock(&xtime_lock); 69 write_sequnlock(&xtime_lock);
70 return IRQ_HANDLED; 70 return IRQ_HANDLED;
71} 71}
diff --git a/arch/arm/mach-h720x/common.c b/arch/arm/mach-h720x/common.c
index c096b4569308..4719229a1a78 100644
--- a/arch/arm/mach-h720x/common.c
+++ b/arch/arm/mach-h720x/common.c
@@ -101,14 +101,14 @@ static void inline unmask_gpio_irq(u32 irq)
101 101
102static void 102static void
103h720x_gpio_handler(unsigned int mask, unsigned int irq, 103h720x_gpio_handler(unsigned int mask, unsigned int irq,
104 struct irqdesc *desc, struct pt_regs *regs) 104 struct irqdesc *desc)
105{ 105{
106 IRQDBG("%s irq: %d\n",__FUNCTION__,irq); 106 IRQDBG("%s irq: %d\n",__FUNCTION__,irq);
107 desc = irq_desc + irq; 107 desc = irq_desc + irq;
108 while (mask) { 108 while (mask) {
109 if (mask & 1) { 109 if (mask & 1) {
110 IRQDBG("handling irq %d\n", irq); 110 IRQDBG("handling irq %d\n", irq);
111 desc_handle_irq(irq, desc, regs); 111 desc_handle_irq(irq, desc);
112 } 112 }
113 irq++; 113 irq++;
114 desc++; 114 desc++;
@@ -117,63 +117,58 @@ h720x_gpio_handler(unsigned int mask, unsigned int irq,
117} 117}
118 118
119static void 119static void
120h720x_gpioa_demux_handler(unsigned int irq_unused, struct irqdesc *desc, 120h720x_gpioa_demux_handler(unsigned int irq_unused, struct irqdesc *desc)
121 struct pt_regs *regs)
122{ 121{
123 unsigned int mask, irq; 122 unsigned int mask, irq;
124 123
125 mask = CPU_REG(GPIO_A_VIRT,GPIO_STAT); 124 mask = CPU_REG(GPIO_A_VIRT,GPIO_STAT);
126 irq = IRQ_CHAINED_GPIOA(0); 125 irq = IRQ_CHAINED_GPIOA(0);
127 IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq); 126 IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq);
128 h720x_gpio_handler(mask, irq, desc, regs); 127 h720x_gpio_handler(mask, irq, desc);
129} 128}
130 129
131static void 130static void
132h720x_gpiob_demux_handler(unsigned int irq_unused, struct irqdesc *desc, 131h720x_gpiob_demux_handler(unsigned int irq_unused, struct irqdesc *desc)
133 struct pt_regs *regs)
134{ 132{
135 unsigned int mask, irq; 133 unsigned int mask, irq;
136 mask = CPU_REG(GPIO_B_VIRT,GPIO_STAT); 134 mask = CPU_REG(GPIO_B_VIRT,GPIO_STAT);
137 irq = IRQ_CHAINED_GPIOB(0); 135 irq = IRQ_CHAINED_GPIOB(0);
138 IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq); 136 IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq);
139 h720x_gpio_handler(mask, irq, desc, regs); 137 h720x_gpio_handler(mask, irq, desc);
140} 138}
141 139
142static void 140static void
143h720x_gpioc_demux_handler(unsigned int irq_unused, struct irqdesc *desc, 141h720x_gpioc_demux_handler(unsigned int irq_unused, struct irqdesc *desc)
144 struct pt_regs *regs)
145{ 142{
146 unsigned int mask, irq; 143 unsigned int mask, irq;
147 144
148 mask = CPU_REG(GPIO_C_VIRT,GPIO_STAT); 145 mask = CPU_REG(GPIO_C_VIRT,GPIO_STAT);
149 irq = IRQ_CHAINED_GPIOC(0); 146 irq = IRQ_CHAINED_GPIOC(0);
150 IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq); 147 IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq);
151 h720x_gpio_handler(mask, irq, desc, regs); 148 h720x_gpio_handler(mask, irq, desc);
152} 149}
153 150
154static void 151static void
155h720x_gpiod_demux_handler(unsigned int irq_unused, struct irqdesc *desc, 152h720x_gpiod_demux_handler(unsigned int irq_unused, struct irqdesc *desc)
156 struct pt_regs *regs)
157{ 153{
158 unsigned int mask, irq; 154 unsigned int mask, irq;
159 155
160 mask = CPU_REG(GPIO_D_VIRT,GPIO_STAT); 156 mask = CPU_REG(GPIO_D_VIRT,GPIO_STAT);
161 irq = IRQ_CHAINED_GPIOD(0); 157 irq = IRQ_CHAINED_GPIOD(0);
162 IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq); 158 IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq);
163 h720x_gpio_handler(mask, irq, desc, regs); 159 h720x_gpio_handler(mask, irq, desc);
164} 160}
165 161
166#ifdef CONFIG_CPU_H7202 162#ifdef CONFIG_CPU_H7202
167static void 163static void
168h720x_gpioe_demux_handler(unsigned int irq_unused, struct irqdesc *desc, 164h720x_gpioe_demux_handler(unsigned int irq_unused, struct irqdesc *desc)
169 struct pt_regs *regs)
170{ 165{
171 unsigned int mask, irq; 166 unsigned int mask, irq;
172 167
173 mask = CPU_REG(GPIO_E_VIRT,GPIO_STAT); 168 mask = CPU_REG(GPIO_E_VIRT,GPIO_STAT);
174 irq = IRQ_CHAINED_GPIOE(0); 169 irq = IRQ_CHAINED_GPIOE(0);
175 IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq); 170 IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq);
176 h720x_gpio_handler(mask, irq, desc, regs); 171 h720x_gpio_handler(mask, irq, desc);
177} 172}
178#endif 173#endif
179 174
diff --git a/arch/arm/mach-h720x/cpu-h7201.c b/arch/arm/mach-h720x/cpu-h7201.c
index a9a8255a3a03..13f76bdb3d9d 100644
--- a/arch/arm/mach-h720x/cpu-h7201.c
+++ b/arch/arm/mach-h720x/cpu-h7201.c
@@ -27,12 +27,12 @@
27 * Timer interrupt handler 27 * Timer interrupt handler
28 */ 28 */
29static irqreturn_t 29static irqreturn_t
30h7201_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 30h7201_timer_interrupt(int irq, void *dev_id)
31{ 31{
32 write_seqlock(&xtime_lock); 32 write_seqlock(&xtime_lock);
33 33
34 CPU_REG (TIMER_VIRT, TIMER_TOPSTAT); 34 CPU_REG (TIMER_VIRT, TIMER_TOPSTAT);
35 timer_tick(regs); 35 timer_tick();
36 36
37 write_sequnlock(&xtime_lock); 37 write_sequnlock(&xtime_lock);
38 38
diff --git a/arch/arm/mach-h720x/cpu-h7202.c b/arch/arm/mach-h720x/cpu-h7202.c
index da678d163fd9..06fecaefd8dc 100644
--- a/arch/arm/mach-h720x/cpu-h7202.c
+++ b/arch/arm/mach-h720x/cpu-h7202.c
@@ -106,8 +106,7 @@ static struct platform_device *devices[] __initdata = {
106 * we have to handle all timer interrupts in one place. 106 * we have to handle all timer interrupts in one place.
107 */ 107 */
108static void 108static void
109h7202_timerx_demux_handler(unsigned int irq_unused, struct irqdesc *desc, 109h7202_timerx_demux_handler(unsigned int irq_unused, struct irqdesc *desc)
110 struct pt_regs *regs)
111{ 110{
112 unsigned int mask, irq; 111 unsigned int mask, irq;
113 112
@@ -115,7 +114,7 @@ h7202_timerx_demux_handler(unsigned int irq_unused, struct irqdesc *desc,
115 114
116 if ( mask & TSTAT_T0INT ) { 115 if ( mask & TSTAT_T0INT ) {
117 write_seqlock(&xtime_lock); 116 write_seqlock(&xtime_lock);
118 timer_tick(regs); 117 timer_tick();
119 write_sequnlock(&xtime_lock); 118 write_sequnlock(&xtime_lock);
120 if( mask == TSTAT_T0INT ) 119 if( mask == TSTAT_T0INT )
121 return; 120 return;
@@ -126,7 +125,7 @@ h7202_timerx_demux_handler(unsigned int irq_unused, struct irqdesc *desc,
126 desc = irq_desc + irq; 125 desc = irq_desc + irq;
127 while (mask) { 126 while (mask) {
128 if (mask & 1) 127 if (mask & 1)
129 desc_handle_irq(irq, desc, regs); 128 desc_handle_irq(irq, desc);
130 irq++; 129 irq++;
131 desc++; 130 desc++;
132 mask >>= 1; 131 mask >>= 1;
@@ -137,9 +136,9 @@ h7202_timerx_demux_handler(unsigned int irq_unused, struct irqdesc *desc,
137 * Timer interrupt handler 136 * Timer interrupt handler
138 */ 137 */
139static irqreturn_t 138static irqreturn_t
140h7202_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 139h7202_timer_interrupt(int irq, void *dev_id)
141{ 140{
142 h7202_timerx_demux_handler(0, NULL, regs); 141 h7202_timerx_demux_handler(0, NULL);
143 return IRQ_HANDLED; 142 return IRQ_HANDLED;
144} 143}
145 144
diff --git a/arch/arm/mach-imx/dma.c b/arch/arm/mach-imx/dma.c
index 36578871ecc8..6d50d85a618c 100644
--- a/arch/arm/mach-imx/dma.c
+++ b/arch/arm/mach-imx/dma.c
@@ -279,8 +279,8 @@ imx_dma_setup_sg(imx_dmach_t dma_ch,
279 */ 279 */
280int 280int
281imx_dma_setup_handlers(imx_dmach_t dma_ch, 281imx_dma_setup_handlers(imx_dmach_t dma_ch,
282 void (*irq_handler) (int, void *, struct pt_regs *), 282 void (*irq_handler) (int, void *),
283 void (*err_handler) (int, void *, struct pt_regs *, int), 283 void (*err_handler) (int, void *, int),
284 void *data) 284 void *data)
285{ 285{
286 struct imx_dma_channel *imxdma = &imx_dma_channels[dma_ch]; 286 struct imx_dma_channel *imxdma = &imx_dma_channels[dma_ch];
@@ -461,7 +461,7 @@ imx_dma_request_by_prio(imx_dmach_t * pdma_ch, const char *name,
461 return -ENODEV; 461 return -ENODEV;
462} 462}
463 463
464static irqreturn_t dma_err_handler(int irq, void *dev_id, struct pt_regs *regs) 464static irqreturn_t dma_err_handler(int irq, void *dev_id)
465{ 465{
466 int i, disr = DISR; 466 int i, disr = DISR;
467 struct imx_dma_channel *channel; 467 struct imx_dma_channel *channel;
@@ -500,7 +500,7 @@ static irqreturn_t dma_err_handler(int irq, void *dev_id, struct pt_regs *regs)
500 /*imx_dma_channels[i].sg = NULL;*/ 500 /*imx_dma_channels[i].sg = NULL;*/
501 501
502 if (channel->name && channel->err_handler) { 502 if (channel->name && channel->err_handler) {
503 channel->err_handler(i, channel->data, regs, errcode); 503 channel->err_handler(i, channel->data, errcode);
504 continue; 504 continue;
505 } 505 }
506 506
@@ -517,7 +517,7 @@ static irqreturn_t dma_err_handler(int irq, void *dev_id, struct pt_regs *regs)
517 return IRQ_HANDLED; 517 return IRQ_HANDLED;
518} 518}
519 519
520static irqreturn_t dma_irq_handler(int irq, void *dev_id, struct pt_regs *regs) 520static irqreturn_t dma_irq_handler(int irq, void *dev_id)
521{ 521{
522 int i, disr = DISR; 522 int i, disr = DISR;
523 523
@@ -536,7 +536,7 @@ static irqreturn_t dma_irq_handler(int irq, void *dev_id, struct pt_regs *regs)
536 } else { 536 } else {
537 if (channel->irq_handler) 537 if (channel->irq_handler)
538 channel->irq_handler(i, 538 channel->irq_handler(i,
539 channel->data, regs); 539 channel->data);
540 } 540 }
541 } else { 541 } else {
542 /* 542 /*
diff --git a/arch/arm/mach-imx/irq.c b/arch/arm/mach-imx/irq.c
index 2688bd82c2a2..368b13b058ab 100644
--- a/arch/arm/mach-imx/irq.c
+++ b/arch/arm/mach-imx/irq.c
@@ -146,13 +146,13 @@ imx_gpio_unmask_irq(unsigned int irq)
146 146
147static void 147static void
148imx_gpio_handler(unsigned int mask, unsigned int irq, 148imx_gpio_handler(unsigned int mask, unsigned int irq,
149 struct irqdesc *desc, struct pt_regs *regs) 149 struct irqdesc *desc)
150{ 150{
151 desc = irq_desc + irq; 151 desc = irq_desc + irq;
152 while (mask) { 152 while (mask) {
153 if (mask & 1) { 153 if (mask & 1) {
154 DEBUG_IRQ("handling irq %d\n", irq); 154 DEBUG_IRQ("handling irq %d\n", irq);
155 desc_handle_irq(irq, desc, regs); 155 desc_handle_irq(irq, desc);
156 } 156 }
157 irq++; 157 irq++;
158 desc++; 158 desc++;
@@ -161,47 +161,43 @@ imx_gpio_handler(unsigned int mask, unsigned int irq,
161} 161}
162 162
163static void 163static void
164imx_gpioa_demux_handler(unsigned int irq_unused, struct irqdesc *desc, 164imx_gpioa_demux_handler(unsigned int irq_unused, struct irqdesc *desc)
165 struct pt_regs *regs)
166{ 165{
167 unsigned int mask, irq; 166 unsigned int mask, irq;
168 167
169 mask = ISR(0); 168 mask = ISR(0);
170 irq = IRQ_GPIOA(0); 169 irq = IRQ_GPIOA(0);
171 imx_gpio_handler(mask, irq, desc, regs); 170 imx_gpio_handler(mask, irq, desc);
172} 171}
173 172
174static void 173static void
175imx_gpiob_demux_handler(unsigned int irq_unused, struct irqdesc *desc, 174imx_gpiob_demux_handler(unsigned int irq_unused, struct irqdesc *desc)
176 struct pt_regs *regs)
177{ 175{
178 unsigned int mask, irq; 176 unsigned int mask, irq;
179 177
180 mask = ISR(1); 178 mask = ISR(1);
181 irq = IRQ_GPIOB(0); 179 irq = IRQ_GPIOB(0);
182 imx_gpio_handler(mask, irq, desc, regs); 180 imx_gpio_handler(mask, irq, desc);
183} 181}
184 182
185static void 183static void
186imx_gpioc_demux_handler(unsigned int irq_unused, struct irqdesc *desc, 184imx_gpioc_demux_handler(unsigned int irq_unused, struct irqdesc *desc)
187 struct pt_regs *regs)
188{ 185{
189 unsigned int mask, irq; 186 unsigned int mask, irq;
190 187
191 mask = ISR(2); 188 mask = ISR(2);
192 irq = IRQ_GPIOC(0); 189 irq = IRQ_GPIOC(0);
193 imx_gpio_handler(mask, irq, desc, regs); 190 imx_gpio_handler(mask, irq, desc);
194} 191}
195 192
196static void 193static void
197imx_gpiod_demux_handler(unsigned int irq_unused, struct irqdesc *desc, 194imx_gpiod_demux_handler(unsigned int irq_unused, struct irqdesc *desc)
198 struct pt_regs *regs)
199{ 195{
200 unsigned int mask, irq; 196 unsigned int mask, irq;
201 197
202 mask = ISR(3); 198 mask = ISR(3);
203 irq = IRQ_GPIOD(0); 199 irq = IRQ_GPIOD(0);
204 imx_gpio_handler(mask, irq, desc, regs); 200 imx_gpio_handler(mask, irq, desc);
205} 201}
206 202
207static struct irq_chip imx_internal_chip = { 203static struct irq_chip imx_internal_chip = {
diff --git a/arch/arm/mach-imx/time.c b/arch/arm/mach-imx/time.c
index 6ed7523c65bb..8ae4a2c5066f 100644
--- a/arch/arm/mach-imx/time.c
+++ b/arch/arm/mach-imx/time.c
@@ -56,7 +56,7 @@ static unsigned long imx_gettimeoffset(void)
56 * IRQ handler for the timer 56 * IRQ handler for the timer
57 */ 57 */
58static irqreturn_t 58static irqreturn_t
59imx_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 59imx_timer_interrupt(int irq, void *dev_id)
60{ 60{
61 write_seqlock(&xtime_lock); 61 write_seqlock(&xtime_lock);
62 62
@@ -64,7 +64,7 @@ imx_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
64 if (IMX_TSTAT(TIMER_BASE)) 64 if (IMX_TSTAT(TIMER_BASE))
65 IMX_TSTAT(TIMER_BASE) = 0; 65 IMX_TSTAT(TIMER_BASE) = 0;
66 66
67 timer_tick(regs); 67 timer_tick();
68 write_sequnlock(&xtime_lock); 68 write_sequnlock(&xtime_lock);
69 69
70 return IRQ_HANDLED; 70 return IRQ_HANDLED;
diff --git a/arch/arm/mach-integrator/core.c b/arch/arm/mach-integrator/core.c
index 42021fdfa0c6..8d880cb9ba39 100644
--- a/arch/arm/mach-integrator/core.c
+++ b/arch/arm/mach-integrator/core.c
@@ -248,7 +248,7 @@ unsigned long integrator_gettimeoffset(void)
248 * IRQ handler for the timer 248 * IRQ handler for the timer
249 */ 249 */
250static irqreturn_t 250static irqreturn_t
251integrator_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 251integrator_timer_interrupt(int irq, void *dev_id)
252{ 252{
253 write_seqlock(&xtime_lock); 253 write_seqlock(&xtime_lock);
254 254
@@ -262,7 +262,7 @@ integrator_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
262 * primary CPU 262 * primary CPU
263 */ 263 */
264 if (hard_smp_processor_id() == 0) { 264 if (hard_smp_processor_id() == 0) {
265 timer_tick(regs); 265 timer_tick();
266#ifdef CONFIG_SMP 266#ifdef CONFIG_SMP
267 smp_send_timer(); 267 smp_send_timer();
268#endif 268#endif
@@ -272,7 +272,7 @@ integrator_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
272 /* 272 /*
273 * this is the ARM equivalent of the APIC timer interrupt 273 * this is the ARM equivalent of the APIC timer interrupt
274 */ 274 */
275 update_process_times(user_mode(regs)); 275 update_process_times(user_mode(get_irq_regs()));
276#endif /* CONFIG_SMP */ 276#endif /* CONFIG_SMP */
277 277
278 write_sequnlock(&xtime_lock); 278 write_sequnlock(&xtime_lock);
diff --git a/arch/arm/mach-integrator/integrator_cp.c b/arch/arm/mach-integrator/integrator_cp.c
index 678b6ba2b463..771b65bffe69 100644
--- a/arch/arm/mach-integrator/integrator_cp.c
+++ b/arch/arm/mach-integrator/integrator_cp.c
@@ -202,12 +202,12 @@ static struct irq_chip sic_chip = {
202}; 202};
203 203
204static void 204static void
205sic_handle_irq(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs) 205sic_handle_irq(unsigned int irq, struct irqdesc *desc)
206{ 206{
207 unsigned long status = sic_readl(INTCP_VA_SIC_BASE + IRQ_STATUS); 207 unsigned long status = sic_readl(INTCP_VA_SIC_BASE + IRQ_STATUS);
208 208
209 if (status == 0) { 209 if (status == 0) {
210 do_bad_IRQ(irq, desc, regs); 210 do_bad_IRQ(irq, desc);
211 return; 211 return;
212 } 212 }
213 213
@@ -218,7 +218,7 @@ sic_handle_irq(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs)
218 irq += IRQ_SIC_START; 218 irq += IRQ_SIC_START;
219 219
220 desc = irq_desc + irq; 220 desc = irq_desc + irq;
221 desc_handle_irq(irq, desc, regs); 221 desc_handle_irq(irq, desc);
222 } while (status); 222 } while (status);
223} 223}
224 224
diff --git a/arch/arm/mach-integrator/pci_v3.c b/arch/arm/mach-integrator/pci_v3.c
index 4418f6d7572d..fb8c6d97b22b 100644
--- a/arch/arm/mach-integrator/pci_v3.c
+++ b/arch/arm/mach-integrator/pci_v3.c
@@ -440,9 +440,10 @@ v3_pci_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
440 return 1; 440 return 1;
441} 441}
442 442
443static irqreturn_t v3_irq(int irq, void *devid, struct pt_regs *regs) 443static irqreturn_t v3_irq(int irq, void *devid)
444{ 444{
445#ifdef CONFIG_DEBUG_LL 445#ifdef CONFIG_DEBUG_LL
446 struct pt_regs *regs = get_irq_regs();
446 unsigned long pc = instruction_pointer(regs); 447 unsigned long pc = instruction_pointer(regs);
447 unsigned long instr = *(unsigned long *)pc; 448 unsigned long instr = *(unsigned long *)pc;
448 char buf[128]; 449 char buf[128];
diff --git a/arch/arm/mach-integrator/time.c b/arch/arm/mach-integrator/time.c
index ee49cf790dab..5278f589fcee 100644
--- a/arch/arm/mach-integrator/time.c
+++ b/arch/arm/mach-integrator/time.c
@@ -96,8 +96,7 @@ static struct rtc_ops rtc_ops = {
96 .set_alarm = integrator_rtc_set_alarm, 96 .set_alarm = integrator_rtc_set_alarm,
97}; 97};
98 98
99static irqreturn_t arm_rtc_interrupt(int irq, void *dev_id, 99static irqreturn_t arm_rtc_interrupt(int irq, void *dev_id)
100 struct pt_regs *regs)
101{ 100{
102 writel(0, rtc_base + RTC_EOI); 101 writel(0, rtc_base + RTC_EOI);
103 return IRQ_HANDLED; 102 return IRQ_HANDLED;
diff --git a/arch/arm/mach-ixp2000/core.c b/arch/arm/mach-ixp2000/core.c
index 7f91f689a041..22c98e9dad28 100644
--- a/arch/arm/mach-ixp2000/core.c
+++ b/arch/arm/mach-ixp2000/core.c
@@ -204,7 +204,7 @@ unsigned long ixp2000_gettimeoffset (void)
204 return offset / ticks_per_usec; 204 return offset / ticks_per_usec;
205} 205}
206 206
207static int ixp2000_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 207static int ixp2000_timer_interrupt(int irq, void *dev_id)
208{ 208{
209 write_seqlock(&xtime_lock); 209 write_seqlock(&xtime_lock);
210 210
@@ -213,7 +213,7 @@ static int ixp2000_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
213 213
214 while ((signed long)(next_jiffy_time - *missing_jiffy_timer_csr) 214 while ((signed long)(next_jiffy_time - *missing_jiffy_timer_csr)
215 >= ticks_per_jiffy) { 215 >= ticks_per_jiffy) {
216 timer_tick(regs); 216 timer_tick();
217 next_jiffy_time -= ticks_per_jiffy; 217 next_jiffy_time -= ticks_per_jiffy;
218 } 218 }
219 219
@@ -308,7 +308,7 @@ EXPORT_SYMBOL(gpio_line_config);
308/************************************************************************* 308/*************************************************************************
309 * IRQ handling IXP2000 309 * IRQ handling IXP2000
310 *************************************************************************/ 310 *************************************************************************/
311static void ixp2000_GPIO_irq_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs) 311static void ixp2000_GPIO_irq_handler(unsigned int irq, struct irqdesc *desc)
312{ 312{
313 int i; 313 int i;
314 unsigned long status = *IXP2000_GPIO_INST; 314 unsigned long status = *IXP2000_GPIO_INST;
@@ -316,7 +316,7 @@ static void ixp2000_GPIO_irq_handler(unsigned int irq, struct irqdesc *desc, str
316 for (i = 0; i <= 7; i++) { 316 for (i = 0; i <= 7; i++) {
317 if (status & (1<<i)) { 317 if (status & (1<<i)) {
318 desc = irq_desc + i + IRQ_IXP2000_GPIO0; 318 desc = irq_desc + i + IRQ_IXP2000_GPIO0;
319 desc_handle_irq(i + IRQ_IXP2000_GPIO0, desc, regs); 319 desc_handle_irq(i + IRQ_IXP2000_GPIO0, desc);
320 } 320 }
321 } 321 }
322} 322}
@@ -401,7 +401,7 @@ static void ixp2000_pci_irq_unmask(unsigned int irq)
401/* 401/*
402 * Error interrupts. These are used extensively by the microengine drivers 402 * Error interrupts. These are used extensively by the microengine drivers
403 */ 403 */
404static void ixp2000_err_irq_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs) 404static void ixp2000_err_irq_handler(unsigned int irq, struct irqdesc *desc)
405{ 405{
406 int i; 406 int i;
407 unsigned long status = *IXP2000_IRQ_ERR_STATUS; 407 unsigned long status = *IXP2000_IRQ_ERR_STATUS;
@@ -409,7 +409,7 @@ static void ixp2000_err_irq_handler(unsigned int irq, struct irqdesc *desc, str
409 for(i = 31; i >= 0; i--) { 409 for(i = 31; i >= 0; i--) {
410 if(status & (1 << i)) { 410 if(status & (1 << i)) {
411 desc = irq_desc + IRQ_IXP2000_DRAM0_MIN_ERR + i; 411 desc = irq_desc + IRQ_IXP2000_DRAM0_MIN_ERR + i;
412 desc_handle_irq(IRQ_IXP2000_DRAM0_MIN_ERR + i, desc, regs); 412 desc_handle_irq(IRQ_IXP2000_DRAM0_MIN_ERR + i, desc);
413 } 413 }
414 } 414 }
415} 415}
diff --git a/arch/arm/mach-ixp2000/ixdp2x00.c b/arch/arm/mach-ixp2000/ixdp2x00.c
index 40eef8b36740..af48cb52dfc4 100644
--- a/arch/arm/mach-ixp2000/ixdp2x00.c
+++ b/arch/arm/mach-ixp2000/ixdp2x00.c
@@ -106,7 +106,7 @@ static void ixdp2x00_irq_unmask(unsigned int irq)
106 ixp2000_release_slowport(&old_cfg); 106 ixp2000_release_slowport(&old_cfg);
107} 107}
108 108
109static void ixdp2x00_irq_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs) 109static void ixdp2x00_irq_handler(unsigned int irq, struct irqdesc *desc)
110{ 110{
111 volatile u32 ex_interrupt = 0; 111 volatile u32 ex_interrupt = 0;
112 static struct slowport_cfg old_cfg; 112 static struct slowport_cfg old_cfg;
@@ -132,7 +132,7 @@ static void ixdp2x00_irq_handler(unsigned int irq, struct irqdesc *desc, struct
132 struct irqdesc *cpld_desc; 132 struct irqdesc *cpld_desc;
133 int cpld_irq = IXP2000_BOARD_IRQ(0) + i; 133 int cpld_irq = IXP2000_BOARD_IRQ(0) + i;
134 cpld_desc = irq_desc + cpld_irq; 134 cpld_desc = irq_desc + cpld_irq;
135 desc_handle_irq(cpld_irq, cpld_desc, regs); 135 desc_handle_irq(cpld_irq, cpld_desc);
136 } 136 }
137 } 137 }
138 138
diff --git a/arch/arm/mach-ixp2000/ixdp2x01.c b/arch/arm/mach-ixp2000/ixdp2x01.c
index 7f42366f60d1..9ccae9e63f70 100644
--- a/arch/arm/mach-ixp2000/ixdp2x01.c
+++ b/arch/arm/mach-ixp2000/ixdp2x01.c
@@ -63,7 +63,7 @@ static void ixdp2x01_irq_unmask(unsigned int irq)
63 63
64static u32 valid_irq_mask; 64static u32 valid_irq_mask;
65 65
66static void ixdp2x01_irq_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs) 66static void ixdp2x01_irq_handler(unsigned int irq, struct irqdesc *desc)
67{ 67{
68 u32 ex_interrupt; 68 u32 ex_interrupt;
69 int i; 69 int i;
@@ -82,7 +82,7 @@ static void ixdp2x01_irq_handler(unsigned int irq, struct irqdesc *desc, struct
82 struct irqdesc *cpld_desc; 82 struct irqdesc *cpld_desc;
83 int cpld_irq = IXP2000_BOARD_IRQ(0) + i; 83 int cpld_irq = IXP2000_BOARD_IRQ(0) + i;
84 cpld_desc = irq_desc + cpld_irq; 84 cpld_desc = irq_desc + cpld_irq;
85 desc_handle_irq(cpld_irq, cpld_desc, regs); 85 desc_handle_irq(cpld_irq, cpld_desc);
86 } 86 }
87 } 87 }
88 88
diff --git a/arch/arm/mach-ixp23xx/core.c b/arch/arm/mach-ixp23xx/core.c
index 566a07821c77..a704a1820048 100644
--- a/arch/arm/mach-ixp23xx/core.c
+++ b/arch/arm/mach-ixp23xx/core.c
@@ -251,7 +251,7 @@ static void ixp23xx_pci_irq_unmask(unsigned int irq)
251/* 251/*
252 * TODO: Should this just be done at ASM level? 252 * TODO: Should this just be done at ASM level?
253 */ 253 */
254static void pci_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs) 254static void pci_handler(unsigned int irq, struct irqdesc *desc)
255{ 255{
256 u32 pci_interrupt; 256 u32 pci_interrupt;
257 unsigned int irqno; 257 unsigned int irqno;
@@ -271,7 +271,7 @@ static void pci_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *
271 } 271 }
272 272
273 int_desc = irq_desc + irqno; 273 int_desc = irq_desc + irqno;
274 desc_handle_irq(irqno, int_desc, regs); 274 desc_handle_irq(irqno, int_desc);
275 275
276 desc->chip->unmask(irq); 276 desc->chip->unmask(irq);
277} 277}
@@ -348,12 +348,12 @@ ixp23xx_gettimeoffset(void)
348} 348}
349 349
350static irqreturn_t 350static irqreturn_t
351ixp23xx_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 351ixp23xx_timer_interrupt(int irq, void *dev_id)
352{ 352{
353 /* Clear Pending Interrupt by writing '1' to it */ 353 /* Clear Pending Interrupt by writing '1' to it */
354 *IXP23XX_TIMER_STATUS = IXP23XX_TIMER1_INT_PEND; 354 *IXP23XX_TIMER_STATUS = IXP23XX_TIMER1_INT_PEND;
355 while ((signed long)(*IXP23XX_TIMER_CONT - next_jiffy_time) >= LATCH) { 355 while ((signed long)(*IXP23XX_TIMER_CONT - next_jiffy_time) >= LATCH) {
356 timer_tick(regs); 356 timer_tick();
357 next_jiffy_time += LATCH; 357 next_jiffy_time += LATCH;
358 } 358 }
359 359
diff --git a/arch/arm/mach-ixp23xx/ixdp2351.c b/arch/arm/mach-ixp23xx/ixdp2351.c
index 37a32e6bcca2..b6ab0e8bb5e8 100644
--- a/arch/arm/mach-ixp23xx/ixdp2351.c
+++ b/arch/arm/mach-ixp23xx/ixdp2351.c
@@ -60,7 +60,7 @@ static void ixdp2351_inta_unmask(unsigned int irq)
60 *IXDP2351_CPLD_INTA_MASK_CLR_REG = IXDP2351_INTA_IRQ_MASK(irq); 60 *IXDP2351_CPLD_INTA_MASK_CLR_REG = IXDP2351_INTA_IRQ_MASK(irq);
61} 61}
62 62
63static void ixdp2351_inta_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs) 63static void ixdp2351_inta_handler(unsigned int irq, struct irqdesc *desc)
64{ 64{
65 u16 ex_interrupt = 65 u16 ex_interrupt =
66 *IXDP2351_CPLD_INTA_STAT_REG & IXDP2351_INTA_IRQ_VALID; 66 *IXDP2351_CPLD_INTA_STAT_REG & IXDP2351_INTA_IRQ_VALID;
@@ -74,7 +74,7 @@ static void ixdp2351_inta_handler(unsigned int irq, struct irqdesc *desc, struct
74 int cpld_irq = 74 int cpld_irq =
75 IXP23XX_MACH_IRQ(IXDP2351_INTA_IRQ_BASE + i); 75 IXP23XX_MACH_IRQ(IXDP2351_INTA_IRQ_BASE + i);
76 cpld_desc = irq_desc + cpld_irq; 76 cpld_desc = irq_desc + cpld_irq;
77 desc_handle_irq(cpld_irq, cpld_desc, regs); 77 desc_handle_irq(cpld_irq, cpld_desc);
78 } 78 }
79 } 79 }
80 80
@@ -97,7 +97,7 @@ static void ixdp2351_intb_unmask(unsigned int irq)
97 *IXDP2351_CPLD_INTB_MASK_CLR_REG = IXDP2351_INTB_IRQ_MASK(irq); 97 *IXDP2351_CPLD_INTB_MASK_CLR_REG = IXDP2351_INTB_IRQ_MASK(irq);
98} 98}
99 99
100static void ixdp2351_intb_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs) 100static void ixdp2351_intb_handler(unsigned int irq, struct irqdesc *desc)
101{ 101{
102 u16 ex_interrupt = 102 u16 ex_interrupt =
103 *IXDP2351_CPLD_INTB_STAT_REG & IXDP2351_INTB_IRQ_VALID; 103 *IXDP2351_CPLD_INTB_STAT_REG & IXDP2351_INTB_IRQ_VALID;
@@ -111,7 +111,7 @@ static void ixdp2351_intb_handler(unsigned int irq, struct irqdesc *desc, struct
111 int cpld_irq = 111 int cpld_irq =
112 IXP23XX_MACH_IRQ(IXDP2351_INTB_IRQ_BASE + i); 112 IXP23XX_MACH_IRQ(IXDP2351_INTB_IRQ_BASE + i);
113 cpld_desc = irq_desc + cpld_irq; 113 cpld_desc = irq_desc + cpld_irq;
114 desc_handle_irq(cpld_irq, cpld_desc, regs); 114 desc_handle_irq(cpld_irq, cpld_desc);
115 } 115 }
116 } 116 }
117 117
diff --git a/arch/arm/mach-ixp4xx/common.c b/arch/arm/mach-ixp4xx/common.c
index 35dd8b3824b0..c7513f6eb50c 100644
--- a/arch/arm/mach-ixp4xx/common.c
+++ b/arch/arm/mach-ixp4xx/common.c
@@ -256,7 +256,7 @@ static unsigned volatile last_jiffy_time;
256 256
257#define CLOCK_TICKS_PER_USEC ((CLOCK_TICK_RATE + USEC_PER_SEC/2) / USEC_PER_SEC) 257#define CLOCK_TICKS_PER_USEC ((CLOCK_TICK_RATE + USEC_PER_SEC/2) / USEC_PER_SEC)
258 258
259static irqreturn_t ixp4xx_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 259static irqreturn_t ixp4xx_timer_interrupt(int irq, void *dev_id)
260{ 260{
261 write_seqlock(&xtime_lock); 261 write_seqlock(&xtime_lock);
262 262
@@ -267,7 +267,7 @@ static irqreturn_t ixp4xx_timer_interrupt(int irq, void *dev_id, struct pt_regs
267 * Catch up with the real idea of time 267 * Catch up with the real idea of time
268 */ 268 */
269 while ((signed long)(*IXP4XX_OSTS - last_jiffy_time) >= LATCH) { 269 while ((signed long)(*IXP4XX_OSTS - last_jiffy_time) >= LATCH) {
270 timer_tick(regs); 270 timer_tick();
271 last_jiffy_time += LATCH; 271 last_jiffy_time += LATCH;
272 } 272 }
273 273
diff --git a/arch/arm/mach-ixp4xx/nas100d-power.c b/arch/arm/mach-ixp4xx/nas100d-power.c
index 81ffcae1f56e..29aa98d3a7fa 100644
--- a/arch/arm/mach-ixp4xx/nas100d-power.c
+++ b/arch/arm/mach-ixp4xx/nas100d-power.c
@@ -24,7 +24,7 @@
24 24
25#include <asm/mach-types.h> 25#include <asm/mach-types.h>
26 26
27static irqreturn_t nas100d_reset_handler(int irq, void *dev_id, struct pt_regs *regs) 27static irqreturn_t nas100d_reset_handler(int irq, void *dev_id)
28{ 28{
29 /* Signal init to do the ctrlaltdel action, this will bypass init if 29 /* Signal init to do the ctrlaltdel action, this will bypass init if
30 * it hasn't started and do a kernel_restart. 30 * it hasn't started and do a kernel_restart.
diff --git a/arch/arm/mach-ixp4xx/nslu2-power.c b/arch/arm/mach-ixp4xx/nslu2-power.c
index a29b3b2b61b6..acd71e9c38a7 100644
--- a/arch/arm/mach-ixp4xx/nslu2-power.c
+++ b/arch/arm/mach-ixp4xx/nslu2-power.c
@@ -25,7 +25,7 @@
25 25
26#include <asm/mach-types.h> 26#include <asm/mach-types.h>
27 27
28static irqreturn_t nslu2_power_handler(int irq, void *dev_id, struct pt_regs *regs) 28static irqreturn_t nslu2_power_handler(int irq, void *dev_id)
29{ 29{
30 /* Signal init to do the ctrlaltdel action, this will bypass init if 30 /* Signal init to do the ctrlaltdel action, this will bypass init if
31 * it hasn't started and do a kernel_restart. 31 * it hasn't started and do a kernel_restart.
@@ -35,7 +35,7 @@ static irqreturn_t nslu2_power_handler(int irq, void *dev_id, struct pt_regs *re
35 return IRQ_HANDLED; 35 return IRQ_HANDLED;
36} 36}
37 37
38static irqreturn_t nslu2_reset_handler(int irq, void *dev_id, struct pt_regs *regs) 38static irqreturn_t nslu2_reset_handler(int irq, void *dev_id)
39{ 39{
40 /* This is the paper-clip reset, it shuts the machine down directly. 40 /* This is the paper-clip reset, it shuts the machine down directly.
41 */ 41 */
diff --git a/arch/arm/mach-lh7a40x/arch-kev7a400.c b/arch/arm/mach-lh7a40x/arch-kev7a400.c
index 4f2ab48800a5..15fbcc911fe7 100644
--- a/arch/arm/mach-lh7a40x/arch-kev7a400.c
+++ b/arch/arm/mach-lh7a40x/arch-kev7a400.c
@@ -71,14 +71,13 @@ static struct irq_chip kev7a400_cpld_chip = {
71}; 71};
72 72
73 73
74static void kev7a400_cpld_handler (unsigned int irq, struct irqdesc *desc, 74static void kev7a400_cpld_handler (unsigned int irq, struct irqdesc *desc)
75 struct pt_regs *regs)
76{ 75{
77 u32 mask = CPLD_LATCHED_INTS; 76 u32 mask = CPLD_LATCHED_INTS;
78 irq = IRQ_KEV7A400_CPLD; 77 irq = IRQ_KEV7A400_CPLD;
79 for (; mask; mask >>= 1, ++irq) { 78 for (; mask; mask >>= 1, ++irq) {
80 if (mask & 1) 79 if (mask & 1)
81 desc[irq].handle (irq, desc, regs); 80 desc[irq].handle (irq, desc);
82 } 81 }
83} 82}
84 83
diff --git a/arch/arm/mach-lh7a40x/arch-lpd7a40x.c b/arch/arm/mach-lh7a40x/arch-lpd7a40x.c
index a21b12f06c6b..8441e0a156cb 100644
--- a/arch/arm/mach-lh7a40x/arch-lpd7a40x.c
+++ b/arch/arm/mach-lh7a40x/arch-lpd7a40x.c
@@ -207,8 +207,7 @@ static struct irq_chip lpd7a40x_cpld_chip = {
207 .unmask = lh7a40x_unmask_cpld_irq, 207 .unmask = lh7a40x_unmask_cpld_irq,
208}; 208};
209 209
210static void lpd7a40x_cpld_handler (unsigned int irq, struct irqdesc *desc, 210static void lpd7a40x_cpld_handler (unsigned int irq, struct irqdesc *desc)
211 struct pt_regs *regs)
212{ 211{
213 unsigned int mask = CPLD_INTERRUPTS; 212 unsigned int mask = CPLD_INTERRUPTS;
214 213
diff --git a/arch/arm/mach-lh7a40x/irq-kev7a400.c b/arch/arm/mach-lh7a40x/irq-kev7a400.c
index f9b3fe9174a5..646071334b8f 100644
--- a/arch/arm/mach-lh7a40x/irq-kev7a400.c
+++ b/arch/arm/mach-lh7a40x/irq-kev7a400.c
@@ -51,14 +51,13 @@ irq_chip lh7a400_cpld_chip = {
51}; 51};
52 52
53static void 53static void
54lh7a400_cpld_handler (unsigned int irq, struct irqdesc *desc, 54lh7a400_cpld_handler (unsigned int irq, struct irqdesc *desc)
55 struct pt_regs *regs)
56{ 55{
57 u32 mask = CPLD_LATCHED_INTS; 56 u32 mask = CPLD_LATCHED_INTS;
58 irq = IRQ_KEV_7A400_CPLD; 57 irq = IRQ_KEV_7A400_CPLD;
59 for (; mask; mask >>= 1, ++irq) { 58 for (; mask; mask >>= 1, ++irq) {
60 if (mask & 1) 59 if (mask & 1)
61 desc[irq].handle (irq, desc, regs); 60 desc[irq].handle (irq, desc);
62 } 61 }
63} 62}
64 63
diff --git a/arch/arm/mach-lh7a40x/irq-lpd7a40x.c b/arch/arm/mach-lh7a40x/irq-lpd7a40x.c
index d6055dde6468..b20376804bbb 100644
--- a/arch/arm/mach-lh7a40x/irq-lpd7a40x.c
+++ b/arch/arm/mach-lh7a40x/irq-lpd7a40x.c
@@ -57,8 +57,7 @@ static struct irq_chip lh7a40x_cpld_chip = {
57 .unmask = lh7a40x_unmask_cpld_irq, 57 .unmask = lh7a40x_unmask_cpld_irq,
58}; 58};
59 59
60static void lh7a40x_cpld_handler (unsigned int irq, struct irqdesc *desc, 60static void lh7a40x_cpld_handler (unsigned int irq, struct irqdesc *desc)
61 struct pt_regs *regs)
62{ 61{
63 unsigned int mask = CPLD_INTERRUPTS; 62 unsigned int mask = CPLD_INTERRUPTS;
64 63
diff --git a/arch/arm/mach-lh7a40x/time.c b/arch/arm/mach-lh7a40x/time.c
index ad5652e01507..bef3c4b68d3b 100644
--- a/arch/arm/mach-lh7a40x/time.c
+++ b/arch/arm/mach-lh7a40x/time.c
@@ -39,12 +39,12 @@
39#endif 39#endif
40 40
41static irqreturn_t 41static irqreturn_t
42lh7a40x_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 42lh7a40x_timer_interrupt(int irq, void *dev_id)
43{ 43{
44 write_seqlock(&xtime_lock); 44 write_seqlock(&xtime_lock);
45 45
46 TIMER_EOI = 0; 46 TIMER_EOI = 0;
47 timer_tick(regs); 47 timer_tick();
48 48
49 write_sequnlock(&xtime_lock); 49 write_sequnlock(&xtime_lock);
50 50
diff --git a/arch/arm/mach-netx/generic.c b/arch/arm/mach-netx/generic.c
index af0b13534cfd..edbbbdc3b06b 100644
--- a/arch/arm/mach-netx/generic.c
+++ b/arch/arm/mach-netx/generic.c
@@ -69,8 +69,7 @@ static struct platform_device *devices[] __initdata = {
69#endif 69#endif
70 70
71static void 71static void
72netx_hif_demux_handler(unsigned int irq_unused, struct irqdesc *desc, 72netx_hif_demux_handler(unsigned int irq_unused, struct irqdesc *desc)
73 struct pt_regs *regs)
74{ 73{
75 unsigned int irq = NETX_IRQ_HIF_CHAINED(0); 74 unsigned int irq = NETX_IRQ_HIF_CHAINED(0);
76 unsigned int stat; 75 unsigned int stat;
@@ -83,7 +82,7 @@ netx_hif_demux_handler(unsigned int irq_unused, struct irqdesc *desc,
83 while (stat) { 82 while (stat) {
84 if (stat & 1) { 83 if (stat & 1) {
85 DEBUG_IRQ("handling irq %d\n", irq); 84 DEBUG_IRQ("handling irq %d\n", irq);
86 desc_handle_irq(irq, desc, regs); 85 desc_handle_irq(irq, desc);
87 } 86 }
88 irq++; 87 irq++;
89 desc++; 88 desc++;
diff --git a/arch/arm/mach-netx/time.c b/arch/arm/mach-netx/time.c
index 6d72c81b7d9f..0993336c0b55 100644
--- a/arch/arm/mach-netx/time.c
+++ b/arch/arm/mach-netx/time.c
@@ -38,11 +38,11 @@ static unsigned long netx_gettimeoffset(void)
38 * IRQ handler for the timer 38 * IRQ handler for the timer
39 */ 39 */
40static irqreturn_t 40static irqreturn_t
41netx_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 41netx_timer_interrupt(int irq, void *dev_id)
42{ 42{
43 write_seqlock(&xtime_lock); 43 write_seqlock(&xtime_lock);
44 44
45 timer_tick(regs); 45 timer_tick();
46 write_sequnlock(&xtime_lock); 46 write_sequnlock(&xtime_lock);
47 47
48 /* acknowledge interrupt */ 48 /* acknowledge interrupt */
diff --git a/arch/arm/mach-omap1/board-osk.c b/arch/arm/mach-omap1/board-osk.c
index 6b05647a6c01..3a622801d7b0 100644
--- a/arch/arm/mach-omap1/board-osk.c
+++ b/arch/arm/mach-omap1/board-osk.c
@@ -327,7 +327,7 @@ static struct spi_board_info __initdata mistral_boardinfo[] = { {
327 327
328#ifdef CONFIG_PM 328#ifdef CONFIG_PM
329static irqreturn_t 329static irqreturn_t
330osk_mistral_wake_interrupt(int irq, void *ignored, struct pt_regs *regs) 330osk_mistral_wake_interrupt(int irq, void *ignored)
331{ 331{
332 return IRQ_HANDLED; 332 return IRQ_HANDLED;
333} 333}
diff --git a/arch/arm/mach-omap1/fpga.c b/arch/arm/mach-omap1/fpga.c
index efe9bfc6e55f..8e40208b10bb 100644
--- a/arch/arm/mach-omap1/fpga.c
+++ b/arch/arm/mach-omap1/fpga.c
@@ -84,8 +84,7 @@ static void fpga_mask_ack_irq(unsigned int irq)
84 fpga_ack_irq(irq); 84 fpga_ack_irq(irq);
85} 85}
86 86
87void innovator_fpga_IRQ_demux(unsigned int irq, struct irqdesc *desc, 87void innovator_fpga_IRQ_demux(unsigned int irq, struct irqdesc *desc)
88 struct pt_regs *regs)
89{ 88{
90 struct irqdesc *d; 89 struct irqdesc *d;
91 u32 stat; 90 u32 stat;
@@ -101,7 +100,7 @@ void innovator_fpga_IRQ_demux(unsigned int irq, struct irqdesc *desc,
101 fpga_irq++, stat >>= 1) { 100 fpga_irq++, stat >>= 1) {
102 if (stat & 1) { 101 if (stat & 1) {
103 d = irq_desc + fpga_irq; 102 d = irq_desc + fpga_irq;
104 desc_handle_irq(fpga_irq, d, regs); 103 desc_handle_irq(fpga_irq, d);
105 } 104 }
106 } 105 }
107} 106}
diff --git a/arch/arm/mach-omap1/pm.c b/arch/arm/mach-omap1/pm.c
index cd76185bab74..4834758d340c 100644
--- a/arch/arm/mach-omap1/pm.c
+++ b/arch/arm/mach-omap1/pm.c
@@ -682,8 +682,7 @@ static int omap_pm_finish(suspend_state_t state)
682} 682}
683 683
684 684
685static irqreturn_t omap_wakeup_interrupt(int irq, void * dev, 685static irqreturn_t omap_wakeup_interrupt(int irq, void *dev)
686 struct pt_regs * regs)
687{ 686{
688 return IRQ_HANDLED; 687 return IRQ_HANDLED;
689} 688}
diff --git a/arch/arm/mach-omap1/serial.c b/arch/arm/mach-omap1/serial.c
index c4b790217a5b..4cc98a578e4b 100644
--- a/arch/arm/mach-omap1/serial.c
+++ b/arch/arm/mach-omap1/serial.c
@@ -204,8 +204,7 @@ void __init omap_serial_init(void)
204 204
205#ifdef CONFIG_OMAP_SERIAL_WAKE 205#ifdef CONFIG_OMAP_SERIAL_WAKE
206 206
207static irqreturn_t omap_serial_wake_interrupt(int irq, void *dev_id, 207static irqreturn_t omap_serial_wake_interrupt(int irq, void *dev_id)
208 struct pt_regs *regs)
209{ 208{
210 /* Need to do something with serial port right after wake-up? */ 209 /* Need to do something with serial port right after wake-up? */
211 return IRQ_HANDLED; 210 return IRQ_HANDLED;
diff --git a/arch/arm/mach-omap1/time.c b/arch/arm/mach-omap1/time.c
index 4d91b9f51084..1b7e4a506c26 100644
--- a/arch/arm/mach-omap1/time.c
+++ b/arch/arm/mach-omap1/time.c
@@ -160,8 +160,7 @@ static unsigned long omap_mpu_timer_gettimeoffset(void)
160 * Latency during the interrupt is calculated using timer1. 160 * Latency during the interrupt is calculated using timer1.
161 * Both timer0 and timer1 are counting at 6MHz (P2 6.5MHz). 161 * Both timer0 and timer1 are counting at 6MHz (P2 6.5MHz).
162 */ 162 */
163static irqreturn_t omap_mpu_timer_interrupt(int irq, void *dev_id, 163static irqreturn_t omap_mpu_timer_interrupt(int irq, void *dev_id)
164 struct pt_regs *regs)
165{ 164{
166 unsigned long now, latency; 165 unsigned long now, latency;
167 166
@@ -169,7 +168,7 @@ static irqreturn_t omap_mpu_timer_interrupt(int irq, void *dev_id,
169 now = 0 - omap_mpu_timer_read(0); 168 now = 0 - omap_mpu_timer_read(0);
170 latency = MPU_TICKS_PER_SEC / HZ - omap_mpu_timer_read(1); 169 latency = MPU_TICKS_PER_SEC / HZ - omap_mpu_timer_read(1);
171 omap_mpu_timer_last = now - latency; 170 omap_mpu_timer_last = now - latency;
172 timer_tick(regs); 171 timer_tick();
173 write_sequnlock(&xtime_lock); 172 write_sequnlock(&xtime_lock);
174 173
175 return IRQ_HANDLED; 174 return IRQ_HANDLED;
@@ -182,8 +181,7 @@ static struct irqaction omap_mpu_timer_irq = {
182}; 181};
183 182
184static unsigned long omap_mpu_timer1_overflows; 183static unsigned long omap_mpu_timer1_overflows;
185static irqreturn_t omap_mpu_timer1_interrupt(int irq, void *dev_id, 184static irqreturn_t omap_mpu_timer1_interrupt(int irq, void *dev_id)
186 struct pt_regs *regs)
187{ 185{
188 omap_mpu_timer1_overflows++; 186 omap_mpu_timer1_overflows++;
189 return IRQ_HANDLED; 187 return IRQ_HANDLED;
diff --git a/arch/arm/mach-omap2/board-apollon.c b/arch/arm/mach-omap2/board-apollon.c
index c37b0e6d1248..03d6905ba490 100644
--- a/arch/arm/mach-omap2/board-apollon.c
+++ b/arch/arm/mach-omap2/board-apollon.c
@@ -203,7 +203,7 @@ static void __init apollon_led_init(void)
203 omap_set_gpio_dataout(LED2_GPIO15, 0); 203 omap_set_gpio_dataout(LED2_GPIO15, 0);
204} 204}
205 205
206static irqreturn_t apollon_sw_interrupt(int irq, void *ignored, struct pt_regs *regs) 206static irqreturn_t apollon_sw_interrupt(int irq, void *ignored)
207{ 207{
208 static unsigned int led0, led1, led2; 208 static unsigned int led0, led1, led2;
209 209
diff --git a/arch/arm/mach-omap2/timer-gp.c b/arch/arm/mach-omap2/timer-gp.c
index fe5fd6d42dea..973189cd9766 100644
--- a/arch/arm/mach-omap2/timer-gp.c
+++ b/arch/arm/mach-omap2/timer-gp.c
@@ -37,13 +37,12 @@ static inline void omap2_gp_timer_start(unsigned long load_val)
37 omap_dm_timer_start(gptimer); 37 omap_dm_timer_start(gptimer);
38} 38}
39 39
40static irqreturn_t omap2_gp_timer_interrupt(int irq, void *dev_id, 40static irqreturn_t omap2_gp_timer_interrupt(int irq, void *dev_id)
41 struct pt_regs *regs)
42{ 41{
43 write_seqlock(&xtime_lock); 42 write_seqlock(&xtime_lock);
44 43
45 omap_dm_timer_write_status(gptimer, OMAP_TIMER_INT_OVERFLOW); 44 omap_dm_timer_write_status(gptimer, OMAP_TIMER_INT_OVERFLOW);
46 timer_tick(regs); 45 timer_tick();
47 46
48 write_sequnlock(&xtime_lock); 47 write_sequnlock(&xtime_lock);
49 48
diff --git a/arch/arm/mach-pnx4008/dma.c b/arch/arm/mach-pnx4008/dma.c
index ec01574f88ac..d6a279e4b524 100644
--- a/arch/arm/mach-pnx4008/dma.c
+++ b/arch/arm/mach-pnx4008/dma.c
@@ -32,7 +32,7 @@
32 32
33static struct dma_channel { 33static struct dma_channel {
34 char *name; 34 char *name;
35 void (*irq_handler) (int, int, void *, struct pt_regs *); 35 void (*irq_handler) (int, int, void *);
36 void *data; 36 void *data;
37 struct pnx4008_dma_ll *ll; 37 struct pnx4008_dma_ll *ll;
38 u32 ll_dma; 38 u32 ll_dma;
@@ -150,8 +150,7 @@ static inline void pnx4008_dma_unlock(void)
150#define VALID_CHANNEL(c) (((c) >= 0) && ((c) < MAX_DMA_CHANNELS)) 150#define VALID_CHANNEL(c) (((c) >= 0) && ((c) < MAX_DMA_CHANNELS))
151 151
152int pnx4008_request_channel(char *name, int ch, 152int pnx4008_request_channel(char *name, int ch,
153 void (*irq_handler) (int, int, void *, 153 void (*irq_handler) (int, int, void *), void *data)
154 struct pt_regs *), void *data)
155{ 154{
156 int i, found = 0; 155 int i, found = 0;
157 156
@@ -1033,7 +1032,7 @@ int pnx4008_dma_ch_enabled(int ch)
1033 1032
1034EXPORT_SYMBOL_GPL(pnx4008_dma_ch_enabled); 1033EXPORT_SYMBOL_GPL(pnx4008_dma_ch_enabled);
1035 1034
1036static irqreturn_t dma_irq_handler(int irq, void *dev_id, struct pt_regs *regs) 1035static irqreturn_t dma_irq_handler(int irq, void *dev_id)
1037{ 1036{
1038 int i; 1037 int i;
1039 unsigned long dint = __raw_readl(DMAC_INT_STAT); 1038 unsigned long dint = __raw_readl(DMAC_INT_STAT);
@@ -1053,8 +1052,7 @@ static irqreturn_t dma_irq_handler(int irq, void *dev_id, struct pt_regs *regs)
1053 cause |= DMA_ERR_INT; 1052 cause |= DMA_ERR_INT;
1054 if (tcint & i_bit) 1053 if (tcint & i_bit)
1055 cause |= DMA_TC_INT; 1054 cause |= DMA_TC_INT;
1056 channel->irq_handler(i, cause, channel->data, 1055 channel->irq_handler(i, cause, channel->data);
1057 regs);
1058 } else { 1056 } else {
1059 /* 1057 /*
1060 * IRQ for an unregistered DMA channel 1058 * IRQ for an unregistered DMA channel
diff --git a/arch/arm/mach-pnx4008/time.c b/arch/arm/mach-pnx4008/time.c
index b986065cd0f3..8621c206ac84 100644
--- a/arch/arm/mach-pnx4008/time.c
+++ b/arch/arm/mach-pnx4008/time.c
@@ -47,15 +47,14 @@ static unsigned long pnx4008_gettimeoffset(void)
47/*! 47/*!
48 * IRQ handler for the timer 48 * IRQ handler for the timer
49 */ 49 */
50static irqreturn_t pnx4008_timer_interrupt(int irq, void *dev_id, 50static irqreturn_t pnx4008_timer_interrupt(int irq, void *dev_id)
51 struct pt_regs *regs)
52{ 51{
53 if (__raw_readl(HSTIM_INT) & MATCH0_INT) { 52 if (__raw_readl(HSTIM_INT) & MATCH0_INT) {
54 53
55 write_seqlock(&xtime_lock); 54 write_seqlock(&xtime_lock);
56 55
57 do { 56 do {
58 timer_tick(regs); 57 timer_tick();
59 58
60 /* 59 /*
61 * this algorithm takes care of possible delay 60 * this algorithm takes care of possible delay
diff --git a/arch/arm/mach-pxa/corgi.c b/arch/arm/mach-pxa/corgi.c
index 337c01c4ac37..a1a900d16665 100644
--- a/arch/arm/mach-pxa/corgi.c
+++ b/arch/arm/mach-pxa/corgi.c
@@ -212,7 +212,7 @@ static struct platform_device corgits_device = {
212 */ 212 */
213static struct pxamci_platform_data corgi_mci_platform_data; 213static struct pxamci_platform_data corgi_mci_platform_data;
214 214
215static int corgi_mci_init(struct device *dev, irqreturn_t (*corgi_detect_int)(int, void *, struct pt_regs *), void *data) 215static int corgi_mci_init(struct device *dev, irq_handler_t corgi_detect_int, void *data)
216{ 216{
217 int err; 217 int err;
218 218
diff --git a/arch/arm/mach-pxa/dma.c b/arch/arm/mach-pxa/dma.c
index 7d8c85486c66..4440babe7b97 100644
--- a/arch/arm/mach-pxa/dma.c
+++ b/arch/arm/mach-pxa/dma.c
@@ -27,13 +27,13 @@
27 27
28static struct dma_channel { 28static struct dma_channel {
29 char *name; 29 char *name;
30 void (*irq_handler)(int, void *, struct pt_regs *); 30 void (*irq_handler)(int, void *);
31 void *data; 31 void *data;
32} dma_channels[PXA_DMA_CHANNELS]; 32} dma_channels[PXA_DMA_CHANNELS];
33 33
34 34
35int pxa_request_dma (char *name, pxa_dma_prio prio, 35int pxa_request_dma (char *name, pxa_dma_prio prio,
36 void (*irq_handler)(int, void *, struct pt_regs *), 36 void (*irq_handler)(int, void *),
37 void *data) 37 void *data)
38{ 38{
39 unsigned long flags; 39 unsigned long flags;
@@ -87,7 +87,7 @@ void pxa_free_dma (int dma_ch)
87 local_irq_restore(flags); 87 local_irq_restore(flags);
88} 88}
89 89
90static irqreturn_t dma_irq_handler(int irq, void *dev_id, struct pt_regs *regs) 90static irqreturn_t dma_irq_handler(int irq, void *dev_id)
91{ 91{
92 int i, dint = DINT; 92 int i, dint = DINT;
93 93
@@ -95,7 +95,7 @@ static irqreturn_t dma_irq_handler(int irq, void *dev_id, struct pt_regs *regs)
95 if (dint & (1 << i)) { 95 if (dint & (1 << i)) {
96 struct dma_channel *channel = &dma_channels[i]; 96 struct dma_channel *channel = &dma_channels[i];
97 if (channel->name && channel->irq_handler) { 97 if (channel->name && channel->irq_handler) {
98 channel->irq_handler(i, channel->data, regs); 98 channel->irq_handler(i, channel->data);
99 } else { 99 } else {
100 /* 100 /*
101 * IRQ for an unregistered DMA channel: 101 * IRQ for an unregistered DMA channel:
diff --git a/arch/arm/mach-pxa/idp.c b/arch/arm/mach-pxa/idp.c
index 3e4b0ab71c66..64df44043a65 100644
--- a/arch/arm/mach-pxa/idp.c
+++ b/arch/arm/mach-pxa/idp.c
@@ -125,7 +125,7 @@ static struct pxafb_mach_info sharp_lm8v31 = {
125 .pxafb_lcd_power = &idp_lcd_power 125 .pxafb_lcd_power = &idp_lcd_power
126}; 126};
127 127
128static int idp_mci_init(struct device *dev, irqreturn_t (*idp_detect_int)(int, void *, struct pt_regs *), void *data) 128static int idp_mci_init(struct device *dev, irq_handler_t idp_detect_int, void *data)
129{ 129{
130 /* setup GPIO for PXA25x MMC controller */ 130 /* setup GPIO for PXA25x MMC controller */
131 pxa_gpio_mode(GPIO6_MMCCLK_MD); 131 pxa_gpio_mode(GPIO6_MMCCLK_MD);
diff --git a/arch/arm/mach-pxa/irq.c b/arch/arm/mach-pxa/irq.c
index 12141e2a50cc..ab1a16025d51 100644
--- a/arch/arm/mach-pxa/irq.c
+++ b/arch/arm/mach-pxa/irq.c
@@ -143,8 +143,7 @@ static struct irq_chip pxa_low_gpio_chip = {
143 * Demux handler for GPIO>=2 edge detect interrupts 143 * Demux handler for GPIO>=2 edge detect interrupts
144 */ 144 */
145 145
146static void pxa_gpio_demux_handler(unsigned int irq, struct irqdesc *desc, 146static void pxa_gpio_demux_handler(unsigned int irq, struct irqdesc *desc)
147 struct pt_regs *regs)
148{ 147{
149 unsigned int mask; 148 unsigned int mask;
150 int loop; 149 int loop;
@@ -160,7 +159,7 @@ static void pxa_gpio_demux_handler(unsigned int irq, struct irqdesc *desc,
160 mask >>= 2; 159 mask >>= 2;
161 do { 160 do {
162 if (mask & 1) 161 if (mask & 1)
163 desc_handle_irq(irq, desc, regs); 162 desc_handle_irq(irq, desc);
164 irq++; 163 irq++;
165 desc++; 164 desc++;
166 mask >>= 1; 165 mask >>= 1;
@@ -175,7 +174,7 @@ static void pxa_gpio_demux_handler(unsigned int irq, struct irqdesc *desc,
175 desc = irq_desc + irq; 174 desc = irq_desc + irq;
176 do { 175 do {
177 if (mask & 1) 176 if (mask & 1)
178 desc_handle_irq(irq, desc, regs); 177 desc_handle_irq(irq, desc);
179 irq++; 178 irq++;
180 desc++; 179 desc++;
181 mask >>= 1; 180 mask >>= 1;
@@ -190,7 +189,7 @@ static void pxa_gpio_demux_handler(unsigned int irq, struct irqdesc *desc,
190 desc = irq_desc + irq; 189 desc = irq_desc + irq;
191 do { 190 do {
192 if (mask & 1) 191 if (mask & 1)
193 desc_handle_irq(irq, desc, regs); 192 desc_handle_irq(irq, desc);
194 irq++; 193 irq++;
195 desc++; 194 desc++;
196 mask >>= 1; 195 mask >>= 1;
@@ -206,7 +205,7 @@ static void pxa_gpio_demux_handler(unsigned int irq, struct irqdesc *desc,
206 desc = irq_desc + irq; 205 desc = irq_desc + irq;
207 do { 206 do {
208 if (mask & 1) 207 if (mask & 1)
209 desc_handle_irq(irq, desc, regs); 208 desc_handle_irq(irq, desc);
210 irq++; 209 irq++;
211 desc++; 210 desc++;
212 mask >>= 1; 211 mask >>= 1;
diff --git a/arch/arm/mach-pxa/lpd270.c b/arch/arm/mach-pxa/lpd270.c
index eff2a91b2565..5749f6b72e12 100644
--- a/arch/arm/mach-pxa/lpd270.c
+++ b/arch/arm/mach-pxa/lpd270.c
@@ -75,8 +75,7 @@ static struct irq_chip lpd270_irq_chip = {
75 .unmask = lpd270_unmask_irq, 75 .unmask = lpd270_unmask_irq,
76}; 76};
77 77
78static void lpd270_irq_handler(unsigned int irq, struct irqdesc *desc, 78static void lpd270_irq_handler(unsigned int irq, struct irqdesc *desc)
79 struct pt_regs *regs)
80{ 79{
81 unsigned long pending; 80 unsigned long pending;
82 81
@@ -86,7 +85,7 @@ static void lpd270_irq_handler(unsigned int irq, struct irqdesc *desc,
86 if (likely(pending)) { 85 if (likely(pending)) {
87 irq = LPD270_IRQ(0) + __ffs(pending); 86 irq = LPD270_IRQ(0) + __ffs(pending);
88 desc = irq_desc + irq; 87 desc = irq_desc + irq;
89 desc_handle_irq(irq, desc, regs); 88 desc_handle_irq(irq, desc);
90 89
91 pending = __raw_readw(LPD270_INT_STATUS) & 90 pending = __raw_readw(LPD270_INT_STATUS) &
92 lpd270_irq_enabled; 91 lpd270_irq_enabled;
diff --git a/arch/arm/mach-pxa/lubbock.c b/arch/arm/mach-pxa/lubbock.c
index 157cf47cbe66..ee80d62119d3 100644
--- a/arch/arm/mach-pxa/lubbock.c
+++ b/arch/arm/mach-pxa/lubbock.c
@@ -85,8 +85,7 @@ static struct irq_chip lubbock_irq_chip = {
85 .unmask = lubbock_unmask_irq, 85 .unmask = lubbock_unmask_irq,
86}; 86};
87 87
88static void lubbock_irq_handler(unsigned int irq, struct irqdesc *desc, 88static void lubbock_irq_handler(unsigned int irq, struct irqdesc *desc)
89 struct pt_regs *regs)
90{ 89{
91 unsigned long pending = LUB_IRQ_SET_CLR & lubbock_irq_enabled; 90 unsigned long pending = LUB_IRQ_SET_CLR & lubbock_irq_enabled;
92 do { 91 do {
@@ -94,7 +93,7 @@ static void lubbock_irq_handler(unsigned int irq, struct irqdesc *desc,
94 if (likely(pending)) { 93 if (likely(pending)) {
95 irq = LUBBOCK_IRQ(0) + __ffs(pending); 94 irq = LUBBOCK_IRQ(0) + __ffs(pending);
96 desc = irq_desc + irq; 95 desc = irq_desc + irq;
97 desc_handle_irq(irq, desc, regs); 96 desc_handle_irq(irq, desc);
98 } 97 }
99 pending = LUB_IRQ_SET_CLR & lubbock_irq_enabled; 98 pending = LUB_IRQ_SET_CLR & lubbock_irq_enabled;
100 } while (pending); 99 } while (pending);
@@ -379,7 +378,7 @@ static struct pxafb_mach_info sharp_lm8v31 = {
379#define MMC_POLL_RATE msecs_to_jiffies(1000) 378#define MMC_POLL_RATE msecs_to_jiffies(1000)
380 379
381static void lubbock_mmc_poll(unsigned long); 380static void lubbock_mmc_poll(unsigned long);
382static irqreturn_t (*mmc_detect_int)(int, void *, struct pt_regs *); 381static irq_handler_t mmc_detect_int;
383 382
384static struct timer_list mmc_timer = { 383static struct timer_list mmc_timer = {
385 .function = lubbock_mmc_poll, 384 .function = lubbock_mmc_poll,
@@ -403,17 +402,17 @@ static void lubbock_mmc_poll(unsigned long data)
403 } 402 }
404} 403}
405 404
406static irqreturn_t lubbock_detect_int(int irq, void *data, struct pt_regs *regs) 405static irqreturn_t lubbock_detect_int(int irq, void *data)
407{ 406{
408 /* IRQ is level triggered; disable, and poll for removal */ 407 /* IRQ is level triggered; disable, and poll for removal */
409 disable_irq(irq); 408 disable_irq(irq);
410 mod_timer(&mmc_timer, jiffies + MMC_POLL_RATE); 409 mod_timer(&mmc_timer, jiffies + MMC_POLL_RATE);
411 410
412 return mmc_detect_int(irq, data, regs); 411 return mmc_detect_int(irq, data);
413} 412}
414 413
415static int lubbock_mci_init(struct device *dev, 414static int lubbock_mci_init(struct device *dev,
416 irqreturn_t (*detect_int)(int, void *, struct pt_regs *), 415 irq_handler_t detect_int,
417 void *data) 416 void *data)
418{ 417{
419 /* setup GPIO for PXA25x MMC controller */ 418 /* setup GPIO for PXA25x MMC controller */
diff --git a/arch/arm/mach-pxa/mainstone.c b/arch/arm/mach-pxa/mainstone.c
index 7ba0447d6fa3..49c34d94a9fe 100644
--- a/arch/arm/mach-pxa/mainstone.c
+++ b/arch/arm/mach-pxa/mainstone.c
@@ -71,8 +71,7 @@ static struct irq_chip mainstone_irq_chip = {
71 .unmask = mainstone_unmask_irq, 71 .unmask = mainstone_unmask_irq,
72}; 72};
73 73
74static void mainstone_irq_handler(unsigned int irq, struct irqdesc *desc, 74static void mainstone_irq_handler(unsigned int irq, struct irqdesc *desc)
75 struct pt_regs *regs)
76{ 75{
77 unsigned long pending = MST_INTSETCLR & mainstone_irq_enabled; 76 unsigned long pending = MST_INTSETCLR & mainstone_irq_enabled;
78 do { 77 do {
@@ -80,7 +79,7 @@ static void mainstone_irq_handler(unsigned int irq, struct irqdesc *desc,
80 if (likely(pending)) { 79 if (likely(pending)) {
81 irq = MAINSTONE_IRQ(0) + __ffs(pending); 80 irq = MAINSTONE_IRQ(0) + __ffs(pending);
82 desc = irq_desc + irq; 81 desc = irq_desc + irq;
83 desc_handle_irq(irq, desc, regs); 82 desc_handle_irq(irq, desc);
84 } 83 }
85 pending = MST_INTSETCLR & mainstone_irq_enabled; 84 pending = MST_INTSETCLR & mainstone_irq_enabled;
86 } while (pending); 85 } while (pending);
@@ -314,7 +313,7 @@ static struct pxafb_mach_info mainstone_pxafb_info = {
314 .pxafb_backlight_power = mainstone_backlight_power, 313 .pxafb_backlight_power = mainstone_backlight_power,
315}; 314};
316 315
317static int mainstone_mci_init(struct device *dev, irqreturn_t (*mstone_detect_int)(int, void *, struct pt_regs *), void *data) 316static int mainstone_mci_init(struct device *dev, irq_handler_t mstone_detect_int, void *data)
318{ 317{
319 int err; 318 int err;
320 319
diff --git a/arch/arm/mach-pxa/poodle.c b/arch/arm/mach-pxa/poodle.c
index 5e8c098ca139..34fb80b37023 100644
--- a/arch/arm/mach-pxa/poodle.c
+++ b/arch/arm/mach-pxa/poodle.c
@@ -197,7 +197,7 @@ static struct platform_device poodle_ts_device = {
197 */ 197 */
198static struct pxamci_platform_data poodle_mci_platform_data; 198static struct pxamci_platform_data poodle_mci_platform_data;
199 199
200static int poodle_mci_init(struct device *dev, irqreturn_t (*poodle_detect_int)(int, void *, struct pt_regs *), void *data) 200static int poodle_mci_init(struct device *dev, irq_handler_t poodle_detect_int, void *data)
201{ 201{
202 int err; 202 int err;
203 203
diff --git a/arch/arm/mach-pxa/spitz.c b/arch/arm/mach-pxa/spitz.c
index 401cdb850fbc..3cbac63bed3c 100644
--- a/arch/arm/mach-pxa/spitz.c
+++ b/arch/arm/mach-pxa/spitz.c
@@ -291,7 +291,7 @@ static struct platform_device spitzts_device = {
291 291
292static struct pxamci_platform_data spitz_mci_platform_data; 292static struct pxamci_platform_data spitz_mci_platform_data;
293 293
294static int spitz_mci_init(struct device *dev, irqreturn_t (*spitz_detect_int)(int, void *, struct pt_regs *), void *data) 294static int spitz_mci_init(struct device *dev, irq_handler_t spitz_detect_int, void *data)
295{ 295{
296 int err; 296 int err;
297 297
diff --git a/arch/arm/mach-pxa/ssp.c b/arch/arm/mach-pxa/ssp.c
index 1fddfeaa630d..6cc202755fb4 100644
--- a/arch/arm/mach-pxa/ssp.c
+++ b/arch/arm/mach-pxa/ssp.c
@@ -65,7 +65,7 @@ static const struct ssp_info_ ssp_info[PXA_SSP_PORTS] = {
65static DEFINE_MUTEX(mutex); 65static DEFINE_MUTEX(mutex);
66static int use_count[PXA_SSP_PORTS] = {0, 0, 0}; 66static int use_count[PXA_SSP_PORTS] = {0, 0, 0};
67 67
68static irqreturn_t ssp_interrupt(int irq, void *dev_id, struct pt_regs *regs) 68static irqreturn_t ssp_interrupt(int irq, void *dev_id)
69{ 69{
70 struct ssp_dev *dev = (struct ssp_dev*) dev_id; 70 struct ssp_dev *dev = (struct ssp_dev*) dev_id;
71 unsigned int status = SSSR_P(dev->port); 71 unsigned int status = SSSR_P(dev->port);
diff --git a/arch/arm/mach-pxa/time.c b/arch/arm/mach-pxa/time.c
index 5dbd191c57c4..3ac268fa419b 100644
--- a/arch/arm/mach-pxa/time.c
+++ b/arch/arm/mach-pxa/time.c
@@ -75,7 +75,7 @@ static int match_posponed;
75#endif 75#endif
76 76
77static irqreturn_t 77static irqreturn_t
78pxa_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 78pxa_timer_interrupt(int irq, void *dev_id)
79{ 79{
80 int next_match; 80 int next_match;
81 81
@@ -105,7 +105,7 @@ pxa_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
105 * exactly one tick period which should be a pretty rare event. 105 * exactly one tick period which should be a pretty rare event.
106 */ 106 */
107 do { 107 do {
108 timer_tick(regs); 108 timer_tick();
109 OSSR = OSSR_M0; /* Clear match on timer 0 */ 109 OSSR = OSSR_M0; /* Clear match on timer 0 */
110 next_match = (OSMR0 += LATCH); 110 next_match = (OSMR0 += LATCH);
111 } while( (signed long)(next_match - OSCR) <= 8 ); 111 } while( (signed long)(next_match - OSCR) <= 8 );
@@ -157,13 +157,13 @@ static void pxa_dyn_tick_reprogram(unsigned long ticks)
157} 157}
158 158
159static irqreturn_t 159static irqreturn_t
160pxa_dyn_tick_handler(int irq, void *dev_id, struct pt_regs *regs) 160pxa_dyn_tick_handler(int irq, void *dev_id)
161{ 161{
162 if (match_posponed) { 162 if (match_posponed) {
163 match_posponed = 0; 163 match_posponed = 0;
164 OSMR0 = initial_match; 164 OSMR0 = initial_match;
165 if ( (signed long)(initial_match - OSCR) <= 8 ) 165 if ( (signed long)(initial_match - OSCR) <= 8 )
166 return pxa_timer_interrupt(irq, dev_id, regs); 166 return pxa_timer_interrupt(irq, dev_id);
167 } 167 }
168 return IRQ_NONE; 168 return IRQ_NONE;
169} 169}
diff --git a/arch/arm/mach-pxa/tosa.c b/arch/arm/mach-pxa/tosa.c
index 249353616aba..7915a5a22865 100644
--- a/arch/arm/mach-pxa/tosa.c
+++ b/arch/arm/mach-pxa/tosa.c
@@ -174,7 +174,7 @@ static struct pxa2xx_udc_mach_info udc_info __initdata = {
174 */ 174 */
175static struct pxamci_platform_data tosa_mci_platform_data; 175static struct pxamci_platform_data tosa_mci_platform_data;
176 176
177static int tosa_mci_init(struct device *dev, irqreturn_t (*tosa_detect_int)(int, void *, struct pt_regs *), void *data) 177static int tosa_mci_init(struct device *dev, irq_handler_t tosa_detect_int, void *data)
178{ 178{
179 int err; 179 int err;
180 180
diff --git a/arch/arm/mach-pxa/trizeps4.c b/arch/arm/mach-pxa/trizeps4.c
index 910571e9a190..c1827d021ba8 100644
--- a/arch/arm/mach-pxa/trizeps4.c
+++ b/arch/arm/mach-pxa/trizeps4.c
@@ -270,7 +270,7 @@ void board_pcmcia_power(int power) {;}
270#endif /* CONFIG_MACH_TRIZEPS4_CONXS */ 270#endif /* CONFIG_MACH_TRIZEPS4_CONXS */
271EXPORT_SYMBOL(board_pcmcia_power); 271EXPORT_SYMBOL(board_pcmcia_power);
272 272
273static int trizeps4_mci_init(struct device *dev, irqreturn_t (*mci_detect_int)(int, void *, struct pt_regs *), void *data) 273static int trizeps4_mci_init(struct device *dev, irq_handler_t mci_detect_int, void *data)
274{ 274{
275 int err; 275 int err;
276 /* setup GPIO for PXA27x MMC controller */ 276 /* setup GPIO for PXA27x MMC controller */
diff --git a/arch/arm/mach-realview/core.c b/arch/arm/mach-realview/core.c
index da0286973823..68c67053f479 100644
--- a/arch/arm/mach-realview/core.c
+++ b/arch/arm/mach-realview/core.c
@@ -515,18 +515,18 @@ static unsigned long realview_gettimeoffset(void)
515/* 515/*
516 * IRQ handler for the timer 516 * IRQ handler for the timer
517 */ 517 */
518static irqreturn_t realview_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 518static irqreturn_t realview_timer_interrupt(int irq, void *dev_id)
519{ 519{
520 write_seqlock(&xtime_lock); 520 write_seqlock(&xtime_lock);
521 521
522 // ...clear the interrupt 522 // ...clear the interrupt
523 writel(1, TIMER0_VA_BASE + TIMER_INTCLR); 523 writel(1, TIMER0_VA_BASE + TIMER_INTCLR);
524 524
525 timer_tick(regs); 525 timer_tick();
526 526
527#if defined(CONFIG_SMP) && !defined(CONFIG_LOCAL_TIMERS) 527#if defined(CONFIG_SMP) && !defined(CONFIG_LOCAL_TIMERS)
528 smp_send_timer(); 528 smp_send_timer();
529 update_process_times(user_mode(regs)); 529 update_process_times(user_mode(get_irq_regs()));
530#endif 530#endif
531 531
532 write_sequnlock(&xtime_lock); 532 write_sequnlock(&xtime_lock);
diff --git a/arch/arm/mach-rpc/dma.c b/arch/arm/mach-rpc/dma.c
index ac511d41d4d7..596379a4cf82 100644
--- a/arch/arm/mach-rpc/dma.c
+++ b/arch/arm/mach-rpc/dma.c
@@ -83,7 +83,7 @@ static void iomd_get_next_sg(struct scatterlist *sg, dma_t *dma)
83 sg->length |= flags; 83 sg->length |= flags;
84} 84}
85 85
86static irqreturn_t iomd_dma_handle(int irq, void *dev_id, struct pt_regs *regs) 86static irqreturn_t iomd_dma_handle(int irq, void *dev_id)
87{ 87{
88 dma_t *dma = (dma_t *)dev_id; 88 dma_t *dma = (dma_t *)dev_id;
89 unsigned long base = dma->dma_base; 89 unsigned long base = dma->dma_base;
diff --git a/arch/arm/mach-s3c2410/bast-irq.c b/arch/arm/mach-s3c2410/bast-irq.c
index 440e9aa0211a..23d5beea5568 100644
--- a/arch/arm/mach-s3c2410/bast-irq.c
+++ b/arch/arm/mach-s3c2410/bast-irq.c
@@ -112,8 +112,7 @@ static struct irqchip bast_pc104_chip = {
112 112
113static void 113static void
114bast_irq_pc104_demux(unsigned int irq, 114bast_irq_pc104_demux(unsigned int irq,
115 struct irqdesc *desc, 115 struct irqdesc *desc)
116 struct pt_regs *regs)
117{ 116{
118 unsigned int stat; 117 unsigned int stat;
119 unsigned int irqno; 118 unsigned int irqno;
@@ -133,7 +132,7 @@ bast_irq_pc104_demux(unsigned int irq,
133 if (stat & 1) { 132 if (stat & 1) {
134 irqno = bast_pc104_irqs[i]; 133 irqno = bast_pc104_irqs[i];
135 desc = irq_desc + irqno; 134 desc = irq_desc + irqno;
136 desc_handle_irq(irqno, desc, regs); 135 desc_handle_irq(irqno, desc);
137 } 136 }
138 } 137 }
139 } 138 }
diff --git a/arch/arm/mach-s3c2410/dma.c b/arch/arm/mach-s3c2410/dma.c
index d264bbbd8bef..3d211dc2f2f9 100644
--- a/arch/arm/mach-s3c2410/dma.c
+++ b/arch/arm/mach-s3c2410/dma.c
@@ -595,7 +595,7 @@ s3c2410_dma_lastxfer(struct s3c2410_dma_chan *chan)
595#define dmadbg2(x...) 595#define dmadbg2(x...)
596 596
597static irqreturn_t 597static irqreturn_t
598s3c2410_dma_irq(int irq, void *devpw, struct pt_regs *regs) 598s3c2410_dma_irq(int irq, void *devpw)
599{ 599{
600 struct s3c2410_dma_chan *chan = (struct s3c2410_dma_chan *)devpw; 600 struct s3c2410_dma_chan *chan = (struct s3c2410_dma_chan *)devpw;
601 struct s3c2410_dma_buf *buf; 601 struct s3c2410_dma_buf *buf;
diff --git a/arch/arm/mach-s3c2410/irq.c b/arch/arm/mach-s3c2410/irq.c
index 3e9f3462c61b..683b3491ba3c 100644
--- a/arch/arm/mach-s3c2410/irq.c
+++ b/arch/arm/mach-s3c2410/irq.c
@@ -480,8 +480,7 @@ static struct irqchip s3c_irq_adc = {
480 480
481/* irq demux for adc */ 481/* irq demux for adc */
482static void s3c_irq_demux_adc(unsigned int irq, 482static void s3c_irq_demux_adc(unsigned int irq,
483 struct irqdesc *desc, 483 struct irqdesc *desc)
484 struct pt_regs *regs)
485{ 484{
486 unsigned int subsrc, submsk; 485 unsigned int subsrc, submsk;
487 unsigned int offset = 9; 486 unsigned int offset = 9;
@@ -500,17 +499,16 @@ static void s3c_irq_demux_adc(unsigned int irq,
500 if (subsrc != 0) { 499 if (subsrc != 0) {
501 if (subsrc & 1) { 500 if (subsrc & 1) {
502 mydesc = irq_desc + IRQ_TC; 501 mydesc = irq_desc + IRQ_TC;
503 desc_handle_irq(IRQ_TC, mydesc, regs); 502 desc_handle_irq(IRQ_TC, mydesc);
504 } 503 }
505 if (subsrc & 2) { 504 if (subsrc & 2) {
506 mydesc = irq_desc + IRQ_ADC; 505 mydesc = irq_desc + IRQ_ADC;
507 desc_handle_irq(IRQ_ADC, mydesc, regs); 506 desc_handle_irq(IRQ_ADC, mydesc);
508 } 507 }
509 } 508 }
510} 509}
511 510
512static void s3c_irq_demux_uart(unsigned int start, 511static void s3c_irq_demux_uart(unsigned int start)
513 struct pt_regs *regs)
514{ 512{
515 unsigned int subsrc, submsk; 513 unsigned int subsrc, submsk;
516 unsigned int offset = start - IRQ_S3CUART_RX0; 514 unsigned int offset = start - IRQ_S3CUART_RX0;
@@ -533,17 +531,17 @@ static void s3c_irq_demux_uart(unsigned int start,
533 desc = irq_desc + start; 531 desc = irq_desc + start;
534 532
535 if (subsrc & 1) 533 if (subsrc & 1)
536 desc_handle_irq(start, desc, regs); 534 desc_handle_irq(start, desc);
537 535
538 desc++; 536 desc++;
539 537
540 if (subsrc & 2) 538 if (subsrc & 2)
541 desc_handle_irq(start+1, desc, regs); 539 desc_handle_irq(start+1, desc);
542 540
543 desc++; 541 desc++;
544 542
545 if (subsrc & 4) 543 if (subsrc & 4)
546 desc_handle_irq(start+2, desc, regs); 544 desc_handle_irq(start+2, desc);
547 } 545 }
548} 546}
549 547
@@ -551,35 +549,31 @@ static void s3c_irq_demux_uart(unsigned int start,
551 549
552static void 550static void
553s3c_irq_demux_uart0(unsigned int irq, 551s3c_irq_demux_uart0(unsigned int irq,
554 struct irqdesc *desc, 552 struct irqdesc *desc)
555 struct pt_regs *regs)
556{ 553{
557 irq = irq; 554 irq = irq;
558 s3c_irq_demux_uart(IRQ_S3CUART_RX0, regs); 555 s3c_irq_demux_uart(IRQ_S3CUART_RX0);
559} 556}
560 557
561static void 558static void
562s3c_irq_demux_uart1(unsigned int irq, 559s3c_irq_demux_uart1(unsigned int irq,
563 struct irqdesc *desc, 560 struct irqdesc *desc)
564 struct pt_regs *regs)
565{ 561{
566 irq = irq; 562 irq = irq;
567 s3c_irq_demux_uart(IRQ_S3CUART_RX1, regs); 563 s3c_irq_demux_uart(IRQ_S3CUART_RX1);
568} 564}
569 565
570static void 566static void
571s3c_irq_demux_uart2(unsigned int irq, 567s3c_irq_demux_uart2(unsigned int irq,
572 struct irqdesc *desc, 568 struct irqdesc *desc)
573 struct pt_regs *regs)
574{ 569{
575 irq = irq; 570 irq = irq;
576 s3c_irq_demux_uart(IRQ_S3CUART_RX2, regs); 571 s3c_irq_demux_uart(IRQ_S3CUART_RX2);
577} 572}
578 573
579static void 574static void
580s3c_irq_demux_extint8(unsigned int irq, 575s3c_irq_demux_extint8(unsigned int irq,
581 struct irqdesc *desc, 576 struct irqdesc *desc)
582 struct pt_regs *regs)
583{ 577{
584 unsigned long eintpnd = __raw_readl(S3C24XX_EINTPEND); 578 unsigned long eintpnd = __raw_readl(S3C24XX_EINTPEND);
585 unsigned long eintmsk = __raw_readl(S3C24XX_EINTMASK); 579 unsigned long eintmsk = __raw_readl(S3C24XX_EINTMASK);
@@ -594,15 +588,14 @@ s3c_irq_demux_extint8(unsigned int irq,
594 eintpnd &= ~(1<<irq); 588 eintpnd &= ~(1<<irq);
595 589
596 irq += (IRQ_EINT4 - 4); 590 irq += (IRQ_EINT4 - 4);
597 desc_handle_irq(irq, irq_desc + irq, regs); 591 desc_handle_irq(irq, irq_desc + irq);
598 } 592 }
599 593
600} 594}
601 595
602static void 596static void
603s3c_irq_demux_extint4t7(unsigned int irq, 597s3c_irq_demux_extint4t7(unsigned int irq,
604 struct irqdesc *desc, 598 struct irqdesc *desc)
605 struct pt_regs *regs)
606{ 599{
607 unsigned long eintpnd = __raw_readl(S3C24XX_EINTPEND); 600 unsigned long eintpnd = __raw_readl(S3C24XX_EINTPEND);
608 unsigned long eintmsk = __raw_readl(S3C24XX_EINTMASK); 601 unsigned long eintmsk = __raw_readl(S3C24XX_EINTMASK);
@@ -618,7 +611,7 @@ s3c_irq_demux_extint4t7(unsigned int irq,
618 611
619 irq += (IRQ_EINT4 - 4); 612 irq += (IRQ_EINT4 - 4);
620 613
621 desc_handle_irq(irq, irq_desc + irq, regs); 614 desc_handle_irq(irq, irq_desc + irq);
622 } 615 }
623} 616}
624 617
diff --git a/arch/arm/mach-s3c2410/mach-amlm5900.c b/arch/arm/mach-s3c2410/mach-amlm5900.c
index ba5109af40b4..817e2c684410 100644
--- a/arch/arm/mach-s3c2410/mach-amlm5900.c
+++ b/arch/arm/mach-s3c2410/mach-amlm5900.c
@@ -226,7 +226,7 @@ static struct s3c2410fb_mach_info __initdata amlm5900_lcd_info = {
226#endif 226#endif
227 227
228static irqreturn_t 228static irqreturn_t
229amlm5900_wake_interrupt(int irq, void *ignored, struct pt_regs *regs) 229amlm5900_wake_interrupt(int irq, void *ignored)
230{ 230{
231 return IRQ_HANDLED; 231 return IRQ_HANDLED;
232} 232}
diff --git a/arch/arm/mach-s3c2410/s3c2440-irq.c b/arch/arm/mach-s3c2410/s3c2440-irq.c
index fc08febe2e54..39db0752d53b 100644
--- a/arch/arm/mach-s3c2410/s3c2440-irq.c
+++ b/arch/arm/mach-s3c2410/s3c2440-irq.c
@@ -42,8 +42,7 @@
42/* WDT/AC97 */ 42/* WDT/AC97 */
43 43
44static void s3c_irq_demux_wdtac97(unsigned int irq, 44static void s3c_irq_demux_wdtac97(unsigned int irq,
45 struct irqdesc *desc, 45 struct irqdesc *desc)
46 struct pt_regs *regs)
47{ 46{
48 unsigned int subsrc, submsk; 47 unsigned int subsrc, submsk;
49 struct irqdesc *mydesc; 48 struct irqdesc *mydesc;
@@ -61,11 +60,11 @@ static void s3c_irq_demux_wdtac97(unsigned int irq,
61 if (subsrc != 0) { 60 if (subsrc != 0) {
62 if (subsrc & 1) { 61 if (subsrc & 1) {
63 mydesc = irq_desc + IRQ_S3C2440_WDT; 62 mydesc = irq_desc + IRQ_S3C2440_WDT;
64 desc_handle_irq(IRQ_S3C2440_WDT, mydesc, regs); 63 desc_handle_irq(IRQ_S3C2440_WDT, mydesc);
65 } 64 }
66 if (subsrc & 2) { 65 if (subsrc & 2) {
67 mydesc = irq_desc + IRQ_S3C2440_AC97; 66 mydesc = irq_desc + IRQ_S3C2440_AC97;
68 desc_handle_irq(IRQ_S3C2440_AC97, mydesc, regs); 67 desc_handle_irq(IRQ_S3C2440_AC97, mydesc);
69 } 68 }
70 } 69 }
71} 70}
diff --git a/arch/arm/mach-s3c2410/s3c244x-irq.c b/arch/arm/mach-s3c2410/s3c244x-irq.c
index ec702f88b299..146f2109dd90 100644
--- a/arch/arm/mach-s3c2410/s3c244x-irq.c
+++ b/arch/arm/mach-s3c2410/s3c244x-irq.c
@@ -42,8 +42,7 @@
42/* camera irq */ 42/* camera irq */
43 43
44static void s3c_irq_demux_cam(unsigned int irq, 44static void s3c_irq_demux_cam(unsigned int irq,
45 struct irqdesc *desc, 45 struct irqdesc *desc)
46 struct pt_regs *regs)
47{ 46{
48 unsigned int subsrc, submsk; 47 unsigned int subsrc, submsk;
49 struct irqdesc *mydesc; 48 struct irqdesc *mydesc;
@@ -61,11 +60,11 @@ static void s3c_irq_demux_cam(unsigned int irq,
61 if (subsrc != 0) { 60 if (subsrc != 0) {
62 if (subsrc & 1) { 61 if (subsrc & 1) {
63 mydesc = irq_desc + IRQ_S3C2440_CAM_C; 62 mydesc = irq_desc + IRQ_S3C2440_CAM_C;
64 desc_handle_irq(IRQ_S3C2440_CAM_C, mydesc, regs); 63 desc_handle_irq(IRQ_S3C2440_CAM_C, mydesc);
65 } 64 }
66 if (subsrc & 2) { 65 if (subsrc & 2) {
67 mydesc = irq_desc + IRQ_S3C2440_CAM_P; 66 mydesc = irq_desc + IRQ_S3C2440_CAM_P;
68 desc_handle_irq(IRQ_S3C2440_CAM_P, mydesc, regs); 67 desc_handle_irq(IRQ_S3C2440_CAM_P, mydesc);
69 } 68 }
70 } 69 }
71} 70}
diff --git a/arch/arm/mach-s3c2410/time.c b/arch/arm/mach-s3c2410/time.c
index 00d1cfca9712..9910bf0f2cea 100644
--- a/arch/arm/mach-s3c2410/time.c
+++ b/arch/arm/mach-s3c2410/time.c
@@ -128,10 +128,10 @@ static unsigned long s3c2410_gettimeoffset (void)
128 * IRQ handler for the timer 128 * IRQ handler for the timer
129 */ 129 */
130static irqreturn_t 130static irqreturn_t
131s3c2410_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 131s3c2410_timer_interrupt(int irq, void *dev_id)
132{ 132{
133 write_seqlock(&xtime_lock); 133 write_seqlock(&xtime_lock);
134 timer_tick(regs); 134 timer_tick();
135 write_sequnlock(&xtime_lock); 135 write_sequnlock(&xtime_lock);
136 return IRQ_HANDLED; 136 return IRQ_HANDLED;
137} 137}
diff --git a/arch/arm/mach-s3c2410/usb-simtec.c b/arch/arm/mach-s3c2410/usb-simtec.c
index c635efa7cd31..22b0e1cdd4bf 100644
--- a/arch/arm/mach-s3c2410/usb-simtec.c
+++ b/arch/arm/mach-s3c2410/usb-simtec.c
@@ -58,7 +58,7 @@ usb_simtec_powercontrol(int port, int to)
58} 58}
59 59
60static irqreturn_t 60static irqreturn_t
61usb_simtec_ocirq(int irq, void *pw, struct pt_regs *regs) 61usb_simtec_ocirq(int irq, void *pw)
62{ 62{
63 struct s3c2410_hcd_info *info = (struct s3c2410_hcd_info *)pw; 63 struct s3c2410_hcd_info *info = (struct s3c2410_hcd_info *)pw;
64 64
diff --git a/arch/arm/mach-sa1100/dma.c b/arch/arm/mach-sa1100/dma.c
index 2ea2a657a034..1fbe053e8b59 100644
--- a/arch/arm/mach-sa1100/dma.c
+++ b/arch/arm/mach-sa1100/dma.c
@@ -42,7 +42,7 @@ static sa1100_dma_t dma_chan[SA1100_DMA_CHANNELS];
42static spinlock_t dma_list_lock; 42static spinlock_t dma_list_lock;
43 43
44 44
45static irqreturn_t dma_irq_handler(int irq, void *dev_id, struct pt_regs *regs) 45static irqreturn_t dma_irq_handler(int irq, void *dev_id)
46{ 46{
47 dma_regs_t *dma_regs = dev_id; 47 dma_regs_t *dma_regs = dev_id;
48 sa1100_dma_t *dma = dma_chan + (((u_int)dma_regs >> 5) & 7); 48 sa1100_dma_t *dma = dma_chan + (((u_int)dma_regs >> 5) & 7);
diff --git a/arch/arm/mach-sa1100/h3600.c b/arch/arm/mach-sa1100/h3600.c
index 7364478cec12..fa6dc71bd6ad 100644
--- a/arch/arm/mach-sa1100/h3600.c
+++ b/arch/arm/mach-sa1100/h3600.c
@@ -702,7 +702,7 @@ static u32 gpio_irq_mask[] = {
702 GPIO2_SD_CON_SLT, 702 GPIO2_SD_CON_SLT,
703}; 703};
704 704
705static void h3800_IRQ_demux(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs) 705static void h3800_IRQ_demux(unsigned int irq, struct irqdesc *desc)
706{ 706{
707 int i; 707 int i;
708 708
@@ -719,14 +719,14 @@ static void h3800_IRQ_demux(unsigned int irq, struct irqdesc *desc, struct pt_re
719 if (0) printk("%s KPIO 0x%08X\n", __FUNCTION__, irq); 719 if (0) printk("%s KPIO 0x%08X\n", __FUNCTION__, irq);
720 for (j = 0; j < H3800_KPIO_IRQ_COUNT; j++) 720 for (j = 0; j < H3800_KPIO_IRQ_COUNT; j++)
721 if (irq & kpio_irq_mask[j]) 721 if (irq & kpio_irq_mask[j])
722 do_edge_IRQ(H3800_KPIO_IRQ_COUNT + j, irq_desc + H3800_KPIO_IRQ_COUNT + j, regs); 722 do_edge_IRQ(H3800_KPIO_IRQ_COUNT + j, irq_desc + H3800_KPIO_IRQ_COUNT + j);
723 723
724 /* GPIO2 */ 724 /* GPIO2 */
725 irq = H3800_ASIC2_GPIINTFLAG; 725 irq = H3800_ASIC2_GPIINTFLAG;
726 if (0) printk("%s GPIO 0x%08X\n", __FUNCTION__, irq); 726 if (0) printk("%s GPIO 0x%08X\n", __FUNCTION__, irq);
727 for (j = 0; j < H3800_GPIO_IRQ_COUNT; j++) 727 for (j = 0; j < H3800_GPIO_IRQ_COUNT; j++)
728 if (irq & gpio_irq_mask[j]) 728 if (irq & gpio_irq_mask[j])
729 do_edge_IRQ(H3800_GPIO_IRQ_COUNT + j, irq_desc + H3800_GPIO_IRQ_COUNT + j , regs); 729 do_edge_IRQ(H3800_GPIO_IRQ_COUNT + j, irq_desc + H3800_GPIO_IRQ_COUNT + j);
730 } 730 }
731 731
732 if (i >= MAX_ASIC_ISR_LOOPS) 732 if (i >= MAX_ASIC_ISR_LOOPS)
diff --git a/arch/arm/mach-sa1100/irq.c b/arch/arm/mach-sa1100/irq.c
index b55b90a2e8fe..f4c6322ca33e 100644
--- a/arch/arm/mach-sa1100/irq.c
+++ b/arch/arm/mach-sa1100/irq.c
@@ -110,8 +110,7 @@ static struct irq_chip sa1100_low_gpio_chip = {
110 * and call the handler. 110 * and call the handler.
111 */ 111 */
112static void 112static void
113sa1100_high_gpio_handler(unsigned int irq, struct irqdesc *desc, 113sa1100_high_gpio_handler(unsigned int irq, struct irqdesc *desc)
114 struct pt_regs *regs)
115{ 114{
116 unsigned int mask; 115 unsigned int mask;
117 116
@@ -128,7 +127,7 @@ sa1100_high_gpio_handler(unsigned int irq, struct irqdesc *desc,
128 mask >>= 11; 127 mask >>= 11;
129 do { 128 do {
130 if (mask & 1) 129 if (mask & 1)
131 desc_handle_irq(irq, desc, regs); 130 desc_handle_irq(irq, desc);
132 mask >>= 1; 131 mask >>= 1;
133 irq++; 132 irq++;
134 desc++; 133 desc++;
diff --git a/arch/arm/mach-sa1100/neponset.c b/arch/arm/mach-sa1100/neponset.c
index af6d2775cf82..354d5e91da59 100644
--- a/arch/arm/mach-sa1100/neponset.c
+++ b/arch/arm/mach-sa1100/neponset.c
@@ -29,7 +29,7 @@
29 * is rather unfortunate. 29 * is rather unfortunate.
30 */ 30 */
31static void 31static void
32neponset_irq_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs) 32neponset_irq_handler(unsigned int irq, struct irqdesc *desc)
33{ 33{
34 unsigned int irr; 34 unsigned int irr;
35 35
@@ -69,12 +69,12 @@ neponset_irq_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *reg
69 69
70 if (irr & IRR_ETHERNET) { 70 if (irr & IRR_ETHERNET) {
71 d = irq_desc + IRQ_NEPONSET_SMC9196; 71 d = irq_desc + IRQ_NEPONSET_SMC9196;
72 desc_handle_irq(IRQ_NEPONSET_SMC9196, d, regs); 72 desc_handle_irq(IRQ_NEPONSET_SMC9196, d);
73 } 73 }
74 74
75 if (irr & IRR_USAR) { 75 if (irr & IRR_USAR) {
76 d = irq_desc + IRQ_NEPONSET_USAR; 76 d = irq_desc + IRQ_NEPONSET_USAR;
77 desc_handle_irq(IRQ_NEPONSET_USAR, d, regs); 77 desc_handle_irq(IRQ_NEPONSET_USAR, d);
78 } 78 }
79 79
80 desc->chip->unmask(irq); 80 desc->chip->unmask(irq);
@@ -82,7 +82,7 @@ neponset_irq_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *reg
82 82
83 if (irr & IRR_SA1111) { 83 if (irr & IRR_SA1111) {
84 d = irq_desc + IRQ_NEPONSET_SA1111; 84 d = irq_desc + IRQ_NEPONSET_SA1111;
85 desc_handle_irq(IRQ_NEPONSET_SA1111, d, regs); 85 desc_handle_irq(IRQ_NEPONSET_SA1111, d);
86 } 86 }
87 } 87 }
88} 88}
diff --git a/arch/arm/mach-sa1100/ssp.c b/arch/arm/mach-sa1100/ssp.c
index 5eba5fbbb561..59703c6fb29b 100644
--- a/arch/arm/mach-sa1100/ssp.c
+++ b/arch/arm/mach-sa1100/ssp.c
@@ -25,7 +25,7 @@
25 25
26#define TIMEOUT 100000 26#define TIMEOUT 100000
27 27
28static irqreturn_t ssp_interrupt(int irq, void *dev_id, struct pt_regs *regs) 28static irqreturn_t ssp_interrupt(int irq, void *dev_id)
29{ 29{
30 unsigned int status = Ser4SSSR; 30 unsigned int status = Ser4SSSR;
31 31
diff --git a/arch/arm/mach-sa1100/time.c b/arch/arm/mach-sa1100/time.c
index 49ae716e16c2..4284bd6f7a1f 100644
--- a/arch/arm/mach-sa1100/time.c
+++ b/arch/arm/mach-sa1100/time.c
@@ -77,7 +77,7 @@ static int match_posponed;
77#endif 77#endif
78 78
79static irqreturn_t 79static irqreturn_t
80sa1100_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 80sa1100_timer_interrupt(int irq, void *dev_id)
81{ 81{
82 unsigned int next_match; 82 unsigned int next_match;
83 83
@@ -99,7 +99,7 @@ sa1100_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
99 * handlers. 99 * handlers.
100 */ 100 */
101 do { 101 do {
102 timer_tick(regs); 102 timer_tick();
103 OSSR = OSSR_M0; /* Clear match on timer 0 */ 103 OSSR = OSSR_M0; /* Clear match on timer 0 */
104 next_match = (OSMR0 += LATCH); 104 next_match = (OSMR0 += LATCH);
105 } while ((signed long)(next_match - OSCR) <= 0); 105 } while ((signed long)(next_match - OSCR) <= 0);
@@ -151,13 +151,13 @@ static void sa1100_dyn_tick_reprogram(unsigned long ticks)
151} 151}
152 152
153static irqreturn_t 153static irqreturn_t
154sa1100_dyn_tick_handler(int irq, void *dev_id, struct pt_regs *regs) 154sa1100_dyn_tick_handler(int irq, void *dev_id)
155{ 155{
156 if (match_posponed) { 156 if (match_posponed) {
157 match_posponed = 0; 157 match_posponed = 0;
158 OSMR0 = initial_match; 158 OSMR0 = initial_match;
159 if ((signed long)(initial_match - OSCR) <= 0) 159 if ((signed long)(initial_match - OSCR) <= 0)
160 return sa1100_timer_interrupt(irq, dev_id, regs); 160 return sa1100_timer_interrupt(irq, dev_id);
161 } 161 }
162 return IRQ_NONE; 162 return IRQ_NONE;
163} 163}
diff --git a/arch/arm/mach-shark/core.c b/arch/arm/mach-shark/core.c
index 1095df34fec0..0e480fae8ec5 100644
--- a/arch/arm/mach-shark/core.c
+++ b/arch/arm/mach-shark/core.c
@@ -80,10 +80,10 @@ static void __init shark_map_io(void)
80#define HZ_TIME ((1193180 + HZ/2) / HZ) 80#define HZ_TIME ((1193180 + HZ/2) / HZ)
81 81
82static irqreturn_t 82static irqreturn_t
83shark_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 83shark_timer_interrupt(int irq, void *dev_id)
84{ 84{
85 write_seqlock(&xtime_lock); 85 write_seqlock(&xtime_lock);
86 timer_tick(regs); 86 timer_tick();
87 write_sequnlock(&xtime_lock); 87 write_sequnlock(&xtime_lock);
88 return IRQ_HANDLED; 88 return IRQ_HANDLED;
89} 89}
diff --git a/arch/arm/mach-shark/irq.c b/arch/arm/mach-shark/irq.c
index b227052296cf..297ecf130650 100644
--- a/arch/arm/mach-shark/irq.c
+++ b/arch/arm/mach-shark/irq.c
@@ -61,7 +61,7 @@ static void shark_enable_8259A_irq(unsigned int irq)
61 61
62static void shark_ack_8259A_irq(unsigned int irq){} 62static void shark_ack_8259A_irq(unsigned int irq){}
63 63
64static irqreturn_t bogus_int(int irq, void *dev_id, struct pt_regs *regs) 64static irqreturn_t bogus_int(int irq, void *dev_id)
65{ 65{
66 printk("Got interrupt %i!\n",irq); 66 printk("Got interrupt %i!\n",irq);
67 return IRQ_NONE; 67 return IRQ_NONE;
diff --git a/arch/arm/mach-versatile/core.c b/arch/arm/mach-versatile/core.c
index f2bbef07b1e4..2aa150b57ba1 100644
--- a/arch/arm/mach-versatile/core.c
+++ b/arch/arm/mach-versatile/core.c
@@ -77,12 +77,12 @@ static struct irq_chip sic_chip = {
77}; 77};
78 78
79static void 79static void
80sic_handle_irq(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs) 80sic_handle_irq(unsigned int irq, struct irqdesc *desc)
81{ 81{
82 unsigned long status = readl(VA_SIC_BASE + SIC_IRQ_STATUS); 82 unsigned long status = readl(VA_SIC_BASE + SIC_IRQ_STATUS);
83 83
84 if (status == 0) { 84 if (status == 0) {
85 do_bad_IRQ(irq, desc, regs); 85 do_bad_IRQ(irq, desc);
86 return; 86 return;
87 } 87 }
88 88
@@ -93,7 +93,7 @@ sic_handle_irq(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs)
93 irq += IRQ_SIC_START; 93 irq += IRQ_SIC_START;
94 94
95 desc = irq_desc + irq; 95 desc = irq_desc + irq;
96 desc_handle_irq(irq, desc, regs); 96 desc_handle_irq(irq, desc);
97 } while (status); 97 } while (status);
98} 98}
99 99
@@ -851,14 +851,14 @@ static unsigned long versatile_gettimeoffset(void)
851/* 851/*
852 * IRQ handler for the timer 852 * IRQ handler for the timer
853 */ 853 */
854static irqreturn_t versatile_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 854static irqreturn_t versatile_timer_interrupt(int irq, void *dev_id)
855{ 855{
856 write_seqlock(&xtime_lock); 856 write_seqlock(&xtime_lock);
857 857
858 // ...clear the interrupt 858 // ...clear the interrupt
859 writel(1, TIMER0_VA_BASE + TIMER_INTCLR); 859 writel(1, TIMER0_VA_BASE + TIMER_INTCLR);
860 860
861 timer_tick(regs); 861 timer_tick();
862 862
863 write_sequnlock(&xtime_lock); 863 write_sequnlock(&xtime_lock);
864 864
diff --git a/arch/arm/mm/ioremap.c b/arch/arm/mm/ioremap.c
index 591fc3187c7f..465440592791 100644
--- a/arch/arm/mm/ioremap.c
+++ b/arch/arm/mm/ioremap.c
@@ -361,14 +361,14 @@ __ioremap(unsigned long phys_addr, size_t size, unsigned long flags)
361} 361}
362EXPORT_SYMBOL(__ioremap); 362EXPORT_SYMBOL(__ioremap);
363 363
364void __iounmap(void __iomem *addr) 364void __iounmap(volatile void __iomem *addr)
365{ 365{
366#ifndef CONFIG_SMP 366#ifndef CONFIG_SMP
367 struct vm_struct **p, *tmp; 367 struct vm_struct **p, *tmp;
368#endif 368#endif
369 unsigned int section_mapping = 0; 369 unsigned int section_mapping = 0;
370 370
371 addr = (void __iomem *)(PAGE_MASK & (unsigned long)addr); 371 addr = (volatile void __iomem *)(PAGE_MASK & (unsigned long)addr);
372 372
373#ifndef CONFIG_SMP 373#ifndef CONFIG_SMP
374 /* 374 /*
@@ -395,6 +395,6 @@ void __iounmap(void __iomem *addr)
395#endif 395#endif
396 396
397 if (!section_mapping) 397 if (!section_mapping)
398 vunmap(addr); 398 vunmap((void __force *)addr);
399} 399}
400EXPORT_SYMBOL(__iounmap); 400EXPORT_SYMBOL(__iounmap);
diff --git a/arch/arm/oprofile/op_model_xscale.c b/arch/arm/oprofile/op_model_xscale.c
index 726ad2b3b435..7899d3ca75a3 100644
--- a/arch/arm/oprofile/op_model_xscale.c
+++ b/arch/arm/oprofile/op_model_xscale.c
@@ -341,7 +341,7 @@ static void inline __xsc2_check_ctrs(void)
341 __asm__ __volatile__ ("mcr p14, 0, %0, c5, c1, 0" : : "r" (flag)); 341 __asm__ __volatile__ ("mcr p14, 0, %0, c5, c1, 0" : : "r" (flag));
342} 342}
343 343
344static irqreturn_t xscale_pmu_interrupt(int irq, void *arg, struct pt_regs *regs) 344static irqreturn_t xscale_pmu_interrupt(int irq, void *arg)
345{ 345{
346 int i; 346 int i;
347 u32 pmnc; 347 u32 pmnc;
@@ -356,7 +356,7 @@ static irqreturn_t xscale_pmu_interrupt(int irq, void *arg, struct pt_regs *regs
356 continue; 356 continue;
357 357
358 write_counter(i, -(u32)results[i].reset_counter); 358 write_counter(i, -(u32)results[i].reset_counter);
359 oprofile_add_sample(regs, i); 359 oprofile_add_sample(get_irq_regs(), i);
360 results[i].ovf--; 360 results[i].ovf--;
361 } 361 }
362 362
diff --git a/arch/arm/plat-iop/time.c b/arch/arm/plat-iop/time.c
index 06282dffbdc6..f530abdaa7a1 100644
--- a/arch/arm/plat-iop/time.c
+++ b/arch/arm/plat-iop/time.c
@@ -47,7 +47,7 @@ unsigned long iop3xx_gettimeoffset(void)
47} 47}
48 48
49static irqreturn_t 49static irqreturn_t
50iop3xx_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 50iop3xx_timer_interrupt(int irq, void *dev_id)
51{ 51{
52 write_seqlock(&xtime_lock); 52 write_seqlock(&xtime_lock);
53 53
@@ -57,7 +57,7 @@ iop3xx_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
57 57
58 while ((signed long)(next_jiffy_time - *IOP3XX_TU_TCR1) 58 while ((signed long)(next_jiffy_time - *IOP3XX_TU_TCR1)
59 >= ticks_per_jiffy) { 59 >= ticks_per_jiffy) {
60 timer_tick(regs); 60 timer_tick();
61 next_jiffy_time -= ticks_per_jiffy; 61 next_jiffy_time -= ticks_per_jiffy;
62 } 62 }
63 63
diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c
index 1bbb431843ce..bb045e5ddbd8 100644
--- a/arch/arm/plat-omap/dma.c
+++ b/arch/arm/plat-omap/dma.c
@@ -899,8 +899,7 @@ static int omap1_dma_handle_ch(int ch)
899 return 1; 899 return 1;
900} 900}
901 901
902static irqreturn_t omap1_dma_irq_handler(int irq, void *dev_id, 902static irqreturn_t omap1_dma_irq_handler(int irq, void *dev_id)
903 struct pt_regs *regs)
904{ 903{
905 int ch = ((int) dev_id) - 1; 904 int ch = ((int) dev_id) - 1;
906 int handled = 0; 905 int handled = 0;
@@ -962,8 +961,7 @@ static int omap2_dma_handle_ch(int ch)
962} 961}
963 962
964/* STATUS register count is from 1-32 while our is 0-31 */ 963/* STATUS register count is from 1-32 while our is 0-31 */
965static irqreturn_t omap2_dma_irq_handler(int irq, void *dev_id, 964static irqreturn_t omap2_dma_irq_handler(int irq, void *dev_id)
966 struct pt_regs *regs)
967{ 965{
968 u32 val; 966 u32 val;
969 int i; 967 int i;
@@ -1220,8 +1218,7 @@ static void set_b1_regs(void)
1220 omap_writew(fi, OMAP1610_DMA_LCD_SRC_FI_B1_L); 1218 omap_writew(fi, OMAP1610_DMA_LCD_SRC_FI_B1_L);
1221} 1219}
1222 1220
1223static irqreturn_t lcd_dma_irq_handler(int irq, void *dev_id, 1221static irqreturn_t lcd_dma_irq_handler(int irq, void *dev_id)
1224 struct pt_regs *regs)
1225{ 1222{
1226 u16 w; 1223 u16 w;
1227 1224
diff --git a/arch/arm/plat-omap/gpio.c b/arch/arm/plat-omap/gpio.c
index f55f99ae58ae..8162eed8b500 100644
--- a/arch/arm/plat-omap/gpio.c
+++ b/arch/arm/plat-omap/gpio.c
@@ -783,8 +783,7 @@ void omap_free_gpio(int gpio)
783 * line's interrupt handler has been run, we may miss some nested 783 * line's interrupt handler has been run, we may miss some nested
784 * interrupts. 784 * interrupts.
785 */ 785 */
786static void gpio_irq_handler(unsigned int irq, struct irqdesc *desc, 786static void gpio_irq_handler(unsigned int irq, struct irqdesc *desc)
787 struct pt_regs *regs)
788{ 787{
789 void __iomem *isr_reg = NULL; 788 void __iomem *isr_reg = NULL;
790 u32 isr; 789 u32 isr;
@@ -882,7 +881,7 @@ static void gpio_irq_handler(unsigned int irq, struct irqdesc *desc,
882 continue; 881 continue;
883 } 882 }
884 883
885 desc_handle_irq(gpio_irq, d, regs); 884 desc_handle_irq(gpio_irq, d);
886 885
887 if (unlikely((d->status & IRQ_PENDING) && !d->depth)) { 886 if (unlikely((d->status & IRQ_PENDING) && !d->depth)) {
888 irq_mask = 1 << 887 irq_mask = 1 <<
diff --git a/arch/arm/plat-omap/mcbsp.c b/arch/arm/plat-omap/mcbsp.c
index ade9a0fa6ef6..ec50008a2df6 100644
--- a/arch/arm/plat-omap/mcbsp.c
+++ b/arch/arm/plat-omap/mcbsp.c
@@ -96,7 +96,7 @@ static void omap_mcbsp_dump_reg(u8 id)
96 DBG("***********************\n"); 96 DBG("***********************\n");
97} 97}
98 98
99static irqreturn_t omap_mcbsp_tx_irq_handler(int irq, void *dev_id, struct pt_regs *regs) 99static irqreturn_t omap_mcbsp_tx_irq_handler(int irq, void *dev_id)
100{ 100{
101 struct omap_mcbsp * mcbsp_tx = (struct omap_mcbsp *)(dev_id); 101 struct omap_mcbsp * mcbsp_tx = (struct omap_mcbsp *)(dev_id);
102 102
@@ -106,7 +106,7 @@ static irqreturn_t omap_mcbsp_tx_irq_handler(int irq, void *dev_id, struct pt_re
106 return IRQ_HANDLED; 106 return IRQ_HANDLED;
107} 107}
108 108
109static irqreturn_t omap_mcbsp_rx_irq_handler(int irq, void *dev_id, struct pt_regs *regs) 109static irqreturn_t omap_mcbsp_rx_irq_handler(int irq, void *dev_id)
110{ 110{
111 struct omap_mcbsp * mcbsp_rx = (struct omap_mcbsp *)(dev_id); 111 struct omap_mcbsp * mcbsp_rx = (struct omap_mcbsp *)(dev_id);
112 112
diff --git a/arch/arm/plat-omap/timer32k.c b/arch/arm/plat-omap/timer32k.c
index cf6df3378d37..265310601161 100644
--- a/arch/arm/plat-omap/timer32k.c
+++ b/arch/arm/plat-omap/timer32k.c
@@ -194,8 +194,7 @@ unsigned long long sched_clock(void)
194 * issues with dynamic tick. In the dynamic tick case, we need to lock 194 * issues with dynamic tick. In the dynamic tick case, we need to lock
195 * with irqsave. 195 * with irqsave.
196 */ 196 */
197static inline irqreturn_t _omap_32k_timer_interrupt(int irq, void *dev_id, 197static inline irqreturn_t _omap_32k_timer_interrupt(int irq, void *dev_id)
198 struct pt_regs *regs)
199{ 198{
200 unsigned long now; 199 unsigned long now;
201 200
@@ -205,7 +204,7 @@ static inline irqreturn_t _omap_32k_timer_interrupt(int irq, void *dev_id,
205 while ((signed long)(now - omap_32k_last_tick) 204 while ((signed long)(now - omap_32k_last_tick)
206 >= OMAP_32K_TICKS_PER_HZ) { 205 >= OMAP_32K_TICKS_PER_HZ) {
207 omap_32k_last_tick += OMAP_32K_TICKS_PER_HZ; 206 omap_32k_last_tick += OMAP_32K_TICKS_PER_HZ;
208 timer_tick(regs); 207 timer_tick();
209 } 208 }
210 209
211 /* Restart timer so we don't drift off due to modulo or dynamic tick. 210 /* Restart timer so we don't drift off due to modulo or dynamic tick.
@@ -218,19 +217,17 @@ static inline irqreturn_t _omap_32k_timer_interrupt(int irq, void *dev_id,
218 return IRQ_HANDLED; 217 return IRQ_HANDLED;
219} 218}
220 219
221static irqreturn_t omap_32k_timer_handler(int irq, void *dev_id, 220static irqreturn_t omap_32k_timer_handler(int irq, void *dev_id)
222 struct pt_regs *regs)
223{ 221{
224 return _omap_32k_timer_interrupt(irq, dev_id, regs); 222 return _omap_32k_timer_interrupt(irq, dev_id);
225} 223}
226 224
227static irqreturn_t omap_32k_timer_interrupt(int irq, void *dev_id, 225static irqreturn_t omap_32k_timer_interrupt(int irq, void *dev_id)
228 struct pt_regs *regs)
229{ 226{
230 unsigned long flags; 227 unsigned long flags;
231 228
232 write_seqlock_irqsave(&xtime_lock, flags); 229 write_seqlock_irqsave(&xtime_lock, flags);
233 _omap_32k_timer_interrupt(irq, dev_id, regs); 230 _omap_32k_timer_interrupt(irq, dev_id);
234 write_sequnlock_irqrestore(&xtime_lock, flags); 231 write_sequnlock_irqrestore(&xtime_lock, flags);
235 232
236 return IRQ_HANDLED; 233 return IRQ_HANDLED;