Re: [PATCH] sparc64: use unsigned long long for u64

Ken Chen
2008-12-23T17:05:59Z

On Tue, Dec 23, 2008 at 5:17 AM, Sam Ravnborg <sam@ravnborg.org> wrote:
> Andrew Morton wrote:
>
> People keep on doing
>
> printk("%llu", some_u64);
>
> testing it only on x86_64 and this generates a warning storm on
> powerpc, sparc64, etc. Because they use `long', not `long long'.
>
> Quite a few 64-bit architectures are using `long' for their
> s64/u64 types. We should convert them all to `long long'.
>
> Update types.h so we use unsigned long long for u64 and
> fix all warnings in sparc64 code.
> Tested with an allnoconfig, defconfig and allmodconfig builds.
>
> This patch introduces additional warnings in several drivers.
> These will be dealt with in separate patches.
>
> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
> Cc: Andrew Morton <akpm@linux-foundation.org>
> ---
>
> It may take a few days before the drivers gets fixed.
> Christmas is approaching fast by now.
>
> Sam
>
> diff --git a/arch/sparc/include/asm/timer_64.h b/arch/sparc/include/asm/timer_64.h
> index 5b779fd..ef3c368 100644
> --- a/arch/sparc/include/asm/timer_64.h
> +++ b/arch/sparc/include/asm/timer_64.h
> @@ -10,7 +10,7 @@
> #include <linux/init.h>
>
> struct sparc64_tick_ops {
> - unsigned long (*get_tick)(void);
> + unsigned long long (*get_tick)(void);

wait, why does this need to be changed?

People having problem with:

u64 data;
seq_printf(m, "%llu ", data);

This compiles fine with arch that defines u64 to unsigned long long
(like x86), but generate compile time warning on arch that defines u64
to unsigned long.

Isn't that you just need to convert format string to %llu for u64 type?

- Ken