diff options
author | Ralf Baechle <ralf@linux-mips.org> | 2007-03-27 10:11:54 -0400 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2007-03-29 18:46:35 -0400 |
commit | ae036b790891565c5b4b64e616ed497138d1f8d6 (patch) | |
tree | 57ee9dd9cc58104131d1f2948298cfa91598b528 /arch/mips/kernel | |
parent | fe99f1b184efb75c50dd8cbdfff99b559c2cb3b3 (diff) |
[MIPS] SMTC: irq_{enter,leave} and kstats keeping for relayed timer ints.
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips/kernel')
-rw-r--r-- | arch/mips/kernel/smtc.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/mips/kernel/smtc.c b/arch/mips/kernel/smtc.c index f253eda27fa3..cba17a8f53d0 100644 --- a/arch/mips/kernel/smtc.c +++ b/arch/mips/kernel/smtc.c | |||
@@ -4,6 +4,7 @@ | |||
4 | #include <linux/sched.h> | 4 | #include <linux/sched.h> |
5 | #include <linux/cpumask.h> | 5 | #include <linux/cpumask.h> |
6 | #include <linux/interrupt.h> | 6 | #include <linux/interrupt.h> |
7 | #include <linux/kernel_stat.h> | ||
7 | #include <linux/module.h> | 8 | #include <linux/module.h> |
8 | 9 | ||
9 | #include <asm/cpu.h> | 10 | #include <asm/cpu.h> |
@@ -14,6 +15,7 @@ | |||
14 | #include <asm/hazards.h> | 15 | #include <asm/hazards.h> |
15 | #include <asm/mmu_context.h> | 16 | #include <asm/mmu_context.h> |
16 | #include <asm/smp.h> | 17 | #include <asm/smp.h> |
18 | #include <asm/mips-boards/maltaint.h> | ||
17 | #include <asm/mipsregs.h> | 19 | #include <asm/mipsregs.h> |
18 | #include <asm/cacheflush.h> | 20 | #include <asm/cacheflush.h> |
19 | #include <asm/time.h> | 21 | #include <asm/time.h> |
@@ -812,12 +814,15 @@ void ipi_decode(struct smtc_ipi *pipi) | |||
812 | smtc_ipi_nq(&freeIPIq, pipi); | 814 | smtc_ipi_nq(&freeIPIq, pipi); |
813 | switch (type_copy) { | 815 | switch (type_copy) { |
814 | case SMTC_CLOCK_TICK: | 816 | case SMTC_CLOCK_TICK: |
817 | irq_enter(); | ||
818 | kstat_this_cpu.irqs[MIPSCPU_INT_BASE + MIPSCPU_INT_CPUCTR]++; | ||
815 | /* Invoke Clock "Interrupt" */ | 819 | /* Invoke Clock "Interrupt" */ |
816 | ipi_timer_latch[dest_copy] = 0; | 820 | ipi_timer_latch[dest_copy] = 0; |
817 | #ifdef CONFIG_SMTC_IDLE_HOOK_DEBUG | 821 | #ifdef CONFIG_SMTC_IDLE_HOOK_DEBUG |
818 | clock_hang_reported[dest_copy] = 0; | 822 | clock_hang_reported[dest_copy] = 0; |
819 | #endif /* CONFIG_SMTC_IDLE_HOOK_DEBUG */ | 823 | #endif /* CONFIG_SMTC_IDLE_HOOK_DEBUG */ |
820 | local_timer_interrupt(0, NULL); | 824 | local_timer_interrupt(0, NULL); |
825 | irq_exit(); | ||
821 | break; | 826 | break; |
822 | case LINUX_SMP_IPI: | 827 | case LINUX_SMP_IPI: |
823 | switch ((int)arg_copy) { | 828 | switch ((int)arg_copy) { |