Re: [PATCH v3 09/17] m68k: io: implement dummy relaxed accessor macros for writes

From: Greg Ungerer
Date: Wed Sep 24 2014 - 21:13:51 EST


Hi Will

On 25/09/14 03:17, Will Deacon wrote:
> write{b,w,l}_relaxed are implemented by some architectures in order to
> permit memory-mapped I/O accesses with weaker barrier semantics than the
> non-relaxed variants.
>
> This patch adds dummy macros for the write accessors to m68k, in the
> same vein as the dummy definitions for the relaxed read accessors.
> Additionally, the existing relaxed read accessors are moved into
> asm/io.h, so that they can be used by m68k targets with an MMU.
>
> Acked-by: Geert Uytterhoeven <geert@xxxxxxxxxxxxxx>
> Signed-off-by: Will Deacon <will.deacon@xxxxxxx>
> ---
> arch/m68k/include/asm/io.h | 8 ++++++++
> arch/m68k/include/asm/io_no.h | 4 ----
> 2 files changed, 8 insertions(+), 4 deletions(-)
>
> diff --git a/arch/m68k/include/asm/io.h b/arch/m68k/include/asm/io.h
> index c70cc9155003..bccd5a914eb6 100644
> --- a/arch/m68k/include/asm/io.h
> +++ b/arch/m68k/include/asm/io.h
> @@ -3,3 +3,11 @@
> #else
> #include <asm/io_mm.h>
> #endif
> +
> +#define readb_relaxed(addr) readb(addr)
> +#define readw_relaxed(addr) readw(addr)
> +#define readl_relaxed(addr) readl(addr)
> +
> +#define writeb_relaxed(b, addr) writeb(b, addr)
> +#define writew_relaxed(b, addr) writew(b, addr)
> +#define writel_relaxed(b, addr) writel(b, addr)

Putting them here means they won't have any multiple include protection
(there is no "#ifndef _IO_H" around them). Doesn't seem to lead to
any problems in practice. Just flagging it...

Regards
Greg



> diff --git a/arch/m68k/include/asm/io_no.h b/arch/m68k/include/asm/io_no.h
> index 52f7e8499172..19c237c63dc2 100644
> --- a/arch/m68k/include/asm/io_no.h
> +++ b/arch/m68k/include/asm/io_no.h
> @@ -40,10 +40,6 @@ static inline unsigned int _swapl(volatile unsigned long v)
> #define readl(addr) \
> ({ unsigned int __v = (*(volatile unsigned int *) (addr)); __v; })
>
> -#define readb_relaxed(addr) readb(addr)
> -#define readw_relaxed(addr) readw(addr)
> -#define readl_relaxed(addr) readl(addr)
> -
> #define writeb(b,addr) (void)((*(volatile unsigned char *) (addr)) = (b))
> #define writew(b,addr) (void)((*(volatile unsigned short *) (addr)) = (b))
> #define writel(b,addr) (void)((*(volatile unsigned int *) (addr)) = (b))
>

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/