summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Walleij <linus.walleij@linaro.org>2012-10-29 15:24:18 +0100
committerJohn Stultz <john.stultz@linaro.org>2012-11-13 14:04:52 -0500
commit980097b36074596c76c1367a9e7b70ec8583d55b (patch)
tree361546a15dd634ff684a607707bfdc4f45605197
parentf95a985781e9e986992351c971af7f7e46e06ed5 (diff)
downloadop-kernel-dev-980097b36074596c76c1367a9e7b70ec8583d55b.zip
op-kernel-dev-980097b36074596c76c1367a9e7b70ec8583d55b.tar.gz
clocksource: arm_generic: use integer math helpers
This will make the two crucial integer divisions in the generic ARM arch timer used for ARMv8 use the kernel DIV_ROUND_CLOSEST() helper inline from <linux/kernel.h> so they get more precise. Cc: Marc Zyngier <marc.zyngier@arm.com> Cc: Catalin Marinas <catalin.marinas@arm.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: John Stultz <john.stultz@linaro.org>
-rw-r--r--drivers/clocksource/arm_generic.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/clocksource/arm_generic.c b/drivers/clocksource/arm_generic.c
index c4d9f95..6cd1b30 100644
--- a/drivers/clocksource/arm_generic.c
+++ b/drivers/clocksource/arm_generic.c
@@ -127,7 +127,7 @@ static void __init arch_timer_calibrate(void)
/* Cache the sched_clock multiplier to save a divide in the hot path. */
- sched_clock_mult = NSEC_PER_SEC / arch_timer_rate;
+ sched_clock_mult = DIV_ROUND_CLOSEST(NSEC_PER_SEC, arch_timer_rate);
pr_info("Architected local timer running at %u.%02uMHz.\n",
arch_timer_rate / 1000000, (arch_timer_rate / 10000) % 100);
@@ -221,7 +221,7 @@ int __init arm_generic_timer_init(void)
clocksource_register_hz(&clocksource_counter, arch_timer_rate);
/* Calibrate the delay loop directly */
- lpj_fine = arch_timer_rate / HZ;
+ lpj_fine = DIV_ROUND_CLOSEST(arch_timer_rate, HZ);
/* Immediately configure the timer on the boot CPU */
arch_timer_setup(per_cpu_ptr(&arch_timer_evt, smp_processor_id()));
OpenPOWER on IntegriCloud