asm-generic/io.h: convert readX defines to functions
PATCH 1/1 asm-generic/io.h: convert readX defines to functions
Quoted 1 line
From
75cde984766e7a76d194a11e513a039b5d0a6204Mon Sep 17 00:00:00 2001
From: Heiko Carstens <[email protected]>
Date: Mon, 7 Jan 2013 14:17:23 +0100
Subject: [PATCH] asm-generic/io.h: convert readX defines to functions
E.g. readl is defined like this
#define readl(addr) __le32_to_cpu(__raw_readl(addr))
If there is a readl() call that doesn't check the return value this will cause a compile warning on big endian machines due to the __le32_to_cpu macro magic.
E.g. code like this:
readl(addr);
will generate the following compile warning:
warning: value computed is not used [-Wunused-value]
Convert the defines to functions so we get rid of these warnings. With this patch we get rid of dozens of compile warnings on s390.
--- include/asm-generic/io.h | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-)
include/asm-generic/io.h +17 -3
@@ -54,8 +54,18 @@ static inline u32 __raw_readl(const volatile void __iomem *addr)#endif #define readb __raw_readb -#define readw (addr) __le16_to_cpu(__raw_readw(addr)) -#define readl (addr) __le32_to_cpu(__raw_readl(addr)) + +#define readw readw +static inline u16 readw (const volatile void __iomem *addr) +{ +return __le16_to_cpu (__raw_readw (addr)); +} + +#define readl readl +static inline u32 __raw_readl (const volatile void __iomem *addr) +{ +return __le32_to_cpu (__raw_readl (addr)); +}#ifndef __raw_writebstatic inline void __raw_writeb (u8 b,volatile void __iomem *addr)
@@ -90,7 +100,11 @@ static inline u64 __raw_readq(const volatile void __iomem *addr) }#endif -#define readq (addr) __le64_to_cpu(__raw_readq(addr)) +#define readq readq +static inline u64 readq (const volatile void __iomem *addr) +{ +return __le64_to_cpu (__raw_readq (addr)); +}#ifndef __raw_writeqstatic inline void __raw_writeq (u64 b,volatile void __iomem *addr)
Signature · 1 line
1.7.12.4
Quoted 13 lines · On Monday 07 January 2013 16:34:59 Heiko Carstens wrote:
E.g. readl is defined like this
#define readl(addr) __le32_to_cpu(__raw_readl(addr))
If there is a
readl()call that doesn't check the return value this will cause a compile warning on big endian machines due to the__le32_to_cpumacro magic.E.g. code like this:
readl(addr);
Quoted 8 lines
will generate the following compile warning:
warning: value computed is not used [-Wunused-value]
Convert the defines to functions so we get rid of these warnings. With this patch we get rid of dozens of compile warnings on s390.
Signed-off-by Heiko Carstens <[email protected]>
if you fix this:
include/asm-generic/io.h static inline u32 __raw_readl(const volatile void __iomem *addr) · line 68
Quoted 5 lines
include/asm-generic/io.h +5
-0+#define readl readl +static inline u32 __raw_readl (const volatile void __iomem *addr) +{ +return __le32_to_cpu (__raw_readl (addr)); +}
to be called readl rather than __raw_readl
Arnd
Quoted 6 lines · Arnd Bergmann
On Monday 07 January 2013 16:34:59 Heiko Carstens wrote:
Acked-by Arnd Bergmann <[email protected]>if you fix this:
Quoted 7 lines
include/asm-generic/io.h static inline u32 __raw_readl(const volatile void __iomem *addr) · line 68
Quoted 5 lines
include/asm-generic/io.h +5
-0+#define readl readl +static inline u32 __raw_readl (const volatile void __iomem *addr) +{ +return __le32_to_cpu (__raw_readl (addr)); +}to be called readl rather than
__raw_readl
duhh... thanks! :)