On Tue, Jun 20, 2017 at 06:24:32PM +0200, Luc Van Oostenryck wrote: > On Tue, Jun 20, 2017 at 04:49:39PM +0100, Will Deacon wrote: > > On Tue, Jun 20, 2017 at 02:24:43PM +0200, Luc Van Oostenryck wrote: > > > When using sparse on the arm64 tree we get many thousands of > > > warnings like 'constant ... is so big it is unsigned long long' > > > or 'shift too big (32) for type unsigned long'. This happens > > > because by default sparse considers the machine as 32bit and > > > defines the size of the types accordingly. > > > > > > Fix this by passing the '-m64' flag to sparse so that > > > sparse can correctly define longs as being 64bit. > > > > > > CC: Catalin Marinas <catalin.marinas@xxxxxxx> > > > CC: Will Deacon <will.deacon@xxxxxxx> > > > CC: linux-arm-kernel@xxxxxxxxxxxxxxxxxxx > > > Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@xxxxxxxxx> > > > --- > > > arch/arm64/Makefile | 2 +- > > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > > > diff --git a/arch/arm64/Makefile b/arch/arm64/Makefile > > > index f839ecd91..15d6c1476 100644 > > > --- a/arch/arm64/Makefile > > > +++ b/arch/arm64/Makefile > > > @@ -62,7 +62,7 @@ LD += -EL > > > UTS_MACHINE := aarch64 > > > endif > > > > > > -CHECKFLAGS += -D__aarch64__ > > > +CHECKFLAGS += -D__aarch64__ -m64 > > > > Looks fine to me, but just wondering whether or not we should also be > > passing something to indicate the endianness of the target. Does sparse care > > about that? > > Yes, we should. sparse doesn't care per-se but some macros, structures > or whole portion of code may depends on '__{LITTLE,BIG}_ENDIAN__' > being defined or not, for example (but I don't think it will make > a big difference, at least nothing like the 629904 'constant is so big' > warnings we have now due to the missing -m64). > > For this, you have two possibilities: > 1) just doing something like PPC: > +ifdef CONFIG_CPU_BIG_ENDIAN > +CHECKFLAGS += -D__BIG_ENDIAN__ > +else > +CHECKFLAGS += -D__LITTLE_ENDIAN__ > +endif > This will work now. I can't send you a proper patch if you wish. > > 2) a cleaner solution, IMO, would be to teach sparse about > -mlittle-endian/-mbig-endian. In fact I already wrote the patch > earlier today. But of course, you will need to wait for the patch > to reach sparse's master and then compile sparse yourself or wait > for a new release (which shouldn't take much long, though). If you do that, you could also teach it that AArch64 is 64-bit ;) Will -- To unsubscribe from this list: send the line "unsubscribe linux-sparse" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html