X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=kernel%2Ftime%2Fhrtimer.c;h=93ef7190bdeaadbf99efe07954cca3bee6399d07;hb=34e7724c0767f04f6199f2bd7232e9ab1207e1df;hp=76d4bd962b19b3bab345460676954ef6f7c14568;hpb=7ce14f6ff26460819345fe8495cf2dd6538b7cdc;p=platform%2Fkernel%2Flinux-rpi.git diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c index 76d4bd9..93ef7190 100644 --- a/kernel/time/hrtimer.c +++ b/kernel/time/hrtimer.c @@ -266,21 +266,23 @@ lock_hrtimer_base(const struct hrtimer *timer, unsigned long *flags) /* * Divide a ktime value by a nanosecond value */ -u64 __ktime_divns(const ktime_t kt, s64 div) +s64 __ktime_divns(const ktime_t kt, s64 div) { - u64 dclc; int sft = 0; + s64 dclc; + u64 tmp; dclc = ktime_to_ns(kt); + tmp = dclc < 0 ? -dclc : dclc; + /* Make sure the divisor is less than 2^32: */ while (div >> 32) { sft++; div >>= 1; } - dclc >>= sft; - do_div(dclc, (unsigned long) div); - - return dclc; + tmp >>= sft; + do_div(tmp, (unsigned long) div); + return dclc < 0 ? -tmp : tmp; } EXPORT_SYMBOL_GPL(__ktime_divns); #endif /* BITS_PER_LONG >= 64 */