Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a226d33a authored by Paul Mundt's avatar Paul Mundt
Browse files

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
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -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)
{
	struct pt_regs *old_regs = set_irq_regs(regs);
	int irq;

	irq_enter();
@@ -101,13 +102,14 @@ asmlinkage int do_IRQ(unsigned long vector_num, struct pt_regs * regs)
	irq = irq_demux(vector_num);

	if (irq >= 0) {
		__do_IRQ(irq, regs);
		__do_IRQ(irq);
	} else {
		printk("unexpected IRQ trap at vector %03lx\n", vector_num);
	}

	irq_exit();

	set_irq_regs(old_regs);
	return 1;
}
+3 −2
Original line number Diff line number Diff line
@@ -340,8 +340,9 @@ static int __init map_cayman_irq(struct pci_dev *dev, u8 slot, u8 pin)
	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;

	pci_int = SH5PCI_READ(INT);
@@ -368,7 +369,7 @@ irqreturn_t pcish5_err_irq(int irq, void *dev_id, struct pt_regs *regs)
	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");

+9 −7
Original line number Diff line number Diff line
@@ -282,7 +282,7 @@ static long last_rtc_update = 0;
 * timer_interrupt() needs to keep up the real-time clock,
 * 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;
	asm ("getcon cr62, %0" : "=r" (current_ctc));
@@ -290,9 +290,10 @@ static inline void do_timer_interrupt(int irq, struct pt_regs *regs)

	do_timer(1);
#ifndef CONFIG_SMP
	update_process_times(user_mode(regs));
	update_process_times(user_mode(get_irq_regs()));
#endif
	profile_tick(CPU_PROFILING, regs);
	if (current->pid)
		profile_tick(CPU_PROFILING);

#ifdef CONFIG_HEARTBEAT
	{
@@ -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
 * 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;

@@ -340,7 +341,7 @@ static irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
	 * locally disabled. -arca
	 */
	write_lock(&xtime_lock);
	do_timer_interrupt(irq, regs);
	do_timer_interrupt();
	write_unlock(&xtime_lock);

	return IRQ_HANDLED;
@@ -465,9 +466,10 @@ static __init unsigned int get_cpu_hz(void)
#endif
}

static irqreturn_t sh64_rtc_interrupt(int irq, void *dev_id,
				      struct pt_regs *regs)
static irqreturn_t sh64_rtc_interrupt(int irq, void *dev_id)
{
	struct pt_regs *regs = get_irq_regs();

	ctrl_outb(0, RCR1);	/* Disable Carry Interrupts */
	regs->regs[3] = 1;	/* Using r3 */

+2 −2
Original line number Diff line number Diff line
@@ -29,13 +29,13 @@ unsigned long epld_virt;
/* Note the SMSC SuperIO chip and SMSC LAN chip interrupts are all muxed onto
   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");
	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);
	return IRQ_NONE;
+1 −0
Original line number Diff line number Diff line
#include <asm-generic/irq_regs.h>