提交 3dbb8c62 编写于 作者: A Al Viro 提交者: Linus Torvalds

[PATCH] alpha pt_regs cleanups: handle_irq()

isa_no_iack_sc_device_interrupt() always gets get_irq_regs() as
argument; kill that argument.

All but two callers of handle_irq() pass get_irq_regs() as argument;
convert the remaining two, kill set_irq_regs() inside handle_irq().
Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
上级 7ca56053
...@@ -127,9 +127,8 @@ show_interrupts(struct seq_file *p, void *v) ...@@ -127,9 +127,8 @@ show_interrupts(struct seq_file *p, void *v)
#define MAX_ILLEGAL_IRQS 16 #define MAX_ILLEGAL_IRQS 16
void void
handle_irq(int irq, struct pt_regs * regs) handle_irq(int irq)
{ {
struct pt_regs *old_regs;
/* /*
* We ack quickly, we don't want the irq controller * We ack quickly, we don't want the irq controller
* thinking we're snobs just because some other CPU has * thinking we're snobs just because some other CPU has
...@@ -150,7 +149,6 @@ handle_irq(int irq, struct pt_regs * regs) ...@@ -150,7 +149,6 @@ handle_irq(int irq, struct pt_regs * regs)
return; return;
} }
old_regs = set_irq_regs(regs);
irq_enter(); irq_enter();
/* /*
* __do_IRQ() must be called with IPL_MAX. Note that we do not * __do_IRQ() must be called with IPL_MAX. Note that we do not
...@@ -161,5 +159,4 @@ handle_irq(int irq, struct pt_regs * regs) ...@@ -161,5 +159,4 @@ handle_irq(int irq, struct pt_regs * regs)
local_irq_disable(); local_irq_disable();
__do_IRQ(irq); __do_IRQ(irq);
irq_exit(); irq_exit();
set_irq_regs(old_regs);
} }
...@@ -52,6 +52,7 @@ do_entInt(unsigned long type, unsigned long vector, ...@@ -52,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;
...@@ -62,12 +63,13 @@ do_entInt(unsigned long type, unsigned long vector, ...@@ -62,12 +63,13 @@ 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); alpha_mv.machine_check(vector, la_ptr, regs);
......
...@@ -147,13 +147,13 @@ isa_device_interrupt(unsigned long vector) ...@@ -147,13 +147,13 @@ isa_device_interrupt(unsigned long vector)
*/ */
int j = *(vuip) IACK_SC; int j = *(vuip) IACK_SC;
j &= 0xff; j &= 0xff;
handle_irq(j, get_irq_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) ...@@ -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
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
#define RTC_IRQ 8 #define RTC_IRQ 8
extern void isa_device_interrupt(unsigned long); 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); extern void srm_device_interrupt(unsigned long);
extern void pyxis_device_interrupt(unsigned long); extern void pyxis_device_interrupt(unsigned long);
...@@ -39,4 +39,4 @@ extern void i8259a_end_irq(unsigned int); ...@@ -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);
...@@ -100,7 +100,7 @@ pyxis_device_interrupt(unsigned long vector) ...@@ -100,7 +100,7 @@ pyxis_device_interrupt(unsigned long vector)
if (i == 7) if (i == 7)
isa_device_interrupt(vector); isa_device_interrupt(vector);
else else
handle_irq(16+i, get_irq_regs()); handle_irq(16+i);
} }
} }
......
...@@ -75,5 +75,5 @@ void ...@@ -75,5 +75,5 @@ void
srm_device_interrupt(unsigned long vector) srm_device_interrupt(unsigned long vector)
{ {
int irq = (vector - 0x800) >> 4; int irq = (vector - 0x800) >> 4;
handle_irq(irq, get_irq_regs()); handle_irq(irq);
} }
...@@ -118,7 +118,7 @@ alcor_device_interrupt(unsigned long vector) ...@@ -118,7 +118,7 @@ alcor_device_interrupt(unsigned long vector)
if (i == 31) { if (i == 31) {
isa_device_interrupt(vector); isa_device_interrupt(vector);
} else { } else {
handle_irq(16 + i, get_irq_regs()); handle_irq(16 + i);
} }
} }
} }
......
...@@ -100,7 +100,7 @@ cabriolet_device_interrupt(unsigned long v) ...@@ -100,7 +100,7 @@ cabriolet_device_interrupt(unsigned long v)
if (i == 4) { if (i == 4) {
isa_device_interrupt(v); isa_device_interrupt(v);
} else { } else {
handle_irq(16 + i, get_irq_regs()); handle_irq(16 + i);
} }
} }
} }
......
...@@ -238,7 +238,7 @@ dp264_device_interrupt(unsigned long vector) ...@@ -238,7 +238,7 @@ dp264_device_interrupt(unsigned long vector)
if (i == 55) if (i == 55)
isa_device_interrupt(vector); isa_device_interrupt(vector);
else else
handle_irq(16 + i, get_irq_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;
...@@ -268,7 +268,7 @@ dp264_srm_device_interrupt(unsigned long vector) ...@@ -268,7 +268,7 @@ dp264_srm_device_interrupt(unsigned long vector)
if (irq >= 32) if (irq >= 32)
irq -= 16; irq -= 16;
handle_irq(irq, get_irq_regs()); handle_irq(irq);
} }
static void static void
...@@ -290,7 +290,7 @@ clipper_srm_device_interrupt(unsigned long vector) ...@@ -290,7 +290,7 @@ clipper_srm_device_interrupt(unsigned long vector)
* *
* Eg IRQ 24 is DRIR bit 8, etc, etc * Eg IRQ 24 is DRIR bit 8, etc, etc
*/ */
handle_irq(irq, get_irq_regs()); handle_irq(irq);
} }
static void __init static void __init
......
...@@ -99,7 +99,7 @@ eb64p_device_interrupt(unsigned long vector) ...@@ -99,7 +99,7 @@ eb64p_device_interrupt(unsigned long vector)
if (i == 5) { if (i == 5) {
isa_device_interrupt(vector); isa_device_interrupt(vector);
} else { } else {
handle_irq(16 + i, get_irq_regs()); handle_irq(16 + i);
} }
} }
} }
......
...@@ -118,10 +118,10 @@ eiger_device_interrupt(unsigned long vector) ...@@ -118,10 +118,10 @@ eiger_device_interrupt(unsigned long vector)
* despatch an interrupt if it's set. * despatch an interrupt if it's set.
*/ */
if (intstatus & 8) handle_irq(16+3, get_irq_regs()); if (intstatus & 8) handle_irq(16+3);
if (intstatus & 4) handle_irq(16+2, get_irq_regs()); if (intstatus & 4) handle_irq(16+2);
if (intstatus & 2) handle_irq(16+1, get_irq_regs()); if (intstatus & 2) handle_irq(16+1);
if (intstatus & 1) handle_irq(16+0, get_irq_regs()); if (intstatus & 1) handle_irq(16+0);
} else { } else {
isa_device_interrupt(vector); isa_device_interrupt(vector);
} }
...@@ -131,7 +131,7 @@ static void ...@@ -131,7 +131,7 @@ static void
eiger_srm_device_interrupt(unsigned long vector) eiger_srm_device_interrupt(unsigned long vector)
{ {
int irq = (vector - 0x800) >> 4; int irq = (vector - 0x800) >> 4;
handle_irq(irq, get_irq_regs()); handle_irq(irq);
} }
static void __init static void __init
......
...@@ -198,7 +198,7 @@ jensen_device_interrupt(unsigned long vector) ...@@ -198,7 +198,7 @@ jensen_device_interrupt(unsigned long vector)
} }
#endif #endif
handle_irq(irq, get_irq_regs()); handle_irq(irq);
} }
static void __init static void __init
......
...@@ -64,7 +64,7 @@ io7_device_interrupt(unsigned long vector) ...@@ -64,7 +64,7 @@ io7_device_interrupt(unsigned long vector)
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, get_irq_regs()); handle_irq(irq);
} }
static volatile unsigned long * static volatile unsigned long *
......
...@@ -56,7 +56,7 @@ miata_srm_device_interrupt(unsigned long vector) ...@@ -56,7 +56,7 @@ miata_srm_device_interrupt(unsigned long vector)
if (irq >= 16) if (irq >= 16)
irq = irq + 8; irq = irq + 8;
handle_irq(irq, get_irq_regs()); handle_irq(irq);
} }
static void __init static void __init
......
...@@ -99,7 +99,7 @@ mikasa_device_interrupt(unsigned long vector) ...@@ -99,7 +99,7 @@ mikasa_device_interrupt(unsigned long vector)
if (i < 16) { if (i < 16) {
isa_device_interrupt(vector); isa_device_interrupt(vector);
} else { } else {
handle_irq(i, get_irq_regs()); handle_irq(i);
} }
} }
} }
......
...@@ -98,7 +98,7 @@ noritake_device_interrupt(unsigned long vector) ...@@ -98,7 +98,7 @@ noritake_device_interrupt(unsigned long vector)
if (i < 16) { if (i < 16) {
isa_device_interrupt(vector); isa_device_interrupt(vector);
} else { } else {
handle_irq(i, get_irq_regs()); handle_irq(i);
} }
} }
} }
...@@ -122,7 +122,7 @@ noritake_srm_device_interrupt(unsigned long vector) ...@@ -122,7 +122,7 @@ noritake_srm_device_interrupt(unsigned long vector)
if (irq >= 16) if (irq >= 16)
irq = irq + 1; irq = irq + 1;
handle_irq(irq, get_irq_regs()); handle_irq(irq);
} }
static void __init static void __init
......
...@@ -158,7 +158,7 @@ rawhide_srm_device_interrupt(unsigned long vector) ...@@ -158,7 +158,7 @@ rawhide_srm_device_interrupt(unsigned long vector)
/* 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, get_irq_regs()); handle_irq(irq);
} }
static void __init static void __init
......
...@@ -102,9 +102,9 @@ rx164_device_interrupt(unsigned long vector) ...@@ -102,9 +102,9 @@ rx164_device_interrupt(unsigned long vector)
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, get_irq_regs()); isa_no_iack_sc_device_interrupt(vector);
} else { } else {
handle_irq(16+i, get_irq_regs()); handle_irq(16+i);
} }
} }
} }
......
...@@ -526,7 +526,7 @@ sable_lynx_srm_device_interrupt(unsigned long vector) ...@@ -526,7 +526,7 @@ sable_lynx_srm_device_interrupt(unsigned long vector)
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, get_irq_regs()); handle_irq(irq);
} }
static void __init static void __init
......
...@@ -112,10 +112,10 @@ takara_device_interrupt(unsigned long vector) ...@@ -112,10 +112,10 @@ takara_device_interrupt(unsigned long vector)
* despatch an interrupt if it's set. * despatch an interrupt if it's set.
*/ */
if (intstatus & 8) handle_irq(16+3, get_irq_regs()); if (intstatus & 8) handle_irq(16+3);
if (intstatus & 4) handle_irq(16+2, get_irq_regs()); if (intstatus & 4) handle_irq(16+2);
if (intstatus & 2) handle_irq(16+1, get_irq_regs()); if (intstatus & 2) handle_irq(16+1);
if (intstatus & 1) handle_irq(16+0, get_irq_regs()); if (intstatus & 1) handle_irq(16+0);
} else { } else {
isa_device_interrupt (vector); isa_device_interrupt (vector);
} }
...@@ -125,7 +125,7 @@ static void ...@@ -125,7 +125,7 @@ static void
takara_srm_device_interrupt(unsigned long vector) takara_srm_device_interrupt(unsigned long vector)
{ {
int irq = (vector - 0x800) >> 4; int irq = (vector - 0x800) >> 4;
handle_irq(irq, get_irq_regs()); handle_irq(irq);
} }
static void __init static void __init
......
...@@ -178,7 +178,7 @@ titan_srm_device_interrupt(unsigned long vector) ...@@ -178,7 +178,7 @@ titan_srm_device_interrupt(unsigned long vector)
int irq; int irq;
irq = (vector - 0x800) >> 4; irq = (vector - 0x800) >> 4;
handle_irq(irq, get_irq_regs()); handle_irq(irq);
} }
......
...@@ -246,7 +246,7 @@ wildfire_device_interrupt(unsigned long vector) ...@@ -246,7 +246,7 @@ wildfire_device_interrupt(unsigned long vector)
* bits 5-0: irq in PCA * bits 5-0: irq in PCA
*/ */
handle_irq(irq, get_irq_regs()); handle_irq(irq);
return; return;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册