Merge branch 'master' into upstream-fixes

This commit is contained in:
Jeff Garzik 2006-10-11 03:56:12 -04:00
commit 24fcbacedb
1719 changed files with 8377 additions and 8898 deletions

View File

@ -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 P: Jim Cromie
M: christer@weinigel.se M: jim.cromie@gmail.com
W: http://www.weinigel.se S: Odd Fixes
S: Supported
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

View File

@ -387,8 +387,7 @@ apecs_pci_clr_err(void)
} }
void void
apecs_machine_check(unsigned long vector, unsigned long la_ptr, apecs_machine_check(unsigned long vector, unsigned long la_ptr)
struct pt_regs * regs)
{ {
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)));
} }

View File

@ -1192,8 +1192,7 @@ cia_decode_mchk(unsigned long la_ptr)
} }
void void
cia_machine_check(unsigned long vector, unsigned long la_ptr, cia_machine_check(unsigned long vector, unsigned long la_ptr)
struct pt_regs * regs)
{ {
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);
} }

View File

@ -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, lca_machine_check(unsigned long vector, unsigned long la_ptr)
struct pt_regs *regs)
{ {
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

View File

@ -572,8 +572,7 @@ mcpcia_print_system_area(unsigned long la_ptr)
} }
void void
mcpcia_machine_check(unsigned long vector, unsigned long la_ptr, mcpcia_machine_check(unsigned long vector, unsigned long la_ptr)
struct pt_regs * regs)
{ {
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);

View File

@ -187,8 +187,7 @@ polaris_pci_clr_err(void)
} }
void void
polaris_machine_check(unsigned long vector, unsigned long la_ptr, polaris_machine_check(unsigned long vector, unsigned long la_ptr)
struct pt_regs * regs)
{ {
/* 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));
} }

View File

@ -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, t2_machine_check(unsigned long vector, unsigned long la_ptr)
struct pt_regs * regs)
{ {
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));
} }

View File

@ -443,8 +443,7 @@ tsunami_pci_clr_err(void)
} }
void void
tsunami_machine_check(unsigned long vector, unsigned long la_ptr, tsunami_machine_check(unsigned long vector, unsigned long la_ptr)
struct pt_regs * regs)
{ {
/* 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()));
} }

View File

@ -322,8 +322,7 @@ wildfire_init_arch(void)
} }
void void
wildfire_machine_check(unsigned long vector, unsigned long la_ptr, wildfire_machine_check(unsigned long vector, unsigned long la_ptr)
struct pt_regs * regs)
{ {
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()));
} }

View File

@ -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;
} }

View File

@ -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;

View File

@ -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);

View File

@ -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;
} }

View File

@ -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.

View File

@ -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();
} }

View File

@ -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, const char *machine, int expected)
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) {

View File

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

View File

@ -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_device_interrupt(unsigned long);
extern void isa_no_iack_sc_device_interrupt(unsigned long, struct pt_regs *); extern void isa_no_iack_sc_device_interrupt(unsigned long);
extern void srm_device_interrupt(unsigned long, struct pt_regs *); extern void srm_device_interrupt(unsigned long);
extern void pyxis_device_interrupt(unsigned long, struct pt_regs *); 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);

View File

@ -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);
} }
} }

View File

@ -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);
} }

View File

@ -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, const char *machine, int expected);
int expected);

View File

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

View File

@ -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);
} }
} }
} }

View File

@ -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;
} }

View File

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

View File

@ -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);
} }
} }
} }

View File

@ -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 & 8) handle_irq(16+3);
if (intstatus & 4) handle_irq(16+2, regs); if (intstatus & 4) handle_irq(16+2);
if (intstatus & 2) handle_irq(16+1, regs); if (intstatus & 2) handle_irq(16+1);
if (intstatus & 1) handle_irq(16+0, regs); 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

View File

@ -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");
} }

View File

@ -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 *

View File

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

View File

@ -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, mikasa_apecs_machine_check(unsigned long vector, unsigned long la_ptr)
struct pt_regs * regs)
{ {
#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)));

View File

@ -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, nautilus_machine_check(unsigned long vector, unsigned long la_ptr)
struct pt_regs *regs)
{ {
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();

View File

@ -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, noritake_apecs_machine_check(unsigned long vector, unsigned long la_ptr)
struct pt_regs * regs)
{ {
#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)));

View File

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

View File

@ -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);
} }
} }
} }

View File

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

View File

@ -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 & 8) handle_irq(16+3);
if (intstatus & 4) handle_irq(16+2, regs); if (intstatus & 4) handle_irq(16+2);
if (intstatus & 2) handle_irq(16+1, regs); if (intstatus & 2) handle_irq(16+1);
if (intstatus & 1) handle_irq(16+0, regs); 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

View File

@ -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);
} }
} }

View File

@ -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;
} }

View File

@ -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--;
} }

View File

@ -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, static void locomo_handler(unsigned int irq, struct irqdesc *desc)
struct pt_regs *regs)
{ {
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, static void locomo_key_handler(unsigned int irq, struct irqdesc *desc)
struct pt_regs *regs)
{ {
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, static void locomo_gpio_handler(unsigned int irq, struct irqdesc *desc)
struct pt_regs *regs)
{ {
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, static void locomo_lt_handler(unsigned int irq, struct irqdesc *desc)
struct pt_regs *regs)
{ {
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, static void locomo_spi_handler(unsigned int irq, struct irqdesc *desc)
struct pt_regs *regs)
{ {
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);
} }
} }
} }

View File

@ -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);

View File

@ -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;

View File

@ -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;
} }

View File

@ -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);

View File

@ -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)

View File

@ -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);

View File

@ -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);

View File

@ -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;
} }

View File

@ -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++;

View File

@ -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;
} }

View File

@ -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?? */
{ {

View File

@ -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);

View File

@ -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);
} }
} }
} }

