[PATCH] ARM: type casts update_sched_clock cyc_to_sched_clock cyc_to_fixed_sched_clock
Russell King - ARM Linux
linux at arm.linux.org.uk
Tue Apr 5 03:56:22 EDT 2011
On Tue, Apr 05, 2011 at 09:43:21AM +0200, Jan Weitzel wrote:
> parameter "u32 mask" type cast befor inversion
Nak. I want a 32-bit all ones quantity.
unsigned long long vali = (unsigned short)~0;
unsigned long long vall = ~(unsigned short)0;
compiles to:
vali:
.word 65535
.word 0
vall:
.word -1
.word -1
So moving the ~ to be evaluated after the cast has the effect of making
the cast pointless, and produces wrong values. (u32)~0 does the 32-bit
cast _after_ the inversion which ensures that its always truncated to
a 32-bit value.
As the function is declared as taking a u32, the cast isn't needed. If
the function gets changed to take a u64, the casts will need to be
re-added. So, (u32)~0 makes the fact that we want a 32-bit all-ones
mask explicit.
More information about the linux-arm-kernel
mailing list