summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>2013-06-19 10:57:33 +0200
committerRalf Baechle <ralf@linux-mips.org>2013-06-21 18:07:03 +0200
commitcd6cbde6b01b6e82662cad392c0d177b4af17443 (patch)
tree3e5dd20791914dbb7696f30e4e07cc49a5f4ff18
parent318883517ebc56e1f9068597e9875f578016e225 (diff)
downloadlwn-cd6cbde6b01b6e82662cad392c0d177b4af17443.tar.gz
lwn-cd6cbde6b01b6e82662cad392c0d177b4af17443.zip
WATCHDOG: sb_wdog: Fix 32 bit build failure
Fixes the following linking problem: drivers/watchdog/sb_wdog.c:211: undefined reference to `__udivdi3' This results from reading a 64 bit register, then dividing the value by 1000000. For 32 bit kernels gcc will use the helper function __udivdi3 from libgcc which the kernel intentionally doesn't provide. In the read registerbits 23..63 are always zero and only bits 0..22 are signficant. So a simple cast to truncate the read value to 32 bits fixes the issue. Reported and initial patch by Markos Chandras <markos.chandras@imgtec.com>. Signed-off-by: Ralf Baechle <ralf@linux-mips.org> Reported-by: Markos Chandras <markos.chandras@imgtec.com>
-rw-r--r--drivers/watchdog/sb_wdog.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/watchdog/sb_wdog.c b/drivers/watchdog/sb_wdog.c
index 25c7a3f9652d..ea5d84a1fdad 100644
--- a/drivers/watchdog/sb_wdog.c
+++ b/drivers/watchdog/sb_wdog.c
@@ -208,7 +208,7 @@ static long sbwdog_ioctl(struct file *file, unsigned int cmd,
* get the remaining count from the ... count register
* which is 1*8 before the config register
*/
- ret = put_user(__raw_readq(user_dog - 8) / 1000000, p);
+ ret = put_user((u32)__raw_readq(user_dog - 8) / 1000000, p);
break;
}
return ret;