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>
This commit is contained in:
parent
fea7a08acb
commit
439164663e
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue