Skip to content

Commit

Permalink
[PATCH] alpha pt_regs cleanups: device_interrupt
Browse files Browse the repository at this point in the history
callers of ->device_interrupt() do set_irq_regs() now; pt_regs argument
removed, remaining uses of regs in instances of ->device_interrupt()
are switched to get_irq_regs() and will be gone in the next patch.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
  • Loading branch information
Al Viro authored and Linus Torvalds committed Oct 8, 2006
1 parent 8dab42a commit 7ca5605
Show file tree
Hide file tree
Showing 22 changed files with 83 additions and 77 deletions.
5 changes: 4 additions & 1 deletion arch/alpha/kernel/irq_alpha.c
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ asmlinkage void
do_entInt(unsigned long type, unsigned long vector,
unsigned long la_ptr, struct pt_regs *regs)
{
struct pt_regs *old_regs;
switch (type) {
case 0:
#ifdef CONFIG_SMP
Expand Down Expand Up @@ -72,7 +73,9 @@ do_entInt(unsigned long type, unsigned long vector,
alpha_mv.machine_check(vector, la_ptr, regs);
return;
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;
case 4:
perf_irq(la_ptr, regs);
Expand Down
4 changes: 2 additions & 2 deletions arch/alpha/kernel/irq_i8259.c
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ init_i8259a_irqs(void)

#if defined(IACK_SC)
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
Expand All @@ -147,7 +147,7 @@ isa_device_interrupt(unsigned long vector, struct pt_regs *regs)
*/
int j = *(vuip) IACK_SC;
j &= 0xff;
handle_irq(j, regs);
handle_irq(j, get_irq_regs());
}
#endif

Expand Down
6 changes: 3 additions & 3 deletions arch/alpha/kernel/irq_impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@

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

extern struct irqaction timer_irqaction;
extern struct irqaction isa_cascade_irqaction;
Expand Down
6 changes: 3 additions & 3 deletions arch/alpha/kernel/irq_pyxis.c
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ static struct hw_interrupt_type pyxis_irq_type = {
};

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

Expand Down
4 changes: 2 additions & 2 deletions arch/alpha/kernel/irq_srm.c
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,8 @@ init_srm_irqs(long max, unsigned long ignore_mask)
}

void
srm_device_interrupt(unsigned long vector, struct pt_regs * regs)
srm_device_interrupt(unsigned long vector)
{
int irq = (vector - 0x800) >> 4;
handle_irq(irq, regs);
handle_irq(irq, get_irq_regs());
}
6 changes: 3 additions & 3 deletions arch/alpha/kernel/sys_alcor.c
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ static struct hw_interrupt_type alcor_irq_type = {
};

static void
alcor_device_interrupt(unsigned long vector, struct pt_regs *regs)
alcor_device_interrupt(unsigned long vector)
{
unsigned long pld;
unsigned int i;
Expand All @@ -116,9 +116,9 @@ alcor_device_interrupt(unsigned long vector, struct pt_regs *regs)
i = ffz(~pld);
pld &= pld - 1; /* clear least bit set */
if (i == 31) {
isa_device_interrupt(vector, regs);
isa_device_interrupt(vector);
} else {
handle_irq(16 + i, regs);
handle_irq(16 + i, get_irq_regs());
}
}
}
Expand Down
16 changes: 8 additions & 8 deletions arch/alpha/kernel/sys_cabriolet.c
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ static struct hw_interrupt_type cabriolet_irq_type = {
};

static void
cabriolet_device_interrupt(unsigned long v, struct pt_regs *r)
cabriolet_device_interrupt(unsigned long v)
{
unsigned long pld;
unsigned int i;
Expand All @@ -98,15 +98,15 @@ cabriolet_device_interrupt(unsigned long v, struct pt_regs *r)
i = ffz(~pld);
pld &= pld - 1; /* clear least bit set */
if (i == 4) {
isa_device_interrupt(v, r);
isa_device_interrupt(v);
} else {
handle_irq(16 + i, r);
handle_irq(16 + i, get_irq_regs());
}
}
}

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

Expand Down Expand Up @@ -154,18 +154,18 @@ cabriolet_init_irq(void)
too invasive though. */

static void
pc164_srm_device_interrupt(unsigned long v, struct pt_regs *r)
pc164_srm_device_interrupt(unsigned long v)
{
__min_ipl = getipl();
srm_device_interrupt(v, r);
srm_device_interrupt(v);
__min_ipl = 0;
}

