aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/time/ntp.c
diff options
context:
space:
mode:
authorRoman Zippel <zippel@linux-m68k.org>2008-05-01 07:34:26 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2008-05-01 11:03:58 -0400
commit71abb3af62dfa52930755f3b6497eafbe1d6ec85 (patch)
tree8e37f74017b800127538f6620820ea90b53169b5 /kernel/time/ntp.c
parent2418f4f28f8467b92a6177af32d05737ebf6206c (diff)
convert a few do_div users
This converts a few users of do_div to div_[su]64 and this demonstrates nicely how it can reduce some expressions to one-liners. Signed-off-by: Roman Zippel <zippel@linux-m68k.org> Cc: john stultz <johnstul@us.ibm.com> Cc: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'kernel/time/ntp.c')
-rw-r--r--kernel/time/ntp.c25
1 files changed, 6 insertions, 19 deletions
diff --git a/kernel/time/ntp.c b/kernel/time/ntp.c
index 5fd9b9469770..a4492f3d64db 100644
--- a/kernel/time/ntp.c
+++ b/kernel/time/ntp.c
@@ -15,7 +15,7 @@
15#include <linux/jiffies.h> 15#include <linux/jiffies.h>
16#include <linux/hrtimer.h> 16#include <linux/hrtimer.h>
17#include <linux/capability.h> 17#include <linux/capability.h>
18#include <asm/div64.h> 18#include <linux/math64.h>
19#include <asm/timex.h> 19#include <asm/timex.h>
20 20
21/* 21/*
@@ -53,10 +53,8 @@ static void ntp_update_frequency(void)
53 53
54 tick_length_base = second_length; 54 tick_length_base = second_length;
55 55
56 do_div(second_length, HZ); 56 tick_nsec = div_u64(second_length, HZ) >> TICK_LENGTH_SHIFT;
57 tick_nsec = second_length >> TICK_LENGTH_SHIFT; 57 tick_length_base = div_u64(tick_length_base, NTP_INTERVAL_FREQ);
58
59 do_div(tick_length_base, NTP_INTERVAL_FREQ);
60} 58}
61 59
62/** 60/**
@@ -237,7 +235,7 @@ static inline void notify_cmos_timer(void) { }
237int do_adjtimex(struct timex *txc) 235int do_adjtimex(struct timex *txc)
238{ 236{
239 long mtemp, save_adjust, rem; 237 long mtemp, save_adjust, rem;
240 s64 freq_adj, temp64; 238 s64 freq_adj;
241 int result; 239 int result;
242 240
243 /* In order to modify anything, you gotta be super-user! */ 241 /* In order to modify anything, you gotta be super-user! */
@@ -342,19 +340,8 @@ int do_adjtimex(struct timex *txc)
342 freq_adj = time_offset * mtemp; 340 freq_adj = time_offset * mtemp;
343 freq_adj = shift_right(freq_adj, time_constant * 2 + 341 freq_adj = shift_right(freq_adj, time_constant * 2 +
344 (SHIFT_PLL + 2) * 2 - SHIFT_NSEC); 342 (SHIFT_PLL + 2) * 2 - SHIFT_NSEC);
345 if (mtemp >= MINSEC && (time_status & STA_FLL || mtemp > MAXSEC)) { 343 if (mtemp >= MINSEC && (time_status & STA_FLL || mtemp > MAXSEC))
346 u64 utemp64; 344 freq_adj += div_s64(time_offset << (SHIFT_NSEC - SHIFT_FLL), mtemp);
347 temp64 = time_offset << (SHIFT_NSEC - SHIFT_FLL);
348 if (time_offset < 0) {
349 utemp64 = -temp64;
350 do_div(utemp64, mtemp);
351 freq_adj -= utemp64;
352 } else {
353 utemp64 = temp64;
354 do_div(utemp64, mtemp);
355 freq_adj += utemp64;
356 }
357 }
358 freq_adj += time_freq; 345 freq_adj += time_freq;
359 freq_adj = min(freq_adj, (s64)MAXFREQ_NSEC); 346 freq_adj = min(freq_adj, (s64)MAXFREQ_NSEC);
360 time_freq = max(freq_adj, (s64)-MAXFREQ_NSEC); 347 time_freq = max(freq_adj, (s64)-MAXFREQ_NSEC);