diff options
Diffstat (limited to 'arch/mips/mips-boards/generic/time.c')
-rw-r--r-- | arch/mips/mips-boards/generic/time.c | 16 |
1 files changed, 2 insertions, 14 deletions
diff --git a/arch/mips/mips-boards/generic/time.c b/arch/mips/mips-boards/generic/time.c index 37735bfc3afd..b41db9e7ab1f 100644 --- a/arch/mips/mips-boards/generic/time.c +++ b/arch/mips/mips-boards/generic/time.c | |||
@@ -88,8 +88,6 @@ irqreturn_t mips_timer_interrupt(int irq, void *dev_id) | |||
88 | * the general MIPS timer_interrupt routine. | 88 | * the general MIPS timer_interrupt routine. |
89 | */ | 89 | */ |
90 | 90 | ||
91 | int vpflags; | ||
92 | |||
93 | /* | 91 | /* |
94 | * We could be here due to timer interrupt, | 92 | * We could be here due to timer interrupt, |
95 | * perf counter overflow, or both. | 93 | * perf counter overflow, or both. |
@@ -98,15 +96,6 @@ irqreturn_t mips_timer_interrupt(int irq, void *dev_id) | |||
98 | perf_irq(); | 96 | perf_irq(); |
99 | 97 | ||
100 | if (read_c0_cause() & (1 << 30)) { | 98 | if (read_c0_cause() & (1 << 30)) { |
101 | /* If timer interrupt, make it de-assert */ | ||
102 | write_c0_compare (read_c0_count() - 1); | ||
103 | /* | ||
104 | * DVPE is necessary so long as cross-VPE interrupts | ||
105 | * are done via read-modify-write of Cause register. | ||
106 | */ | ||
107 | vpflags = dvpe(); | ||
108 | clear_c0_cause(CPUCTR_IMASKBIT); | ||
109 | evpe(vpflags); | ||
110 | /* | 99 | /* |
111 | * There are things we only want to do once per tick | 100 | * There are things we only want to do once per tick |
112 | * in an "MP" system. One TC of each VPE will take | 101 | * in an "MP" system. One TC of each VPE will take |
@@ -115,14 +104,13 @@ irqreturn_t mips_timer_interrupt(int irq, void *dev_id) | |||
115 | * the tick on VPE 0 to run the full timer_interrupt(). | 104 | * the tick on VPE 0 to run the full timer_interrupt(). |
116 | */ | 105 | */ |
117 | if (cpu_data[cpu].vpe_id == 0) { | 106 | if (cpu_data[cpu].vpe_id == 0) { |
118 | timer_interrupt(irq, NULL); | 107 | timer_interrupt(irq, NULL); |
119 | smtc_timer_broadcast(cpu_data[cpu].vpe_id); | ||
120 | } else { | 108 | } else { |
121 | write_c0_compare(read_c0_count() + | 109 | write_c0_compare(read_c0_count() + |
122 | (mips_hpt_frequency/HZ)); | 110 | (mips_hpt_frequency/HZ)); |
123 | local_timer_interrupt(irq, dev_id); | 111 | local_timer_interrupt(irq, dev_id); |
124 | smtc_timer_broadcast(cpu_data[cpu].vpe_id); | ||
125 | } | 112 | } |
113 | smtc_timer_broadcast(cpu_data[cpu].vpe_id); | ||
126 | } | 114 | } |
127 | #else /* CONFIG_MIPS_MT_SMTC */ | 115 | #else /* CONFIG_MIPS_MT_SMTC */ |
128 | int r2 = cpu_has_mips_r2; | 116 | int r2 = cpu_has_mips_r2; |