[PATCH] sparse fixes for cpu feature constants

David Gibson david at gibson.dropbear.id.au
Sun Jan 2 09:33:45 EST 2005

On Wed, Dec 29, 2004 at 10:33:26PM -0600, Nathan Lynch wrote:
> Hi-
> I've been playing around with sparse a little and saw that it gives a
> lot of warnings like this:
> arch/ppc64/mm/init.c:755:35: warning: constant 0x0000020000000000 is so
> big it is long
> It looks like we get such a warning for every expression of the form
> "(cur_cpu_spec->cpu_features & CPU_FTR_COHERENT_ICACHE)" -- basically,
> every time the code checks for a cpu feature.
> Following is an attempt to clean these up by defining the cpu feature
> constants using the ASM_CONST macro from ppc64's page.h.  I believe this
> is consistent with the intentions for ASM_CONST's use.
> There's some fallout:
> flush_icache_range() was already using ASM_CONST on one of the
> constants, so that is fixed up.
> switch_mm() uses a BEGIN_FTR_SECTION ...
> END_FTR_SECTION_IFSET(CPU_FTR_ALTIVEC) which gets broken by the change
> since 0x0000000000000008UL winds up in the generated assembly.  I
> couldn't find the BEGIN/END_FTR_SECTION construct used in any other C
> code, so I replaced this with the usual bitwise 'and' conditional (I
> hope someone else will verify that this is equivalent :).
> So, does this look like the right thing to do?  It eliminates 129 sparse
> warnings from a defconfig 2.6.10 build.

Hurrah!  You beat me to it...

> Index: 2.6.10/include/asm-ppc64/cputable.h
> ===================================================================
> +++ 2.6.10/include/asm-ppc64/cputable.h	2004-12-30 04:04:09.463979408 +0000
> @@ -16,6 +16,7 @@
>  #define __ASM_PPC_CPUTABLE_H
>  #include <linux/config.h>
> +#include <asm/page.h> /* for ASM_CONST */

Have you double checked that this won't cause a nasty #include loop?
The CPU constants are used in quite a few places, as is page.h

David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist.  NOT _the_ _other_ _way_
				| _around_!

More information about the Linuxppc64-dev mailing list