Skip to content

Commit

Permalink
sparc: io: implement dummy relaxed accessor macros for writes
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Will Deacon committed Oct 20, 2014
1 parent 5da5905 commit 1191ccb
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 10 deletions.
9 changes: 9 additions & 0 deletions arch/sparc/include/asm/io.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,15 @@
* Defines used for both SPARC32 and SPARC64
*/

/* Relaxed accessors for MMIO */
#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(__w, __addr) writew(__w, __addr)
#define writel_relaxed(__l, __addr) writel(__l, __addr)

/* Big endian versions of memory read/write routines */
#define readb_be(__addr) __raw_readb(__addr)
#define readw_be(__addr) __raw_readw(__addr)
Expand Down
4 changes: 0 additions & 4 deletions arch/sparc/include/asm/io_32.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,6 @@
#include <linux/kernel.h>
#include <linux/ioport.h> /* struct resource */

#define readb_relaxed(__addr) readb(__addr)
#define readw_relaxed(__addr) readw(__addr)
#define readl_relaxed(__addr) readl(__addr)

#define IO_SPACE_LIMIT 0xffffffff

#define memset_io(d,c,sz) _memset_io(d,c,sz)
Expand Down
8 changes: 2 additions & 6 deletions arch/sparc/include/asm/io_64.h
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,7 @@ static inline u32 readl(const volatile void __iomem *addr)
}

#define readq readq
#define readq_relaxed readq
static inline u64 readq(const volatile void __iomem *addr)
{ u64 ret;

Expand Down Expand Up @@ -175,6 +176,7 @@ static inline void writel(u32 l, volatile void __iomem *addr)
}

#define writeq writeq
#define writeq_relaxed writeq
static inline void writeq(u64 q, volatile void __iomem *addr)
{
__asm__ __volatile__("stxa\t%r0, [%1] %2\t/* pci_writeq */"
Expand All @@ -183,7 +185,6 @@ static inline void writeq(u64 q, volatile void __iomem *addr)
: "memory");
}


#define inb inb
static inline u8 inb(unsigned long addr)
{
Expand Down Expand Up @@ -264,11 +265,6 @@ static inline void iowrite32_rep(void __iomem *port, const void *buf, unsigned l
outsl((unsigned long __force)port, buf, count);
}

#define readb_relaxed(__addr) readb(__addr)
#define readw_relaxed(__addr) readw(__addr)
#define readl_relaxed(__addr) readl(__addr)
#define readq_relaxed(__addr) readq(__addr)

/* Valid I/O Space regions are anywhere, because each PCI bus supported
* can live in an arbitrary area of the physical address range.
*/
Expand Down

0 comments on commit 1191ccb

Please sign in to comment.