Browse Source

Merge branch 'master' into upstream-fixes

Jeff Garzik 18 years ago
parent
commit
24fcbacedb
100 changed files with 368 additions and 384 deletions
  1. 25 12
      MAINTAINERS
  2. 2 3
      arch/alpha/kernel/core_apecs.c
  3. 2 3
      arch/alpha/kernel/core_cia.c
  4. 3 3
      arch/alpha/kernel/core_lca.c
  5. 2 3
      arch/alpha/kernel/core_mcpcia.c
  6. 2 3
      arch/alpha/kernel/core_polaris.c
  7. 2 3
      arch/alpha/kernel/core_t2.c
  8. 2 3
      arch/alpha/kernel/core_tsunami.c
  9. 2 3
      arch/alpha/kernel/core_wildfire.c
  10. 3 2
      arch/alpha/kernel/err_ev6.c
  11. 1 1
      arch/alpha/kernel/err_ev7.c
  12. 5 5
      arch/alpha/kernel/err_impl.h
  13. 2 2
      arch/alpha/kernel/err_marvel.c
  14. 7 7
      arch/alpha/kernel/err_titan.c
  15. 2 2
      arch/alpha/kernel/irq.c
  16. 14 8
      arch/alpha/kernel/irq_alpha.c
  17. 4 4
      arch/alpha/kernel/irq_i8259.c
  18. 5 5
      arch/alpha/kernel/irq_impl.h
  19. 3 3
      arch/alpha/kernel/irq_pyxis.c
  20. 2 2
      arch/alpha/kernel/irq_srm.c
  21. 14 15
      arch/alpha/kernel/proto.h
  22. 5 1
      arch/alpha/kernel/smp.c
  23. 3 3
      arch/alpha/kernel/sys_alcor.c
  24. 8 8
      arch/alpha/kernel/sys_cabriolet.c
  25. 7 7
      arch/alpha/kernel/sys_dp264.c
  26. 3 3
      arch/alpha/kernel/sys_eb64p.c
  27. 8 8
      arch/alpha/kernel/sys_eiger.c
  28. 4 4
      arch/alpha/kernel/sys_jensen.c
  29. 2 2
      arch/alpha/kernel/sys_marvel.c
  30. 2 2
      arch/alpha/kernel/sys_miata.c
  31. 5 6
      arch/alpha/kernel/sys_mikasa.c
  32. 3 4
      arch/alpha/kernel/sys_nautilus.c
  33. 7 8
      arch/alpha/kernel/sys_noritake.c
  34. 2 2
      arch/alpha/kernel/sys_rawhide.c
  35. 3 3
      arch/alpha/kernel/sys_rx164.c
  36. 2 2
      arch/alpha/kernel/sys_sable.c
  37. 8 8
      arch/alpha/kernel/sys_takara.c
  38. 6 6
      arch/alpha/kernel/sys_titan.c
  39. 2 2
      arch/alpha/kernel/sys_wildfire.c
  40. 3 3
      arch/alpha/kernel/time.c
  41. 10 15
      arch/arm/common/locomo.c
  42. 4 4
      arch/arm/common/sa1111.c
  43. 3 3
      arch/arm/common/sharpsl_pm.c
  44. 2 2
      arch/arm/common/time-acorn.c
  45. 4 4
      arch/arm/kernel/ecard.c
  46. 3 1
      arch/arm/kernel/irq.c
  47. 4 2
      arch/arm/kernel/time.c
  48. 2 2
      arch/arm/mach-aaec2000/core.c
  49. 2 2
      arch/arm/mach-at91rm9200/at91rm9200_time.c
  50. 2 2
      arch/arm/mach-at91rm9200/gpio.c
  51. 2 2
      arch/arm/mach-clps711x/time.c
  52. 2 2
      arch/arm/mach-clps7500/core.c
  53. 2 2
      arch/arm/mach-ebsa110/core.c
  54. 5 5
      arch/arm/mach-ep93xx/core.c
  55. 2 2
      arch/arm/mach-footbridge/dc21285-timer.c
  56. 6 6
      arch/arm/mach-footbridge/dc21285.c
  57. 3 3
      arch/arm/mach-footbridge/isa-irq.c
  58. 2 2
      arch/arm/mach-footbridge/isa-timer.c
  59. 12 17
      arch/arm/mach-h720x/common.c
  60. 2 2
      arch/arm/mach-h720x/cpu-h7201.c
  61. 5 6
      arch/arm/mach-h720x/cpu-h7202.c
  62. 6 6
      arch/arm/mach-imx/dma.c
  63. 10 14
      arch/arm/mach-imx/irq.c
  64. 2 2
      arch/arm/mach-imx/time.c
  65. 3 3
      arch/arm/mach-integrator/core.c
  66. 3 3
      arch/arm/mach-integrator/integrator_cp.c
  67. 2 1
      arch/arm/mach-integrator/pci_v3.c
  68. 1 2
      arch/arm/mach-integrator/time.c
  69. 6 6
      arch/arm/mach-ixp2000/core.c
  70. 2 2
      arch/arm/mach-ixp2000/ixdp2x00.c
  71. 2 2
      arch/arm/mach-ixp2000/ixdp2x01.c
  72. 4 4
      arch/arm/mach-ixp23xx/core.c
  73. 4 4
      arch/arm/mach-ixp23xx/ixdp2351.c
  74. 2 2
      arch/arm/mach-ixp4xx/common.c
  75. 1 1
      arch/arm/mach-ixp4xx/nas100d-power.c
  76. 2 2
      arch/arm/mach-ixp4xx/nslu2-power.c
  77. 2 3
      arch/arm/mach-lh7a40x/arch-kev7a400.c
  78. 1 2
      arch/arm/mach-lh7a40x/arch-lpd7a40x.c
  79. 2 3
      arch/arm/mach-lh7a40x/irq-kev7a400.c
  80. 1 2
      arch/arm/mach-lh7a40x/irq-lpd7a40x.c
  81. 2 2
      arch/arm/mach-lh7a40x/time.c
  82. 2 3
      arch/arm/mach-netx/generic.c
  83. 2 2
      arch/arm/mach-netx/time.c
  84. 1 1
      arch/arm/mach-omap1/board-osk.c
  85. 2 3
      arch/arm/mach-omap1/fpga.c
  86. 1 2
      arch/arm/mach-omap1/pm.c
  87. 1 2
      arch/arm/mach-omap1/serial.c
  88. 3 5
      arch/arm/mach-omap1/time.c
  89. 1 1
      arch/arm/mach-omap2/board-apollon.c
  90. 2 3
      arch/arm/mach-omap2/timer-gp.c
  91. 4 6
      arch/arm/mach-pnx4008/dma.c
  92. 2 3
      arch/arm/mach-pnx4008/time.c
  93. 1 1
      arch/arm/mach-pxa/corgi.c
  94. 4 4
      arch/arm/mach-pxa/dma.c
  95. 1 1
      arch/arm/mach-pxa/idp.c
  96. 5 6
      arch/arm/mach-pxa/irq.c
  97. 2 3
      arch/arm/mach-pxa/lpd270.c
  98. 6 7
      arch/arm/mach-pxa/lubbock.c
  99. 3 4
      arch/arm/mach-pxa/mainstone.c
  100. 1 1
      arch/arm/mach-pxa/poodle.c

+ 25 - 12
MAINTAINERS

@@ -641,7 +641,7 @@ CALGARY x86-64 IOMMU
 P:	Muli Ben-Yehuda
 P:	Muli Ben-Yehuda
 M:	muli@il.ibm.com
 M:	muli@il.ibm.com
 P:	Jon D. Mason
 P:	Jon D. Mason
-M:	jdmason@us.ibm.com
+M:	jdmason@kudzu.us
 L:	linux-kernel@vger.kernel.org
 L:	linux-kernel@vger.kernel.org
 L:	discuss@x86-64.org
 L:	discuss@x86-64.org
 S:	Maintained
 S:	Maintained
@@ -2261,6 +2261,17 @@ T:	git kernel.org:/pub/scm/linux/kernel/git/kyle/parisc-2.6.git
 T:	cvs cvs.parisc-linux.org:/var/cvs/linux-2.6
 T:	cvs cvs.parisc-linux.org:/var/cvs/linux-2.6
 S:	Maintained
 S:	Maintained
 
 
+PC87360 HARDWARE MONITORING DRIVER
+P:	Jim Cromie
+M:	jim.cromie@gmail.com
+L:	lm-sensors@lm-sensors.org
+S:	Maintained
+
+PC8736x GPIO DRIVER
+P:	Jim Cromie
+M:	jim.cromie@gmail.com
+S:	Maintained
+
 PCI ERROR RECOVERY
 PCI ERROR RECOVERY
 P:	Linas Vepstas
 P:	Linas Vepstas
 M:	linas@austin.ibm.com
 M:	linas@austin.ibm.com
@@ -2592,10 +2603,19 @@ L: lksctp-developers@lists.sourceforge.net
 S: Supported
 S: Supported
 
 
 SCx200 CPU SUPPORT
 SCx200 CPU SUPPORT
-P:	Christer Weinigel
-M:	christer@weinigel.se
-W:	http://www.weinigel.se
-S:	Supported
+P:	Jim Cromie
+M:	jim.cromie@gmail.com
+S:	Odd Fixes
+
+SCx200 GPIO DRIVER
+P:	Jim Cromie
+M:	jim.cromie@gmail.com
+S:	Maintained
+
+SCx200 HRT CLOCKSOURCE DRIVER
+P:	Jim Cromie
+M:	jim.cromie@gmail.com
+S:	Maintained
 
 
 SECURITY CONTACT
 SECURITY CONTACT
 P:	Security Officers
 P:	Security Officers
@@ -2760,14 +2780,7 @@ S:	Maintained
 UltraSPARC (sparc64):
 UltraSPARC (sparc64):
 P:	David S. Miller
 P:	David S. Miller
 M:	davem@davemloft.net
 M:	davem@davemloft.net
-P:	Eddie C. Dost
-M:	ecd@brainaid.de
-P:	Jakub Jelinek
-M:	jj@sunsite.ms.mff.cuni.cz
-P:	Anton Blanchard
-M:	anton@samba.org
 L:	sparclinux@vger.kernel.org
 L:	sparclinux@vger.kernel.org
-L:	ultralinux@vger.kernel.org
 T:	git kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6.git
 T:	git kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6.git
 S:	Maintained
 S:	Maintained
 
 

+ 2 - 3
arch/alpha/kernel/core_apecs.c

@@ -387,8 +387,7 @@ apecs_pci_clr_err(void)
 }
 }
 
 
 void
 void
-apecs_machine_check(unsigned long vector, unsigned long la_ptr,
-		    struct pt_regs * regs)
+apecs_machine_check(unsigned long vector, unsigned long la_ptr)
 {
 {
 	struct el_common *mchk_header;
 	struct el_common *mchk_header;
 	struct el_apecs_procdata *mchk_procdata;
 	struct el_apecs_procdata *mchk_procdata;
@@ -412,7 +411,7 @@ apecs_machine_check(unsigned long vector, unsigned long la_ptr,
 	wrmces(0x7);		/* reset machine check pending flag */
 	wrmces(0x7);		/* reset machine check pending flag */
 	mb();
 	mb();
 
 
-	process_mcheck_info(vector, la_ptr, regs, "APECS",
+	process_mcheck_info(vector, la_ptr, "APECS",
 			    (mcheck_expected(0)
 			    (mcheck_expected(0)
 			     && (mchk_sysdata->epic_dcsr & 0x0c00UL)));
 			     && (mchk_sysdata->epic_dcsr & 0x0c00UL)));
 }
 }

+ 2 - 3
arch/alpha/kernel/core_cia.c

@@ -1192,8 +1192,7 @@ cia_decode_mchk(unsigned long la_ptr)
 }
 }
 
 
 void
 void
-cia_machine_check(unsigned long vector, unsigned long la_ptr,
-		  struct pt_regs * regs)
+cia_machine_check(unsigned long vector, unsigned long la_ptr)
 {
 {
 	int expected;
 	int expected;
 
 
@@ -1208,5 +1207,5 @@ cia_machine_check(unsigned long vector, unsigned long la_ptr,
 	expected = mcheck_expected(0);
 	expected = mcheck_expected(0);
 	if (!expected && vector == 0x660)
 	if (!expected && vector == 0x660)
 		expected = cia_decode_mchk(la_ptr);
 		expected = cia_decode_mchk(la_ptr);
-	process_mcheck_info(vector, la_ptr, regs, "CIA", expected);
+	process_mcheck_info(vector, la_ptr, "CIA", expected);
 }
 }

+ 3 - 3
arch/alpha/kernel/core_lca.c

@@ -19,6 +19,7 @@
 #include <linux/tty.h>
 #include <linux/tty.h>
 
 
 #include <asm/ptrace.h>
 #include <asm/ptrace.h>
+#include <asm/irq_regs.h>
 #include <asm/smp.h>
 #include <asm/smp.h>
 
 
 #include "proto.h"
 #include "proto.h"
@@ -386,8 +387,7 @@ ioc_error(__u32 stat0, __u32 stat1)
 }
 }
 
 
 void
 void
-lca_machine_check(unsigned long vector, unsigned long la_ptr,
-		  struct pt_regs *regs)
+lca_machine_check(unsigned long vector, unsigned long la_ptr)
 {
 {
 	const char * reason;
 	const char * reason;
 	union el_lca el;
 	union el_lca el;
@@ -397,7 +397,7 @@ lca_machine_check(unsigned long vector, unsigned long la_ptr,
 	wrmces(rdmces());	/* reset machine check pending flag */
 	wrmces(rdmces());	/* reset machine check pending flag */
 
 
 	printk(KERN_CRIT "LCA machine check: vector=%#lx pc=%#lx code=%#x\n",
 	printk(KERN_CRIT "LCA machine check: vector=%#lx pc=%#lx code=%#x\n",
-	       vector, regs->pc, (unsigned int) el.c->code);
+	       vector, get_irq_regs()->pc, (unsigned int) el.c->code);
 
 
 	/*
 	/*
 	 * The first quadword after the common header always seems to
 	 * The first quadword after the common header always seems to

+ 2 - 3
arch/alpha/kernel/core_mcpcia.c

@@ -572,8 +572,7 @@ mcpcia_print_system_area(unsigned long la_ptr)
 }
 }
 
 
 void
 void
-mcpcia_machine_check(unsigned long vector, unsigned long la_ptr,
-		     struct pt_regs * regs)
+mcpcia_machine_check(unsigned long vector, unsigned long la_ptr)
 {
 {
 	struct el_common *mchk_header;
 	struct el_common *mchk_header;
 	struct el_MCPCIA_uncorrected_frame_mcheck *mchk_logout;
 	struct el_MCPCIA_uncorrected_frame_mcheck *mchk_logout;
@@ -610,7 +609,7 @@ mcpcia_machine_check(unsigned long vector, unsigned long la_ptr,
 	wrmces(0x7);
 	wrmces(0x7);
 	mb();
 	mb();
 
 
-	process_mcheck_info(vector, la_ptr, regs, "MCPCIA", expected != 0);
+	process_mcheck_info(vector, la_ptr, "MCPCIA", expected != 0);
 	if (!expected && vector != 0x620 && vector != 0x630) {
 	if (!expected && vector != 0x620 && vector != 0x630) {
 		mcpcia_print_uncorrectable(mchk_logout);
 		mcpcia_print_uncorrectable(mchk_logout);
 		mcpcia_print_system_area(la_ptr);
 		mcpcia_print_system_area(la_ptr);

+ 2 - 3
arch/alpha/kernel/core_polaris.c

@@ -187,8 +187,7 @@ polaris_pci_clr_err(void)
 }
 }
 
 
 void
 void
-polaris_machine_check(unsigned long vector, unsigned long la_ptr,
-		      struct pt_regs * regs)
+polaris_machine_check(unsigned long vector, unsigned long la_ptr)
 {
 {
 	/* Clear the error before any reporting.  */
 	/* Clear the error before any reporting.  */
 	mb();
 	mb();
@@ -198,6 +197,6 @@ polaris_machine_check(unsigned long vector, unsigned long la_ptr,
 	wrmces(0x7);
 	wrmces(0x7);
 	mb();
 	mb();
 
 
-	process_mcheck_info(vector, la_ptr, regs, "POLARIS",
+	process_mcheck_info(vector, la_ptr, "POLARIS",
 			    mcheck_expected(0));
 			    mcheck_expected(0));
 }
 }

+ 2 - 3
arch/alpha/kernel/core_t2.c

@@ -551,8 +551,7 @@ t2_clear_errors(int cpu)
  * Hence all the taken/expected/any_expected/last_taken stuff...
  * Hence all the taken/expected/any_expected/last_taken stuff...
  */
  */
 void
 void
-t2_machine_check(unsigned long vector, unsigned long la_ptr,
-		 struct pt_regs * regs)
+t2_machine_check(unsigned long vector, unsigned long la_ptr)
 {
 {
 	int cpu = smp_processor_id();
 	int cpu = smp_processor_id();
 #ifdef CONFIG_VERBOSE_MCHECK
 #ifdef CONFIG_VERBOSE_MCHECK
@@ -618,5 +617,5 @@ t2_machine_check(unsigned long vector, unsigned long la_ptr,
 	}
 	}
 #endif
 #endif
 
 
-	process_mcheck_info(vector, la_ptr, regs, "T2", mcheck_expected(cpu));
+	process_mcheck_info(vector, la_ptr, "T2", mcheck_expected(cpu));
 }
 }

+ 2 - 3
arch/alpha/kernel/core_tsunami.c

@@ -443,8 +443,7 @@ tsunami_pci_clr_err(void)
 }
 }
 
 
 void
 void
-tsunami_machine_check(unsigned long vector, unsigned long la_ptr,
-		      struct pt_regs * regs)
+tsunami_machine_check(unsigned long vector, unsigned long la_ptr)
 {
 {
 	/* Clear error before any reporting.  */
 	/* Clear error before any reporting.  */
 	mb();
 	mb();
@@ -454,6 +453,6 @@ tsunami_machine_check(unsigned long vector, unsigned long la_ptr,
 	wrmces(0x7);
 	wrmces(0x7);
 	mb();
 	mb();
 
 
-	process_mcheck_info(vector, la_ptr, regs, "TSUNAMI",
+	process_mcheck_info(vector, la_ptr, "TSUNAMI",
 			    mcheck_expected(smp_processor_id()));
 			    mcheck_expected(smp_processor_id()));
 }
 }

+ 2 - 3
arch/alpha/kernel/core_wildfire.c

@@ -322,8 +322,7 @@ wildfire_init_arch(void)
 }
 }
 
 
 void
 void
-wildfire_machine_check(unsigned long vector, unsigned long la_ptr,
-		       struct pt_regs * regs)
+wildfire_machine_check(unsigned long vector, unsigned long la_ptr)
 {
 {
 	mb();
 	mb();
 	mb();  /* magic */
 	mb();  /* magic */
@@ -332,7 +331,7 @@ wildfire_machine_check(unsigned long vector, unsigned long la_ptr,
 	wrmces(0x7);
 	wrmces(0x7);
 	mb();
 	mb();
 
 
-	process_mcheck_info(vector, la_ptr, regs, "WILDFIRE",
+	process_mcheck_info(vector, la_ptr, "WILDFIRE",
 			    mcheck_expected(smp_processor_id()));
 			    mcheck_expected(smp_processor_id()));
 }
 }
 
 

+ 3 - 2
arch/alpha/kernel/err_ev6.c

@@ -11,6 +11,7 @@
 #include <linux/sched.h>
 #include <linux/sched.h>
 
 
 #include <asm/io.h>
 #include <asm/io.h>
+#include <asm/irq_regs.h>
 #include <asm/hwrpb.h>
 #include <asm/hwrpb.h>
 #include <asm/smp.h>
 #include <asm/smp.h>
 #include <asm/err_common.h>
 #include <asm/err_common.h>
@@ -229,7 +230,7 @@ ev6_process_logout_frame(struct el_common *mchk_header, int print)
 }
 }
 
 
 void
 void
-ev6_machine_check(u64 vector, u64 la_ptr, struct pt_regs *regs)
+ev6_machine_check(u64 vector, u64 la_ptr)
 {
 {
 	struct el_common *mchk_header = (struct el_common *)la_ptr;
 	struct el_common *mchk_header = (struct el_common *)la_ptr;
 
 
@@ -260,7 +261,7 @@ ev6_machine_check(u64 vector, u64 la_ptr, struct pt_regs *regs)
 		       (unsigned int)vector, (int)smp_processor_id());
 		       (unsigned int)vector, (int)smp_processor_id());
 		
 		
 		ev6_process_logout_frame(mchk_header, 1);
 		ev6_process_logout_frame(mchk_header, 1);
-		dik_show_regs(regs, NULL);
+		dik_show_regs(get_irq_regs(), NULL);
 
 
 		err_print_prefix = saved_err_prefix;
 		err_print_prefix = saved_err_prefix;
 	}
 	}

+ 1 - 1
arch/alpha/kernel/err_ev7.c

@@ -118,7 +118,7 @@ ev7_collect_logout_frame_subpackets(struct el_subpacket *el_ptr,
 }
 }
 
 
 void
 void
