return get_cycles();
}
-static int cr16_update_callback(void);
-
static struct clocksource clocksource_cr16 = {
.name = "cr16",
.rating = 300,
.mask = CLOCKSOURCE_MASK(BITS_PER_LONG),
.mult = 0, /* to be set */
.shift = 22,
- .update_callback = cr16_update_callback,
- .is_continuous = 1,
+ .flags = CLOCK_SOURCE_IS_CONTINUOUS,
};
-static int cr16_update_callback(void)
+#ifdef CONFIG_SMP
+int update_cr16_clocksource(void)
{
- int change = 0;
-
- /* since the cr16 cycle counters are not syncronized across CPUs,
+ /* since the cr16 cycle counters are not synchronized across CPUs,
we'll check if we should switch to a safe clocksource: */
if (clocksource_cr16.rating != 0 && num_online_cpus() > 1) {
- clocksource_cr16.rating = 0;
- clocksource_reselect();
- change = 1;
+ clocksource_change_rating(&clocksource_cr16, 0);
+ return 1;
}
- return change;
+ return 0;
}
-
-
-/*
- * XXX: We can do better than this.
- * Returns nanoseconds
- */
-
-unsigned long long sched_clock(void)
+#else
+int update_cr16_clocksource(void)
{
- return (unsigned long long)jiffies * (1000000000 / HZ);
+ return 0; /* no change */
}
-
+#endif /*CONFIG_SMP*/
void __init start_cpu_itimer(void)
{