m68knommu: add sched_clock() for the DMA timer
with this printk() and other sched_clock() user use the more precise timestamps. The highly optimized math is from arch/x86/kernel/tsc_32.c. Signed-off-by: Sebastian Siewior <bigeasy@linutronix.de> Signed-off-by: Greg Ungerer <gerg@uclinux.org>
This commit is contained in:
parent
95469bd64a
commit
5bed10a5ee
@ -66,3 +66,19 @@ static int __init init_cf_dt_clocksource(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
arch_initcall(init_cf_dt_clocksource);
|
arch_initcall(init_cf_dt_clocksource);
|
||||||
|
|
||||||
|
#define CYC2NS_SCALE_FACTOR 10 /* 2^10, carefully chosen */
|
||||||
|
#define CYC2NS_SCALE ((1000000 << CYC2NS_SCALE_FACTOR) / (DMA_FREQ / 1000))
|
||||||
|
|
||||||
|
static unsigned long long cycles2ns(unsigned long cycl)
|
||||||
|
{
|
||||||
|
return (unsigned long long) ((unsigned long long)cycl *
|
||||||
|
CYC2NS_SCALE) >> CYC2NS_SCALE_FACTOR;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned long long sched_clock(void)
|
||||||
|
{
|
||||||
|
unsigned long cycl = __raw_readl(DTCN0);
|
||||||
|
|
||||||
|
return cycles2ns(cycl);
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user