summaryrefslogtreecommitdiffstats
path: root/arch/sparc
diff options
context:
space:
mode:
authorWill Deacon <will.deacon@arm.com>2013-09-04 06:34:08 -0400
committerWill Deacon <will.deacon@arm.com>2014-10-20 13:49:18 -0400
commit1191ccb34cf810a0fefaaf5ca3cfe3c5d7675927 (patch)
tree1700dadabaaa2d658fa0c34580edd6c99e0bb205 /arch/sparc
parent5da590574cbc39e48d1b71d87b62766c044b9b52 (diff)
sparc: io: implement dummy relaxed accessor macros for writes
write{b,w,l,q}_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 sparc, in the same vein as the dummy definitions for the relaxed read accessors. The existing relaxed read{b,w,l} accessors are moved into asm/io.h, since they are identical between 32-bit and 64-bit machines. Acked-by: "David S. Miller" <davem@davemloft.net> Acked-by: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: Will Deacon <will.deacon@arm.com>
Diffstat (limited to 'arch/sparc')
-rw-r--r--arch/sparc/include/asm/io.h9
-rw-r--r--arch/sparc/include/asm/io_32.h4
-rw-r--r--arch/sparc/include/asm/io_64.h8
3 files changed, 11 insertions, 10 deletions
diff --git a/arch/sparc/include/asm/io.h b/arch/sparc/include/asm/io.h
index f6902cf3cbe9..493f22c4684f 100644
--- a/arch/sparc/include/asm/io.h
+++ b/arch/sparc/include/asm/io.h
@@ -10,6 +10,15 @@
10 * Defines used for both SPARC32 and SPARC64 10 * Defines used for both SPARC32 and SPARC64
11 */ 11 */
12 12
13/* Relaxed accessors for MMIO */
14#define readb_relaxed(__addr) readb(__addr)
15#define readw_relaxed(__addr) readw(__addr)
16#define readl_relaxed(__addr) readl(__addr)
17
18#define writeb_relaxed(__b, __addr) writeb(__b, __addr)
19#define writew_relaxed(__w, __addr) writew(__w, __addr)
20#define writel_relaxed(__l, __addr) writel(__l, __addr)
21
13/* Big endian versions of memory read/write routines */ 22/* Big endian versions of memory read/write routines */
14#define readb_be(__addr) __raw_readb(__addr) 23#define readb_be(__addr) __raw_readb(__addr)
15#define readw_be(__addr) __raw_readw(__addr) 24#define readw_be(__addr) __raw_readw(__addr)
diff --git a/arch/sparc/include/asm/io_32.h b/arch/sparc/include/asm/io_32.h
index 9f532902627c..407ac14295f4 100644
--- a/arch/sparc/include/asm/io_32.h
+++ b/arch/sparc/include/asm/io_32.h
@@ -4,10 +4,6 @@
4#include <linux/kernel.h> 4#include <linux/kernel.h>
5#include <linux/ioport.h> /* struct resource */ 5#include <linux/ioport.h> /* struct resource */
6 6
7#define readb_relaxed(__addr) readb(__addr)
8#define readw_relaxed(__addr) readw(__addr)
9#define readl_relaxed(__addr) readl(__addr)
10
11#define IO_SPACE_LIMIT 0xffffffff 7#define IO_SPACE_LIMIT 0xffffffff
12 8
13#define memset_io(d,c,sz) _memset_io(d,c,sz) 9#define memset_io(d,c,sz) _memset_io(d,c,sz)
diff --git a/arch/sparc/include/asm/io_64.h b/arch/sparc/include/asm/io_64.h
index 80b54b326d49..d50e6127325d 100644
--- a/arch/sparc/include/asm/io_64.h
+++ b/arch/sparc/include/asm/io_64.h
@@ -136,6 +136,7 @@ static inline u32 readl(const volatile void __iomem *addr)
136} 136}
137 137
138#define readq readq 138#define readq readq
139#define readq_relaxed readq
139static inline u64 readq(const volatile void __iomem *addr) 140static inline u64 readq(const volatile void __iomem *addr)
140{ u64 ret; 141{ u64 ret;
141 142
@@ -175,6 +176,7 @@ static inline void writel(u32 l, volatile void __iomem *addr)
175} 176}
176 177
177#define writeq writeq 178#define writeq writeq
179#define writeq_relaxed writeq
178static inline void writeq(u64 q, volatile void __iomem *addr) 180static inline void writeq(u64 q, volatile void __iomem *addr)
179{ 181{
180 __asm__ __volatile__("stxa\t%r0, [%1] %2\t/* pci_writeq */" 182 __asm__ __volatile__("stxa\t%r0, [%1] %2\t/* pci_writeq */"
@@ -183,7 +185,6 @@ static inline void writeq(u64 q, volatile void __iomem *addr)
183 : "memory"); 185 : "memory");
184} 186}
185 187
186
187#define inb inb 188#define inb inb
188static inline u8 inb(unsigned long addr) 189static inline u8 inb(unsigned long addr)
189{ 190{
@@ -264,11 +265,6 @@ static inline void iowrite32_rep(void __iomem *port, const void *buf, unsigned l
264 outsl((unsigned long __force)port, buf, count); 265 outsl((unsigned long __force)port, buf, count);
265} 266}
266 267
267#define readb_relaxed(__addr) readb(__addr)
268#define readw_relaxed(__addr) readw(__addr)
269#define readl_relaxed(__addr) readl(__addr)
270#define readq_relaxed(__addr) readq(__addr)
271
272/* Valid I/O Space regions are anywhere, because each PCI bus supported 268/* Valid I/O Space regions are anywhere, because each PCI bus supported
273 * can live in an arbitrary area of the physical address range. 269 * can live in an arbitrary area of the physical address range.
274 */ 270 */