View File

@ -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);

View File

@ -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;

View File

@ -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 = {

View File

@ -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;
} }

View File

@ -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, h720x_gpioa_demux_handler(unsigned int irq_unused, struct irqdesc *desc)
struct pt_regs *regs)
{ {
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, h720x_gpiob_demux_handler(unsigned int irq_unused, struct irqdesc *desc)
struct pt_regs *regs)
{ {
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, h720x_gpioc_demux_handler(unsigned int irq_unused, struct irqdesc *desc)
struct pt_regs *regs)
{ {
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, h720x_gpiod_demux_handler(unsigned int irq_unused, struct irqdesc *desc)
struct pt_regs *regs)
{ {
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, h720x_gpioe_demux_handler(unsigned int irq_unused, struct irqdesc *desc)
struct pt_regs *regs)
{ {
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

View File

@ -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);

View File

@ -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, h7202_timerx_demux_handler(unsigned int irq_unused, struct irqdesc *desc)
struct pt_regs *regs)
{ {
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;
} }

View File

@ -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 (*irq_handler) (int, void *),
void (*err_handler) (int, void *, struct pt_regs *, int), 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 {
/* /*

View File

@ -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, imx_gpioa_demux_handler(unsigned int irq_unused, struct irqdesc *desc)
struct pt_regs *regs)
{ {
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, imx_gpiob_demux_handler(unsigned int irq_unused, struct irqdesc *desc)
struct pt_regs *regs)
{ {
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, imx_gpioc_demux_handler(unsigned int irq_unused, struct irqdesc *desc)
struct pt_regs *regs)
{ {
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, imx_gpiod_demux_handler(unsigned int irq_unused, struct irqdesc *desc)
struct pt_regs *regs)
{ {
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 = {

View File

@ -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;

View File

@ -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);

View File

@ -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);
} }

View File

@ -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];

View File

@ -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, static irqreturn_t arm_rtc_interrupt(int irq, void *dev_id)
struct pt_regs *regs)
{ {
writel(0, rtc_base + RTC_EOI); writel(0, rtc_base + RTC_EOI);
return IRQ_HANDLED; return IRQ_HANDLED;

View File

@ -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);
} }
} }
} }

View File

@ -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);
} }
} }

View File

@ -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);
} }
} }

View File

@ -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;
} }

View File

@ -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);
} }
} }

View File

@ -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;
} }

View File

@ -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.

View File

@ -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.
*/ */

View File

@ -71,14 +71,13 @@ static struct irq_chip kev7a400_cpld_chip = {
}; };
static void kev7a400_cpld_handler (unsigned int irq, struct irqdesc *desc, static void kev7a400_cpld_handler (unsigned int irq, struct irqdesc *desc)
struct pt_regs *regs)
{ {
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);
} }
} }

View File

@ -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, static void lpd7a40x_cpld_handler (unsigned int irq, struct irqdesc *desc)
struct pt_regs *regs)
{ {
unsigned int mask = CPLD_INTERRUPTS; unsigned int mask = CPLD_INTERRUPTS;

View File

@ -51,14 +51,13 @@ irq_chip lh7a400_cpld_chip = {
}; };
static void static void
lh7a400_cpld_handler (unsigned int irq, struct irqdesc *desc, lh7a400_cpld_handler (unsigned int irq, struct irqdesc *desc)
struct pt_regs *regs)
{ {
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);
} }
} }