static void
pc164_device_interrupt(unsigned long v, struct pt_regs *r)
pc164_device_interrupt(unsigned long v)
{
__min_ipl = getipl();
cabriolet_device_interrupt(v, r);
cabriolet_device_interrupt(v);
__min_ipl = 0;
}

Expand Down
14 changes: 7 additions & 7 deletions arch/alpha/kernel/sys_dp264.c
Original file line number Diff line number Diff line change
Expand Up @@ -217,7 +217,7 @@ static struct hw_interrupt_type clipper_irq_type = {
};

static void
dp264_device_interrupt(unsigned long vector, struct pt_regs * regs)
dp264_device_interrupt(unsigned long vector)
{
#if 1
printk("dp264_device_interrupt: NOT IMPLEMENTED YET!! \n");
Expand All @@ -236,9 +236,9 @@ dp264_device_interrupt(unsigned long vector, struct pt_regs * regs)
i = ffz(~pld);
pld &= pld - 1; /* clear least bit set */
if (i == 55)
isa_device_interrupt(vector, regs);
isa_device_interrupt(vector);
else
handle_irq(16 + i, 16 + i, regs);
handle_irq(16 + i, get_irq_regs());
#if 0
TSUNAMI_cchip->dir0.csr = 1UL << i; mb();
tmp = TSUNAMI_cchip->dir0.csr;
Expand All @@ -248,7 +248,7 @@ dp264_device_interrupt(unsigned long vector, struct pt_regs * regs)
}

static void
dp264_srm_device_interrupt(unsigned long vector, struct pt_regs * regs)
dp264_srm_device_interrupt(unsigned long vector)
{
int irq;

Expand All @@ -268,11 +268,11 @@ dp264_srm_device_interrupt(unsigned long vector, struct pt_regs * regs)
if (irq >= 32)
irq -= 16;

handle_irq(irq, regs);
handle_irq(irq, get_irq_regs());
}

static void
clipper_srm_device_interrupt(unsigned long vector, struct pt_regs * regs)
clipper_srm_device_interrupt(unsigned long vector)
{
int irq;

Expand All @@ -290,7 +290,7 @@ clipper_srm_device_interrupt(unsigned long vector, struct pt_regs * regs)
*
* Eg IRQ 24 is DRIR bit 8, etc, etc
*/
handle_irq(irq, regs);
handle_irq(irq, get_irq_regs());
}

static void __init
Expand Down
6 changes: 3 additions & 3 deletions arch/alpha/kernel/sys_eb64p.c
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ static struct hw_interrupt_type eb64p_irq_type = {
};

static void
eb64p_device_interrupt(unsigned long vector, struct pt_regs *regs)
eb64p_device_interrupt(unsigned long vector)
{
unsigned long pld;
unsigned int i;
Expand All @@ -97,9 +97,9 @@ eb64p_device_interrupt(unsigned long vector, struct pt_regs *regs)
pld &= pld - 1; /* clear least bit set */

if (i == 5) {
isa_device_interrupt(vector, regs);
isa_device_interrupt(vector);
} else {
handle_irq(16 + i, regs);
handle_irq(16 + i, get_irq_regs());
}
}
}
Expand Down
16 changes: 8 additions & 8 deletions arch/alpha/kernel/sys_eiger.c
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ static struct hw_interrupt_type eiger_irq_type = {
};

static void
eiger_device_interrupt(unsigned long vector, struct pt_regs * regs)
eiger_device_interrupt(unsigned long vector)
{
unsigned intstatus;

Expand All @@ -118,20 +118,20 @@ eiger_device_interrupt(unsigned long vector, struct pt_regs * regs)
* despatch an interrupt if it's set.
*/

if (intstatus & 8) handle_irq(16+3, regs);
if (intstatus & 4) handle_irq(16+2, regs);
if (intstatus & 2) handle_irq(16+1, regs);
if (intstatus & 1) handle_irq(16+0, regs);
if (intstatus & 8) handle_irq(16+3, get_irq_regs());
if (intstatus & 4) handle_irq(16+2, get_irq_regs());
if (intstatus & 2) handle_irq(16+1, get_irq_regs());
if (intstatus & 1) handle_irq(16+0, get_irq_regs());
} else {
isa_device_interrupt(vector, regs);
isa_device_interrupt(vector);
}
}

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;
handle_irq(irq, regs);
handle_irq(irq, get_irq_regs());
}

