From: David Miller on
From: Vladislav Bolkhovitin <vst(a)vlnb.net>
Date: Wed, 16 Jun 2010 23:08:03 +0400

> We in SCST project need to printk/sprintf variables of type
> uint64_t. Size of those variables is required to be 64-bit integer. On
> x86 we printk/sprintf them as %lld, but on Sparc we have a compiler
> warnings like:
>
> scst/src/scst_targ.c:2136: warning: format ¡%llx¢ expects type ¡long
> long unsigned int¢, but argument 4 has type ¡uint64_t¢.
>
> It is because on Sparc uint64_t defined as unsigned long, but on x86 -
> as unsigned long long.

You must use %ll and explicitly cast the argument to "long long".