[Top] [All Lists]

Re: Fwd: about udelay in mips

To: Ian Lance Taylor <>
Subject: Re: Fwd: about udelay in mips
From: "Maciej W. Rozycki" <>
Date: Thu, 27 Jan 2011 21:42:50 +0000 (GMT)
Cc: loody <>, Sergei Shtylyov <>, gcc-help <>, Linux MIPS Mailing List <>
In-reply-to: <>
Original-recipient: rfc822;
References: <> <> <> <> <> <> <> <> <>
User-agent: Alpine 2.00 (LFD 1167 2008-08-23)
On Thu, 27 Jan 2011, Ian Lance Taylor wrote:

> I don't know the type of HZ.  But assuming it is a constant, then the
> rules of C are that the expression
>     us * 0x000010c7 * HZ * lpj
> gets evaluated in the type "unsigned long".  The fact that you then cast
> that "unsigned long" value to "unsigned long long" does not cause the
> multiplication to be done in the type "unsigned long long".
> You need to write something like
>     (unsigned long long) us * 0x000010c7 * HZ * (unsigned long long) lpj
> to get the multiplication to be done in the "unsigned long long" type.

 Though as a matter of coding style, personally I'd rather assigned "us" 
to a local variable of the "unsigned long long" type and performed all the 
calculations on it instead, avoiding any explicit casts and doubts as to 
what type is being used altogether.


<Prev in Thread] Current Thread [Next in Thread>