-ev7_machine_check(u64 vector, u64 la_ptr, struct pt_regs *regs)
+ev7_machine_check(u64 vector, u64 la_ptr)
 {
 {
 	struct el_subpacket *el_ptr = (struct el_subpacket *)la_ptr;
 	struct el_subpacket *el_ptr = (struct el_subpacket *)la_ptr;
 	char *saved_err_prefix = err_print_prefix;
 	char *saved_err_prefix = err_print_prefix;

+ 5 - 5
arch/alpha/kernel/err_impl.h

@@ -60,26 +60,26 @@ extern struct ev7_lf_subpackets *
 ev7_collect_logout_frame_subpackets(struct el_subpacket *,
 ev7_collect_logout_frame_subpackets(struct el_subpacket *,
 				    struct ev7_lf_subpackets *);
 				    struct ev7_lf_subpackets *);
 extern void ev7_register_error_handlers(void);
 extern void ev7_register_error_handlers(void);
-extern void ev7_machine_check(u64, u64, struct pt_regs *);
+extern void ev7_machine_check(u64, u64);
 
 
 /*
 /*
  * err_ev6.c
  * err_ev6.c
  */
  */
 extern void ev6_register_error_handlers(void);
 extern void ev6_register_error_handlers(void);
 extern int ev6_process_logout_frame(struct el_common *, int);
 extern int ev6_process_logout_frame(struct el_common *, int);
-extern void ev6_machine_check(u64, u64, struct pt_regs *);
+extern void ev6_machine_check(u64, u64);
 
 
 /*
 /*
  * err_marvel.c
  * err_marvel.c
  */
  */
-extern void marvel_machine_check(u64, u64, struct pt_regs *);
+extern void marvel_machine_check(u64, u64);
 extern void marvel_register_error_handlers(void);
 extern void marvel_register_error_handlers(void);
 
 
 /*
 /*
  * err_titan.c
  * err_titan.c
  */
  */
 extern int titan_process_logout_frame(struct el_common *, int);
 extern int titan_process_logout_frame(struct el_common *, int);
-extern void titan_machine_check(u64, u64, struct pt_regs *);
+extern void titan_machine_check(u64, u64);
 extern void titan_register_error_handlers(void);
 extern void titan_register_error_handlers(void);
 extern int privateer_process_logout_frame(struct el_common *, int);
 extern int privateer_process_logout_frame(struct el_common *, int);
-extern void privateer_machine_check(u64, u64, struct pt_regs *);
+extern void privateer_machine_check(u64, u64);

+ 2 - 2
arch/alpha/kernel/err_marvel.c

@@ -1042,7 +1042,7 @@ marvel_process_logout_frame(struct ev7_lf_subpackets *lf_subpackets, int print)
 }
 }
 
 
 void
 void
-marvel_machine_check(u64 vector, u64 la_ptr, struct pt_regs *regs)
+marvel_machine_check(u64 vector, u64 la_ptr)
 {
 {
 	struct el_subpacket *el_ptr = (struct el_subpacket *)la_ptr;
 	struct el_subpacket *el_ptr = (struct el_subpacket *)la_ptr;
 	int (*process_frame)(struct ev7_lf_subpackets *, int) = NULL;
 	int (*process_frame)(struct ev7_lf_subpackets *, int) = NULL;
@@ -1077,7 +1077,7 @@ marvel_machine_check(u64 vector, u64 la_ptr, struct pt_regs *regs)
 
 
 	default:
 	default:
 		/* Don't know it - pass it up.  */
 		/* Don't know it - pass it up.  */
-		ev7_machine_check(vector, la_ptr, regs);
+		ev7_machine_check(vector, la_ptr);
 		return;
 		return;
 	}	
 	}	
 
 

+ 7 - 7
arch/alpha/kernel/err_titan.c

@@ -379,7 +379,7 @@ titan_process_logout_frame(struct el_common *mchk_header, int print)
 }
 }
 
 
 void
 void
-titan_machine_check(u64 vector, u64 la_ptr, struct pt_regs *regs)
+titan_machine_check(u64 vector, u64 la_ptr)
 {
 {
 	struct el_common *mchk_header = (struct el_common *)la_ptr;
 	struct el_common *mchk_header = (struct el_common *)la_ptr;
 	struct el_TITAN_sysdata_mcheck *tmchk =
 	struct el_TITAN_sysdata_mcheck *tmchk =
@@ -408,7 +408,7 @@ titan_machine_check(u64 vector, u64 la_ptr, struct pt_regs *regs)
 	 * Only handle system errors here 
 	 * Only handle system errors here 
 	 */
 	 */
 	if ((vector != SCB_Q_SYSMCHK) && (vector != SCB_Q_SYSERR)) {
 	if ((vector != SCB_Q_SYSMCHK) && (vector != SCB_Q_SYSERR)) {
-		ev6_machine_check(vector, la_ptr, regs);
+		ev6_machine_check(vector, la_ptr);
 		return;
 		return;
 	}
 	}
 
 
@@ -442,7 +442,7 @@ titan_machine_check(u64 vector, u64 la_ptr, struct pt_regs *regs)
 #ifdef CONFIG_VERBOSE_MCHECK
 #ifdef CONFIG_VERBOSE_MCHECK
 		titan_process_logout_frame(mchk_header, alpha_verbose_mcheck);
 		titan_process_logout_frame(mchk_header, alpha_verbose_mcheck);
 		if (alpha_verbose_mcheck)
 		if (alpha_verbose_mcheck)
-			dik_show_regs(regs, NULL);
+			dik_show_regs(get_irq_regs(), NULL);
 #endif /* CONFIG_VERBOSE_MCHECK */
 #endif /* CONFIG_VERBOSE_MCHECK */
 
 
 		err_print_prefix = saved_err_prefix;
 		err_print_prefix = saved_err_prefix;
@@ -452,7 +452,7 @@ titan_machine_check(u64 vector, u64 la_ptr, struct pt_regs *regs)
 		 * machine checks to interrupts
 		 * machine checks to interrupts
 		 */
 		 */
 		irqmask = tmchk->c_dirx & TITAN_MCHECK_INTERRUPT_MASK;
 		irqmask = tmchk->c_dirx & TITAN_MCHECK_INTERRUPT_MASK;
-		titan_dispatch_irqs(irqmask, regs);
+		titan_dispatch_irqs(irqmask);
 	}	
 	}	
 
 
 
 
@@ -701,7 +701,7 @@ privateer_process_logout_frame(struct el_common *mchk_header, int print)
 }
 }
 
 
 void
 void
-privateer_machine_check(u64 vector, u64 la_ptr, struct pt_regs *regs)
+privateer_machine_check(u64 vector, u64 la_ptr)
 {
 {
 	struct el_common *mchk_header = (struct el_common *)la_ptr;
 	struct el_common *mchk_header = (struct el_common *)la_ptr;
 	struct el_TITAN_sysdata_mcheck *tmchk =
 	struct el_TITAN_sysdata_mcheck *tmchk =
@@ -723,7 +723,7 @@ privateer_machine_check(u64 vector, u64 la_ptr, struct pt_regs *regs)
 	 * Only handle system events here.
 	 * Only handle system events here.
 	 */
 	 */
 	if (vector != SCB_Q_SYSEVENT) 
 	if (vector != SCB_Q_SYSEVENT) 
-		return titan_machine_check(vector, la_ptr, regs);
+		return titan_machine_check(vector, la_ptr);
 
 
 	/*
 	/*
 	 * Report the event - System Events should be reported even if no
 	 * Report the event - System Events should be reported even if no
@@ -746,7 +746,7 @@ privateer_machine_check(u64 vector, u64 la_ptr, struct pt_regs *regs)
 	/*
 	/*
 	 * Dispatch the interrupt(s).
 	 * Dispatch the interrupt(s).
 	 */
 	 */
-	titan_dispatch_irqs(irqmask, regs);
+	titan_dispatch_irqs(irqmask);
 
 
 	/* 
 	/* 
 	 * Release the logout frame.
 	 * Release the logout frame.

+ 2 - 2
arch/alpha/kernel/irq.c

@@ -127,7 +127,7 @@ unlock:
 #define MAX_ILLEGAL_IRQS 16
 #define MAX_ILLEGAL_IRQS 16
 
 
 void
 void
-handle_irq(int irq, struct pt_regs * regs)
+handle_irq(int irq)
 {	
 {	
 	/* 
 	/* 
 	 * We ack quickly, we don't want the irq controller
 	 * We ack quickly, we don't want the irq controller
@@ -157,6 +157,6 @@ handle_irq(int irq, struct pt_regs * regs)
 	 * at IPL 0.
 	 * at IPL 0.
 	 */
 	 */
 	local_irq_disable();
 	local_irq_disable();
-	__do_IRQ(irq, regs);
+	__do_IRQ(irq);
 	irq_exit();
 	irq_exit();
 }
 }

+ 14 - 8
arch/alpha/kernel/irq_alpha.c

@@ -39,6 +39,7 @@ asmlinkage void
 do_entInt(unsigned long type, unsigned long vector,
 do_entInt(unsigned long type, unsigned long vector,
 	  unsigned long la_ptr, struct pt_regs *regs)
 	  unsigned long la_ptr, struct pt_regs *regs)
 {
 {
+	struct pt_regs *old_regs;
 	switch (type) {
 	switch (type) {
 	case 0:
 	case 0:
 #ifdef CONFIG_SMP
 #ifdef CONFIG_SMP
@@ -51,6 +52,7 @@ do_entInt(unsigned long type, unsigned long vector,
 #endif
 #endif
 		break;
 		break;
 	case 1:
 	case 1:
+		old_regs = set_irq_regs(regs);
 #ifdef CONFIG_SMP
 #ifdef CONFIG_SMP
 	  {
 	  {
 		long cpu;
 		long cpu;
@@ -61,18 +63,23 @@ do_entInt(unsigned long type, unsigned long vector,
 		if (cpu != boot_cpuid) {
 		if (cpu != boot_cpuid) {
 		        kstat_cpu(cpu).irqs[RTC_IRQ]++;
 		        kstat_cpu(cpu).irqs[RTC_IRQ]++;
 		} else {
 		} else {
-			handle_irq(RTC_IRQ, regs);
+			handle_irq(RTC_IRQ);
 		}
 		}
 	  }
 	  }
 #else
 #else
-		handle_irq(RTC_IRQ, regs);
+		handle_irq(RTC_IRQ);
 #endif
 #endif
+		set_irq_regs(old_regs);
 		return;
 		return;
 	case 2:
 	case 2:
-		alpha_mv.machine_check(vector, la_ptr, regs);
+		old_regs = set_irq_regs(regs);
+		alpha_mv.machine_check(vector, la_ptr);
+		set_irq_regs(old_regs);
 		return;
 		return;
 	case 3:
 	case 3:
-		alpha_mv.device_interrupt(vector, regs);
+		old_regs = set_irq_regs(regs);
+		alpha_mv.device_interrupt(vector);
+		set_irq_regs(old_regs);
 		return;
 		return;
 	case 4:
 	case 4:
 		perf_irq(la_ptr, regs);
 		perf_irq(la_ptr, regs);
@@ -120,8 +127,7 @@ struct mcheck_info __mcheck_info;
 
 
 void
 void
 process_mcheck_info(unsigned long vector, unsigned long la_ptr,
 process_mcheck_info(unsigned long vector, unsigned long la_ptr,
-		    struct pt_regs *regs, const char *machine,
-		    int expected)
+		    const char *machine, int expected)
 {
 {
 	struct el_common *mchk_header;
 	struct el_common *mchk_header;
 	const char *reason;
 	const char *reason;
@@ -148,7 +154,7 @@ process_mcheck_info(unsigned long vector, unsigned long la_ptr,
 	mchk_header = (struct el_common *)la_ptr;
 	mchk_header = (struct el_common *)la_ptr;
 
 
 	printk(KERN_CRIT "%s machine check: vector=0x%lx pc=0x%lx code=0x%x\n",
 	printk(KERN_CRIT "%s machine check: vector=0x%lx pc=0x%lx code=0x%x\n",
-	       machine, vector, regs->pc, mchk_header->code);
+	       machine, vector, get_irq_regs()->pc, mchk_header->code);
 
 
 	switch (mchk_header->code) {
 	switch (mchk_header->code) {
 	/* Machine check reasons.  Defined according to PALcode sources.  */
 	/* Machine check reasons.  Defined according to PALcode sources.  */
@@ -189,7 +195,7 @@ process_mcheck_info(unsigned long vector, unsigned long la_ptr,
 	printk(KERN_CRIT "machine check type: %s%s\n",
 	printk(KERN_CRIT "machine check type: %s%s\n",
 	       reason, mchk_header->retry ? " (retryable)" : "");
 	       reason, mchk_header->retry ? " (retryable)" : "");
 
 
-	dik_show_regs(regs, NULL);
+	dik_show_regs(get_irq_regs(), NULL);
 
 
 #ifdef CONFIG_VERBOSE_MCHECK
 #ifdef CONFIG_VERBOSE_MCHECK
 	if (alpha_verbose_mcheck > 1) {
 	if (alpha_verbose_mcheck > 1) {

+ 4 - 4
arch/alpha/kernel/irq_i8259.c

@@ -137,7 +137,7 @@ init_i8259a_irqs(void)
 
 
 #if defined(IACK_SC)
 #if defined(IACK_SC)
 void
 void
-isa_device_interrupt(unsigned long vector, struct pt_regs *regs)
+isa_device_interrupt(unsigned long vector)
 {
 {
 	/*
 	/*
 	 * Generate a PCI interrupt acknowledge cycle.  The PIC will
 	 * Generate a PCI interrupt acknowledge cycle.  The PIC will
@@ -147,13 +147,13 @@ isa_device_interrupt(unsigned long vector, struct pt_regs *regs)
 	 */
 	 */
 	int j = *(vuip) IACK_SC;
 	int j = *(vuip) IACK_SC;
 	j &= 0xff;
 	j &= 0xff;
-	handle_irq(j, regs);
+	handle_irq(j);
 }
 }
 #endif
 #endif
 
 
 #if defined(CONFIG_ALPHA_GENERIC) || !defined(IACK_SC)
 #if defined(CONFIG_ALPHA_GENERIC) || !defined(IACK_SC)
 void
 void
-isa_no_iack_sc_device_interrupt(unsigned long vector, struct pt_regs *regs)
+isa_no_iack_sc_device_interrupt(unsigned long vector)
 {
 {
 	unsigned long pic;
 	unsigned long pic;
 
 
@@ -176,7 +176,7 @@ isa_no_iack_sc_device_interrupt(unsigned long vector, struct pt_regs *regs)
 	while (pic) {
 	while (pic) {
 		int j = ffz(~pic);
 		int j = ffz(~pic);
 		pic &= pic - 1;
 		pic &= pic - 1;
-		handle_irq(j, regs);
+		handle_irq(j);
 	}
 	}
 }
 }
 #endif
 #endif

+ 5 - 5
arch/alpha/kernel/irq_impl.h

@@ -15,10 +15,10 @@
 
 
 #define RTC_IRQ    8
 #define RTC_IRQ    8
 
 
-extern void isa_device_interrupt(unsigned long, struct pt_regs *);
-extern void isa_no_iack_sc_device_interrupt(unsigned long, struct pt_regs *);
-extern void srm_device_interrupt(unsigned long, struct pt_regs *);
-extern void pyxis_device_interrupt(unsigned long, struct pt_regs *);
+extern void isa_device_interrupt(unsigned long);
+extern void isa_no_iack_sc_device_interrupt(unsigned long);
+extern void srm_device_interrupt(unsigned long);
+extern void pyxis_device_interrupt(unsigned long);
 
 
 extern struct irqaction timer_irqaction;
 extern struct irqaction timer_irqaction;
 extern struct irqaction isa_cascade_irqaction;
 extern struct irqaction isa_cascade_irqaction;
@@ -39,4 +39,4 @@ extern void i8259a_end_irq(unsigned int);
 extern struct hw_interrupt_type i8259a_irq_type;
 extern struct hw_interrupt_type i8259a_irq_type;
 extern void init_i8259a_irqs(void);
 extern void init_i8259a_irqs(void);
 
 
-extern void handle_irq(int irq, struct pt_regs * regs);
+extern void handle_irq(int irq);

+ 3 - 3
arch/alpha/kernel/irq_pyxis.c

@@ -81,7 +81,7 @@ static struct hw_interrupt_type pyxis_irq_type = {
 };
 };
 
 
 void 
 void 
-pyxis_device_interrupt(unsigned long vector, struct pt_regs *regs)
+pyxis_device_interrupt(unsigned long vector)
 {
 {
 	unsigned long pld;
 	unsigned long pld;
 	unsigned int i;
 	unsigned int i;
@@ -98,9 +98,9 @@ pyxis_device_interrupt(unsigned long vector, struct pt_regs *regs)
 		i = ffz(~pld);
 		i = ffz(~pld);
 		pld &= pld - 1; /* clear least bit set */
 		pld &= pld - 1; /* clear least bit set */
 		if (i == 7)
 		if (i == 7)
-			isa_device_interrupt(vector, regs);
+			isa_device_interrupt(vector);
 		else
 		else
-			handle_irq(16+i, regs);
+			handle_irq(16+i);
 	}
 	}
 }
 }
 
 

+ 2 - 2
arch/alpha/kernel/irq_srm.c

@@ -72,8 +72,8 @@ init_srm_irqs(long max, unsigned long ignore_mask)
 }
 }
 
 
 void 
 void 
-srm_device_interrupt(unsigned long vector, struct pt_regs * regs)
+srm_device_interrupt(unsigned long vector)
 {
 {
 	int irq = (vector - 0x800) >> 4;
 	int irq = (vector - 0x800) >> 4;
-	handle_irq(irq, regs);
+	handle_irq(irq);
 }
 }

+ 14 - 15
arch/alpha/kernel/proto.h

@@ -20,7 +20,7 @@ struct pci_controller;
 extern struct pci_ops apecs_pci_ops;
 extern struct pci_ops apecs_pci_ops;
 extern void apecs_init_arch(void);
 extern void apecs_init_arch(void);
 extern void apecs_pci_clr_err(void);
 extern void apecs_pci_clr_err(void);
-extern void apecs_machine_check(u64, u64, struct pt_regs *);
+extern void apecs_machine_check(u64, u64);
 extern void apecs_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t);
 extern void apecs_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t);
 
 
 /* core_cia.c */
 /* core_cia.c */
@@ -29,27 +29,27 @@ extern void cia_init_pci(void);
 extern void cia_init_arch(void);
 extern void cia_init_arch(void);
 extern void pyxis_init_arch(void);
 extern void pyxis_init_arch(void);
 extern void cia_kill_arch(int);
 extern void cia_kill_arch(int);
-extern void cia_machine_check(u64, u64, struct pt_regs *);
+extern void cia_machine_check(u64, u64);
 extern void cia_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t);
 extern void cia_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t);
 
 
 /* core_irongate.c */
 /* core_irongate.c */
 extern struct pci_ops irongate_pci_ops;
 extern struct pci_ops irongate_pci_ops;
 extern int irongate_pci_clr_err(void);
 extern int irongate_pci_clr_err(void);
 extern void irongate_init_arch(void);
 extern void irongate_init_arch(void);
-extern void irongate_machine_check(u64, u64, struct pt_regs *);
+extern void irongate_machine_check(u64, u64);
 #define irongate_pci_tbi ((void *)0)
 #define irongate_pci_tbi ((void *)0)
 
 
 /* core_lca.c */
 /* core_lca.c */
 extern struct pci_ops lca_pci_ops;
 extern struct pci_ops lca_pci_ops;
 extern void lca_init_arch(void);
 extern void lca_init_arch(void);
-extern void lca_machine_check(u64, u64, struct pt_regs *);
+extern void lca_machine_check(u64, u64);
 extern void lca_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t);
 extern void lca_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t);
 
 
 /* core_marvel.c */
 /* core_marvel.c */
 extern struct pci_ops marvel_pci_ops;
 extern struct pci_ops marvel_pci_ops;
 extern void marvel_init_arch(void);
 extern void marvel_init_arch(void);
 extern void marvel_kill_arch(int);
 extern void marvel_kill_arch(int);
-extern void marvel_machine_check(u64, u64, struct pt_regs *);
+extern void marvel_machine_check(u64, u64);
 extern void marvel_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t);
 extern void marvel_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t);
 extern int marvel_pa_to_nid(unsigned long);
 extern int marvel_pa_to_nid(unsigned long);
 extern int marvel_cpuid_to_nid(int);
 extern int marvel_cpuid_to_nid(int);
@@ -64,7 +64,7 @@ void io7_clear_errors(struct io7 *io7);
 extern struct pci_ops mcpcia_pci_ops;
 extern struct pci_ops mcpcia_pci_ops;
 extern void mcpcia_init_arch(void);
 extern void mcpcia_init_arch(void);
 extern void mcpcia_init_hoses(void);
 extern void mcpcia_init_hoses(void);
-extern void mcpcia_machine_check(u64, u64, struct pt_regs *);
+extern void mcpcia_machine_check(u64, u64);
 extern void mcpcia_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t);
 extern void mcpcia_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t);
 
 
 /* core_polaris.c */
 /* core_polaris.c */