View File

@ -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, static void lh7a40x_cpld_handler (unsigned int irq, struct irqdesc *desc)
struct pt_regs *regs)
{ {
unsigned int mask = CPLD_INTERRUPTS; unsigned int mask = CPLD_INTERRUPTS;

View File

@ -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);

View File

@ -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, netx_hif_demux_handler(unsigned int irq_unused, struct irqdesc *desc)
struct pt_regs *regs)
{ {
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++;

View File

@ -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 */

View File

@ -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;
} }

View File

@ -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, void innovator_fpga_IRQ_demux(unsigned int irq, struct irqdesc *desc)
struct pt_regs *regs)
{ {
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);
} }
} }
} }

View File

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

View File

@ -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, static irqreturn_t omap_serial_wake_interrupt(int irq, void *dev_id)
struct pt_regs *regs)
{ {
/* 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;

View File

@ -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, static irqreturn_t omap_mpu_timer_interrupt(int irq, void *dev_id)
struct pt_regs *regs)
{ {
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, static irqreturn_t omap_mpu_timer1_interrupt(int irq, void *dev_id)
struct pt_regs *regs)
{ {
omap_mpu_timer1_overflows++; omap_mpu_timer1_overflows++;
return IRQ_HANDLED; return IRQ_HANDLED;

View File

@ -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;

View File

@ -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, static irqreturn_t omap2_gp_timer_interrupt(int irq, void *dev_id)
struct pt_regs *regs)
{ {
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);

View File

@ -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 *, void (*irq_handler) (int, int, void *), void *data)
struct pt_regs *), 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, channel->irq_handler(i, cause, channel->data);
regs);
} else { } else {
/* /*
* IRQ for an unregistered DMA channel * IRQ for an unregistered DMA channel

View File

@ -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, static irqreturn_t pnx4008_timer_interrupt(int irq, void *dev_id)
struct pt_regs *regs)
{ {
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

View File

@ -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;

View File

@ -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:

View File

@ -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);

View File

@ -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, static void pxa_gpio_demux_handler(unsigned int irq, struct irqdesc *desc)
struct pt_regs *regs)
{ {
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;

View File

@ -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, static void lpd270_irq_handler(unsigned int irq, struct irqdesc *desc)
struct pt_regs *regs)
{ {
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;

View File

@ -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, static void lubbock_irq_handler(unsigned int irq, struct irqdesc *desc)
struct pt_regs *regs)
{ {
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 */

View File

@ -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, static void mainstone_irq_handler(unsigned int irq, struct irqdesc *desc)
struct pt_regs *regs)
{ {
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;

View File

@ -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 have changed in this diff Show More