|
@@ -35,6 +35,7 @@
|
|
|
#include <asm/pgtable.h>
|
|
|
#include <asm/page.h>
|
|
|
#include <asm/irq.h>
|
|
|
+#include <asm/sched_clock.h>
|
|
|
|
|
|
#include <asm/mach/map.h>
|
|
|
#include <asm/mach/irq.h>
|
|
@@ -398,6 +399,23 @@ void __init ixp4xx_sys_init(void)
|
|
|
ixp4xx_exp_bus_size >> 20);
|
|
|
}
|
|
|
|
|
|
+/*
|
|
|
+ * sched_clock()
|
|
|
+ */
|
|
|
+static DEFINE_CLOCK_DATA(cd);
|
|
|
+
|
|
|
+unsigned long long notrace sched_clock(void)
|
|
|
+{
|
|
|
+ u32 cyc = *IXP4XX_OSTS;
|
|
|
+ return cyc_to_sched_clock(&cd, cyc, (u32)~0);
|
|
|
+}
|
|
|
+
|
|
|
+static void notrace ixp4xx_update_sched_clock(void)
|
|
|
+{
|
|
|
+ u32 cyc = *IXP4XX_OSTS;
|
|
|
+ update_sched_clock(&cd, cyc, (u32)~0);
|
|
|
+}
|
|
|
+
|
|
|
/*
|
|
|
* clocksource
|
|
|
*/
|
|
@@ -418,18 +436,9 @@ unsigned long ixp4xx_timer_freq = FREQ;
|
|
|
EXPORT_SYMBOL(ixp4xx_timer_freq);
|
|
|
static void __init ixp4xx_clocksource_init(void)
|
|
|
{
|
|
|
- clocksource_register_hz(&clocksource_ixp4xx, ixp4xx_timer_freq);
|
|
|
-}
|
|
|
-
|
|
|
-/*
|
|
|
- * sched_clock()
|
|
|
- */
|
|
|
-unsigned long long notrace sched_clock(void)
|
|
|
-{
|
|
|
- cycle_t cyc = ixp4xx_get_cycles(NULL);
|
|
|
- struct clocksource *cs = &clocksource_ixp4xx;
|
|
|
+ init_sched_clock(&cd, ixp4xx_update_sched_clock, 32, ixp4xx_timer_freq);
|
|
|
|
|
|
- return clocksource_cyc2ns(cyc, cs->mult, cs->shift);
|
|
|
+ clocksource_register_hz(&clocksource_ixp4xx, ixp4xx_timer_freq);
|
|
|
}
|
|
|
|
|
|
/*
|