@@ -72,21 +72,21 @@ extern struct pci_ops polaris_pci_ops;
 extern int polaris_read_config_dword(struct pci_dev *, int, u32 *);
 extern int polaris_read_config_dword(struct pci_dev *, int, u32 *);
 extern int polaris_write_config_dword(struct pci_dev *, int, u32);
 extern int polaris_write_config_dword(struct pci_dev *, int, u32);
 extern void polaris_init_arch(void);
 extern void polaris_init_arch(void);
-extern void polaris_machine_check(u64, u64, struct pt_regs *);
+extern void polaris_machine_check(u64, u64);
 #define polaris_pci_tbi ((void *)0)
 #define polaris_pci_tbi ((void *)0)
 
 
 /* core_t2.c */
 /* core_t2.c */
 extern struct pci_ops t2_pci_ops;
 extern struct pci_ops t2_pci_ops;
 extern void t2_init_arch(void);
 extern void t2_init_arch(void);
 extern void t2_kill_arch(int);
 extern void t2_kill_arch(int);
-extern void t2_machine_check(u64, u64, struct pt_regs *);
+extern void t2_machine_check(u64, u64);
 extern void t2_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t);
 extern void t2_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t);
 
 
 /* core_titan.c */
 /* core_titan.c */
 extern struct pci_ops titan_pci_ops;
 extern struct pci_ops titan_pci_ops;
 extern void titan_init_arch(void);
 extern void titan_init_arch(void);
 extern void titan_kill_arch(int);
 extern void titan_kill_arch(int);
-extern void titan_machine_check(u64, u64, struct pt_regs *);
+extern void titan_machine_check(u64, u64);
 extern void titan_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t);
 extern void titan_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t);
 extern struct _alpha_agp_info *titan_agp_info(void);
 extern struct _alpha_agp_info *titan_agp_info(void);
 
 
@@ -94,14 +94,14 @@ extern struct _alpha_agp_info *titan_agp_info(void);
 extern struct pci_ops tsunami_pci_ops;
 extern struct pci_ops tsunami_pci_ops;
 extern void tsunami_init_arch(void);
 extern void tsunami_init_arch(void);
 extern void tsunami_kill_arch(int);
 extern void tsunami_kill_arch(int);
-extern void tsunami_machine_check(u64, u64, struct pt_regs *);
+extern void tsunami_machine_check(u64, u64);
 extern void tsunami_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t);
 extern void tsunami_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t);
 
 
 /* core_wildfire.c */
 /* core_wildfire.c */
 extern struct pci_ops wildfire_pci_ops;
 extern struct pci_ops wildfire_pci_ops;
 extern void wildfire_init_arch(void);
 extern void wildfire_init_arch(void);
 extern void wildfire_kill_arch(int);
 extern void wildfire_kill_arch(int);
-extern void wildfire_machine_check(u64, u64, struct pt_regs *);
+extern void wildfire_machine_check(u64, u64);
 extern void wildfire_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t);
 extern void wildfire_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t);
 extern int wildfire_pa_to_nid(unsigned long);
 extern int wildfire_pa_to_nid(unsigned long);
 extern int wildfire_cpuid_to_nid(int);
 extern int wildfire_cpuid_to_nid(int);
@@ -133,7 +133,7 @@ extern void smp_percpu_timer_interrupt(struct pt_regs *);
 /* extern void reset_for_srm(void); */
 /* extern void reset_for_srm(void); */
 
 
 /* time.c */
 /* time.c */
-extern irqreturn_t timer_interrupt(int irq, void *dev, struct pt_regs * regs);
+extern irqreturn_t timer_interrupt(int irq, void *dev);
 extern void common_init_rtc(void);
 extern void common_init_rtc(void);
 extern unsigned long est_cycle_freq;
 extern unsigned long est_cycle_freq;
 
 
@@ -177,7 +177,7 @@ extern void dik_show_regs(struct pt_regs *regs, unsigned long *r9_15);
 extern void die_if_kernel(char *, struct pt_regs *, long, unsigned long *);
 extern void die_if_kernel(char *, struct pt_regs *, long, unsigned long *);
 
 
 /* sys_titan.c */
 /* sys_titan.c */
-extern void titan_dispatch_irqs(u64, struct pt_regs *);
+extern void titan_dispatch_irqs(u64);
 
 
 /* ../mm/init.c */
 /* ../mm/init.c */
 extern void switch_to_system_map(void);
 extern void switch_to_system_map(void);
@@ -214,5 +214,4 @@ extern struct mcheck_info
 #endif
 #endif
 
 
 extern void process_mcheck_info(unsigned long vector, unsigned long la_ptr,
 extern void process_mcheck_info(unsigned long vector, unsigned long la_ptr,
-				struct pt_regs *regs, const char *machine,
-				int expected);
+				const char *machine, int expected);

+ 5 - 1
arch/alpha/kernel/smp.c

@@ -515,12 +515,15 @@ smp_cpus_done(unsigned int max_cpus)
 void
 void
 smp_percpu_timer_interrupt(struct pt_regs *regs)
 smp_percpu_timer_interrupt(struct pt_regs *regs)
 {
 {
+	struct pt_regs *old_regs;
 	int cpu = smp_processor_id();
 	int cpu = smp_processor_id();
 	unsigned long user = user_mode(regs);
 	unsigned long user = user_mode(regs);
 	struct cpuinfo_alpha *data = &cpu_data[cpu];
 	struct cpuinfo_alpha *data = &cpu_data[cpu];
 
 
+	old_regs = set_irq_regs(regs);
+
 	/* Record kernel PC.  */
 	/* Record kernel PC.  */
-	profile_tick(CPU_PROFILING, regs);
+	profile_tick(CPU_PROFILING);
 
 
 	if (!--data->prof_counter) {
 	if (!--data->prof_counter) {
 		/* We need to make like a normal interrupt -- otherwise
 		/* We need to make like a normal interrupt -- otherwise
@@ -534,6 +537,7 @@ smp_percpu_timer_interrupt(struct pt_regs *regs)
 
 
 		irq_exit();
 		irq_exit();
 	}
 	}
+	set_irq_regs(old_regs);
 }
 }
 
 
 int __init
 int __init

+ 3 - 3
arch/alpha/kernel/sys_alcor.c

@@ -100,7 +100,7 @@ static struct hw_interrupt_type alcor_irq_type = {
 };
 };
 
 
 static void
 static void
-alcor_device_interrupt(unsigned long vector, struct pt_regs *regs)
+alcor_device_interrupt(unsigned long vector)
 {
 {
 	unsigned long pld;
 	unsigned long pld;
 	unsigned int i;
 	unsigned int i;
@@ -116,9 +116,9 @@ alcor_device_interrupt(unsigned long vector, struct pt_regs *regs)
 		i = ffz(~pld);
 		i = ffz(~pld);
 		pld &= pld - 1; /* clear least bit set */
 		pld &= pld - 1; /* clear least bit set */
 		if (i == 31) {
 		if (i == 31) {
-			isa_device_interrupt(vector, regs);
+			isa_device_interrupt(vector);
 		} else {
 		} else {
-			handle_irq(16 + i, regs);
+			handle_irq(16 + i);
 		}
 		}
 	}
 	}
 }
 }

+ 8 - 8
arch/alpha/kernel/sys_cabriolet.c

@@ -82,7 +82,7 @@ static struct hw_interrupt_type cabriolet_irq_type = {
 };
 };
 
 
 static void 
 static void 
-cabriolet_device_interrupt(unsigned long v, struct pt_regs *r)
+cabriolet_device_interrupt(unsigned long v)
 {
 {
 	unsigned long pld;
 	unsigned long pld;
 	unsigned int i;
 	unsigned int i;
@@ -98,15 +98,15 @@ cabriolet_device_interrupt(unsigned long v, struct pt_regs *r)
 		i = ffz(~pld);
 		i = ffz(~pld);
 		pld &= pld - 1;	/* clear least bit set */
 		pld &= pld - 1;	/* clear least bit set */
 		if (i == 4) {
 		if (i == 4) {
-			isa_device_interrupt(v, r);
+			isa_device_interrupt(v);
 		} else {
 		} else {
-			handle_irq(16 + i, r);
+			handle_irq(16 + i);
 		}
 		}
 	}
 	}
 }
 }
 
 
 static void __init
 static void __init
-common_init_irq(void (*srm_dev_int)(unsigned long v, struct pt_regs *r))
+common_init_irq(void (*srm_dev_int)(unsigned long v))
 {
 {
 	init_i8259a_irqs();
 	init_i8259a_irqs();
 
 
@@ -154,18 +154,18 @@ cabriolet_init_irq(void)
    too invasive though.  */
    too invasive though.  */
 
 
 static void
 static void
-pc164_srm_device_interrupt(unsigned long v, struct pt_regs *r)
+pc164_srm_device_interrupt(unsigned long v)
 {
 {
 	__min_ipl = getipl();
 	__min_ipl = getipl();
-	srm_device_interrupt(v, r);
+	srm_device_interrupt(v);
 	__min_ipl = 0;
 	__min_ipl = 0;
 }
 }
 
 
 static void
 static void
-pc164_device_interrupt(unsigned long v, struct pt_regs *r)
+pc164_device_interrupt(unsigned long v)
 {
 {
 	__min_ipl = getipl();
 	__min_ipl = getipl();
-	cabriolet_device_interrupt(v, r);
+	cabriolet_device_interrupt(v);
 	__min_ipl = 0;
 	__min_ipl = 0;
 }
 }
 
 

+ 7 - 7
arch/alpha/kernel/sys_dp264.c

@@ -217,7 +217,7 @@ static struct hw_interrupt_type clipper_irq_type = {
 };
 };
 
 
 static void
 static void
-dp264_device_interrupt(unsigned long vector, struct pt_regs * regs)
+dp264_device_interrupt(unsigned long vector)
 {
 {
 #if 1
 #if 1
 	printk("dp264_device_interrupt: NOT IMPLEMENTED YET!! \n");
 	printk("dp264_device_interrupt: NOT IMPLEMENTED YET!! \n");
@@ -236,9 +236,9 @@ dp264_device_interrupt(unsigned long vector, struct pt_regs * regs)
 		i = ffz(~pld);
 		i = ffz(~pld);
 		pld &= pld - 1; /* clear least bit set */
 		pld &= pld - 1; /* clear least bit set */
 		if (i == 55)
 		if (i == 55)
-			isa_device_interrupt(vector, regs);
+			isa_device_interrupt(vector);
 		else
 		else
-			handle_irq(16 + i, 16 + i, regs);
+			handle_irq(16 + i);
 #if 0
 #if 0
 		TSUNAMI_cchip->dir0.csr = 1UL << i; mb();
 		TSUNAMI_cchip->dir0.csr = 1UL << i; mb();
 		tmp = TSUNAMI_cchip->dir0.csr;
 		tmp = TSUNAMI_cchip->dir0.csr;
@@ -248,7 +248,7 @@ dp264_device_interrupt(unsigned long vector, struct pt_regs * regs)
 }
 }
 
 
 static void 
 static void 
-dp264_srm_device_interrupt(unsigned long vector, struct pt_regs * regs)
+dp264_srm_device_interrupt(unsigned long vector)
 {
 {
 	int irq;
 	int irq;
 
 
@@ -268,11 +268,11 @@ dp264_srm_device_interrupt(unsigned long vector, struct pt_regs * regs)
 	if (irq >= 32)
 	if (irq >= 32)
 		irq -= 16;
 		irq -= 16;
 
 
-	handle_irq(irq, regs);
+	handle_irq(irq);
 }
 }
 
 
 static void 
 static void 
-clipper_srm_device_interrupt(unsigned long vector, struct pt_regs * regs)
+clipper_srm_device_interrupt(unsigned long vector)
 {
 {
 	int irq;
 	int irq;
 
 
@@ -290,7 +290,7 @@ clipper_srm_device_interrupt(unsigned long vector, struct pt_regs * regs)
 	 *
 	 *
 	 * Eg IRQ 24 is DRIR bit 8, etc, etc
 	 * Eg IRQ 24 is DRIR bit 8, etc, etc
 	 */
 	 */
-	handle_irq(irq, regs);
+	handle_irq(irq);
 }
 }
 
 
 static void __init
 static void __init

+ 3 - 3
arch/alpha/kernel/sys_eb64p.c

@@ -80,7 +80,7 @@ static struct hw_interrupt_type eb64p_irq_type = {
 };
 };
 
 
 static void 
 static void 
-eb64p_device_interrupt(unsigned long vector, struct pt_regs *regs)
+eb64p_device_interrupt(unsigned long vector)
 {
 {
 	unsigned long pld;
 	unsigned long pld;
 	unsigned int i;
 	unsigned int i;
@@ -97,9 +97,9 @@ eb64p_device_interrupt(unsigned long vector, struct pt_regs *regs)
 		pld &= pld - 1;	/* clear least bit set */
 		pld &= pld - 1;	/* clear least bit set */
 
 
 		if (i == 5) {
 		if (i == 5) {
-			isa_device_interrupt(vector, regs);
+			isa_device_interrupt(vector);
 		} else {
 		} else {
-			handle_irq(16 + i, regs);
+			handle_irq(16 + i);
 		}
 		}
 	}
 	}
 }
 }

+ 8 - 8
arch/alpha/kernel/sys_eiger.c

@@ -91,7 +91,7 @@ static struct hw_interrupt_type eiger_irq_type = {
 };
 };
 
 
 static void
 static void
-eiger_device_interrupt(unsigned long vector, struct pt_regs * regs)
+eiger_device_interrupt(unsigned long vector)
 {
 {
 	unsigned intstatus;
 	unsigned intstatus;
 
 
@@ -118,20 +118,20 @@ eiger_device_interrupt(unsigned long vector, struct pt_regs * regs)
 		 * despatch an interrupt if it's set.
 		 * despatch an interrupt if it's set.
 		 */
 		 */
 
 
-		if (intstatus & 8) handle_irq(16+3, regs);
-		if (intstatus & 4) handle_irq(16+2, regs);
-		if (intstatus & 2) handle_irq(16+1, regs);
-		if (intstatus & 1) handle_irq(16+0, regs);
+		if (intstatus & 8) handle_irq(16+3);
+		if (intstatus & 4) handle_irq(16+2);
+		if (intstatus & 2) handle_irq(16+1);
+		if (intstatus & 1) handle_irq(16+0);
 	} else {
 	} else {
-		isa_device_interrupt(vector, regs);
+		isa_device_interrupt(vector);
 	}
 	}
 }
 }
 
 
 static void
 static void
-eiger_srm_device_interrupt(unsigned long vector, struct pt_regs * regs)
+eiger_srm_device_interrupt(unsigned long vector)
 {
 {
 	int irq = (vector - 0x800) >> 4;
 	int irq = (vector - 0x800) >> 4;
-	handle_irq(irq, regs);
+	handle_irq(irq);
 }
 }
 
 
 static void __init
 static void __init

+ 4 - 4
arch/alpha/kernel/sys_jensen.c

@@ -129,7 +129,7 @@ static struct hw_interrupt_type jensen_local_irq_type = {
 };
 };
 
 
 static void 
 static void 
-jensen_device_interrupt(unsigned long vector, struct pt_regs * regs)
+jensen_device_interrupt(unsigned long vector)
 {
 {
 	int irq;
 	int irq;
 
 
@@ -189,7 +189,7 @@ jensen_device_interrupt(unsigned long vector, struct pt_regs * regs)
           if (cc - last_msg > ((JENSEN_CYCLES_PER_SEC) * 3) ||
           if (cc - last_msg > ((JENSEN_CYCLES_PER_SEC) * 3) ||
 	      irq != last_irq) {
 	      irq != last_irq) {
                 printk(KERN_CRIT " irq %d count %d cc %u @ %lx\n",
                 printk(KERN_CRIT " irq %d count %d cc %u @ %lx\n",
-                       irq, count, cc-last_cc, regs->pc);
+                       irq, count, cc-last_cc, get_irq_regs()->pc);
                 count = 0;
                 count = 0;
                 last_msg = cc;
                 last_msg = cc;
                 last_irq = irq;
                 last_irq = irq;
@@ -198,7 +198,7 @@ jensen_device_interrupt(unsigned long vector, struct pt_regs * regs)
         }
         }
 #endif
 #endif
 
 
-	handle_irq(irq, regs);
+	handle_irq(irq);
 }
 }
 
 
 static void __init
 static void __init
@@ -244,7 +244,7 @@ jensen_init_arch(void)
 }
 }
 
 
 static void
 static void
-jensen_machine_check (u64 vector, u64 la, struct pt_regs *regs)
+jensen_machine_check (u64 vector, u64 la)
 {
 {
 	printk(KERN_CRIT "Machine check\n");
 	printk(KERN_CRIT "Machine check\n");
 }
 }

+ 2 - 2
arch/alpha/kernel/sys_marvel.c

@@ -38,7 +38,7 @@
  * Interrupt handling.
  * Interrupt handling.
  */
  */
 static void 
 static void 
-io7_device_interrupt(unsigned long vector, struct pt_regs * regs)
+io7_device_interrupt(unsigned long vector)
 {
 {
 	unsigned int pid;
 	unsigned int pid;
 	unsigned int irq;
 	unsigned int irq;
@@ -64,7 +64,7 @@ io7_device_interrupt(unsigned long vector, struct pt_regs * regs)
 	irq &= MARVEL_IRQ_VEC_IRQ_MASK;		/* not too many bits */
 	irq &= MARVEL_IRQ_VEC_IRQ_MASK;		/* not too many bits */
 	irq |= pid << MARVEL_IRQ_VEC_PE_SHIFT;	/* merge the pid     */
 	irq |= pid << MARVEL_IRQ_VEC_PE_SHIFT;	/* merge the pid     */
 
 
-	handle_irq(irq, regs);
+	handle_irq(irq);
 }
 }
 
 
 static volatile unsigned long *
 static volatile unsigned long *

+ 2 - 2
arch/alpha/kernel/sys_miata.c

@@ -33,7 +33,7 @@
 
 
 
 
 static void 
 static void 
-miata_srm_device_interrupt(unsigned long vector, struct pt_regs * regs)
+miata_srm_device_interrupt(unsigned long vector)
 {
 {
 	int irq;
 	int irq;
 
 
@@ -56,7 +56,7 @@ miata_srm_device_interrupt(unsigned long vector, struct pt_regs * regs)
 	if (irq >= 16)
 	if (irq >= 16)
 		irq = irq + 8;
 		irq = irq + 8;
 
 
-	handle_irq(irq, regs);
+	handle_irq(irq);
 }
 }
 
 
 static void __init
 static void __init

+ 5 - 6
arch/alpha/kernel/sys_mikasa.c

@@ -79,7 +79,7 @@ static struct hw_interrupt_type mikasa_irq_type = {
 };
 };
 
 
 static void 
 static void 
-mikasa_device_interrupt(unsigned long vector, struct pt_regs *regs)
+mikasa_device_interrupt(unsigned long vector)
 {
 {
 	unsigned long pld;
 	unsigned long pld;
 	unsigned int i;
 	unsigned int i;
@@ -97,9 +97,9 @@ mikasa_device_interrupt(unsigned long vector, struct pt_regs *regs)
 		i = ffz(~pld);
 		i = ffz(~pld);
 		pld &= pld - 1; /* clear least bit set */
 		pld &= pld - 1; /* clear least bit set */
 		if (i < 16) {
 		if (i < 16) {
-			isa_device_interrupt(vector, regs);
+			isa_device_interrupt(vector);
 		} else {
 		} else {
-			handle_irq(i, regs);
+			handle_irq(i);
 		}
 		}
 	}
 	}
 }
 }
@@ -182,8 +182,7 @@ mikasa_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
 
 
 #if defined(CONFIG_ALPHA_GENERIC) || !defined(CONFIG_ALPHA_PRIMO)
 #if defined(CONFIG_ALPHA_GENERIC) || !defined(CONFIG_ALPHA_PRIMO)
 static void
 static void
