[MIPS] Complete fixes after removal of pt_regs argument to int handlers.
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Este commit está contenido en:
@@ -12,6 +12,7 @@
|
||||
#include <asm/system.h>
|
||||
#include <asm/traps.h>
|
||||
#include <asm/branch.h>
|
||||
#include <asm/irq_regs.h>
|
||||
#include <asm/sgi/mc.h>
|
||||
#include <asm/sgi/hpc3.h>
|
||||
#include <asm/sgi/ioc.h>
|
||||
@@ -85,9 +86,10 @@ static void print_buserr(void)
|
||||
* and then clear the interrupt when this happens.
|
||||
*/
|
||||
|
||||
void ip22_be_interrupt(int irq, struct pt_regs *regs)
|
||||
void ip22_be_interrupt(int irq)
|
||||
{
|
||||
const int field = 2 * sizeof(unsigned long);
|
||||
const struct pt_regs *regs = get_irq_regs();
|
||||
|
||||
save_and_clear_buserr();
|
||||
print_buserr();
|
||||
|
@@ -70,7 +70,7 @@ static char __init *decode_eisa_sig(unsigned long addr)
|
||||
return sig_str;
|
||||
}
|
||||
|
||||
static irqreturn_t ip22_eisa_intr(int irq, void *dev_id, struct pt_regs *regs)
|
||||
static irqreturn_t ip22_eisa_intr(int irq, void *dev_id)
|
||||
{
|
||||
u8 eisa_irq;
|
||||
u8 dma1, dma2;
|
||||
@@ -80,7 +80,7 @@ static irqreturn_t ip22_eisa_intr(int irq, void *dev_id, struct pt_regs *regs)
|
||||
dma2 = inb(EISA_DMA2_STATUS);
|
||||
|
||||
if (eisa_irq < EISA_MAX_IRQ) {
|
||||
do_IRQ(eisa_irq, regs);
|
||||
do_IRQ(eisa_irq);
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
@@ -89,6 +89,7 @@ static irqreturn_t ip22_eisa_intr(int irq, void *dev_id, struct pt_regs *regs)
|
||||
|
||||
outb(0x20, EISA_INT2_CTRL);
|
||||
outb(0x20, EISA_INT1_CTRL);
|
||||
|
||||
return IRQ_NONE;
|
||||
}
|
||||
|
||||
|
@@ -222,7 +222,7 @@ static struct irq_chip ip22_local3_irq_type = {
|
||||
.end = end_local3_irq,
|
||||
};
|
||||
|
||||
static void indy_local0_irqdispatch(struct pt_regs *regs)
|
||||
static void indy_local0_irqdispatch(void)
|
||||
{
|
||||
u8 mask = sgint->istat0 & sgint->imask0;
|
||||
u8 mask2;
|
||||
@@ -236,11 +236,10 @@ static void indy_local0_irqdispatch(struct pt_regs *regs)
|
||||
|
||||
/* if irq == 0, then the interrupt has already been cleared */
|
||||
if (irq)
|
||||
do_IRQ(irq, regs);
|
||||
return;
|
||||
do_IRQ(irq);
|
||||
}
|
||||
|
||||
static void indy_local1_irqdispatch(struct pt_regs *regs)
|
||||
static void indy_local1_irqdispatch(void)
|
||||
{
|
||||
u8 mask = sgint->istat1 & sgint->imask1;
|
||||
u8 mask2;
|
||||
@@ -254,19 +253,18 @@ static void indy_local1_irqdispatch(struct pt_regs *regs)
|
||||
|
||||
/* if irq == 0, then the interrupt has already been cleared */
|
||||
if (irq)
|
||||
do_IRQ(irq, regs);
|
||||
return;
|
||||
do_IRQ(irq);
|
||||
}
|
||||
|
||||
extern void ip22_be_interrupt(int irq, struct pt_regs *regs);
|
||||
extern void ip22_be_interrupt(int irq);
|
||||
|
||||
static void indy_buserror_irq(struct pt_regs *regs)
|
||||
static void indy_buserror_irq(void)
|
||||
{
|
||||
int irq = SGI_BUSERR_IRQ;
|
||||
|
||||
irq_enter();
|
||||
kstat_this_cpu.irqs[irq]++;
|
||||
ip22_be_interrupt(irq, regs);
|
||||
ip22_be_interrupt(irq);
|
||||
irq_exit();
|
||||
}
|
||||
|
||||
@@ -305,8 +303,8 @@ static struct irqaction map1_cascade = {
|
||||
#define SGI_INTERRUPTS SGINT_LOCAL3
|
||||
#endif
|
||||
|
||||
extern void indy_r4k_timer_interrupt(struct pt_regs *regs);
|
||||
extern void indy_8254timer_irq(struct pt_regs *regs);
|
||||
extern void indy_r4k_timer_interrupt(void);
|
||||
extern void indy_8254timer_irq(void);
|
||||
|
||||
/*
|
||||
* IRQs on the INDY look basically (barring software IRQs which we don't use
|
||||
@@ -336,7 +334,7 @@ extern void indy_8254timer_irq(struct pt_regs *regs);
|
||||
* another exception, big deal.
|
||||
*/
|
||||
|
||||
asmlinkage void plat_irq_dispatch(struct pt_regs *regs)
|
||||
asmlinkage void plat_irq_dispatch(void)
|
||||
{
|
||||
unsigned int pending = read_c0_cause();
|
||||
|
||||
@@ -344,15 +342,15 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs)
|
||||
* First we check for r4k counter/timer IRQ.
|
||||
*/
|
||||
if (pending & CAUSEF_IP7)
|
||||
indy_r4k_timer_interrupt(regs);
|
||||
indy_r4k_timer_interrupt();
|
||||
else if (pending & CAUSEF_IP2)
|
||||
indy_local0_irqdispatch(regs);
|
||||
indy_local0_irqdispatch();
|
||||
else if (pending & CAUSEF_IP3)
|
||||
indy_local1_irqdispatch(regs);
|
||||
indy_local1_irqdispatch();
|
||||
else if (pending & CAUSEF_IP6)
|
||||
indy_buserror_irq(regs);
|
||||
indy_buserror_irq();
|
||||
else if (pending & (CAUSEF_IP4 | CAUSEF_IP5))
|
||||
indy_8254timer_irq(regs);
|
||||
indy_8254timer_irq();
|
||||
}
|
||||
|
||||
extern void mips_cpu_irq_init(unsigned int irq_base);
|
||||
|
@@ -175,7 +175,7 @@ static __init void indy_time_init(void)
|
||||
}
|
||||
|
||||
/* Generic SGI handler for (spurious) 8254 interrupts */
|
||||
void indy_8254timer_irq(struct pt_regs *regs)
|
||||
void indy_8254timer_irq(void)
|
||||
{
|
||||
int irq = SGI_8254_0_IRQ;
|
||||
ULONG cnt;
|
||||
@@ -189,16 +189,14 @@ void indy_8254timer_irq(struct pt_regs *regs)
|
||||
irq_exit();
|
||||
}
|
||||
|
||||
void indy_r4k_timer_interrupt(struct pt_regs *regs)
|
||||
void indy_r4k_timer_interrupt(void)
|
||||
{
|
||||
struct pt_regs *old_regs = set_irq_regs(regs);
|
||||
int irq = SGI_TIMER_IRQ;
|
||||
|
||||
irq_enter();
|
||||
kstat_this_cpu.irqs[irq]++;
|
||||
timer_interrupt(irq, NULL);
|
||||
irq_exit();
|
||||
set_irq_regs(old_regs);
|
||||
}
|
||||
|
||||
void __init plat_timer_setup(struct irqaction *irq)
|
||||
|
Referencia en una nueva incidencia
Block a user