|
|
@@ -234,9 +234,6 @@ static inline unsigned long long cycles_2_ns(unsigned long long cyc)
|
|
|
return ns;
|
|
|
}
|
|
|
|
|
|
-/* XXX surely we already have this someplace in the kernel?! */
|
|
|
-#define DIV_ROUND(n, d) (((n) + ((d) / 2)) / (d))
|
|
|
-
|
|
|
static void set_cyc2ns_scale(unsigned long cpu_khz, int cpu)
|
|
|
{
|
|
|
unsigned long long tsc_now, ns_now;
|
|
|
@@ -259,7 +256,9 @@ static void set_cyc2ns_scale(unsigned long cpu_khz, int cpu)
|
|
|
* time function is continuous; see the comment near struct
|
|
|
* cyc2ns_data.
|
|
|
*/
|
|
|
- data->cyc2ns_mul = DIV_ROUND(NSEC_PER_MSEC << CYC2NS_SCALE_FACTOR, cpu_khz);
|
|
|
+ data->cyc2ns_mul =
|
|
|
+ DIV_ROUND_CLOSEST(NSEC_PER_MSEC << CYC2NS_SCALE_FACTOR,
|
|
|
+ cpu_khz);
|
|
|
data->cyc2ns_shift = CYC2NS_SCALE_FACTOR;
|
|
|
data->cyc2ns_offset = ns_now -
|
|
|
mul_u64_u32_shr(tsc_now, data->cyc2ns_mul, CYC2NS_SCALE_FACTOR);
|