static void __init
Expand Down
6 changes: 3 additions & 3 deletions arch/alpha/kernel/sys_jensen.c
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ static struct hw_interrupt_type jensen_local_irq_type = {
};

static void
jensen_device_interrupt(unsigned long vector, struct pt_regs * regs)
jensen_device_interrupt(unsigned long vector)
{
int irq;

Expand Down Expand Up @@ -189,7 +189,7 @@ jensen_device_interrupt(unsigned long vector, struct pt_regs * regs)
if (cc - last_msg > ((JENSEN_CYCLES_PER_SEC) * 3) ||
irq != last_irq) {
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;
last_msg = cc;
last_irq = irq;
Expand All @@ -198,7 +198,7 @@ jensen_device_interrupt(unsigned long vector, struct pt_regs * regs)
}
#endif

handle_irq(irq, regs);
handle_irq(irq, get_irq_regs());
}

static void __init
Expand Down
4 changes: 2 additions & 2 deletions arch/alpha/kernel/sys_marvel.c
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
* Interrupt handling.
*/
static void
io7_device_interrupt(unsigned long vector, struct pt_regs * regs)
io7_device_interrupt(unsigned long vector)
{
unsigned int pid;
unsigned int irq;
Expand All @@ -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 |= pid << MARVEL_IRQ_VEC_PE_SHIFT; /* merge the pid */

handle_irq(irq, regs);
handle_irq(irq, get_irq_regs());
}

static volatile unsigned long *
Expand Down
4 changes: 2 additions & 2 deletions arch/alpha/kernel/sys_miata.c
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@


static void
miata_srm_device_interrupt(unsigned long vector, struct pt_regs * regs)
miata_srm_device_interrupt(unsigned long vector)
{
int irq;

Expand All @@ -56,7 +56,7 @@ miata_srm_device_interrupt(unsigned long vector, struct pt_regs * regs)
if (irq >= 16)
irq = irq + 8;

handle_irq(irq, regs);
handle_irq(irq, get_irq_regs());
}

static void __init
Expand Down
6 changes: 3 additions & 3 deletions arch/alpha/kernel/sys_mikasa.c
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ static struct hw_interrupt_type mikasa_irq_type = {
};

static void
mikasa_device_interrupt(unsigned long vector, struct pt_regs *regs)
mikasa_device_interrupt(unsigned long vector)
{
unsigned long pld;
unsigned int i;
Expand All @@ -97,9 +97,9 @@ mikasa_device_interrupt(unsigned long vector, struct pt_regs *regs)
i = ffz(~pld);
pld &= pld - 1; /* clear least bit set */
if (i < 16) {
isa_device_interrupt(vector, regs);
isa_device_interrupt(vector);
} else {
handle_irq(i, regs);
handle_irq(i, get_irq_regs());
}
}
}
Expand Down
10 changes: 5 additions & 5 deletions arch/alpha/kernel/sys_noritake.c
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ static struct hw_interrupt_type noritake_irq_type = {
};

static void
noritake_device_interrupt(unsigned long vector, struct pt_regs *regs)
noritake_device_interrupt(unsigned long vector)
{
unsigned long pld;
unsigned int i;
Expand All @@ -96,15 +96,15 @@ noritake_device_interrupt(unsigned long vector, struct pt_regs *regs)
i = ffz(~pld);
pld &= pld - 1; /* clear least bit set */
if (i < 16) {
isa_device_interrupt(vector, regs);
isa_device_interrupt(vector);
} else {
handle_irq(i, regs);
handle_irq(i, get_irq_regs());
}
}
}

static void
noritake_srm_device_interrupt(unsigned long vector, struct pt_regs * regs)
noritake_srm_device_interrupt(unsigned long vector)
{
int irq;

Expand All @@ -122,7 +122,7 @@ noritake_srm_device_interrupt(unsigned long vector, struct pt_regs * regs)
if (irq >= 16)
irq = irq + 1;

handle_irq(irq, regs);
handle_irq(irq, get_irq_regs());
}

static void __init
Expand Down
Loading

0 comments on commit 7ca5605

Please sign in to comment.