Re: Strange results of DIV_ROUND_CLOSEST

From: Guenter Roeck
Date: Tue Dec 18 2012 - 12:16:02 EST

On Tue, Dec 18, 2012 at 04:03:41PM +0100, Juergen Beisert wrote:
> Hi list,
> commit 263a523d18bca306016d75f5c8d5c57c37fe52fb changes the code of
> DIV_ROUND_CLOSEST in include/linux/kernel.h to fix a compile time warning.
> But now feeding in a zero into this macro results into 4198403. Tested with
> gcc 4.4.3 and 4.7.2, on arch x86 and ARM.
> I can reproduce this behaviour, when my ADC delivers a '0' value in the driver
> drivers/hwmon/s3c-hwmon.c in function s3c_hwmon_ch_show() with a current
> 3.7.1 kernel. The value is correct again, when the ADC delivers at least
> a '1'.
> Any ideas how to fix it correctly?
Odd one. I ran the macro through a large number of values and divisors as well
as various optimization options, with different compilers, and always get
correct results.

What are your compile options, and what are the channel multiplier and dividers
set to ?

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
Please read the FAQ at