diff options
author | Will Deacon <will.deacon@arm.com> | 2012-08-07 17:59:53 +0100 |
---|---|---|
committer | Jonas Bonn <jonas@southpole.se> | 2012-09-01 16:36:03 +0200 |
commit | 439164663e5d1753360ff84ea4d5c598459e5d50 (patch) | |
tree | 4356a81bb01d8ace51b721aa76ca41cb93f4cc28 /arch | |
parent | fea7a08acb13524b47711625eebea40a0ede69a0 (diff) | |
download | linux-stable-439164663e5d1753360ff84ea4d5c598459e5d50.tar.gz linux-stable-439164663e5d1753360ff84ea4d5c598459e5d50.tar.bz2 linux-stable-439164663e5d1753360ff84ea4d5c598459e5d50.zip |
openrisc: delay: fix loops calculation for __const_udelay
The openrisc implementation of __const_udelay casts the result of a
32-bit multiplication to 64 bits and passes the top 32 bits to __delay.
Since there are no casts on the arguments, this results in a __delay of
zero, regardless of the xloops parameter.
This patch fixes the problem by casting xloops to (unsigned long long),
ensuring that the multiplication is not truncated.
Cc: Jon Masters <jcm@redhat.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Jonas Bonn <jonas@southpole.se>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/openrisc/lib/delay.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/openrisc/lib/delay.c b/arch/openrisc/lib/delay.c index 01d9740ae6f3..0c12407d3d5c 100644 --- a/arch/openrisc/lib/delay.c +++ b/arch/openrisc/lib/delay.c @@ -41,7 +41,7 @@ inline void __const_udelay(unsigned long xloops) { unsigned long long loops; - loops = xloops * loops_per_jiffy * HZ; + loops = (unsigned long long)xloops * loops_per_jiffy * HZ; __delay(loops >> 32); } |