|
@@ -710,9 +710,10 @@ static cycle_t logarithmic_accumulation(cycle_t offset, int shift)
|
|
|
/* Accumulate raw time */
|
|
|
raw_nsecs = timekeeper.raw_interval << shift;
|
|
|
raw_nsecs += raw_time.tv_nsec;
|
|
|
- while (raw_nsecs >= NSEC_PER_SEC) {
|
|
|
- raw_nsecs -= NSEC_PER_SEC;
|
|
|
- raw_time.tv_sec++;
|
|
|
+ if (raw_nsecs >= NSEC_PER_SEC) {
|
|
|
+ u64 raw_secs = raw_nsecs;
|
|
|
+ raw_nsecs = do_div(raw_secs, NSEC_PER_SEC);
|
|
|
+ raw_time.tv_sec += raw_secs;
|
|
|
}
|
|
|
raw_time.tv_nsec = raw_nsecs;
|
|
|
|