2018-11-17 01:56:08

by Olof Johansson

[permalink] [raw]
Subject: [PATCH] arm64: Explicitly mark 64-bit constant as unsigned long

Makes sparse happy. Before:

arch/arm64/include/asm/sysreg.h:471:42: warning: constant 0xffffffffffffffff is so big it is unsigned long
arch/arm64/include/asm/sysreg.h:512:42: warning: constant 0xffffffffffffffff is so big it is unsigned long

Signed-off-by: Olof Johansson <[email protected]>
---
arch/arm64/include/asm/sysreg.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm64/include/asm/sysreg.h b/arch/arm64/include/asm/sysreg.h
index 0c909c4a932ff..981892b67b8f6 100644
--- a/arch/arm64/include/asm/sysreg.h
+++ b/arch/arm64/include/asm/sysreg.h
@@ -468,7 +468,7 @@
SCTLR_ELx_SA | SCTLR_ELx_I | SCTLR_ELx_WXN | \
SCTLR_ELx_DSSBS | ENDIAN_CLEAR_EL2 | SCTLR_EL2_RES0)

-#if (SCTLR_EL2_SET ^ SCTLR_EL2_CLEAR) != 0xffffffffffffffff
+#if (SCTLR_EL2_SET ^ SCTLR_EL2_CLEAR) != 0xfffffffffffffffful
#error "Inconsistent SCTLR_EL2 set/clear bits"
#endif

@@ -509,7 +509,7 @@
SCTLR_EL1_UMA | SCTLR_ELx_WXN | ENDIAN_CLEAR_EL1 |\
SCTLR_ELx_DSSBS | SCTLR_EL1_NTWI | SCTLR_EL1_RES0)

-#if (SCTLR_EL1_SET ^ SCTLR_EL1_CLEAR) != 0xffffffffffffffff
+#if (SCTLR_EL1_SET ^ SCTLR_EL1_CLEAR) != 0xfffffffffffffffful
#error "Inconsistent SCTLR_EL1 set/clear bits"
#endif

--
2.11.0



2018-11-17 02:29:06

by Will Deacon

[permalink] [raw]
Subject: Re: [PATCH] arm64: Explicitly mark 64-bit constant as unsigned long

Hi Olof,

On Fri, Nov 16, 2018 at 05:54:56PM -0800, Olof Johansson wrote:
> Makes sparse happy. Before:
>
> arch/arm64/include/asm/sysreg.h:471:42: warning: constant 0xffffffffffffffff is so big it is unsigned long
> arch/arm64/include/asm/sysreg.h:512:42: warning: constant 0xffffffffffffffff is so big it is unsigned long
>
> Signed-off-by: Olof Johansson <[email protected]>
> ---
> arch/arm64/include/asm/sysreg.h | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)

The warning is bogus imo, but since it's harmless to fix it then we can do
that. However, you've been beaten by:

http://lists.infradead.org/pipermail/linux-arm-kernel/2018-November/613179.html

Will

2018-11-17 02:57:14

by Olof Johansson

[permalink] [raw]
Subject: Re: [PATCH] arm64: Explicitly mark 64-bit constant as unsigned long

On Fri, Nov 16, 2018 at 6:27 PM Will Deacon <[email protected]> wrote:
>
> Hi Olof,
>
> On Fri, Nov 16, 2018 at 05:54:56PM -0800, Olof Johansson wrote:
> > Makes sparse happy. Before:
> >
> > arch/arm64/include/asm/sysreg.h:471:42: warning: constant 0xffffffffffffffff is so big it is unsigned long
> > arch/arm64/include/asm/sysreg.h:512:42: warning: constant 0xffffffffffffffff is so big it is unsigned long
> >
> > Signed-off-by: Olof Johansson <[email protected]>
> > ---
> > arch/arm64/include/asm/sysreg.h | 4 ++--
> > 1 file changed, 2 insertions(+), 2 deletions(-)
>
> The warning is bogus imo, but since it's harmless to fix it then we can do
> that. However, you've been beaten by:
>
> http://lists.infradead.org/pipermail/linux-arm-kernel/2018-November/613179.html

Yeah, mostly bogus but still useful to silence warnings so you notice new ones.

Overlooked the duplicate, happy to ack that one instead.


-Olof

2018-11-19 12:09:53

by David Laight

[permalink] [raw]
Subject: RE: [PATCH] arm64: Explicitly mark 64-bit constant as unsigned long


From: Olof Johansson
> Sent: 17 November 2018 01:55
...
> -#if (SCTLR_EL2_SET ^ SCTLR_EL2_CLEAR) != 0xffffffffffffffff
> +#if (SCTLR_EL2_SET ^ SCTLR_EL2_CLEAR) != 0xfffffffffffffffful
> #error "Inconsistent SCTLR_EL2 set/clear bits"
> #endif

Wouldn't this be clearer if written:
#if SCTLR_EL2_SET != ~SCTLR_EL2_CLEAR
which then begs the question of why there are separate 'set' and 'clear' masks.

David

-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)