Message ID | 20180102105653.1645748-1-arnd@arndb.de |
---|---|
State | New |
Headers | show |
Series | m32r: fix readl/writel prototypes | expand |
Hi Arnd, On Tue, Jan 2, 2018 at 11:56 AM, Arnd Bergmann <arnd@arndb.de> wrote: > All other architectures use 'unsigned int' as the data in readl/write, > but m32r uses 'unsigned long', leading to lots of harmless build warnings > like: > > drivers/mmc/host/dw_mmc.c: In function 'dw_mci_regs_show': > drivers/mmc/host/dw_mmc.c:168:31: warning: format '%x' expects argument of type 'unsigned int', but argument 3 has type 'long unsigned int' [-Wformat=] > seq_printf(s, "STATUS:\t0x%08x\n", mci_readl(host, STATUS)); Thanks for fixing this! BTW, I started fixing this a while ago, too, but of course I dived too deep into arch/m32r/platforms/*/io.c (there are plenty of more type inconsistencies with asm-generic/io.h!), and gave up after ca. 500 lines of changes ;-) > Signed-off-by: Arnd Bergmann <arnd@arndb.de> With the below fixed: Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be> > --- a/arch/m32r/include/asm/io.h > +++ b/arch/m32r/include/asm/io.h > @@ -108,9 +108,9 @@ static inline unsigned short _readw(unsigned long addr) > return *(volatile unsigned short __force *)addr; > } > > -static inline unsigned long _readl(unsigned long addr) > +static inline unsigned int _readl(unsigned long addr) > { > - return *(volatile unsigned long __force *)addr; > + return *(volatile unsigned int __force *)addr; > } > > static inline void _writeb(unsigned char b, unsigned long addr) > @@ -123,9 +123,9 @@ static inline void _writew(unsigned short w, unsigned long addr) > *(volatile unsigned short __force *)addr = w; > } > > -static inline void _writel(unsigned long l, unsigned long addr) > +static inline void _writel(unsigned long l, unsigned int addr) Don't you want to change the type of "l" instead of the type of "addr"? > { > - *(volatile unsigned long __force *)addr = l; > + *(volatile unsigned int __force *)addr = l; > } Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds
On Tue, Jan 02, 2018 at 11:56:41AM +0100, Arnd Bergmann wrote: > All other architectures use 'unsigned int' as the data in readl/write, > but m32r uses 'unsigned long', leading to lots of harmless build warnings > like: > > drivers/mmc/host/dw_mmc.c: In function 'dw_mci_regs_show': > drivers/mmc/host/dw_mmc.c:168:31: warning: format '%x' expects argument of type 'unsigned int', but argument 3 has type 'long unsigned int' [-Wformat=] > seq_printf(s, "STATUS:\t0x%08x\n", mci_readl(host, STATUS)); > > Signed-off-by: Arnd Bergmann <arnd@arndb.de> > --- > arch/m32r/include/asm/io.h | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/arch/m32r/include/asm/io.h b/arch/m32r/include/asm/io.h > index 1b653bb16f9a..093486b5b931 100644 > --- a/arch/m32r/include/asm/io.h > +++ b/arch/m32r/include/asm/io.h > @@ -108,9 +108,9 @@ static inline unsigned short _readw(unsigned long addr) > return *(volatile unsigned short __force *)addr; > } > > -static inline unsigned long _readl(unsigned long addr) > +static inline unsigned int _readl(unsigned long addr) > { > - return *(volatile unsigned long __force *)addr; > + return *(volatile unsigned int __force *)addr; > } The __force is not needed here, so I think it would be better to remove it. Maybe better to do that in another patch, though. -- Luc Van Oostenryck
diff --git a/arch/m32r/include/asm/io.h b/arch/m32r/include/asm/io.h index 1b653bb16f9a..093486b5b931 100644 --- a/arch/m32r/include/asm/io.h +++ b/arch/m32r/include/asm/io.h @@ -108,9 +108,9 @@ static inline unsigned short _readw(unsigned long addr) return *(volatile unsigned short __force *)addr; } -static inline unsigned long _readl(unsigned long addr) +static inline unsigned int _readl(unsigned long addr) { - return *(volatile unsigned long __force *)addr; + return *(volatile unsigned int __force *)addr; } static inline void _writeb(unsigned char b, unsigned long addr) @@ -123,9 +123,9 @@ static inline void _writew(unsigned short w, unsigned long addr) *(volatile unsigned short __force *)addr = w; } -static inline void _writel(unsigned long l, unsigned long addr) +static inline void _writel(unsigned long l, unsigned int addr) { - *(volatile unsigned long __force *)addr = l; + *(volatile unsigned int __force *)addr = l; } #define inb _inb
All other architectures use 'unsigned int' as the data in readl/write, but m32r uses 'unsigned long', leading to lots of harmless build warnings like: drivers/mmc/host/dw_mmc.c: In function 'dw_mci_regs_show': drivers/mmc/host/dw_mmc.c:168:31: warning: format '%x' expects argument of type 'unsigned int', but argument 3 has type 'long unsigned int' [-Wformat=] seq_printf(s, "STATUS:\t0x%08x\n", mci_readl(host, STATUS)); Signed-off-by: Arnd Bergmann <arnd@arndb.de> --- arch/m32r/include/asm/io.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) -- 2.9.0