Commit 43916466 authored by Will Deacon's avatar Will Deacon Committed by Jonas Bonn

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: default avatarWill Deacon <will.deacon@arm.com>
Signed-off-by: default avatarJonas Bonn <jonas@southpole.se>
parent fea7a08a
......@@ -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);
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment