Commit 41739ee3 authored by Will Deacon's avatar Will Deacon Committed by Linus Torvalds

asm-generic: io: don't perform swab during {in,out} string functions

The {in,out}s{b,w,l} functions are designed to operate on a stream of
bytes and therefore should not perform any byte-swapping, regardless of
the CPU byte order.

This patch fixes the generic IO header so that {in,out}s{b,w,l} call the
__raw_{read,write} functions directly rather than going via the
endian-correcting accessors.
Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
Cc: Mike Frysinger <vapier@gentoo.org>
Acked-by: default avatarArnd Bergmann <arnd@arndb.de>
Acked-by: default avatarBen Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent da01ee3c
...@@ -154,7 +154,7 @@ static inline void insb(unsigned long addr, void *buffer, int count) ...@@ -154,7 +154,7 @@ static inline void insb(unsigned long addr, void *buffer, int count)
if (count) { if (count) {
u8 *buf = buffer; u8 *buf = buffer;
do { do {
u8 x = inb(addr); u8 x = __raw_readb(addr + PCI_IOBASE);
*buf++ = x; *buf++ = x;
} while (--count); } while (--count);
} }
...@@ -167,7 +167,7 @@ static inline void insw(unsigned long addr, void *buffer, int count) ...@@ -167,7 +167,7 @@ static inline void insw(unsigned long addr, void *buffer, int count)
if (count) { if (count) {
u16 *buf = buffer; u16 *buf = buffer;
do { do {
u16 x = inw(addr); u16 x = __raw_readw(addr + PCI_IOBASE);
*buf++ = x; *buf++ = x;
} while (--count); } while (--count);
} }
...@@ -180,7 +180,7 @@ static inline void insl(unsigned long addr, void *buffer, int count) ...@@ -180,7 +180,7 @@ static inline void insl(unsigned long addr, void *buffer, int count)
if (count) { if (count) {
u32 *buf = buffer; u32 *buf = buffer;
do { do {
u32 x = inl(addr); u32 x = __raw_readl(addr + PCI_IOBASE);
*buf++ = x; *buf++ = x;
} while (--count); } while (--count);
} }
...@@ -193,7 +193,7 @@ static inline void outsb(unsigned long addr, const void *buffer, int count) ...@@ -193,7 +193,7 @@ static inline void outsb(unsigned long addr, const void *buffer, int count)
if (count) { if (count) {
const u8 *buf = buffer; const u8 *buf = buffer;
do { do {
outb(*buf++, addr); __raw_writeb(*buf++, addr + PCI_IOBASE);
} while (--count); } while (--count);
} }
} }
...@@ -205,7 +205,7 @@ static inline void outsw(unsigned long addr, const void *buffer, int count) ...@@ -205,7 +205,7 @@ static inline void outsw(unsigned long addr, const void *buffer, int count)
if (count) { if (count) {
const u16 *buf = buffer; const u16 *buf = buffer;
do { do {
outw(*buf++, addr); __raw_writew(*buf++, addr + PCI_IOBASE);
} while (--count); } while (--count);
} }
} }
...@@ -217,7 +217,7 @@ static inline void outsl(unsigned long addr, const void *buffer, int count) ...@@ -217,7 +217,7 @@ static inline void outsl(unsigned long addr, const void *buffer, int count)
if (count) { if (count) {
const u32 *buf = buffer; const u32 *buf = buffer;
do { do {
outl(*buf++, addr); __raw_writel(*buf++, addr + PCI_IOBASE);
} while (--count); } while (--count);
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment