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>
This commit is contained in:
parent
318883517e
commit
cd6cbde6b0
|
@ -208,7 +208,7 @@ static long sbwdog_ioctl(struct file *file, unsigned int cmd,
|
||||||
* get the remaining count from the ... count register
|
* get the remaining count from the ... count register
|
||||||
* which is 1*8 before the config 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;
|
break;
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
|
|
Loading…
Reference in a new issue