Commit a25d25dd authored by Geert Uytterhoeven's avatar Geert Uytterhoeven Committed by Linus Torvalds

[PATCH] M68k time update

M68k: Update time adjustment code cfr. other architectures.
(perhaps do_gettimeofday() is a good candidate for consolidation across archs?)
parent 5e23698f
...@@ -120,14 +120,28 @@ void do_gettimeofday(struct timeval *tv) ...@@ -120,14 +120,28 @@ void do_gettimeofday(struct timeval *tv)
extern unsigned long wall_jiffies; extern unsigned long wall_jiffies;
unsigned long seq; unsigned long seq;
unsigned long usec, sec, lost; unsigned long usec, sec, lost;
unsigned long max_ntp_tick = tick_usec - tickadj;
do { do {
seq = read_seqbegin_irqsave(&xtime_lock, flags); seq = read_seqbegin_irqsave(&xtime_lock, flags);
usec = mach_gettimeoffset(); usec = mach_gettimeoffset();
lost = jiffies - wall_jiffies; lost = jiffies - wall_jiffies;
/*
* If time_adjust is negative then NTP is slowing the clock
* so make sure not to go into next possible interval.
* Better to lose some accuracy than have time go backwards..
*/
if (unlikely(time_adjust < 0)) {
usec = min(usec, max_ntp_tick);
if (lost) if (lost)
usec += lost * (1000000/HZ); usec += lost * max_ntp_tick;
}
else if (unlikely(lost))
usec += lost * tick_usec;
sec = xtime.tv_sec; sec = xtime.tv_sec;
usec += xtime.tv_nsec/1000; usec += xtime.tv_nsec/1000;
} while (read_seqretry_irqrestore(&xtime_lock, seq, flags)); } while (read_seqretry_irqrestore(&xtime_lock, seq, flags));
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment