Commit a226d33a authored by Paul Mundt's avatar Paul Mundt

sh64: Fixups for the irq_regs changes.

A few interrupt handlers were never updated, fix them up.
We were missing the irq_regs conversion also, so do that
at the same time.
Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
parent 6b5d1a0a
...@@ -94,6 +94,7 @@ asmlinkage void do_NMI(unsigned long vector_num, struct pt_regs * regs) ...@@ -94,6 +94,7 @@ asmlinkage void do_NMI(unsigned long vector_num, struct pt_regs * regs)
*/ */
asmlinkage int do_IRQ(unsigned long vector_num, struct pt_regs * regs) asmlinkage int do_IRQ(unsigned long vector_num, struct pt_regs * regs)
{ {
struct pt_regs *old_regs = set_irq_regs(regs);
int irq; int irq;
irq_enter(); irq_enter();
...@@ -101,13 +102,14 @@ asmlinkage int do_IRQ(unsigned long vector_num, struct pt_regs * regs) ...@@ -101,13 +102,14 @@ asmlinkage int do_IRQ(unsigned long vector_num, struct pt_regs * regs)
irq = irq_demux(vector_num); irq = irq_demux(vector_num);
if (irq >= 0) { if (irq >= 0) {
__do_IRQ(irq, regs); __do_IRQ(irq);
} else { } else {
printk("unexpected IRQ trap at vector %03lx\n", vector_num); printk("unexpected IRQ trap at vector %03lx\n", vector_num);
} }
irq_exit(); irq_exit();
set_irq_regs(old_regs);
return 1; return 1;
} }
...@@ -340,8 +340,9 @@ static int __init map_cayman_irq(struct pci_dev *dev, u8 slot, u8 pin) ...@@ -340,8 +340,9 @@ static int __init map_cayman_irq(struct pci_dev *dev, u8 slot, u8 pin)
return result; return result;
} }
irqreturn_t pcish5_err_irq(int irq, void *dev_id, struct pt_regs *regs) static irqreturn_t pcish5_err_irq(int irq, void *dev_id)
{ {
struct pt_regs *regs = get_irq_regs();
unsigned pci_int, pci_air, pci_cir, pci_aint; unsigned pci_int, pci_air, pci_cir, pci_aint;
pci_int = SH5PCI_READ(INT); pci_int = SH5PCI_READ(INT);
...@@ -368,7 +369,7 @@ irqreturn_t pcish5_err_irq(int irq, void *dev_id, struct pt_regs *regs) ...@@ -368,7 +369,7 @@ irqreturn_t pcish5_err_irq(int irq, void *dev_id, struct pt_regs *regs)
return IRQ_HANDLED; return IRQ_HANDLED;
} }
irqreturn_t pcish5_serr_irq(int irq, void *dev_id, struct pt_regs *regs) static irqreturn_t pcish5_serr_irq(int irq, void *dev_id)
{ {
printk("SERR IRQ\n"); printk("SERR IRQ\n");
......
...@@ -282,7 +282,7 @@ static long last_rtc_update = 0; ...@@ -282,7 +282,7 @@ static long last_rtc_update = 0;
* 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
*/ */
static inline void do_timer_interrupt(int irq, struct pt_regs *regs) static inline void do_timer_interrupt(void)
{ {
unsigned long long current_ctc; unsigned long long current_ctc;
asm ("getcon cr62, %0" : "=r" (current_ctc)); asm ("getcon cr62, %0" : "=r" (current_ctc));
...@@ -290,9 +290,10 @@ static inline void do_timer_interrupt(int irq, struct pt_regs *regs) ...@@ -290,9 +290,10 @@ static inline void do_timer_interrupt(int irq, struct pt_regs *regs)
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
profile_tick(CPU_PROFILING, regs); if (current->pid)
profile_tick(CPU_PROFILING);
#ifdef CONFIG_HEARTBEAT #ifdef CONFIG_HEARTBEAT
{ {
...@@ -323,7 +324,7 @@ static inline void do_timer_interrupt(int irq, struct pt_regs *regs) ...@@ -323,7 +324,7 @@ static inline void do_timer_interrupt(int irq, struct pt_regs *regs)
* Time Stamp Counter value at the time of the timer interrupt, so that * Time Stamp Counter value at the time of the timer interrupt, so that
* we later on can estimate the time of day more exactly. * we later on can estimate the time of day more exactly.
*/ */
static irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) static irqreturn_t timer_interrupt(int irq, void *dev_id)
{ {
unsigned long timer_status; unsigned long timer_status;
...@@ -340,7 +341,7 @@ static irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) ...@@ -340,7 +341,7 @@ static irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
* locally disabled. -arca * locally disabled. -arca
*/ */
write_lock(&xtime_lock); write_lock(&xtime_lock);
do_timer_interrupt(irq, regs); do_timer_interrupt();
write_unlock(&xtime_lock); write_unlock(&xtime_lock);
return IRQ_HANDLED; return IRQ_HANDLED;
...@@ -465,9 +466,10 @@ static __init unsigned int get_cpu_hz(void) ...@@ -465,9 +466,10 @@ static __init unsigned int get_cpu_hz(void)
#endif #endif
} }
static irqreturn_t sh64_rtc_interrupt(int irq, void *dev_id, static irqreturn_t sh64_rtc_interrupt(int irq, void *dev_id)
struct pt_regs *regs)
{ {
struct pt_regs *regs = get_irq_regs();
ctrl_outb(0, RCR1); /* Disable Carry Interrupts */ ctrl_outb(0, RCR1); /* Disable Carry Interrupts */
regs->regs[3] = 1; /* Using r3 */ regs->regs[3] = 1; /* Using r3 */
......
...@@ -29,13 +29,13 @@ unsigned long epld_virt; ...@@ -29,13 +29,13 @@ unsigned long epld_virt;
/* Note the SMSC SuperIO chip and SMSC LAN chip interrupts are all muxed onto /* Note the SMSC SuperIO chip and SMSC LAN chip interrupts are all muxed onto
the same SH-5 interrupt */ the same SH-5 interrupt */
static irqreturn_t cayman_interrupt_smsc(int irq, void *dev_id, struct pt_regs *regs) static irqreturn_t cayman_interrupt_smsc(int irq, void *dev_id)
{ {
printk(KERN_INFO "CAYMAN: spurious SMSC interrupt\n"); printk(KERN_INFO "CAYMAN: spurious SMSC interrupt\n");
return IRQ_NONE; return IRQ_NONE;
} }
static irqreturn_t cayman_interrupt_pci2(int irq, void *dev_id, struct pt_regs *regs) static irqreturn_t cayman_interrupt_pci2(int irq, void *dev_id)
{ {
printk(KERN_INFO "CAYMAN: spurious PCI interrupt, IRQ %d\n", irq); printk(KERN_INFO "CAYMAN: spurious PCI interrupt, IRQ %d\n", irq);
return IRQ_NONE; return IRQ_NONE;
......
#include <asm-generic/irq_regs.h>
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment