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>
This commit is contained in:
Pavel Tatashin 2017-06-12 16:41:43 -04:00 committed by David S. Miller
parent b8a83fcb78
commit b5dd4d807f
1 changed files with 8 additions and 2 deletions

View File

@ -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)