[MIPS] VSMP: Synchronize cp0 counters on bootup.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>

+7 -2
+2
arch/mips/kernel/smp-mt.c
··· 153 154 /* Propagate Config7 */ 155 write_vpe_c0_config7(read_c0_config7()); 156 } 157 158 static unsigned int __init smp_vpe_init(unsigned int tc, unsigned int mvpconf0,
··· 153 154 /* Propagate Config7 */ 155 write_vpe_c0_config7(read_c0_config7()); 156 + 157 + write_vpe_c0_count(read_c0_count()); 158 } 159 160 static unsigned int __init smp_vpe_init(unsigned int tc, unsigned int mvpconf0,
+3 -2
arch/mips/mips-boards/generic/time.c
··· 209 #endif 210 #if defined(CONFIG_MIPS_ATLAS) || defined(CONFIG_MIPS_MALTA) 211 unsigned long flags; 212 213 local_irq_save(flags); 214 ··· 218 while (!(CMOS_READ(RTC_REG_A) & RTC_UIP)); 219 220 /* Start r4k counter. */ 221 - write_c0_count(0); 222 223 /* Read counter exactly on falling edge of update flag */ 224 while (CMOS_READ(RTC_REG_A) & RTC_UIP); 225 while (!(CMOS_READ(RTC_REG_A) & RTC_UIP)); 226 227 - count = read_c0_count(); 228 229 /* restore interrupts */ 230 local_irq_restore(flags);
··· 209 #endif 210 #if defined(CONFIG_MIPS_ATLAS) || defined(CONFIG_MIPS_MALTA) 211 unsigned long flags; 212 + unsigned int start; 213 214 local_irq_save(flags); 215 ··· 217 while (!(CMOS_READ(RTC_REG_A) & RTC_UIP)); 218 219 /* Start r4k counter. */ 220 + start = read_c0_count(); 221 222 /* Read counter exactly on falling edge of update flag */ 223 while (CMOS_READ(RTC_REG_A) & RTC_UIP); 224 while (!(CMOS_READ(RTC_REG_A) & RTC_UIP)); 225 226 + count = read_c0_count() - start; 227 228 /* restore interrupts */ 229 local_irq_restore(flags);
+2
include/asm-mips/mipsmtregs.h
··· 352 #define write_vpe_c0_vpecontrol(val) mttc0(1, 1, val) 353 #define read_vpe_c0_vpeconf0() mftc0(1, 2) 354 #define write_vpe_c0_vpeconf0(val) mttc0(1, 2, val) 355 #define read_vpe_c0_status() mftc0(12, 0) 356 #define write_vpe_c0_status(val) mttc0(12, 0, val) 357 #define read_vpe_c0_cause() mftc0(13, 0)
··· 352 #define write_vpe_c0_vpecontrol(val) mttc0(1, 1, val) 353 #define read_vpe_c0_vpeconf0() mftc0(1, 2) 354 #define write_vpe_c0_vpeconf0(val) mttc0(1, 2, val) 355 + #define read_vpe_c0_count() mftc0(9, 0) 356 + #define write_vpe_c0_count(val) mttc0(9, 0, val) 357 #define read_vpe_c0_status() mftc0(12, 0) 358 #define write_vpe_c0_status(val) mttc0(12, 0, val) 359 #define read_vpe_c0_cause() mftc0(13, 0)