diff options
author | Pavel Tatashin <pasha.tatashin@oracle.com> | 2017-06-12 22:41:43 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-06-13 00:44:02 +0200 |
commit | b5dd4d807f0fe7da67c5cc67b2ec681b60e4994b (patch) | |
tree | 37000602710190390a6ea209b17435fa3c3cdff3 /arch | |
parent | sparc64: access tick function from variable (diff) | |
download | linux-b5dd4d807f0fe7da67c5cc67b2ec681b60e4994b.tar.xz linux-b5dd4d807f0fe7da67c5cc67b2ec681b60e4994b.zip |
sparc64: show time stamps from zero
On most platforms, time is shown from the beginning of boot. This patch is
adding offset to sched_clock() for SPARC, to also show time from 0.
This means we will have one more load, but we saved one in an ealier patch.
Signed-off-by: Pavel Tatashin <pasha.tatashin@oracle.com>
Reviewed-by: Bob Picco <bob.picco@oracle.com>
Reviewed-by: Steven Sistare <steven.sistare@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/sparc/kernel/time_64.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/arch/sparc/kernel/time_64.c b/arch/sparc/kernel/time_64.c index 6724bcbc3526..5f53b74dd493 100644 --- a/arch/sparc/kernel/time_64.c +++ b/arch/sparc/kernel/time_64.c @@ -392,6 +392,7 @@ static struct sparc64_tick_ops hbtick_operations __read_mostly = { }; static unsigned long timer_ticks_per_nsec_quotient __read_mostly; +static unsigned long timer_offset __read_mostly; unsigned long cmos_regs; EXPORT_SYMBOL(cmos_regs); @@ -786,6 +787,10 @@ void __init time_init(void) timer_ticks_per_nsec_quotient = clocksource_hz2mult(freq, SPARC64_NSEC_PER_CYC_SHIFT); + timer_offset = (tick_operations.get_tick() + * timer_ticks_per_nsec_quotient) + >> SPARC64_NSEC_PER_CYC_SHIFT; + clocksource_tick.name = tick_operations.name; clocksource_tick.read = clocksource_tick_read; @@ -813,8 +818,9 @@ unsigned long long sched_clock(void) { unsigned long ticks = tick_operations.get_tick(); - return (ticks * timer_ticks_per_nsec_quotient) - >> SPARC64_NSEC_PER_CYC_SHIFT; + return ((ticks * timer_ticks_per_nsec_quotient) + >> SPARC64_NSEC_PER_CYC_SHIFT) + - timer_offset; } int read_current_timer(unsigned long *timer_val) |