-mikasa_apecs_machine_check(unsigned long vector, unsigned long la_ptr,
-		           struct pt_regs * regs)
+mikasa_apecs_machine_check(unsigned long vector, unsigned long la_ptr)
 {
 {
 #define MCHK_NO_DEVSEL 0x205U
 #define MCHK_NO_DEVSEL 0x205U
 #define MCHK_NO_TABT 0x204U
 #define MCHK_NO_TABT 0x204U
@@ -202,7 +201,7 @@ mikasa_apecs_machine_check(unsigned long vector, unsigned long la_ptr,
 	mb();
 	mb();
 
 
 	code = mchk_header->code;
 	code = mchk_header->code;
-	process_mcheck_info(vector, la_ptr, regs, "MIKASA APECS",
+	process_mcheck_info(vector, la_ptr, "MIKASA APECS",
 			    (mcheck_expected(0)
 			    (mcheck_expected(0)
 			     && (code == MCHK_NO_DEVSEL
 			     && (code == MCHK_NO_DEVSEL
 			         || code == MCHK_NO_TABT)));
 			         || code == MCHK_NO_TABT)));

+ 3 - 4
arch/alpha/kernel/sys_nautilus.c

@@ -124,8 +124,7 @@ naut_sys_machine_check(unsigned long vector, unsigned long la_ptr,
    in the system.  They are analysed separately but all starts here.  */
    in the system.  They are analysed separately but all starts here.  */
 
 
 void
 void
-nautilus_machine_check(unsigned long vector, unsigned long la_ptr,
-		       struct pt_regs *regs)
+nautilus_machine_check(unsigned long vector, unsigned long la_ptr)
 {
 {
 	char *mchk_class;
 	char *mchk_class;
 
 
@@ -165,7 +164,7 @@ nautilus_machine_check(unsigned long vector, unsigned long la_ptr,
 	else if (vector == SCB_Q_SYSMCHK)
 	else if (vector == SCB_Q_SYSMCHK)
 		mchk_class = "Fatal";
 		mchk_class = "Fatal";
 	else {
 	else {
-		ev6_machine_check(vector, la_ptr, regs);
+		ev6_machine_check(vector, la_ptr);
 		return;
 		return;
 	}
 	}
 
 
@@ -173,7 +172,7 @@ nautilus_machine_check(unsigned long vector, unsigned long la_ptr,
 			 "[%s System Machine Check (NMI)]\n",
 			 "[%s System Machine Check (NMI)]\n",
 	       vector, mchk_class);
 	       vector, mchk_class);
 
 
-	naut_sys_machine_check(vector, la_ptr, regs);
+	naut_sys_machine_check(vector, la_ptr, get_irq_regs());
 
 
 	/* Tell the PALcode to clear the machine check */
 	/* Tell the PALcode to clear the machine check */
 	draina();
 	draina();

+ 7 - 8
arch/alpha/kernel/sys_noritake.c

@@ -77,7 +77,7 @@ static struct hw_interrupt_type noritake_irq_type = {
 };
 };
 
 
 static void 
 static void 
-noritake_device_interrupt(unsigned long vector, struct pt_regs *regs)
+noritake_device_interrupt(unsigned long vector)
 {
 {
 	unsigned long pld;
 	unsigned long pld;
 	unsigned int i;
 	unsigned int i;
@@ -96,15 +96,15 @@ noritake_device_interrupt(unsigned long vector, struct pt_regs *regs)
 		i = ffz(~pld);
 		i = ffz(~pld);
 		pld &= pld - 1; /* clear least bit set */
 		pld &= pld - 1; /* clear least bit set */
 		if (i < 16) {
 		if (i < 16) {
-			isa_device_interrupt(vector, regs);
+			isa_device_interrupt(vector);
 		} else {
 		} else {
-			handle_irq(i, regs);
+			handle_irq(i);
 		}
 		}
 	}
 	}
 }
 }
 
 
 static void 
 static void 
-noritake_srm_device_interrupt(unsigned long vector, struct pt_regs * regs)
+noritake_srm_device_interrupt(unsigned long vector)
 {
 {
 	int irq;
 	int irq;
 
 
@@ -122,7 +122,7 @@ noritake_srm_device_interrupt(unsigned long vector, struct pt_regs * regs)
 	if (irq >= 16)
 	if (irq >= 16)
 		irq = irq + 1;
 		irq = irq + 1;
 
 
-	handle_irq(irq, regs);
+	handle_irq(irq);
 }
 }
 
 
 static void __init
 static void __init
@@ -264,8 +264,7 @@ noritake_swizzle(struct pci_dev *dev, u8 *pinp)
 
 
 #if defined(CONFIG_ALPHA_GENERIC) || !defined(CONFIG_ALPHA_PRIMO)
 #if defined(CONFIG_ALPHA_GENERIC) || !defined(CONFIG_ALPHA_PRIMO)
 static void
 static void
-noritake_apecs_machine_check(unsigned long vector, unsigned long la_ptr,
-			     struct pt_regs * regs)
+noritake_apecs_machine_check(unsigned long vector, unsigned long la_ptr)
 {
 {
 #define MCHK_NO_DEVSEL 0x205U
 #define MCHK_NO_DEVSEL 0x205U
 #define MCHK_NO_TABT 0x204U
 #define MCHK_NO_TABT 0x204U
@@ -284,7 +283,7 @@ noritake_apecs_machine_check(unsigned long vector, unsigned long la_ptr,
         mb();
         mb();
 
 
         code = mchk_header->code;
         code = mchk_header->code;
-        process_mcheck_info(vector, la_ptr, regs, "NORITAKE APECS",
+        process_mcheck_info(vector, la_ptr, "NORITAKE APECS",
                             (mcheck_expected(0)
                             (mcheck_expected(0)
                              && (code == MCHK_NO_DEVSEL
                              && (code == MCHK_NO_DEVSEL
                                  || code == MCHK_NO_TABT)));
                                  || code == MCHK_NO_TABT)));

+ 2 - 2
arch/alpha/kernel/sys_rawhide.c

@@ -134,7 +134,7 @@ static struct hw_interrupt_type rawhide_irq_type = {
 };
 };
 
 
 static void 
 static void 
-rawhide_srm_device_interrupt(unsigned long vector, struct pt_regs * regs)
+rawhide_srm_device_interrupt(unsigned long vector)
 {
 {
 	int irq;
 	int irq;
 
 
@@ -158,7 +158,7 @@ rawhide_srm_device_interrupt(unsigned long vector, struct pt_regs * regs)
 	/* Adjust by which hose it is from.  */
 	/* Adjust by which hose it is from.  */
 	irq -= ((irq + 16) >> 2) & 0x38;
 	irq -= ((irq + 16) >> 2) & 0x38;
 
 
-	handle_irq(irq, regs);
+	handle_irq(irq);
 }
 }
 
 
 static void __init
 static void __init

+ 3 - 3
arch/alpha/kernel/sys_rx164.c

@@ -83,7 +83,7 @@ static struct hw_interrupt_type rx164_irq_type = {
 };
 };
 
 
 static void 
 static void 
-rx164_device_interrupt(unsigned long vector, struct pt_regs *regs)
+rx164_device_interrupt(unsigned long vector)
 {
 {
 	unsigned long pld;
 	unsigned long pld;
 	volatile unsigned int *dirr;
 	volatile unsigned int *dirr;
@@ -102,9 +102,9 @@ rx164_device_interrupt(unsigned long vector, struct pt_regs *regs)
 		i = ffz(~pld);
 		i = ffz(~pld);
 		pld &= pld - 1; /* clear least bit set */
 		pld &= pld - 1; /* clear least bit set */
 		if (i == 20) {
 		if (i == 20) {
-			isa_no_iack_sc_device_interrupt(vector, regs);
+			isa_no_iack_sc_device_interrupt(vector);
 		} else {
 		} else {
-			handle_irq(16+i, regs);
+			handle_irq(16+i);
 		}
 		}
 	}
 	}
 }
 }

+ 2 - 2
arch/alpha/kernel/sys_sable.c

@@ -512,7 +512,7 @@ static struct hw_interrupt_type sable_lynx_irq_type = {
 };
 };
 
 
 static void 
 static void 
-sable_lynx_srm_device_interrupt(unsigned long vector, struct pt_regs * regs)
+sable_lynx_srm_device_interrupt(unsigned long vector)
 {
 {
 	/* Note that the vector reported by the SRM PALcode corresponds
 	/* Note that the vector reported by the SRM PALcode corresponds
 	   to the interrupt mask bits, but we have to manage via the
 	   to the interrupt mask bits, but we have to manage via the
@@ -526,7 +526,7 @@ sable_lynx_srm_device_interrupt(unsigned long vector, struct pt_regs * regs)
 	printk("%s: vector 0x%lx bit 0x%x irq 0x%x\n",
 	printk("%s: vector 0x%lx bit 0x%x irq 0x%x\n",
 	       __FUNCTION__, vector, bit, irq);
 	       __FUNCTION__, vector, bit, irq);
 #endif
 #endif
-	handle_irq(irq, regs);
+	handle_irq(irq);
 }
 }
 
 
 static void __init
 static void __init

+ 8 - 8
arch/alpha/kernel/sys_takara.c

@@ -85,7 +85,7 @@ static struct hw_interrupt_type takara_irq_type = {
 };
 };
 
 
 static void
 static void
-takara_device_interrupt(unsigned long vector, struct pt_regs *regs)
+takara_device_interrupt(unsigned long vector)
 {
 {
 	unsigned intstatus;
 	unsigned intstatus;
 
 
@@ -112,20 +112,20 @@ takara_device_interrupt(unsigned long vector, struct pt_regs *regs)
 		 * despatch an interrupt if it's set.
 		 * despatch an interrupt if it's set.
 		 */
 		 */
 
 
-		if (intstatus & 8) handle_irq(16+3, regs);
-		if (intstatus & 4) handle_irq(16+2, regs);
-		if (intstatus & 2) handle_irq(16+1, regs);
-		if (intstatus & 1) handle_irq(16+0, regs);
+		if (intstatus & 8) handle_irq(16+3);
+		if (intstatus & 4) handle_irq(16+2);
+		if (intstatus & 2) handle_irq(16+1);
+		if (intstatus & 1) handle_irq(16+0);
 	} else {
 	} else {
-		isa_device_interrupt (vector, regs);
+		isa_device_interrupt (vector);
 	}
 	}
 }
 }
 
 
 static void 
 static void 
-takara_srm_device_interrupt(unsigned long vector, struct pt_regs * regs)
+takara_srm_device_interrupt(unsigned long vector)
 {
 {
 	int irq = (vector - 0x800) >> 4;
 	int irq = (vector - 0x800) >> 4;
-	handle_irq(irq, regs);
+	handle_irq(irq);
 }
 }
 
 
 static void __init
 static void __init

+ 6 - 6
arch/alpha/kernel/sys_titan.c

@@ -167,18 +167,18 @@ titan_set_irq_affinity(unsigned int irq, cpumask_t affinity)
 }
 }
 
 
 static void
 static void
-titan_device_interrupt(unsigned long vector, struct pt_regs * regs)
+titan_device_interrupt(unsigned long vector)
 {
 {
 	printk("titan_device_interrupt: NOT IMPLEMENTED YET!! \n");
 	printk("titan_device_interrupt: NOT IMPLEMENTED YET!! \n");
 }
 }
 
 
 static void 
 static void 
-titan_srm_device_interrupt(unsigned long vector, struct pt_regs * regs)
+titan_srm_device_interrupt(unsigned long vector)
 {
 {
 	int irq;
 	int irq;
 
 
 	irq = (vector - 0x800) >> 4;
 	irq = (vector - 0x800) >> 4;
-	handle_irq(irq, regs);
+	handle_irq(irq);
 }
 }
 
 
 
 
@@ -204,7 +204,7 @@ static struct hw_interrupt_type titan_irq_type = {
 };
 };
 
 
 static irqreturn_t
 static irqreturn_t
-titan_intr_nop(int irq, void *dev_id, struct pt_regs *regs)                    
+titan_intr_nop(int irq, void *dev_id)
 {
 {
       /*
       /*
        * This is a NOP interrupt handler for the purposes of
        * This is a NOP interrupt handler for the purposes of
@@ -243,7 +243,7 @@ titan_legacy_init_irq(void)
 }
 }
 
 
 void
 void
-titan_dispatch_irqs(u64 mask, struct pt_regs *regs)
+titan_dispatch_irqs(u64 mask)
 {
 {
 	unsigned long vector;
 	unsigned long vector;
 
 
@@ -263,7 +263,7 @@ titan_dispatch_irqs(u64 mask, struct pt_regs *regs)
 		vector = 0x900 + (vector << 4);	/* convert to SRM vector */
 		vector = 0x900 + (vector << 4);	/* convert to SRM vector */
 		
 		
 		/* dispatch it */
 		/* dispatch it */
-		alpha_mv.device_interrupt(vector, regs);
+		alpha_mv.device_interrupt(vector);
 	}
 	}
 }
 }
   
   

+ 2 - 2
arch/alpha/kernel/sys_wildfire.c

@@ -234,7 +234,7 @@ wildfire_init_irq(void)
 }
 }
 
 
 static void 
 static void 
-wildfire_device_interrupt(unsigned long vector, struct pt_regs * regs)
+wildfire_device_interrupt(unsigned long vector)
 {
 {
 	int irq;
 	int irq;
 
 
@@ -246,7 +246,7 @@ wildfire_device_interrupt(unsigned long vector, struct pt_regs * regs)
 	 * bits 5-0:	irq in PCA
 	 * bits 5-0:	irq in PCA
 	 */
 	 */
 
 
-	handle_irq(irq, regs);
+	handle_irq(irq);
 	return;
 	return;
 }
 }
 
 

+ 3 - 3
arch/alpha/kernel/time.c

@@ -104,7 +104,7 @@ unsigned long long sched_clock(void)
  * timer_interrupt() needs to keep up the real-time clock,
  * timer_interrupt() needs to keep up the real-time clock,
  * as well as call the "do_timer()" routine every clocktick
  * as well as call the "do_timer()" routine every clocktick
  */
  */
-irqreturn_t timer_interrupt(int irq, void *dev, struct pt_regs * regs)
+irqreturn_t timer_interrupt(int irq, void *dev)
 {
 {
 	unsigned long delta;
 	unsigned long delta;
 	__u32 now;
 	__u32 now;
@@ -112,7 +112,7 @@ irqreturn_t timer_interrupt(int irq, void *dev, struct pt_regs * regs)
 
 
 #ifndef CONFIG_SMP
 #ifndef CONFIG_SMP
 	/* Not SMP, do kernel PC profiling here.  */
 	/* Not SMP, do kernel PC profiling here.  */
-	profile_tick(CPU_PROFILING, regs);
+	profile_tick(CPU_PROFILING);
 #endif
 #endif
 
 
 	write_seqlock(&xtime_lock);
 	write_seqlock(&xtime_lock);
@@ -132,7 +132,7 @@ irqreturn_t timer_interrupt(int irq, void *dev, struct pt_regs * regs)
 	while (nticks > 0) {
 	while (nticks > 0) {
 		do_timer(1);
 		do_timer(1);
 #ifndef CONFIG_SMP
 #ifndef CONFIG_SMP
-		update_process_times(user_mode(regs));
+		update_process_times(user_mode(get_irq_regs()));
 #endif
 #endif
 		nticks--;
 		nticks--;
 	}
 	}

+ 10 - 15
arch/arm/common/locomo.c

@@ -163,8 +163,7 @@ static struct locomo_dev_info locomo_devices[] = {
 #define	LOCOMO_IRQ_LT_START	(IRQ_LOCOMO_LT)
 #define	LOCOMO_IRQ_LT_START	(IRQ_LOCOMO_LT)
 #define	LOCOMO_IRQ_SPI_START	(IRQ_LOCOMO_SPI_RFR)
 #define	LOCOMO_IRQ_SPI_START	(IRQ_LOCOMO_SPI_RFR)
 
 
-static void locomo_handler(unsigned int irq, struct irqdesc *desc,
-			struct pt_regs *regs)
+static void locomo_handler(unsigned int irq, struct irqdesc *desc)
 {
 {
 	int req, i;
 	int req, i;
 	struct irqdesc *d;
 	struct irqdesc *d;
@@ -182,7 +181,7 @@ static void locomo_handler(unsigned int irq, struct irqdesc *desc,
 		d = irq_desc + irq;
 		d = irq_desc + irq;
 		for (i = 0; i <= 3; i++, d++, irq++) {
 		for (i = 0; i <= 3; i++, d++, irq++) {
 			if (req & (0x0100 << i)) {
 			if (req & (0x0100 << i)) {
-				desc_handle_irq(irq, d, regs);
+				desc_handle_irq(irq, d);
 			}
 			}
 
 
 		}
 		}
@@ -218,15 +217,14 @@ static struct irq_chip locomo_chip = {
 	.unmask	= locomo_unmask_irq,
 	.unmask	= locomo_unmask_irq,
 };
 };
 
 
-static void locomo_key_handler(unsigned int irq, struct irqdesc *desc,
-			    struct pt_regs *regs)
+static void locomo_key_handler(unsigned int irq, struct irqdesc *desc)
 {
 {
 	struct irqdesc *d;
 	struct irqdesc *d;
 	void __iomem *mapbase = get_irq_chipdata(irq);
 	void __iomem *mapbase = get_irq_chipdata(irq);
 
 
 	if (locomo_readl(mapbase + LOCOMO_KEYBOARD + LOCOMO_KIC) & 0x0001) {
 	if (locomo_readl(mapbase + LOCOMO_KEYBOARD + LOCOMO_KIC) & 0x0001) {
 		d = irq_desc + LOCOMO_IRQ_KEY_START;
 		d = irq_desc + LOCOMO_IRQ_KEY_START;
-		desc_handle_irq(LOCOMO_IRQ_KEY_START, d, regs);
+		desc_handle_irq(LOCOMO_IRQ_KEY_START, d);
 	}
 	}
 }
 }
 
 
@@ -264,8 +262,7 @@ static struct irq_chip locomo_key_chip = {
 	.unmask	= locomo_key_unmask_irq,
 	.unmask	= locomo_key_unmask_irq,
 };
 };
 
 
-static void locomo_gpio_handler(unsigned int irq, struct irqdesc *desc,
-			     struct pt_regs *regs)
+static void locomo_gpio_handler(unsigned int irq, struct irqdesc *desc)
 {
 {
 	int req, i;
 	int req, i;
 	struct irqdesc *d;
 	struct irqdesc *d;
@@ -280,7 +277,7 @@ static void locomo_gpio_handler(unsigned int irq, struct irqdesc *desc,
 		d = irq_desc + LOCOMO_IRQ_GPIO_START;
 		d = irq_desc + LOCOMO_IRQ_GPIO_START;
 		for (i = 0; i <= 15; i++, irq++, d++) {
 		for (i = 0; i <= 15; i++, irq++, d++) {
 			if (req & (0x0001 << i)) {
 			if (req & (0x0001 << i)) {
-				desc_handle_irq(irq, d, regs);
+				desc_handle_irq(irq, d);
 			}
 			}
 		}
 		}
 	}
 	}
@@ -328,15 +325,14 @@ static struct irq_chip locomo_gpio_chip = {
 	.unmask	= locomo_gpio_unmask_irq,
 	.unmask	= locomo_gpio_unmask_irq,
 };
 };
 
 
-static void locomo_lt_handler(unsigned int irq, struct irqdesc *desc,
-			   struct pt_regs *regs)
+static void locomo_lt_handler(unsigned int irq, struct irqdesc *desc)
 {
 {
 	struct irqdesc *d;
 	struct irqdesc *d;
 	void __iomem *mapbase = get_irq_chipdata(irq);
 	void __iomem *mapbase = get_irq_chipdata(irq);
 
 
 	if (locomo_readl(mapbase + LOCOMO_LTINT) & 0x0001) {
 	if (locomo_readl(mapbase + LOCOMO_LTINT) & 0x0001) {
 		d = irq_desc + LOCOMO_IRQ_LT_START;
 		d = irq_desc + LOCOMO_IRQ_LT_START;
-		desc_handle_irq(LOCOMO_IRQ_LT_START, d, regs);
+		desc_handle_irq(LOCOMO_IRQ_LT_START, d);
 	}
 	}
 }
 }
 
 
@@ -374,8 +370,7 @@ static struct irq_chip locomo_lt_chip = {
 	.unmask	= locomo_lt_unmask_irq,
 	.unmask	= locomo_lt_unmask_irq,
 };
 };
 
 
-static void locomo_spi_handler(unsigned int irq, struct irqdesc *desc,
-			    struct pt_regs *regs)
+static void locomo_spi_handler(unsigned int irq, struct irqdesc *desc)
 {
 {
 	int req, i;
 	int req, i;
 	struct irqdesc *d;
 	struct irqdesc *d;
@@ -388,7 +383,7 @@ static void locomo_spi_handler(unsigned int irq, struct irqdesc *desc,
 
 
 		for (i = 0; i <= 3; i++, irq++, d++) {
 		for (i = 0; i <= 3; i++, irq++, d++) {
 			if (req & (0x0001 << i)) {
 			if (req & (0x0001 << i)) {
-				desc_handle_irq(irq, d, regs);
+				desc_handle_irq(irq, d);
 			}
 			}
 		}
 		}
 	}
 	}

+ 4 - 4
arch/arm/common/sa1111.c

@@ -147,7 +147,7 @@ void __init sa1111_adjust_zones(int node, unsigned long *size, unsigned long *ho
  * will call us again if there are more interrupts to process.
  * will call us again if there are more interrupts to process.
  */
  */
 static void
 static void
-sa1111_irq_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs)
+sa1111_irq_handler(unsigned int irq, struct irqdesc *desc)
 {
 {
 	unsigned int stat0, stat1, i;
 	unsigned int stat0, stat1, i;
 	void __iomem *base = get_irq_data(irq);
 	void __iomem *base = get_irq_data(irq);
@@ -162,17 +162,17 @@ sa1111_irq_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs)
 	sa1111_writel(stat1, base + SA1111_INTSTATCLR1);
 	sa1111_writel(stat1, base + SA1111_INTSTATCLR1);
 
 
 	if (stat0 == 0 && stat1 == 0) {
 	if (stat0 == 0 && stat1 == 0) {
-		do_bad_IRQ(irq, desc, regs);
+		do_bad_IRQ(irq, desc);
 		return;
 		return;
 	}
 	}
 
 
 	for (i = IRQ_SA1111_START; stat0; i++, stat0 >>= 1)
 	for (i = IRQ_SA1111_START; stat0; i++, stat0 >>= 1)
 		if (stat0 & 1)
 		if (stat0 & 1)
-			handle_edge_irq(i, irq_desc + i, regs);
+			handle_edge_irq(i, irq_desc + i);
 
 
 	for (i = IRQ_SA1111_START + 32; stat1; i++, stat1 >>= 1)
 	for (i = IRQ_SA1111_START + 32; stat1; i++, stat1 >>= 1)
 		if (stat1 & 1)
 		if (stat1 & 1)
-			handle_edge_irq(i, irq_desc + i, regs);
+			handle_edge_irq(i, irq_desc + i);
 
 
 	/* For level-based interrupts */
 	/* For level-based interrupts */
 	desc->chip->unmask(irq);
 	desc->chip->unmask(irq);

+ 3 - 3
arch/arm/common/sharpsl_pm.c

@@ -258,7 +258,7 @@ static void sharpsl_ac_timer(unsigned long data)
 }
 }
 
 
 
 
-irqreturn_t sharpsl_ac_isr(int irq, void *dev_id, struct pt_regs *fp)
+irqreturn_t sharpsl_ac_isr(int irq, void *dev_id)
 {
 {
 	/* Delay the event slightly to debounce */
 	/* Delay the event slightly to debounce */
 	/* Must be a smaller delay than the chrg_full_isr below */
 	/* Must be a smaller delay than the chrg_full_isr below */
@@ -293,7 +293,7 @@ static void sharpsl_chrg_full_timer(unsigned long data)
 /* Charging Finished Interrupt (Not present on Corgi) */
 /* Charging Finished Interrupt (Not present on Corgi) */
 /* Can trigger at the same time as an AC staus change so
 /* Can trigger at the same time as an AC staus change so
    delay until after that has been processed */
    delay until after that has been processed */
-irqreturn_t sharpsl_chrg_full_isr(int irq, void *dev_id, struct pt_regs *fp)
+irqreturn_t sharpsl_chrg_full_isr(int irq, void *dev_id)
 {
 {
 	if (sharpsl_pm.flags & SHARPSL_SUSPENDED)
 	if (sharpsl_pm.flags & SHARPSL_SUSPENDED)
 		return IRQ_HANDLED;
 		return IRQ_HANDLED;
@@ -304,7 +304,7 @@ irqreturn_t sharpsl_chrg_full_isr(int irq, void *dev_id, struct pt_regs *fp)
 	return IRQ_HANDLED;
 	return IRQ_HANDLED;
 }
 }
 
 
-irqreturn_t sharpsl_fatal_isr(int irq, void *dev_id, struct pt_regs *fp)
+irqreturn_t sharpsl_fatal_isr(int irq, void *dev_id)
 {
 {
 	int is_fatal = 0;
 	int is_fatal = 0;
 
 

+ 2 - 2
arch/arm/common/time-acorn.c

@@ -67,10 +67,10 @@ void __init ioctime_init(void)
 }
 }
 
 
 static irqreturn_t
 static irqreturn_t
-ioc_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+ioc_timer_interrupt(int irq, void *dev_id)
 {
 {
 	write_seqlock(&xtime_lock);
 	write_seqlock(&xtime_lock);
-	timer_tick(regs);
+	timer_tick();
 	write_sequnlock(&xtime_lock);
 	write_sequnlock(&xtime_lock);
 	return IRQ_HANDLED;
 	return IRQ_HANDLED;
 }
 }

+ 4 - 4
arch/arm/kernel/ecard.c

@@ -567,7 +567,7 @@ static void ecard_check_lockup(struct irqdesc *desc)
 }
 }
 
 
 static void
 static void
-ecard_irq_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs)
+ecard_irq_handler(unsigned int irq, struct irqdesc *desc)
 {
 {
 	ecard_t *ec;
 	ecard_t *ec;
 	int called = 0;
 	int called = 0;
@@ -586,7 +586,7 @@ ecard_irq_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs)
 
 
 		if (pending) {
 		if (pending) {
 			struct irqdesc *d = irq_desc + ec->irq;
 			struct irqdesc *d = irq_desc + ec->irq;
-			desc_handle_irq(ec->irq, d, regs);
+			desc_handle_irq(ec->irq, d);
 			called ++;
 			called ++;
 		}
 		}
 	}
 	}
@@ -609,7 +609,7 @@ static unsigned char first_set[] =
 };
 };
 
 
 static void
 static void
