mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-18 22:14:16 +00:00
powerpc/io: Use standard barrier macros in io.c
io.c uses open-coded barriers. Update it to use the equivalent but in macro form. Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com> Link: https://patch.msgid.link/20241218105523.416573-18-mpe@ellerman.id.au
This commit is contained in:
parent
76c7d4300d
commit
1b52e091e7
1 changed files with 24 additions and 18 deletions
|
@ -31,13 +31,14 @@ void _insb(const volatile u8 __iomem *port, void *buf, long count)
|
|||
|
||||
if (unlikely(count <= 0))
|
||||
return;
|
||||
asm volatile("sync");
|
||||
|
||||
mb();
|
||||
do {
|
||||
tmp = *(const volatile u8 __force *)port;
|
||||
eieio();
|
||||
*tbuf++ = tmp;
|
||||
} while (--count != 0);
|
||||
asm volatile("twi 0,%0,0; isync" : : "r" (tmp));
|
||||
data_barrier(tmp);
|
||||
}
|
||||
EXPORT_SYMBOL(_insb);
|
||||
|
||||
|
@ -47,11 +48,12 @@ void _outsb(volatile u8 __iomem *port, const void *buf, long count)
|
|||
|
||||
if (unlikely(count <= 0))
|
||||
return;
|
||||
asm volatile("sync");
|
||||
|
||||
mb();
|
||||
do {
|
||||
*(volatile u8 __force *)port = *tbuf++;
|
||||
} while (--count != 0);
|
||||
asm volatile("sync");
|
||||
mb();
|
||||
}
|
||||
EXPORT_SYMBOL(_outsb);
|
||||
|
||||
|
@ -62,13 +64,14 @@ void _insw(const volatile u16 __iomem *port, void *buf, long count)
|
|||
|
||||
if (unlikely(count <= 0))
|
||||
return;
|
||||
asm volatile("sync");
|
||||
|
||||
mb();
|
||||
do {
|
||||
tmp = *(const volatile u16 __force *)port;
|
||||
eieio();
|
||||
*tbuf++ = tmp;
|
||||
} while (--count != 0);
|
||||
asm volatile("twi 0,%0,0; isync" : : "r" (tmp));
|
||||
data_barrier(tmp);
|
||||
}
|
||||
EXPORT_SYMBOL(_insw);
|
||||
|
||||
|
@ -78,11 +81,12 @@ void _outsw(volatile u16 __iomem *port, const void *buf, long count)
|
|||
|
||||
if (unlikely(count <= 0))
|
||||
return;
|
||||
asm volatile("sync");
|
||||
|
||||
mb();
|
||||
do {
|
||||
*(volatile u16 __force *)port = *tbuf++;
|
||||
} while (--count != 0);
|
||||
asm volatile("sync");
|
||||
mb();
|
||||
}
|
||||
EXPORT_SYMBOL(_outsw);
|
||||
|
||||
|
@ -93,13 +97,14 @@ void _insl(const volatile u32 __iomem *port, void *buf, long count)
|
|||
|
||||
if (unlikely(count <= 0))
|
||||
return;
|
||||
asm volatile("sync");
|
||||
|
||||
mb();
|
||||
do {
|
||||
tmp = *(const volatile u32 __force *)port;
|
||||
eieio();
|
||||
*tbuf++ = tmp;
|
||||
} while (--count != 0);
|
||||
asm volatile("twi 0,%0,0; isync" : : "r" (tmp));
|
||||
data_barrier(tmp);
|
||||
}
|
||||
EXPORT_SYMBOL(_insl);
|
||||
|
||||
|
@ -109,11 +114,12 @@ void _outsl(volatile u32 __iomem *port, const void *buf, long count)
|
|||
|
||||
if (unlikely(count <= 0))
|
||||
return;
|
||||
asm volatile("sync");
|
||||
|
||||
mb();
|
||||
do {
|
||||
*(volatile u32 __force *)port = *tbuf++;
|
||||
} while (--count != 0);
|
||||
asm volatile("sync");
|
||||
mb();
|
||||
}
|
||||
EXPORT_SYMBOL(_outsl);
|
||||
|
||||
|
@ -127,7 +133,7 @@ _memset_io(volatile void __iomem *addr, int c, unsigned long n)
|
|||
lc |= lc << 8;
|
||||
lc |= lc << 16;
|
||||
|
||||
__asm__ __volatile__ ("sync" : : : "memory");
|
||||
mb();
|
||||
while(n && !IO_CHECK_ALIGN(p, 4)) {
|
||||
*((volatile u8 *)p) = c;
|
||||
p++;
|
||||
|
@ -143,7 +149,7 @@ _memset_io(volatile void __iomem *addr, int c, unsigned long n)
|
|||
p++;
|
||||
n--;
|
||||
}
|
||||
__asm__ __volatile__ ("sync" : : : "memory");
|
||||
mb();
|
||||
}
|
||||
EXPORT_SYMBOL(_memset_io);
|
||||
|
||||
|
@ -152,7 +158,7 @@ void _memcpy_fromio(void *dest, const volatile void __iomem *src,
|
|||
{
|
||||
void *vsrc = (void __force *) src;
|
||||
|
||||
__asm__ __volatile__ ("sync" : : : "memory");
|
||||
mb();
|
||||
while(n && (!IO_CHECK_ALIGN(vsrc, 4) || !IO_CHECK_ALIGN(dest, 4))) {
|
||||
*((u8 *)dest) = *((volatile u8 *)vsrc);
|
||||
eieio();
|
||||
|
@ -174,7 +180,7 @@ void _memcpy_fromio(void *dest, const volatile void __iomem *src,
|
|||
dest++;
|
||||
n--;
|
||||
}
|
||||
__asm__ __volatile__ ("sync" : : : "memory");
|
||||
mb();
|
||||
}
|
||||
EXPORT_SYMBOL(_memcpy_fromio);
|
||||
|
||||
|
@ -182,7 +188,7 @@ void _memcpy_toio(volatile void __iomem *dest, const void *src, unsigned long n)
|
|||
{
|
||||
void *vdest = (void __force *) dest;
|
||||
|
||||
__asm__ __volatile__ ("sync" : : : "memory");
|
||||
mb();
|
||||
while(n && (!IO_CHECK_ALIGN(vdest, 4) || !IO_CHECK_ALIGN(src, 4))) {
|
||||
*((volatile u8 *)vdest) = *((u8 *)src);
|
||||
src++;
|
||||
|
@ -201,6 +207,6 @@ void _memcpy_toio(volatile void __iomem *dest, const void *src, unsigned long n)
|
|||
vdest++;
|
||||
n--;
|
||||
}
|
||||
__asm__ __volatile__ ("sync" : : : "memory");
|
||||
mb();
|
||||
}
|
||||
EXPORT_SYMBOL(_memcpy_toio);
|
||||
|
|
Loading…
Add table
Reference in a new issue