MIPS: CPC: Use __raw_ memory access functions
authorPaul Burton <paul.burton@imgtec.com>
Mon, 24 Mar 2014 10:19:35 +0000 (10:19 +0000)
committerRalf Baechle <ralf@linux-mips.org>
Mon, 31 Mar 2014 16:17:13 +0000 (18:17 +0200)
The CPC registers use native endianness, so using plain readl & writel
will produce incorrect results on big endian systems.

Reported-by: Jeffrey Deans <jeffrey.deans@imgtec.com>
Reported-by: Keng Koh <keng.koh@imgtec.com>
Signed-off-by: Paul Burton <paul.burton@imgtec.com>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/6657/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/include/asm/mips-cpc.h

index fb78935..988507e 100644 (file)
@@ -75,13 +75,13 @@ static inline bool mips_cpc_present(void)
 #define BUILD_CPC_R_(name, off) \
 static inline u32 read_cpc_##name(void)                                \
 {                                                              \
-       return readl(mips_cpc_base + (off));                    \
+       return __raw_readl(mips_cpc_base + (off));              \
 }
 
 #define BUILD_CPC__W(name, off) \
 static inline void write_cpc_##name(u32 value)                 \
 {                                                              \
-       writel(value, mips_cpc_base + (off));                   \
+       __raw_writel(value, mips_cpc_base + (off));             \
 }
 
 #define BUILD_CPC_RW(name, off)                                        \