-ecard_irqexp_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs)
+ecard_irqexp_handler(unsigned int irq, struct irqdesc *desc)
 {
 {
 	const unsigned int statusmask = 15;
 	const unsigned int statusmask = 15;
 	unsigned int status;
 	unsigned int status;
@@ -633,7 +633,7 @@ ecard_irqexp_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *reg
 			 * Serial cards should go in 0/1, ethernet/scsi in 2/3
 			 * Serial cards should go in 0/1, ethernet/scsi in 2/3
 			 * otherwise you will lose serial data at high speeds!
 			 * otherwise you will lose serial data at high speeds!
 			 */
 			 */
-			desc_handle_irq(ec->irq, d, regs);
+			desc_handle_irq(ec->irq, d);
 		} else {
 		} else {
 			printk(KERN_WARNING "card%d: interrupt from unclaimed "
 			printk(KERN_WARNING "card%d: interrupt from unclaimed "
 			       "card???\n", slot);
 			       "card???\n", slot);

+ 3 - 1
arch/arm/kernel/irq.c

@@ -111,6 +111,7 @@ static struct irq_desc bad_irq_desc = {
  */
  */
 asmlinkage void asm_do_IRQ(unsigned int irq, struct pt_regs *regs)
 asmlinkage void asm_do_IRQ(unsigned int irq, struct pt_regs *regs)
 {
 {
+	struct pt_regs *old_regs = set_irq_regs(regs);
 	struct irqdesc *desc = irq_desc + irq;
 	struct irqdesc *desc = irq_desc + irq;
 
 
 	/*
 	/*
@@ -122,12 +123,13 @@ asmlinkage void asm_do_IRQ(unsigned int irq, struct pt_regs *regs)
 
 
 	irq_enter();
 	irq_enter();
 
 
-	desc_handle_irq(irq, desc, regs);
+	desc_handle_irq(irq, desc);
 
 
 	/* AT91 specific workaround */
 	/* AT91 specific workaround */
 	irq_finish(irq);
 	irq_finish(irq);
 
 
 	irq_exit();
 	irq_exit();
+	set_irq_regs(old_regs);
 }
 }
 
 
 void set_irq_flags(unsigned int irq, unsigned int iflags)
 void set_irq_flags(unsigned int irq, unsigned int iflags)

+ 4 - 2
arch/arm/kernel/time.c

@@ -27,6 +27,7 @@
 #include <linux/profile.h>
 #include <linux/profile.h>
 #include <linux/sysdev.h>
 #include <linux/sysdev.h>
 #include <linux/timer.h>
 #include <linux/timer.h>
+#include <linux/irq.h>
 
 
 #include <asm/leds.h>
 #include <asm/leds.h>
 #include <asm/thread_info.h>
 #include <asm/thread_info.h>
@@ -324,9 +325,10 @@ EXPORT_SYMBOL(restore_time_delta);
 /*
 /*
  * Kernel system timer support.
  * Kernel system timer support.
  */
  */
-void timer_tick(struct pt_regs *regs)
+void timer_tick(void)
 {
 {
-	profile_tick(CPU_PROFILING, regs);
+	struct pt_regs *regs = get_irq_regs();
+	profile_tick(CPU_PROFILING);
 	do_leds();
 	do_leds();
 	do_set_rtc();
 	do_set_rtc();
 	do_timer(1);
 	do_timer(1);

+ 2 - 2
arch/arm/mach-aaec2000/core.c

@@ -127,12 +127,12 @@ static unsigned long aaec2000_gettimeoffset(void)
 
 
 /* We enter here with IRQs enabled */
 /* We enter here with IRQs enabled */
 static irqreturn_t
 static irqreturn_t
-aaec2000_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+aaec2000_timer_interrupt(int irq, void *dev_id)
 {
 {
 	/* TODO: Check timer accuracy */
 	/* TODO: Check timer accuracy */
 	write_seqlock(&xtime_lock);
 	write_seqlock(&xtime_lock);
 
 
-	timer_tick(regs);
+	timer_tick();
 	TIMER1_CLEAR = 1;
 	TIMER1_CLEAR = 1;
 
 
 	write_sequnlock(&xtime_lock);
 	write_sequnlock(&xtime_lock);

+ 2 - 2
arch/arm/mach-at91rm9200/at91rm9200_time.c

@@ -65,13 +65,13 @@ static unsigned long at91rm9200_gettimeoffset(void)
 /*
 /*
  * IRQ handler for the timer.
  * IRQ handler for the timer.
  */
  */
-static irqreturn_t at91rm9200_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+static irqreturn_t at91rm9200_timer_interrupt(int irq, void *dev_id)
 {
 {
 	if (at91_sys_read(AT91_ST_SR) & AT91_ST_PITS) {	/* This is a shared interrupt */
 	if (at91_sys_read(AT91_ST_SR) & AT91_ST_PITS) {	/* This is a shared interrupt */
 		write_seqlock(&xtime_lock);
 		write_seqlock(&xtime_lock);
 
 
 		while (((read_CRTR() - last_crtr) & AT91_ST_ALMV) >= LATCH) {
 		while (((read_CRTR() - last_crtr) & AT91_ST_ALMV) >= LATCH) {
-			timer_tick(regs);
+			timer_tick();
 			last_crtr = (last_crtr + LATCH) & AT91_ST_ALMV;
 			last_crtr = (last_crtr + LATCH) & AT91_ST_ALMV;
 		}
 		}
 
 

+ 2 - 2
arch/arm/mach-at91rm9200/gpio.c

@@ -332,7 +332,7 @@ static struct irq_chip gpio_irqchip = {
 	.set_wake	= gpio_irq_set_wake,
 	.set_wake	= gpio_irq_set_wake,
 };
 };
 
 
-static void gpio_irq_handler(unsigned irq, struct irqdesc *desc, struct pt_regs *regs)
+static void gpio_irq_handler(unsigned irq, struct irqdesc *desc)
 {
 {
 	unsigned	pin;
 	unsigned	pin;
 	struct irqdesc	*gpio;
 	struct irqdesc	*gpio;
@@ -363,7 +363,7 @@ static void gpio_irq_handler(unsigned irq, struct irqdesc *desc, struct pt_regs
 					gpio_irq_mask(pin);
 					gpio_irq_mask(pin);
 				}
 				}
 				else
 				else
-					desc_handle_irq(pin, gpio, regs);
+					desc_handle_irq(pin, gpio);
 			}
 			}
 			pin++;
 			pin++;
 			gpio++;
 			gpio++;

+ 2 - 2
arch/arm/mach-clps711x/time.c

@@ -48,10 +48,10 @@ static unsigned long clps711x_gettimeoffset(void)
  * IRQ handler for the timer
  * IRQ handler for the timer
  */
  */
 static irqreturn_t
 static irqreturn_t
-p720t_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+p720t_timer_interrupt(int irq, void *dev_id)
 {
 {
 	write_seqlock(&xtime_lock);
 	write_seqlock(&xtime_lock);
-	timer_tick(regs);
+	timer_tick();
 	write_sequnlock(&xtime_lock);
 	write_sequnlock(&xtime_lock);
 	return IRQ_HANDLED;
 	return IRQ_HANDLED;
 }
 }

+ 2 - 2
arch/arm/mach-clps7500/core.c

@@ -292,11 +292,11 @@ extern void ioctime_init(void);
 extern unsigned long ioc_timer_gettimeoffset(void);
 extern unsigned long ioc_timer_gettimeoffset(void);
 
 
 static irqreturn_t
 static irqreturn_t
-clps7500_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+clps7500_timer_interrupt(int irq, void *dev_id)
 {
 {
 	write_seqlock(&xtime_lock);
 	write_seqlock(&xtime_lock);
 
 
-	timer_tick(regs);
+	timer_tick();
 
 
 	/* Why not using do_leds interface?? */
 	/* Why not using do_leds interface?? */
 	{
 	{

+ 2 - 2
arch/arm/mach-ebsa110/core.c

@@ -174,7 +174,7 @@ static unsigned long ebsa110_gettimeoffset(void)
 }
 }
 
 
 static irqreturn_t
 static irqreturn_t
-ebsa110_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+ebsa110_timer_interrupt(int irq, void *dev_id)
 {
 {
 	u32 count;
 	u32 count;
 
 
@@ -190,7 +190,7 @@ ebsa110_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
 	__raw_writeb(count & 0xff, PIT_T1);
 	__raw_writeb(count & 0xff, PIT_T1);
 	__raw_writeb(count >> 8, PIT_T1);
 	__raw_writeb(count >> 8, PIT_T1);
 
 
-	timer_tick(regs);
+	timer_tick();
 
 
 	write_sequnlock(&xtime_lock);
 	write_sequnlock(&xtime_lock);
 
 

+ 5 - 5
arch/arm/mach-ep93xx/core.c

@@ -97,7 +97,7 @@ static unsigned int last_jiffy_time;
 
 
 #define TIMER4_TICKS_PER_JIFFY		((CLOCK_TICK_RATE + (HZ/2)) / HZ)
 #define TIMER4_TICKS_PER_JIFFY		((CLOCK_TICK_RATE + (HZ/2)) / HZ)
 
 
-static int ep93xx_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+static int ep93xx_timer_interrupt(int irq, void *dev_id)
 {
 {
 	write_seqlock(&xtime_lock);
 	write_seqlock(&xtime_lock);
 
 
@@ -106,7 +106,7 @@ static int ep93xx_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
 		(__raw_readl(EP93XX_TIMER4_VALUE_LOW) - last_jiffy_time)
 		(__raw_readl(EP93XX_TIMER4_VALUE_LOW) - last_jiffy_time)
 						>= TIMER4_TICKS_PER_JIFFY) {
 						>= TIMER4_TICKS_PER_JIFFY) {
 		last_jiffy_time += TIMER4_TICKS_PER_JIFFY;
 		last_jiffy_time += TIMER4_TICKS_PER_JIFFY;
-		timer_tick(regs);
+		timer_tick();
 	}
 	}
 
 
 	write_sequnlock(&xtime_lock);
 	write_sequnlock(&xtime_lock);
@@ -245,7 +245,7 @@ EXPORT_SYMBOL(gpio_line_set);
  * EP93xx IRQ handling
  * EP93xx IRQ handling
  *************************************************************************/
  *************************************************************************/
 static void ep93xx_gpio_ab_irq_handler(unsigned int irq,
 static void ep93xx_gpio_ab_irq_handler(unsigned int irq,
-		struct irqdesc *desc, struct pt_regs *regs)
+		struct irqdesc *desc)
 {
 {
 	unsigned char status;
 	unsigned char status;
 	int i;
 	int i;
@@ -254,7 +254,7 @@ static void ep93xx_gpio_ab_irq_handler(unsigned int irq,
 	for (i = 0; i < 8; i++) {
 	for (i = 0; i < 8; i++) {
 		if (status & (1 << i)) {
 		if (status & (1 << i)) {
 			desc = irq_desc + IRQ_EP93XX_GPIO(0) + i;
 			desc = irq_desc + IRQ_EP93XX_GPIO(0) + i;
-			desc_handle_irq(IRQ_EP93XX_GPIO(0) + i, desc, regs);
+			desc_handle_irq(IRQ_EP93XX_GPIO(0) + i, desc);
 		}
 		}
 	}
 	}
 
 
@@ -262,7 +262,7 @@ static void ep93xx_gpio_ab_irq_handler(unsigned int irq,
 	for (i = 0; i < 8; i++) {
 	for (i = 0; i < 8; i++) {
 		if (status & (1 << i)) {
 		if (status & (1 << i)) {
 			desc = irq_desc + IRQ_EP93XX_GPIO(8) + i;
 			desc = irq_desc + IRQ_EP93XX_GPIO(8) + i;
-			desc_handle_irq(IRQ_EP93XX_GPIO(8) + i, desc, regs);
+			desc_handle_irq(IRQ_EP93XX_GPIO(8) + i, desc);
 		}
 		}
 	}
 	}
 }
 }

+ 2 - 2
arch/arm/mach-footbridge/dc21285-timer.c

@@ -28,13 +28,13 @@ static unsigned long timer1_gettimeoffset (void)
 }
 }
 
 
 static irqreturn_t
 static irqreturn_t
-timer1_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+timer1_interrupt(int irq, void *dev_id)
 {
 {
 	write_seqlock(&xtime_lock);
 	write_seqlock(&xtime_lock);
 
 
 	*CSR_TIMER1_CLR = 0;
 	*CSR_TIMER1_CLR = 0;
 
 
-	timer_tick(regs);
+	timer_tick();
 
 
 	write_sequnlock(&xtime_lock);
 	write_sequnlock(&xtime_lock);
 
 

+ 6 - 6
arch/arm/mach-footbridge/dc21285.c

@@ -154,7 +154,7 @@ static void dc21285_enable_error(unsigned long __data)
 /*
 /*
  * Warn on PCI errors.
  * Warn on PCI errors.
  */
  */
-static irqreturn_t dc21285_abort_irq(int irq, void *dev_id, struct pt_regs *regs)
+static irqreturn_t dc21285_abort_irq(int irq, void *dev_id)
 {
 {
 	unsigned int cmd;
 	unsigned int cmd;
 	unsigned int status;
 	unsigned int status;
@@ -165,7 +165,7 @@ static irqreturn_t dc21285_abort_irq(int irq, void *dev_id, struct pt_regs *regs
 
 
 	if (status & PCI_STATUS_REC_MASTER_ABORT) {
 	if (status & PCI_STATUS_REC_MASTER_ABORT) {
 		printk(KERN_DEBUG "PCI: master abort, pc=0x%08lx\n",
 		printk(KERN_DEBUG "PCI: master abort, pc=0x%08lx\n",
-			instruction_pointer(regs));
+			instruction_pointer(get_irq_regs()));
 		cmd |= PCI_STATUS_REC_MASTER_ABORT << 16;
 		cmd |= PCI_STATUS_REC_MASTER_ABORT << 16;
 	}
 	}
 
 
@@ -184,7 +184,7 @@ static irqreturn_t dc21285_abort_irq(int irq, void *dev_id, struct pt_regs *regs
 	return IRQ_HANDLED;
 	return IRQ_HANDLED;
 }
 }
 
 
-static irqreturn_t dc21285_serr_irq(int irq, void *dev_id, struct pt_regs *regs)
+static irqreturn_t dc21285_serr_irq(int irq, void *dev_id)
 {
 {
 	struct timer_list *timer = dev_id;
 	struct timer_list *timer = dev_id;
 	unsigned int cntl;
 	unsigned int cntl;
@@ -206,7 +206,7 @@ static irqreturn_t dc21285_serr_irq(int irq, void *dev_id, struct pt_regs *regs)
 	return IRQ_HANDLED;
 	return IRQ_HANDLED;
 }
 }
 
 
-static irqreturn_t dc21285_discard_irq(int irq, void *dev_id, struct pt_regs *regs)
+static irqreturn_t dc21285_discard_irq(int irq, void *dev_id)
 {
 {
 	printk(KERN_DEBUG "PCI: discard timer expired\n");
 	printk(KERN_DEBUG "PCI: discard timer expired\n");
 	*CSR_SA110_CNTL &= 0xffffde07;
 	*CSR_SA110_CNTL &= 0xffffde07;
@@ -214,7 +214,7 @@ static irqreturn_t dc21285_discard_irq(int irq, void *dev_id, struct pt_regs *re
 	return IRQ_HANDLED;
 	return IRQ_HANDLED;
 }
 }
 
 
-static irqreturn_t dc21285_dparity_irq(int irq, void *dev_id, struct pt_regs *regs)
+static irqreturn_t dc21285_dparity_irq(int irq, void *dev_id)
 {
 {
 	unsigned int cmd;
 	unsigned int cmd;
 
 
@@ -228,7 +228,7 @@ static irqreturn_t dc21285_dparity_irq(int irq, void *dev_id, struct pt_regs *re
 	return IRQ_HANDLED;
 	return IRQ_HANDLED;
 }
 }
 
 
-static irqreturn_t dc21285_parity_irq(int irq, void *dev_id, struct pt_regs *regs)
+static irqreturn_t dc21285_parity_irq(int irq, void *dev_id)
 {
 {
 	struct timer_list *timer = dev_id;
 	struct timer_list *timer = dev_id;
 	unsigned int cmd;
 	unsigned int cmd;

+ 3 - 3
arch/arm/mach-footbridge/isa-irq.c

@@ -85,17 +85,17 @@ static struct irqchip isa_hi_chip = {
 };
 };
 
 
 static void
 static void
-isa_irq_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs)
+isa_irq_handler(unsigned int irq, struct irqdesc *desc)
 {
 {
 	unsigned int isa_irq = *(unsigned char *)PCIIACK_BASE;
 	unsigned int isa_irq = *(unsigned char *)PCIIACK_BASE;
 
 
 	if (isa_irq < _ISA_IRQ(0) || isa_irq >= _ISA_IRQ(16)) {
 	if (isa_irq < _ISA_IRQ(0) || isa_irq >= _ISA_IRQ(16)) {
-		do_bad_IRQ(isa_irq, desc, regs);
+		do_bad_IRQ(isa_irq, desc);
 		return;
 		return;
 	}
 	}
 
 
 	desc = irq_desc + isa_irq;
 	desc = irq_desc + isa_irq;
-	desc_handle_irq(isa_irq, desc, regs);
+	desc_handle_irq(isa_irq, desc);
 }
 }
 
 
 static struct irqaction irq_cascade = {
 static struct irqaction irq_cascade = {

+ 2 - 2
arch/arm/mach-footbridge/isa-timer.c

@@ -62,10 +62,10 @@ static unsigned long isa_gettimeoffset(void)
 }
 }
 
 
 static irqreturn_t
 static irqreturn_t
-isa_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+isa_timer_interrupt(int irq, void *dev_id)
 {
 {
 	write_seqlock(&xtime_lock);
 	write_seqlock(&xtime_lock);
-	timer_tick(regs);
+	timer_tick();
 	write_sequnlock(&xtime_lock);
 	write_sequnlock(&xtime_lock);
 	return IRQ_HANDLED;
 	return IRQ_HANDLED;
 }
 }

+ 12 - 17
arch/arm/mach-h720x/common.c

@@ -101,14 +101,14 @@ static void inline unmask_gpio_irq(u32 irq)
 
 
 static void
 static void
 h720x_gpio_handler(unsigned int mask, unsigned int irq,
 h720x_gpio_handler(unsigned int mask, unsigned int irq,
-                 struct irqdesc *desc, struct pt_regs *regs)
+                 struct irqdesc *desc)
 {
 {
 	IRQDBG("%s irq: %d\n",__FUNCTION__,irq);
 	IRQDBG("%s irq: %d\n",__FUNCTION__,irq);
 	desc = irq_desc + irq;
 	desc = irq_desc + irq;
 	while (mask) {
 	while (mask) {
 		if (mask & 1) {
 		if (mask & 1) {
 			IRQDBG("handling irq %d\n", irq);
 			IRQDBG("handling irq %d\n", irq);
-			desc_handle_irq(irq, desc, regs);
+			desc_handle_irq(irq, desc);
 		}
 		}
 		irq++;
 		irq++;
 		desc++;
 		desc++;
@@ -117,63 +117,58 @@ h720x_gpio_handler(unsigned int mask, unsigned int irq,
 }
 }
 
 
 static void
 static void
-h720x_gpioa_demux_handler(unsigned int irq_unused, struct irqdesc *desc,
-			struct pt_regs *regs)
+h720x_gpioa_demux_handler(unsigned int irq_unused, struct irqdesc *desc)
 {
 {
 	unsigned int mask, irq;
 	unsigned int mask, irq;
 
 
 	mask = CPU_REG(GPIO_A_VIRT,GPIO_STAT);
 	mask = CPU_REG(GPIO_A_VIRT,GPIO_STAT);
 	irq = IRQ_CHAINED_GPIOA(0);
 	irq = IRQ_CHAINED_GPIOA(0);
 	IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq);
 	IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq);
-	h720x_gpio_handler(mask, irq, desc, regs);
+	h720x_gpio_handler(mask, irq, desc);
 }
 }
 
 
 static void
 static void
-h720x_gpiob_demux_handler(unsigned int irq_unused, struct irqdesc *desc,
-			struct pt_regs *regs)
+h720x_gpiob_demux_handler(unsigned int irq_unused, struct irqdesc *desc)
 {
 {
 	unsigned int mask, irq;
 	unsigned int mask, irq;
 	mask = CPU_REG(GPIO_B_VIRT,GPIO_STAT);
 	mask = CPU_REG(GPIO_B_VIRT,GPIO_STAT);
 	irq = IRQ_CHAINED_GPIOB(0);
 	irq = IRQ_CHAINED_GPIOB(0);
 	IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq);
 	IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq);
-	h720x_gpio_handler(mask, irq, desc, regs);
+	h720x_gpio_handler(mask, irq, desc);
 }
 }
 
 
 static void
 static void
-h720x_gpioc_demux_handler(unsigned int irq_unused, struct irqdesc *desc,
-			struct pt_regs *regs)
+h720x_gpioc_demux_handler(unsigned int irq_unused, struct irqdesc *desc)
 {
 {
 	unsigned int mask, irq;
 	unsigned int mask, irq;
 
 
 	mask = CPU_REG(GPIO_C_VIRT,GPIO_STAT);
 	mask = CPU_REG(GPIO_C_VIRT,GPIO_STAT);
 	irq = IRQ_CHAINED_GPIOC(0);
 	irq = IRQ_CHAINED_GPIOC(0);
 	IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq);
 	IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq);
-	h720x_gpio_handler(mask, irq, desc, regs);
+	h720x_gpio_handler(mask, irq, desc);
 }
 }
 
 
 static void
 static void
-h720x_gpiod_demux_handler(unsigned int irq_unused, struct irqdesc *desc,
-			struct pt_regs *regs)
+h720x_gpiod_demux_handler(unsigned int irq_unused, struct irqdesc *desc)
 {
 {
 	unsigned int mask, irq;
 	unsigned int mask, irq;
 
 
 	mask = CPU_REG(GPIO_D_VIRT,GPIO_STAT);
 	mask = CPU_REG(GPIO_D_VIRT,GPIO_STAT);
 	irq = IRQ_CHAINED_GPIOD(0);
 	irq = IRQ_CHAINED_GPIOD(0);
 	IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq);
 	IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq);
-	h720x_gpio_handler(mask, irq, desc, regs);
+	h720x_gpio_handler(mask, irq, desc);
 }
 }
 
 
 #ifdef CONFIG_CPU_H7202
 #ifdef CONFIG_CPU_H7202
 static void
 static void
-h720x_gpioe_demux_handler(unsigned int irq_unused, struct irqdesc *desc,
-			struct pt_regs *regs)
+h720x_gpioe_demux_handler(unsigned int irq_unused, struct irqdesc *desc)
 {
 {
 	unsigned int mask, irq;
 	unsigned int mask, irq;
 
 
 	mask = CPU_REG(GPIO_E_VIRT,GPIO_STAT);
 	mask = CPU_REG(GPIO_E_VIRT,GPIO_STAT);
 	irq = IRQ_CHAINED_GPIOE(0);
 	irq = IRQ_CHAINED_GPIOE(0);
 	IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq);
 	IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq);
-	h720x_gpio_handler(mask, irq, desc, regs);
+	h720x_gpio_handler(mask, irq, desc);
 }
 }
 #endif
 #endif
 
 

+ 2 - 2
arch/arm/mach-h720x/cpu-h7201.c

@@ -27,12 +27,12 @@
  * Timer interrupt handler
  * Timer interrupt handler
  */
  */
 static irqreturn_t
 static irqreturn_t
-h7201_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+h7201_timer_interrupt(int irq, void *dev_id)
 {
 {
 	write_seqlock(&xtime_lock);
 	write_seqlock(&xtime_lock);
 
 
 	CPU_REG (TIMER_VIRT, TIMER_TOPSTAT);
 	CPU_REG (TIMER_VIRT, TIMER_TOPSTAT);
-	timer_tick(regs);
+	timer_tick();
 
 
 	write_sequnlock(&xtime_lock);
 	write_sequnlock(&xtime_lock);
 
 

+ 5 - 6
arch/arm/mach-h720x/cpu-h7202.c

@@ -106,8 +106,7 @@ static struct platform_device *devices[] __initdata = {
  * we have to handle all timer interrupts in one place.
  * we have to handle all timer interrupts in one place.
  */
  */
 static void
 static void
-h7202_timerx_demux_handler(unsigned int irq_unused, struct irqdesc *desc,
-			struct pt_regs *regs)
+h7202_timerx_demux_handler(unsigned int irq_unused, struct irqdesc *desc)
 {
 {
 	unsigned int mask, irq;
 	unsigned int mask, irq;
 
 
@@ -115,7 +114,7 @@ h7202_timerx_demux_handler(unsigned int irq_unused, struct irqdesc *desc,
 
 
 	if ( mask & TSTAT_T0INT ) {
 	if ( mask & TSTAT_T0INT ) {
 		write_seqlock(&xtime_lock);
 		write_seqlock(&xtime_lock);
-		timer_tick(regs);
+		timer_tick();
 		write_sequnlock(&xtime_lock);
 		write_sequnlock(&xtime_lock);
 		if( mask == TSTAT_T0INT )
 		if( mask == TSTAT_T0INT )
 			return;
 			return;
@@ -126,7 +125,7 @@ h7202_timerx_demux_handler(unsigned int irq_unused, struct irqdesc *desc,
 	desc = irq_desc + irq;
 	desc = irq_desc + irq;
 	while (mask) {
 	while (mask) {
 		if (mask & 1)
 		if (mask & 1)
-			desc_handle_irq(irq, desc, regs);
+			desc_handle_irq(irq, desc);
 		irq++;
 		irq++;
 		desc++;
 		desc++;
 		mask >>= 1;
 		mask >>= 1;
@@ -137,9 +136,9 @@ h7202_timerx_demux_handler(unsigned int irq_unused, struct irqdesc *desc,
  * Timer interrupt handler
  * Timer interrupt handler
  */
  */
 static irqreturn_t
 static irqreturn_t
-h7202_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+h7202_timer_interrupt(int irq, void *dev_id)
 {
 {
-	h7202_timerx_demux_handler(0, NULL, regs);
+	h7202_timerx_demux_handler(0, NULL);
 	return IRQ_HANDLED;
 	return IRQ_HANDLED;
 }
 }
 
 

+ 6 - 6
arch/arm/mach-imx/dma.c

@@ -279,8 +279,8 @@ imx_dma_setup_sg(imx_dmach_t dma_ch,
  */
  */
 int
 int
 imx_dma_setup_handlers(imx_dmach_t dma_ch,
 imx_dma_setup_handlers(imx_dmach_t dma_ch,
-		       void (*irq_handler) (int, void *, struct pt_regs *),
-		       void (*err_handler) (int, void *, struct pt_regs *, int),
+		       void (*irq_handler) (int, void *),
+		       void (*err_handler) (int, void *, int),
 		       void *data)
 		       void *data)
 {
 {
 	struct imx_dma_channel *imxdma = &imx_dma_channels[dma_ch];
 	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,
 	return -ENODEV;
 	return -ENODEV;
 }
 }
 
 
-static irqreturn_t dma_err_handler(int irq, void *dev_id, struct pt_regs *regs)
+static irqreturn_t dma_err_handler(int irq, void *dev_id)
 {
 {
 	int i, disr = DISR;
 	int i, disr = DISR;
 	struct imx_dma_channel *channel;
 	struct imx_dma_channel *channel;
@@ -500,7 +500,7 @@ static irqreturn_t dma_err_handler(int irq, void *dev_id, struct pt_regs *regs)
 		/*imx_dma_channels[i].sg = NULL;*/
 		/*imx_dma_channels[i].sg = NULL;*/
 
 
 		if (channel->name && channel->err_handler) {
 		if (channel->name && channel->err_handler) {
-			channel->err_handler(i, channel->data, regs, errcode);
+			channel->err_handler(i, channel->data, errcode);
 			continue;
 			continue;
 		}
 		}
 
 
@@ -517,7 +517,7 @@ static irqreturn_t dma_err_handler(int irq, void *dev_id, struct pt_regs *regs)
 	return IRQ_HANDLED;
 	return IRQ_HANDLED;
 }
 }
 
 
-static irqreturn_t dma_irq_handler(int irq, void *dev_id, struct pt_regs *regs)
+static irqreturn_t dma_irq_handler(int irq, void *dev_id)
 {
 {
 	int i, disr = DISR;
 	int i, disr = DISR;
 
 
@@ -536,7 +536,7 @@ static irqreturn_t dma_irq_handler(int irq, void *dev_id, struct pt_regs *regs)
 				} else {
 				} else {
 					if (channel->irq_handler)
 					if (channel->irq_handler)
 						channel->irq_handler(i,
 						channel->irq_handler(i,
-							channel->data, regs);
+							channel->data);
 				}
 				}
 			} else {
 			} else {
 				/*
 				/*

+ 10 - 14
arch/arm/mach-imx/irq.c

@@ -146,13 +146,13 @@ imx_gpio_unmask_irq(unsigned int irq)
 
 
 static void
 static void
 imx_gpio_handler(unsigned int mask, unsigned int irq,
 imx_gpio_handler(unsigned int mask, unsigned int irq,
-                 struct irqdesc *desc, struct pt_regs *regs)
+                 struct irqdesc *desc)
 {
 {
 	desc = irq_desc + irq;
 	desc = irq_desc + irq;
 	while (mask) {
 	while (mask) {
 		if (mask & 1) {
 		if (mask & 1) {
 			DEBUG_IRQ("handling irq %d\n", irq);
 			DEBUG_IRQ("handling irq %d\n", irq);
-			desc_handle_irq(irq, desc, regs);
+			desc_handle_irq(irq, desc);
 		}
 		}
 		irq++;
 		irq++;
 		desc++;
 		desc++;
@@ -161,47 +161,43 @@ imx_gpio_handler(unsigned int mask, unsigned int irq,
 }
 }
 
 
 static void
 static void
-imx_gpioa_demux_handler(unsigned int irq_unused, struct irqdesc *desc,
-			struct pt_regs *regs)
+imx_gpioa_demux_handler(unsigned int irq_unused, struct irqdesc *desc)
 {
 {
 	unsigned int mask, irq;
 	unsigned int mask, irq;
 
 
 	mask = ISR(0);
 	mask = ISR(0);
 	irq = IRQ_GPIOA(0);
 	irq = IRQ_GPIOA(0);
-	imx_gpio_handler(mask, irq, desc, regs);
+	imx_gpio_handler(mask, irq, desc);
 }
 }
 
 
 static void
 static void
-imx_gpiob_demux_handler(unsigned int irq_unused, struct irqdesc *desc,
-			struct pt_regs *regs)
+imx_gpiob_demux_handler(unsigned int irq_unused, struct irqdesc *desc)
 {
 {
 	unsigned int mask, irq;
 	unsigned int mask, irq;
 
 
 	mask = ISR(1);
 	mask = ISR(1);
 	irq = IRQ_GPIOB(0);
 	irq = IRQ_GPIOB(0);
-	imx_gpio_handler(mask, irq, desc, regs);
+	imx_gpio_handler(mask, irq, desc);
 }
 }
 
 
 static void
 static void
-imx_gpioc_demux_handler(unsigned int irq_unused, struct irqdesc *desc,
-			struct pt_regs *regs)
+imx_gpioc_demux_handler(unsigned int irq_unused, struct irqdesc *desc)
 {
 {
 	unsigned int mask, irq;
 	unsigned int mask, irq;
 
 
 	mask = ISR(2);
 	mask = ISR(2);
 	irq = IRQ_GPIOC(0);
 	irq = IRQ_GPIOC(0);
-	imx_gpio_handler(mask, irq, desc, regs);
+	imx_gpio_handler(mask, irq, desc);
 }
 }
 
 
 static void
 static void
-imx_gpiod_demux_handler(unsigned int irq_unused, struct irqdesc *desc,
-			struct pt_regs *regs)
+imx_gpiod_demux_handler(unsigned int irq_unused, struct irqdesc *desc)
 {
 {
 	unsigned int mask, irq;
 	unsigned int mask, irq;
 
 
 	mask = ISR(3);
 	mask = ISR(3);
 	irq = IRQ_GPIOD(0);
 	irq = IRQ_GPIOD(0);
-	imx_gpio_handler(mask, irq, desc, regs);
+	imx_gpio_handler(mask, irq, desc);
 }
 }
 
 
 static struct irq_chip imx_internal_chip = {
 static struct irq_chip imx_internal_chip = {

+ 2 - 2
arch/arm/mach-imx/time.c

@@ -56,7 +56,7 @@ static unsigned long imx_gettimeoffset(void)
  * IRQ handler for the timer
  * IRQ handler for the timer
  */
  */
 static irqreturn_t
 static irqreturn_t
-imx_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+imx_timer_interrupt(int irq, void *dev_id)
 {
 {
 	write_seqlock(&xtime_lock);
 	write_seqlock(&xtime_lock);
 
 
@@ -64,7 +64,7 @@ imx_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
 	if (IMX_TSTAT(TIMER_BASE))
 	if (IMX_TSTAT(TIMER_BASE))
 		IMX_TSTAT(TIMER_BASE) = 0;
 		IMX_TSTAT(TIMER_BASE) = 0;
 
 
-	timer_tick(regs);
+	timer_tick();
 	write_sequnlock(&xtime_lock);
 	write_sequnlock(&xtime_lock);
 
 
 	return IRQ_HANDLED;
 	return IRQ_HANDLED;

+ 3 - 3
arch/arm/mach-integrator/core.c

@@ -248,7 +248,7 @@ unsigned long integrator_gettimeoffset(void)
  * IRQ handler for the timer
  * IRQ handler for the timer
  */
  */
 static irqreturn_t
 static irqreturn_t
-integrator_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+integrator_timer_interrupt(int irq, void *dev_id)
 {
 {
 	write_seqlock(&xtime_lock);
 	write_seqlock(&xtime_lock);
 
 
@@ -262,7 +262,7 @@ integrator_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
 	 * primary CPU
 	 * primary CPU
 	 */
 	 */
 	if (hard_smp_processor_id() == 0) {
 	if (hard_smp_processor_id() == 0) {
-		timer_tick(regs);
+		timer_tick();
 #ifdef CONFIG_SMP
 #ifdef CONFIG_SMP
 		smp_send_timer();
 		smp_send_timer();
 #endif
 #endif
@@ -272,7 +272,7 @@ integrator_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
 	/*
 	/*
 	 * this is the ARM equivalent of the APIC timer interrupt
 	 * this is the ARM equivalent of the APIC timer interrupt
 	 */
 	 */
-	update_process_times(user_mode(regs));
+	update_process_times(user_mode(get_irq_regs()));
 #endif /* CONFIG_SMP */
 #endif /* CONFIG_SMP */
 
 
 	write_sequnlock(&xtime_lock);
 	write_sequnlock(&xtime_lock);

+ 3 - 3
arch/arm/mach-integrator/integrator_cp.c

@@ -202,12 +202,12 @@ static struct irq_chip sic_chip = {
 };
 };
 
 
 static void
 static void
-sic_handle_irq(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs)
+sic_handle_irq(unsigned int irq, struct irqdesc *desc)
 {
 {
 	unsigned long status = sic_readl(INTCP_VA_SIC_BASE + IRQ_STATUS);
 	unsigned long status = sic_readl(INTCP_VA_SIC_BASE + IRQ_STATUS);
 
 
 	if (status == 0) {
 	if (status == 0) {
-		do_bad_IRQ(irq, desc, regs);
+		do_bad_IRQ(irq, desc);
 		return;
 		return;
 	}
 	}
 
 
@@ -218,7 +218,7 @@ sic_handle_irq(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs)
 		irq += IRQ_SIC_START;
 		irq += IRQ_SIC_START;
 
 
 		desc = irq_desc + irq;
 		desc = irq_desc + irq;
-		desc_handle_irq(irq, desc, regs);
+		desc_handle_irq(irq, desc);
 	} while (status);
 	} while (status);
 }
 }
 
 

+ 2 - 1
arch/arm/mach-integrator/pci_v3.c

@@ -440,9 +440,10 @@ v3_pci_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
 	return 1;
 	return 1;
 }
 }
 
 
-static irqreturn_t v3_irq(int irq, void *devid, struct pt_regs *regs)
+static irqreturn_t v3_irq(int irq, void *devid)
 {
 {
 #ifdef CONFIG_DEBUG_LL
 #ifdef CONFIG_DEBUG_LL
+	struct pt_regs *regs = get_irq_regs();
 	unsigned long pc = instruction_pointer(regs);
 	unsigned long pc = instruction_pointer(regs);
 	unsigned long instr = *(unsigned long *)pc;
 	unsigned long instr = *(unsigned long *)pc;
 	char buf[128];
 	char buf[128];

+ 1 - 2
arch/arm/mach-integrator/time.c

@@ -96,8 +96,7 @@ static struct rtc_ops rtc_ops = {
 	.set_alarm	= integrator_rtc_set_alarm,
 	.set_alarm	= integrator_rtc_set_alarm,
 };
 };
 
 
-static irqreturn_t arm_rtc_interrupt(int irq, void *dev_id,
-				     struct pt_regs *regs)
+static irqreturn_t arm_rtc_interrupt(int irq, void *dev_id)
 {
 {
 	writel(0, rtc_base + RTC_EOI);
 	writel(0, rtc_base + RTC_EOI);
 	return IRQ_HANDLED;
 	return IRQ_HANDLED;

+ 6 - 6
arch/arm/mach-ixp2000/core.c

@@ -204,7 +204,7 @@ unsigned long ixp2000_gettimeoffset (void)
 	return offset / ticks_per_usec;
 	return offset / ticks_per_usec;
 }
 }
 
 
-static int ixp2000_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+static int ixp2000_timer_interrupt(int irq, void *dev_id)
 {
 {
 	write_seqlock(&xtime_lock);
 	write_seqlock(&xtime_lock);
 
 
@@ -213,7 +213,7 @@ static int ixp2000_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
 
 
 	while ((signed long)(next_jiffy_time - *missing_jiffy_timer_csr)
 	while ((signed long)(next_jiffy_time - *missing_jiffy_timer_csr)
 							>= ticks_per_jiffy) {
 							>= ticks_per_jiffy) {
-		timer_tick(regs);
+		timer_tick();
 		next_jiffy_time -= ticks_per_jiffy;
 		next_jiffy_time -= ticks_per_jiffy;
 	}
 	}
 
 
@@ -308,7 +308,7 @@ EXPORT_SYMBOL(gpio_line_config);
 /*************************************************************************
 /*************************************************************************
  * IRQ handling IXP2000
  * IRQ handling IXP2000
  *************************************************************************/
  *************************************************************************/
-static void ixp2000_GPIO_irq_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs)
+static void ixp2000_GPIO_irq_handler(unsigned int irq, struct irqdesc *desc)
 {                               
 {                               
 	int i;
 	int i;
 	unsigned long status = *IXP2000_GPIO_INST;
 	unsigned long status = *IXP2000_GPIO_INST;
@@ -316,7 +316,7 @@ static void ixp2000_GPIO_irq_handler(unsigned int irq, struct irqdesc *desc, str
 	for (i = 0; i <= 7; i++) {
 	for (i = 0; i <= 7; i++) {
 		if (status & (1<<i)) {
 		if (status & (1<<i)) {
 			desc = irq_desc + i + IRQ_IXP2000_GPIO0;
 			desc = irq_desc + i + IRQ_IXP2000_GPIO0;
-			desc_handle_irq(i + IRQ_IXP2000_GPIO0, desc, regs);
+			desc_handle_irq(i + IRQ_IXP2000_GPIO0, desc);
 		}
 		}
 	}
 	}
 }
 }
@@ -401,7 +401,7 @@ static void ixp2000_pci_irq_unmask(unsigned int irq)
 /*
 /*
  * Error interrupts. These are used extensively by the microengine drivers
  * Error interrupts. These are used extensively by the microengine drivers
  */
  */
-static void ixp2000_err_irq_handler(unsigned int irq, struct irqdesc *desc,  struct pt_regs *regs)
+static void ixp2000_err_irq_handler(unsigned int irq, struct irqdesc *desc)
 {
 {
 	int i;
 	int i;
 	unsigned long status = *IXP2000_IRQ_ERR_STATUS;
 	unsigned long status = *IXP2000_IRQ_ERR_STATUS;
@@ -409,7 +409,7 @@ static void ixp2000_err_irq_handler(unsigned int irq, struct irqdesc *desc,  str
 	for(i = 31; i >= 0; i--) {
 	for(i = 31; i >= 0; i--) {
 		if(status & (1 << i)) {
 		if(status & (1 << i)) {
 			desc = irq_desc + IRQ_IXP2000_DRAM0_MIN_ERR + i;
 			desc = irq_desc + IRQ_IXP2000_DRAM0_MIN_ERR + i;
-			desc_handle_irq(IRQ_IXP2000_DRAM0_MIN_ERR + i, desc, regs);
+			desc_handle_irq(IRQ_IXP2000_DRAM0_MIN_ERR + i, desc);
 		}
 		}
 	}
 	}
 }
 }

+ 2 - 2
arch/arm/mach-ixp2000/ixdp2x00.c

@@ -106,7 +106,7 @@ static void ixdp2x00_irq_unmask(unsigned int irq)
 		ixp2000_release_slowport(&old_cfg);
 		ixp2000_release_slowport(&old_cfg);
 }
 }
 
 
-static void ixdp2x00_irq_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs)
+static void ixdp2x00_irq_handler(unsigned int irq, struct irqdesc *desc)
 {
 {
         volatile u32 ex_interrupt = 0;
         volatile u32 ex_interrupt = 0;
 	static struct slowport_cfg old_cfg;
 	static struct slowport_cfg old_cfg;
@@ -132,7 +132,7 @@ static void ixdp2x00_irq_handler(unsigned int irq, struct irqdesc *desc, struct
 			struct irqdesc *cpld_desc;
 			struct irqdesc *cpld_desc;
 			int cpld_irq = IXP2000_BOARD_IRQ(0) + i;
 			int cpld_irq = IXP2000_BOARD_IRQ(0) + i;
 			cpld_desc = irq_desc + cpld_irq;
 			cpld_desc = irq_desc + cpld_irq;
-			desc_handle_irq(cpld_irq, cpld_desc, regs);
+			desc_handle_irq(cpld_irq, cpld_desc);
 		}
 		}
 	}
 	}
 
 

+ 2 - 2
arch/arm/mach-ixp2000/ixdp2x01.c

@@ -63,7 +63,7 @@ static void ixdp2x01_irq_unmask(unsigned int irq)
 
 
 static u32 valid_irq_mask;
 static u32 valid_irq_mask;
 
 
-static void ixdp2x01_irq_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs)
+static void ixdp2x01_irq_handler(unsigned int irq, struct irqdesc *desc)
 {
 {
 	u32 ex_interrupt;
 	u32 ex_interrupt;
 	int i;
 	int i;
@@ -82,7 +82,7 @@ static void ixdp2x01_irq_handler(unsigned int irq, struct irqdesc *desc, struct
 			struct irqdesc *cpld_desc;
 			struct irqdesc *cpld_desc;
 			int cpld_irq = IXP2000_BOARD_IRQ(0) + i;
 			int cpld_irq = IXP2000_BOARD_IRQ(0) + i;
 			cpld_desc = irq_desc + cpld_irq;
 			cpld_desc = irq_desc + cpld_irq;
-			desc_handle_irq(cpld_irq, cpld_desc, regs);
+			desc_handle_irq(cpld_irq, cpld_desc);
 		}
 		}
 	}
 	}
 
 

+ 4 - 4
arch/arm/mach-ixp23xx/core.c

@@ -251,7 +251,7 @@ static void ixp23xx_pci_irq_unmask(unsigned int irq)
 /*
 /*
  * TODO: Should this just be done at ASM level?
  * TODO: Should this just be done at ASM level?
  */
  */
-static void pci_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs)
+static void pci_handler(unsigned int irq, struct irqdesc *desc)
 {
 {
 	u32 pci_interrupt;
 	u32 pci_interrupt;
 	unsigned int irqno;
 	unsigned int irqno;
@@ -271,7 +271,7 @@ static void pci_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *
 	}
 	}
 
 
 	int_desc = irq_desc + irqno;
 	int_desc = irq_desc + irqno;
-	desc_handle_irq(irqno, int_desc, regs);
+	desc_handle_irq(irqno, int_desc);
 
 
 	desc->chip->unmask(irq);
 	desc->chip->unmask(irq);
 }
 }
@@ -348,12 +348,12 @@ ixp23xx_gettimeoffset(void)
 }
 }
 
 
 static irqreturn_t
 static irqreturn_t
-ixp23xx_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+ixp23xx_timer_interrupt(int irq, void *dev_id)
 {
 {
 	/* Clear Pending Interrupt by writing '1' to it */
 	/* Clear Pending Interrupt by writing '1' to it */
 	*IXP23XX_TIMER_STATUS = IXP23XX_TIMER1_INT_PEND;
 	*IXP23XX_TIMER_STATUS = IXP23XX_TIMER1_INT_PEND;
 	while ((signed long)(*IXP23XX_TIMER_CONT - next_jiffy_time) >= LATCH) {
 	while ((signed long)(*IXP23XX_TIMER_CONT - next_jiffy_time) >= LATCH) {
-		timer_tick(regs);
+		timer_tick();
 		next_jiffy_time += LATCH;
 		next_jiffy_time += LATCH;
 	}
 	}
 
 

+ 4 - 4
arch/arm/mach-ixp23xx/ixdp2351.c

@@ -60,7 +60,7 @@ static void ixdp2351_inta_unmask(unsigned int irq)
 	*IXDP2351_CPLD_INTA_MASK_CLR_REG = IXDP2351_INTA_IRQ_MASK(irq);
 	*IXDP2351_CPLD_INTA_MASK_CLR_REG = IXDP2351_INTA_IRQ_MASK(irq);
 }
 }
 
 
-static void ixdp2351_inta_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs)
+static void ixdp2351_inta_handler(unsigned int irq, struct irqdesc *desc)
 {
 {
 	u16 ex_interrupt =
 	u16 ex_interrupt =
 		*IXDP2351_CPLD_INTA_STAT_REG & IXDP2351_INTA_IRQ_VALID;
 		*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
 			int cpld_irq =
 			int cpld_irq =
 				IXP23XX_MACH_IRQ(IXDP2351_INTA_IRQ_BASE + i);
 				IXP23XX_MACH_IRQ(IXDP2351_INTA_IRQ_BASE + i);
 			cpld_desc = irq_desc + cpld_irq;
 			cpld_desc = irq_desc + cpld_irq;
-			desc_handle_irq(cpld_irq, cpld_desc, regs);
+			desc_handle_irq(cpld_irq, cpld_desc);
 		}
 		}
 	}
 	}
 
 
@@ -97,7 +97,7 @@ static void ixdp2351_intb_unmask(unsigned int irq)
 	*IXDP2351_CPLD_INTB_MASK_CLR_REG = IXDP2351_INTB_IRQ_MASK(irq);
 	*IXDP2351_CPLD_INTB_MASK_CLR_REG = IXDP2351_INTB_IRQ_MASK(irq);
 }
 }
 
 
-static void ixdp2351_intb_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs)
+static void ixdp2351_intb_handler(unsigned int irq, struct irqdesc *desc)
 {
 {
 	u16 ex_interrupt =
 	u16 ex_interrupt =
 		*IXDP2351_CPLD_INTB_STAT_REG & IXDP2351_INTB_IRQ_VALID;
 		*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
 			int cpld_irq =
 			int cpld_irq =
 				IXP23XX_MACH_IRQ(IXDP2351_INTB_IRQ_BASE + i);
 				IXP23XX_MACH_IRQ(IXDP2351_INTB_IRQ_BASE + i);
 			cpld_desc = irq_desc + cpld_irq;
 			cpld_desc = irq_desc + cpld_irq;
-			desc_handle_irq(cpld_irq, cpld_desc, regs);
+			desc_handle_irq(cpld_irq, cpld_desc);
 		}
 		}
 	}
 	}
 
 

+ 2 - 2
arch/arm/mach-ixp4xx/common.c

@@ -256,7 +256,7 @@ static unsigned volatile last_jiffy_time;
 
 
 #define CLOCK_TICKS_PER_USEC	((CLOCK_TICK_RATE + USEC_PER_SEC/2) / USEC_PER_SEC)
 #define CLOCK_TICKS_PER_USEC	((CLOCK_TICK_RATE + USEC_PER_SEC/2) / USEC_PER_SEC)
 
 
-static irqreturn_t ixp4xx_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+static irqreturn_t ixp4xx_timer_interrupt(int irq, void *dev_id)
 {
 {
 	write_seqlock(&xtime_lock);
 	write_seqlock(&xtime_lock);
 
 
@@ -267,7 +267,7 @@ static irqreturn_t ixp4xx_timer_interrupt(int irq, void *dev_id, struct pt_regs
 	 * Catch up with the real idea of time
 	 * Catch up with the real idea of time
 	 */
 	 */
 	while ((signed long)(*IXP4XX_OSTS - last_jiffy_time) >= LATCH) {
 	while ((signed long)(*IXP4XX_OSTS - last_jiffy_time) >= LATCH) {
-		timer_tick(regs);
+		timer_tick();
 		last_jiffy_time += LATCH;
 		last_jiffy_time += LATCH;
 	}
 	}
 
 

+ 1 - 1
arch/arm/mach-ixp4xx/nas100d-power.c

@@ -24,7 +24,7 @@
 
 
 #include <asm/mach-types.h>
 #include <asm/mach-types.h>
 
 
-static irqreturn_t nas100d_reset_handler(int irq, void *dev_id, struct pt_regs *regs)
+static irqreturn_t nas100d_reset_handler(int irq, void *dev_id)
 {
 {
 	/* Signal init to do the ctrlaltdel action, this will bypass init if
 	/* Signal init to do the ctrlaltdel action, this will bypass init if
 	 * it hasn't started and do a kernel_restart.
 	 * it hasn't started and do a kernel_restart.

+ 2 - 2
arch/arm/mach-ixp4xx/nslu2-power.c

@@ -25,7 +25,7 @@
 
 
 #include <asm/mach-types.h>
 #include <asm/mach-types.h>
 
 
-static irqreturn_t nslu2_power_handler(int irq, void *dev_id, struct pt_regs *regs)
+static irqreturn_t nslu2_power_handler(int irq, void *dev_id)
 {
 {
 	/* Signal init to do the ctrlaltdel action, this will bypass init if
 	/* Signal init to do the ctrlaltdel action, this will bypass init if
 	 * it hasn't started and do a kernel_restart.
 	 * 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
 	return IRQ_HANDLED;
 	return IRQ_HANDLED;
 }
 }
 
 
-static irqreturn_t nslu2_reset_handler(int irq, void *dev_id, struct pt_regs *regs)
+static irqreturn_t nslu2_reset_handler(int irq, void *dev_id)
 {
 {
 	/* This is the paper-clip reset, it shuts the machine down directly.
 	/* This is the paper-clip reset, it shuts the machine down directly.
 	 */
 	 */

+ 2 - 3
arch/arm/mach-lh7a40x/arch-kev7a400.c

@@ -71,14 +71,13 @@ static struct irq_chip kev7a400_cpld_chip = {
 };
 };
 
 
 
 
-static void kev7a400_cpld_handler (unsigned int irq, struct irqdesc *desc,
-				  struct pt_regs *regs)
+static void kev7a400_cpld_handler (unsigned int irq, struct irqdesc *desc)
 {
 {
 	u32 mask = CPLD_LATCHED_INTS;
 	u32 mask = CPLD_LATCHED_INTS;
 	irq = IRQ_KEV7A400_CPLD;
 	irq = IRQ_KEV7A400_CPLD;
 	for (; mask; mask >>= 1, ++irq) {
 	for (; mask; mask >>= 1, ++irq) {
 		if (mask & 1)
 		if (mask & 1)
-			desc[irq].handle (irq, desc, regs);
+			desc[irq].handle (irq, desc);
 	}
 	}
 }
 }
 
 

+ 1 - 2
arch/arm/mach-lh7a40x/arch-lpd7a40x.c

@@ -207,8 +207,7 @@ static struct irq_chip lpd7a40x_cpld_chip = {
 	.unmask	= lh7a40x_unmask_cpld_irq,
 	.unmask	= lh7a40x_unmask_cpld_irq,
 };
 };
 
 
-static void lpd7a40x_cpld_handler (unsigned int irq, struct irqdesc *desc,
-				  struct pt_regs *regs)
+static void lpd7a40x_cpld_handler (unsigned int irq, struct irqdesc *desc)
 {
 {
 	unsigned int mask = CPLD_INTERRUPTS;
 	unsigned int mask = CPLD_INTERRUPTS;
 
 

+ 2 - 3
arch/arm/mach-lh7a40x/irq-kev7a400.c

@@ -51,14 +51,13 @@ irq_chip lh7a400_cpld_chip = {
 };
 };
 
 
 static void
 static void
-lh7a400_cpld_handler (unsigned int irq, struct irqdesc *desc,
-		      struct pt_regs *regs)
+lh7a400_cpld_handler (unsigned int irq, struct irqdesc *desc)
 {
 {
 	u32 mask = CPLD_LATCHED_INTS;
 	u32 mask = CPLD_LATCHED_INTS;
 	irq = IRQ_KEV_7A400_CPLD;
 	irq = IRQ_KEV_7A400_CPLD;
 	for (; mask; mask >>= 1, ++irq) {
 	for (; mask; mask >>= 1, ++irq) {
 		if (mask & 1)
 		if (mask & 1)
-			desc[irq].handle (irq, desc, regs);
+			desc[irq].handle (irq, desc);
 	}
 	}
 }
 }
 
 

+ 1 - 2
arch/arm/mach-lh7a40x/irq-lpd7a40x.c

@@ -57,8 +57,7 @@ static struct irq_chip lh7a40x_cpld_chip = {
 	.unmask	= lh7a40x_unmask_cpld_irq,
 	.unmask	= lh7a40x_unmask_cpld_irq,
 };
 };
 
 
-static void lh7a40x_cpld_handler (unsigned int irq, struct irqdesc *desc,
-				  struct pt_regs *regs)
+static void lh7a40x_cpld_handler (unsigned int irq, struct irqdesc *desc)
 {
 {
 	unsigned int mask = CPLD_INTERRUPTS;
 	unsigned int mask = CPLD_INTERRUPTS;
 
 

+ 2 - 2
arch/arm/mach-lh7a40x/time.c

@@ -39,12 +39,12 @@
 #endif
 #endif
 
 
 static irqreturn_t
 static irqreturn_t
-lh7a40x_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+lh7a40x_timer_interrupt(int irq, void *dev_id)
 {
 {
 	write_seqlock(&xtime_lock);
 	write_seqlock(&xtime_lock);
 
 
 	TIMER_EOI = 0;
 	TIMER_EOI = 0;
-	timer_tick(regs);
+	timer_tick();
 
 
 	write_sequnlock(&xtime_lock);
 	write_sequnlock(&xtime_lock);
 
 

+ 2 - 3
arch/arm/mach-netx/generic.c

@@ -69,8 +69,7 @@ static struct platform_device *devices[] __initdata = {
 #endif
 #endif
 
 
 static void
 static void
-netx_hif_demux_handler(unsigned int irq_unused, struct irqdesc *desc,
-			struct pt_regs *regs)
+netx_hif_demux_handler(unsigned int irq_unused, struct irqdesc *desc)
 {
 {
 	unsigned int irq = NETX_IRQ_HIF_CHAINED(0);
 	unsigned int irq = NETX_IRQ_HIF_CHAINED(0);
 	unsigned int stat;
 	unsigned int stat;
@@ -83,7 +82,7 @@ netx_hif_demux_handler(unsigned int irq_unused, struct irqdesc *desc,
 	while (stat) {
 	while (stat) {
 		if (stat & 1) {
 		if (stat & 1) {
 			DEBUG_IRQ("handling irq %d\n", irq);
 			DEBUG_IRQ("handling irq %d\n", irq);
-			desc_handle_irq(irq, desc, regs);
+			desc_handle_irq(irq, desc);
 		}
 		}
 		irq++;
 		irq++;
 		desc++;
 		desc++;

+ 2 - 2
arch/arm/mach-netx/time.c

@@ -38,11 +38,11 @@ static unsigned long netx_gettimeoffset(void)
  * IRQ handler for the timer
  * IRQ handler for the timer
  */
  */
 static irqreturn_t
 static irqreturn_t
-netx_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+netx_timer_interrupt(int irq, void *dev_id)
 {
 {
 	write_seqlock(&xtime_lock);
 	write_seqlock(&xtime_lock);
 
 
-	timer_tick(regs);
+	timer_tick();
 	write_sequnlock(&xtime_lock);
 	write_sequnlock(&xtime_lock);
 
 
 	/* acknowledge interrupt */
 	/* acknowledge interrupt */

+ 1 - 1
arch/arm/mach-omap1/board-osk.c

@@ -327,7 +327,7 @@ static struct spi_board_info __initdata mistral_boardinfo[] = { {
 
 
 #ifdef	CONFIG_PM
 #ifdef	CONFIG_PM
 static irqreturn_t
 static irqreturn_t
-osk_mistral_wake_interrupt(int irq, void *ignored, struct pt_regs *regs)
+osk_mistral_wake_interrupt(int irq, void *ignored)
 {
 {
 	return IRQ_HANDLED;
 	return IRQ_HANDLED;
 }
 }

+ 2 - 3
arch/arm/mach-omap1/fpga.c

@@ -84,8 +84,7 @@ static void fpga_mask_ack_irq(unsigned int irq)
 	fpga_ack_irq(irq);
 	fpga_ack_irq(irq);
 }
 }
 
 
-void innovator_fpga_IRQ_demux(unsigned int irq, struct irqdesc *desc,
-			      struct pt_regs *regs)
+void innovator_fpga_IRQ_demux(unsigned int irq, struct irqdesc *desc)
 {
 {
 	struct irqdesc *d;
 	struct irqdesc *d;
 	u32 stat;
 	u32 stat;
@@ -101,7 +100,7 @@ void innovator_fpga_IRQ_demux(unsigned int irq, struct irqdesc *desc,
 	     fpga_irq++, stat >>= 1) {
 	     fpga_irq++, stat >>= 1) {
 		if (stat & 1) {
 		if (stat & 1) {
 			d = irq_desc + fpga_irq;
 			d = irq_desc + fpga_irq;
-			desc_handle_irq(fpga_irq, d, regs);
+			desc_handle_irq(fpga_irq, d);
 		}
 		}
 	}
 	}
 }
 }

+ 1 - 2
arch/arm/mach-omap1/pm.c

@@ -682,8 +682,7 @@ static int omap_pm_finish(suspend_state_t state)
 }
 }
 
 
 
 
-static irqreturn_t  omap_wakeup_interrupt(int  irq, void *  dev,
-				     struct pt_regs *  regs)
+static irqreturn_t  omap_wakeup_interrupt(int irq, void *dev)
 {
 {
 	return IRQ_HANDLED;
 	return IRQ_HANDLED;
 }
 }

+ 1 - 2
arch/arm/mach-omap1/serial.c

@@ -204,8 +204,7 @@ void __init omap_serial_init(void)
 
 
 #ifdef CONFIG_OMAP_SERIAL_WAKE
 #ifdef CONFIG_OMAP_SERIAL_WAKE
 
 
-static irqreturn_t omap_serial_wake_interrupt(int irq, void *dev_id,
-					      struct pt_regs *regs)
+static irqreturn_t omap_serial_wake_interrupt(int irq, void *dev_id)
 {
 {
 	/* Need to do something with serial port right after wake-up? */
 	/* Need to do something with serial port right after wake-up? */
 	return IRQ_HANDLED;
 	return IRQ_HANDLED;

+ 3 - 5
arch/arm/mach-omap1/time.c

@@ -160,8 +160,7 @@ static unsigned long omap_mpu_timer_gettimeoffset(void)
  * Latency during the interrupt is calculated using timer1.
  * Latency during the interrupt is calculated using timer1.
  * Both timer0 and timer1 are counting at 6MHz (P2 6.5MHz).
  * Both timer0 and timer1 are counting at 6MHz (P2 6.5MHz).
  */
  */
-static irqreturn_t omap_mpu_timer_interrupt(int irq, void *dev_id,
-					struct pt_regs *regs)
+static irqreturn_t omap_mpu_timer_interrupt(int irq, void *dev_id)
 {
 {
 	unsigned long now, latency;
 	unsigned long now, latency;
 
 
@@ -169,7 +168,7 @@ static irqreturn_t omap_mpu_timer_interrupt(int irq, void *dev_id,
 	now = 0 - omap_mpu_timer_read(0);
 	now = 0 - omap_mpu_timer_read(0);
 	latency = MPU_TICKS_PER_SEC / HZ - omap_mpu_timer_read(1);
 	latency = MPU_TICKS_PER_SEC / HZ - omap_mpu_timer_read(1);
 	omap_mpu_timer_last = now - latency;
 	omap_mpu_timer_last = now - latency;
-	timer_tick(regs);
+	timer_tick();
 	write_sequnlock(&xtime_lock);
 	write_sequnlock(&xtime_lock);
 
 
 	return IRQ_HANDLED;
 	return IRQ_HANDLED;
@@ -182,8 +181,7 @@ static struct irqaction omap_mpu_timer_irq = {
 };
 };
 
 
 static unsigned long omap_mpu_timer1_overflows;
 static unsigned long omap_mpu_timer1_overflows;
-static irqreturn_t omap_mpu_timer1_interrupt(int irq, void *dev_id,
-					     struct pt_regs *regs)
+static irqreturn_t omap_mpu_timer1_interrupt(int irq, void *dev_id)
 {
 {
 	omap_mpu_timer1_overflows++;
 	omap_mpu_timer1_overflows++;
 	return IRQ_HANDLED;
 	return IRQ_HANDLED;

+ 1 - 1
arch/arm/mach-omap2/board-apollon.c

@@ -203,7 +203,7 @@ static void __init apollon_led_init(void)
 	omap_set_gpio_dataout(LED2_GPIO15, 0);
 	omap_set_gpio_dataout(LED2_GPIO15, 0);
 }
 }
 
 
-static irqreturn_t apollon_sw_interrupt(int irq, void *ignored, struct pt_regs *regs)
+static irqreturn_t apollon_sw_interrupt(int irq, void *ignored)
 {
 {
 	static unsigned int led0, led1, led2;
 	static unsigned int led0, led1, led2;
 
 

+ 2 - 3
arch/arm/mach-omap2/timer-gp.c

@@ -37,13 +37,12 @@ static inline void omap2_gp_timer_start(unsigned long load_val)
 	omap_dm_timer_start(gptimer);
 	omap_dm_timer_start(gptimer);
 }
 }
 
 
-static irqreturn_t omap2_gp_timer_interrupt(int irq, void *dev_id,
-					    struct pt_regs *regs)
+static irqreturn_t omap2_gp_timer_interrupt(int irq, void *dev_id)
 {
 {
 	write_seqlock(&xtime_lock);
 	write_seqlock(&xtime_lock);
 
 
 	omap_dm_timer_write_status(gptimer, OMAP_TIMER_INT_OVERFLOW);
 	omap_dm_timer_write_status(gptimer, OMAP_TIMER_INT_OVERFLOW);
-	timer_tick(regs);
+	timer_tick();
 
 
 	write_sequnlock(&xtime_lock);
 	write_sequnlock(&xtime_lock);
 
 

+ 4 - 6
arch/arm/mach-pnx4008/dma.c

@@ -32,7 +32,7 @@
 
 
 static struct dma_channel {
 static struct dma_channel {
 	char *name;
 	char *name;
-	void (*irq_handler) (int, int, void *, struct pt_regs *);
+	void (*irq_handler) (int, int, void *);
 	void *data;
 	void *data;
 	struct pnx4008_dma_ll *ll;
 	struct pnx4008_dma_ll *ll;
 	u32 ll_dma;
 	u32 ll_dma;
@@ -150,8 +150,7 @@ static inline void pnx4008_dma_unlock(void)
 #define VALID_CHANNEL(c)	(((c) >= 0) && ((c) < MAX_DMA_CHANNELS))
 #define VALID_CHANNEL(c)	(((c) >= 0) && ((c) < MAX_DMA_CHANNELS))
 
 
 int pnx4008_request_channel(char *name, int ch,
 int pnx4008_request_channel(char *name, int ch,
-			    void (*irq_handler) (int, int, void *,
-						 struct pt_regs *), void *data)
+			    void (*irq_handler) (int, int, void *), void *data)
 {
 {
 	int i, found = 0;
 	int i, found = 0;
 
 
@@ -1033,7 +1032,7 @@ int pnx4008_dma_ch_enabled(int ch)
 
 
 EXPORT_SYMBOL_GPL(pnx4008_dma_ch_enabled);
 EXPORT_SYMBOL_GPL(pnx4008_dma_ch_enabled);
 
 
-static irqreturn_t dma_irq_handler(int irq, void *dev_id, struct pt_regs *regs)
+static irqreturn_t dma_irq_handler(int irq, void *dev_id)
 {
 {
 	int i;
 	int i;
 	unsigned long dint = __raw_readl(DMAC_INT_STAT);
 	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)
 					cause |= DMA_ERR_INT;
 					cause |= DMA_ERR_INT;
 				if (tcint & i_bit)
 				if (tcint & i_bit)
 					cause |= DMA_TC_INT;
 					cause |= DMA_TC_INT;
-				channel->irq_handler(i, cause, channel->data,
-						     regs);
+				channel->irq_handler(i, cause, channel->data);
 			} else {
 			} else {
 				/*
 				/*
 				 * IRQ for an unregistered DMA channel
 				 * IRQ for an unregistered DMA channel

+ 2 - 3
arch/arm/mach-pnx4008/time.c

@@ -47,15 +47,14 @@ static unsigned long pnx4008_gettimeoffset(void)
 /*!
 /*!
  * IRQ handler for the timer
  * IRQ handler for the timer
  */
  */
-static irqreturn_t pnx4008_timer_interrupt(int irq, void *dev_id,
-					   struct pt_regs *regs)
+static irqreturn_t pnx4008_timer_interrupt(int irq, void *dev_id)
 {
 {
 	if (__raw_readl(HSTIM_INT) & MATCH0_INT) {
 	if (__raw_readl(HSTIM_INT) & MATCH0_INT) {
 
 
 		write_seqlock(&xtime_lock);
 		write_seqlock(&xtime_lock);
 
 
 		do {
 		do {
-			timer_tick(regs);
+			timer_tick();
 
 
 			/*
 			/*
 			 * this algorithm takes care of possible delay
 			 * this algorithm takes care of possible delay

+ 1 - 1
arch/arm/mach-pxa/corgi.c

@@ -212,7 +212,7 @@ static struct platform_device corgits_device = {
  */
  */
 static struct pxamci_platform_data corgi_mci_platform_data;
 static struct pxamci_platform_data corgi_mci_platform_data;
 
 
-static int corgi_mci_init(struct device *dev, irqreturn_t (*corgi_detect_int)(int, void *, struct pt_regs *), void *data)
+static int corgi_mci_init(struct device *dev, irq_handler_t corgi_detect_int, void *data)
 {
 {
 	int err;
 	int err;
 
 

+ 4 - 4
arch/arm/mach-pxa/dma.c

@@ -27,13 +27,13 @@
 
 
 static struct dma_channel {
 static struct dma_channel {
 	char *name;
 	char *name;
-	void (*irq_handler)(int, void *, struct pt_regs *);
+	void (*irq_handler)(int, void *);
 	void *data;
 	void *data;
 } dma_channels[PXA_DMA_CHANNELS];
 } dma_channels[PXA_DMA_CHANNELS];
 
 
 
 
 int pxa_request_dma (char *name, pxa_dma_prio prio,
 int pxa_request_dma (char *name, pxa_dma_prio prio,
-			 void (*irq_handler)(int, void *, struct pt_regs *),
+			 void (*irq_handler)(int, void *),
 		 	 void *data)
 		 	 void *data)
 {
 {
 	unsigned long flags;
 	unsigned long flags;
@@ -87,7 +87,7 @@ void pxa_free_dma (int dma_ch)
 	local_irq_restore(flags);
 	local_irq_restore(flags);
 }
 }
 
 
-static irqreturn_t dma_irq_handler(int irq, void *dev_id, struct pt_regs *regs)
+static irqreturn_t dma_irq_handler(int irq, void *dev_id)
 {
 {
 	int i, dint = DINT;
 	int i, dint = DINT;
 
 
@@ -95,7 +95,7 @@ static irqreturn_t dma_irq_handler(int irq, void *dev_id, struct pt_regs *regs)
 		if (dint & (1 << i)) {
 		if (dint & (1 << i)) {
 			struct dma_channel *channel = &dma_channels[i];
 			struct dma_channel *channel = &dma_channels[i];
 			if (channel->name && channel->irq_handler) {
 			if (channel->name && channel->irq_handler) {
-				channel->irq_handler(i, channel->data, regs);
+				channel->irq_handler(i, channel->data);
 			} else {
 			} else {
 				/*
 				/*
 				 * IRQ for an unregistered DMA channel:
 				 * IRQ for an unregistered DMA channel:

+ 1 - 1
arch/arm/mach-pxa/idp.c

@@ -125,7 +125,7 @@ static struct pxafb_mach_info sharp_lm8v31 = {
 	.pxafb_lcd_power = &idp_lcd_power
 	.pxafb_lcd_power = &idp_lcd_power
 };
 };
 
 
-static int idp_mci_init(struct device *dev, irqreturn_t (*idp_detect_int)(int, void *, struct pt_regs *), void *data)
+static int idp_mci_init(struct device *dev, irq_handler_t idp_detect_int, void *data)
 {
 {
 	/* setup GPIO for PXA25x MMC controller	*/
 	/* setup GPIO for PXA25x MMC controller	*/
 	pxa_gpio_mode(GPIO6_MMCCLK_MD);
 	pxa_gpio_mode(GPIO6_MMCCLK_MD);

+ 5 - 6
arch/arm/mach-pxa/irq.c

@@ -143,8 +143,7 @@ static struct irq_chip pxa_low_gpio_chip = {
  * Demux handler for GPIO>=2 edge detect interrupts
  * Demux handler for GPIO>=2 edge detect interrupts
  */
  */
 
 
-static void pxa_gpio_demux_handler(unsigned int irq, struct irqdesc *desc,
-				   struct pt_regs *regs)
+static void pxa_gpio_demux_handler(unsigned int irq, struct irqdesc *desc)
 {
 {
 	unsigned int mask;
 	unsigned int mask;
 	int loop;
 	int loop;
@@ -160,7 +159,7 @@ static void pxa_gpio_demux_handler(unsigned int irq, struct irqdesc *desc,
 			mask >>= 2;
 			mask >>= 2;
 			do {
 			do {
 				if (mask & 1)
 				if (mask & 1)
-					desc_handle_irq(irq, desc, regs);
+					desc_handle_irq(irq, desc);
 				irq++;
 				irq++;
 				desc++;
 				desc++;
 				mask >>= 1;
 				mask >>= 1;
@@ -175,7 +174,7 @@ static void pxa_gpio_demux_handler(unsigned int irq, struct irqdesc *desc,
 			desc = irq_desc + irq;
 			desc = irq_desc + irq;
 			do {
 			do {
 				if (mask & 1)
 				if (mask & 1)
-					desc_handle_irq(irq, desc, regs);
+					desc_handle_irq(irq, desc);
 				irq++;
 				irq++;
 				desc++;
 				desc++;
 				mask >>= 1;
 				mask >>= 1;
@@ -190,7 +189,7 @@ static void pxa_gpio_demux_handler(unsigned int irq, struct irqdesc *desc,
 			desc = irq_desc + irq;
 			desc = irq_desc + irq;
 			do {
 			do {
 				if (mask & 1)
 				if (mask & 1)
-					desc_handle_irq(irq, desc, regs);
+					desc_handle_irq(irq, desc);
 				irq++;
 				irq++;
 				desc++;
 				desc++;
 				mask >>= 1;
 				mask >>= 1;
@@ -206,7 +205,7 @@ static void pxa_gpio_demux_handler(unsigned int irq, struct irqdesc *desc,
 			desc = irq_desc + irq;
 			desc = irq_desc + irq;
 			do {
 			do {
 				if (mask & 1)
 				if (mask & 1)
-					desc_handle_irq(irq, desc, regs);
+					desc_handle_irq(irq, desc);
 				irq++;
 				irq++;
 				desc++;
 				desc++;
 				mask >>= 1;
 				mask >>= 1;

+ 2 - 3
arch/arm/mach-pxa/lpd270.c

@@ -75,8 +75,7 @@ static struct irq_chip lpd270_irq_chip = {
 	.unmask		= lpd270_unmask_irq,
 	.unmask		= lpd270_unmask_irq,
 };
 };
 
 
-static void lpd270_irq_handler(unsigned int irq, struct irqdesc *desc,
-				  struct pt_regs *regs)
+static void lpd270_irq_handler(unsigned int irq, struct irqdesc *desc)
 {
 {
 	unsigned long pending;
 	unsigned long pending;
 
 
@@ -86,7 +85,7 @@ static void lpd270_irq_handler(unsigned int irq, struct irqdesc *desc,
 		if (likely(pending)) {
 		if (likely(pending)) {
 			irq = LPD270_IRQ(0) + __ffs(pending);
 			irq = LPD270_IRQ(0) + __ffs(pending);
 			desc = irq_desc + irq;
 			desc = irq_desc + irq;
-			desc_handle_irq(irq, desc, regs);
+			desc_handle_irq(irq, desc);
 
 
 			pending = __raw_readw(LPD270_INT_STATUS) &
 			pending = __raw_readw(LPD270_INT_STATUS) &
 						lpd270_irq_enabled;
 						lpd270_irq_enabled;

+ 6 - 7
arch/arm/mach-pxa/lubbock.c

@@ -85,8 +85,7 @@ static struct irq_chip lubbock_irq_chip = {
 	.unmask		= lubbock_unmask_irq,
 	.unmask		= lubbock_unmask_irq,
 };
 };
 
 
-static void lubbock_irq_handler(unsigned int irq, struct irqdesc *desc,
-				struct pt_regs *regs)
+static void lubbock_irq_handler(unsigned int irq, struct irqdesc *desc)
 {
 {
 	unsigned long pending = LUB_IRQ_SET_CLR & lubbock_irq_enabled;
 	unsigned long pending = LUB_IRQ_SET_CLR & lubbock_irq_enabled;
 	do {
 	do {
@@ -94,7 +93,7 @@ static void lubbock_irq_handler(unsigned int irq, struct irqdesc *desc,
 		if (likely(pending)) {
 		if (likely(pending)) {
 			irq = LUBBOCK_IRQ(0) + __ffs(pending);
 			irq = LUBBOCK_IRQ(0) + __ffs(pending);
 			desc = irq_desc + irq;
 			desc = irq_desc + irq;
-			desc_handle_irq(irq, desc, regs);
+			desc_handle_irq(irq, desc);
 		}
 		}
 		pending = LUB_IRQ_SET_CLR & lubbock_irq_enabled;
 		pending = LUB_IRQ_SET_CLR & lubbock_irq_enabled;
 	} while (pending);
 	} while (pending);
@@ -379,7 +378,7 @@ static struct pxafb_mach_info sharp_lm8v31 = {
 #define	MMC_POLL_RATE		msecs_to_jiffies(1000)
 #define	MMC_POLL_RATE		msecs_to_jiffies(1000)
 
 
 static void lubbock_mmc_poll(unsigned long);
 static void lubbock_mmc_poll(unsigned long);
-static irqreturn_t (*mmc_detect_int)(int, void *, struct pt_regs *);
+static irq_handler_t mmc_detect_int;
 
 
 static struct timer_list mmc_timer = {
 static struct timer_list mmc_timer = {
 	.function	= lubbock_mmc_poll,
 	.function	= lubbock_mmc_poll,
@@ -403,17 +402,17 @@ static void lubbock_mmc_poll(unsigned long data)
 	}
 	}
 }
 }
 
 
-static irqreturn_t lubbock_detect_int(int irq, void *data, struct pt_regs *regs)
+static irqreturn_t lubbock_detect_int(int irq, void *data)
 {
 {
 	/* IRQ is level triggered; disable, and poll for removal */
 	/* IRQ is level triggered; disable, and poll for removal */
 	disable_irq(irq);
 	disable_irq(irq);
 	mod_timer(&mmc_timer, jiffies + MMC_POLL_RATE);
 	mod_timer(&mmc_timer, jiffies + MMC_POLL_RATE);
 
 
-	return mmc_detect_int(irq, data, regs);
+	return mmc_detect_int(irq, data);
 }
 }
 
 
 static int lubbock_mci_init(struct device *dev,
 static int lubbock_mci_init(struct device *dev,
-		irqreturn_t (*detect_int)(int, void *, struct pt_regs *),
+		irq_handler_t detect_int,
 		void *data)
 		void *data)
 {
 {
 	/* setup GPIO for PXA25x MMC controller	*/
 	/* setup GPIO for PXA25x MMC controller	*/

+ 3 - 4
arch/arm/mach-pxa/mainstone.c

@@ -71,8 +71,7 @@ static struct irq_chip mainstone_irq_chip = {
 	.unmask		= mainstone_unmask_irq,
 	.unmask		= mainstone_unmask_irq,
 };
 };
 
 
-static void mainstone_irq_handler(unsigned int irq, struct irqdesc *desc,
-				  struct pt_regs *regs)
+static void mainstone_irq_handler(unsigned int irq, struct irqdesc *desc)
 {
 {
 	unsigned long pending = MST_INTSETCLR & mainstone_irq_enabled;
 	unsigned long pending = MST_INTSETCLR & mainstone_irq_enabled;
 	do {
 	do {
@@ -80,7 +79,7 @@ static void mainstone_irq_handler(unsigned int irq, struct irqdesc *desc,
 		if (likely(pending)) {
 		if (likely(pending)) {
 			irq = MAINSTONE_IRQ(0) + __ffs(pending);
 			irq = MAINSTONE_IRQ(0) + __ffs(pending);
 			desc = irq_desc + irq;
 			desc = irq_desc + irq;
-			desc_handle_irq(irq, desc, regs);
+			desc_handle_irq(irq, desc);
 		}
 		}
 		pending = MST_INTSETCLR & mainstone_irq_enabled;
 		pending = MST_INTSETCLR & mainstone_irq_enabled;
 	} while (pending);
 	} while (pending);
@@ -314,7 +313,7 @@ static struct pxafb_mach_info mainstone_pxafb_info = {
 	.pxafb_backlight_power	= mainstone_backlight_power,
 	.pxafb_backlight_power	= mainstone_backlight_power,
 };
 };
 
 
-static int mainstone_mci_init(struct device *dev, irqreturn_t (*mstone_detect_int)(int, void *, struct pt_regs *), void *data)
+static int mainstone_mci_init(struct device *dev, irq_handler_t mstone_detect_int, void *data)
 {
 {
 	int err;
 	int err;
 
 

+ 1 - 1
arch/arm/mach-pxa/poodle.c

@@ -197,7 +197,7 @@ static struct platform_device poodle_ts_device = {
  */
  */
 static struct pxamci_platform_data poodle_mci_platform_data;
 static struct pxamci_platform_data poodle_mci_platform_data;
 
 
-static int poodle_mci_init(struct device *dev, irqreturn_t (*poodle_detect_int)(int, void *, struct pt_regs *), void *data)
+static int poodle_mci_init(struct device *dev, irq_handler_t poodle_detect_int, void *data)
 {
 {
 	int err;
 	int err;
 
 

Some files were not shown because too many files changed in this diff