On Mon, Dec 14, 2009 at 18:02, Florian Fainelli <ffainelli@xxxxxxxxxx> wrote: > On Saturday 12 December 2009 20:31:14 Thomas Bogendoerfer wrote: >> On Sat, Dec 12, 2009 at 05:57:56PM +0100, Florian Fainelli wrote: >> > +#define readl_be(addr) __raw_readl((__force unsigned *)addr) >> > +#define writel_be(val, addr) __raw_writel(val, (__force unsigned >> > *)addr) >> >> looks broken for little endian machines. __raw_XXX doesn't do any swapping, >> so IMHO the correct thing would be to use be32_to_cpu/cpu_to_be32. > > Yeah, I missed that point. Please find below version 2 of the patch which also addresses David's comment. > -- > From: Florian Fainelli <ffainelli@xxxxxxxxxx> > Subject: [PATCH v2] MIPS: add readl_be/writel_be > > MIPS currently lacks the readl_be and writel_be accessors > which are required by BCM63xx for OHCI and EHCI support. > Let's define them globally for MIPS. This also fixes the > compilation of the bcm63xx defconfig against USB. > > Changes from v1: > - make it work on little-endian machines > - protect macros arguments with parenthesis > > Signed-off-by: Florian Fainelli <ffainelli@xxxxxxxxxx> > --- > diff --git a/arch/mips/include/asm/io.h b/arch/mips/include/asm/io.h > index 436878e..4a76d39 100644 > --- a/arch/mips/include/asm/io.h > +++ b/arch/mips/include/asm/io.h > @@ -447,6 +447,9 @@ __BUILDIO(q, u64) > #define readl_relaxed readl > #define readq_relaxed readq > > +#define readl_be(addr) cpu_to_be32(__raw_readl((__force unsigned *)(addr))) > +#define writel_be(val, addr) __raw_writel(be32_to_cpu((val)), (__force unsigned *)(addr)) Shouldn't it be the other way around (cpu <-> be32), i.e. #define readl_be(addr) be32_to_cpu(__raw_readl((__force unsigned *)(addr))) #define writel_be(val, addr) __raw_writel(cpu_to_be32((val)), (__force unsigned *)(addr)) ? I know it'll work both ways, though... Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx 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