Merge branch 'fix/hda' into for-linus
[pandora-kernel.git] / arch / mips / kernel / smtc.c
index a38e3ee..23499b5 100644 (file)
@@ -25,6 +25,7 @@
 #include <linux/interrupt.h>
 #include <linux/kernel_stat.h>
 #include <linux/module.h>
+#include <linux/ftrace.h>
 
 #include <asm/cpu.h>
 #include <asm/processor.h>
@@ -939,23 +940,29 @@ static void ipi_call_interrupt(void)
 
 DECLARE_PER_CPU(struct clock_event_device, mips_clockevent_device);
 
-void ipi_decode(struct smtc_ipi *pipi)
+static void __irq_entry smtc_clock_tick_interrupt(void)
 {
        unsigned int cpu = smp_processor_id();
        struct clock_event_device *cd;
+       int irq = MIPS_CPU_IRQ_BASE + 1;
+
+       irq_enter();
+       kstat_incr_irqs_this_cpu(irq, irq_to_desc(irq));
+       cd = &per_cpu(mips_clockevent_device, cpu);
+       cd->event_handler(cd);
+       irq_exit();
+}
+
+void ipi_decode(struct smtc_ipi *pipi)
+{
        void *arg_copy = pipi->arg;
        int type_copy = pipi->type;
-       int irq = MIPS_CPU_IRQ_BASE + 1;
 
        smtc_ipi_nq(&freeIPIq, pipi);
 
        switch (type_copy) {
        case SMTC_CLOCK_TICK:
-               irq_enter();
-               kstat_incr_irqs_this_cpu(irq, irq_to_desc(irq));
-               cd = &per_cpu(mips_clockevent_device, cpu);
-               cd->event_handler(cd);
-               irq_exit();
+               smtc_clock_tick_interrupt();
                break;
 
        case LINUX_SMP_IPI: