Re: [PATCH v3 04/10] sh: sh7786: Add explicit I/O cast to sh7786_mm_sel()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Mar 20, 2019 at 11:21:35AM +0100, Geert Uytterhoeven wrote:
> When compile-testing on arm:
> 
>     arch/sh/include/cpu-sh4/cpu/sh7786.h: In function ‘sh7786_mm_sel’:
>     arch/sh/include/cpu-sh4/cpu/sh7786.h:135:21: warning: passing argument 1 of ‘__raw_readl’ makes pointer from integer without a cast [-Wint-conversion]
>       return __raw_readl(0xFC400020) & 0x7;
> 			 ^~~~~~~~~~
>     In file included from include/linux/io.h:25:0,
> 		     from arch/sh/include/cpu-sh4/cpu/sh7786.h:14,
> 		     from drivers/pinctrl/sh-pfc/pfc-sh7786.c:15:
>     arch/arm/include/asm/io.h:113:21: note: expected ‘const volatile void *’ but argument is of type ‘unsigned int’
>      #define __raw_readl __raw_readl
> 			 ^
>     arch/arm/include/asm/io.h:114:19: note: in expansion of macro ‘__raw_readl’
>      static inline u32 __raw_readl(const volatile void __iomem *addr)
> 		       ^~~~~~~~~~~
> 
> __raw_readl() on SuperH is a macro that casts the passed I/O address to
> the correct type, while the implementations on most other architectures
> expect to be passed the correct pointer type.
> 
> Add an explicit cast to fix this.
> 
> Note that this also gets rid of a sparse warning on SuperH:
> 
>     arch/sh/include/cpu-sh4/cpu/sh7786.h:135:16: warning: incorrect type in argument 1 (different base types)
>     arch/sh/include/cpu-sh4/cpu/sh7786.h:135:16:    expected void const volatile [noderef] <asn:2>*<noident>
>     arch/sh/include/cpu-sh4/cpu/sh7786.h:135:16:    got unsigned int
> 
> Signed-off-by: Geert Uytterhoeven <geert+renesas@xxxxxxxxx>

Reviewed-by: Simon Horman <horms+renesas@xxxxxxxxxxxx>

> ---
> As this is a dependency for sh-pfc compile-testing, I intend to queue
> this up in sh-pfc-for-v5.2.
> 
> v3:
>   - New.
> ---
>  arch/sh/include/cpu-sh4/cpu/sh7786.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/arch/sh/include/cpu-sh4/cpu/sh7786.h b/arch/sh/include/cpu-sh4/cpu/sh7786.h
> index 8f9bfbf3cdb1097f..d6cce65b48713f60 100644
> --- a/arch/sh/include/cpu-sh4/cpu/sh7786.h
> +++ b/arch/sh/include/cpu-sh4/cpu/sh7786.h
> @@ -132,7 +132,7 @@ enum {
>  
>  static inline u32 sh7786_mm_sel(void)
>  {
> -	return __raw_readl(0xFC400020) & 0x7;
> +	return __raw_readl((const volatile void __iomem *)0xFC400020) & 0x7;
>  }
>  
>  #endif /* __CPU_SH7786_H__ */
> -- 
> 2.17.1
> 



[Index of Archives]     [Linux SPI]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux