aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mips/mips-boards/generic/time.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/mips/mips-boards/generic/time.c')
-rw-r--r--arch/mips/mips-boards/generic/time.c16
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;