Skip to content

Commit 1b52e09

Browse files
mpemaddy-kerneldev
authored andcommitted
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 <[email protected]> Signed-off-by: Madhavan Srinivasan <[email protected]> Link: https://patch.msgid.link/[email protected]
1 parent 76c7d43 commit 1b52e09

File tree

1 file changed

+24
-18
lines changed
  • arch/powerpc/kernel

1 file changed

+24
-18
lines changed

arch/powerpc/kernel/io.c

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,14 @@ void _insb(const volatile u8 __iomem *port, void *buf, long count)
3131

3232
if (unlikely(count <= 0))
3333
return;
34-
asm volatile("sync");
34+
35+
mb();
3536
do {
3637
tmp = *(const volatile u8 __force *)port;
3738
eieio();
3839
*tbuf++ = tmp;
3940
} while (--count != 0);
40-
asm volatile("twi 0,%0,0; isync" : : "r" (tmp));
41+
data_barrier(tmp);
4142
}
4243
EXPORT_SYMBOL(_insb);
4344

@@ -47,11 +48,12 @@ void _outsb(volatile u8 __iomem *port, const void *buf, long count)
4748

4849
if (unlikely(count <= 0))
4950
return;
50-
asm volatile("sync");
51+
52+
mb();
5153
do {
5254
*(volatile u8 __force *)port = *tbuf++;
5355
} while (--count != 0);
54-
asm volatile("sync");
56+
mb();
5557
}
5658
EXPORT_SYMBOL(_outsb);
5759

@@ -62,13 +64,14 @@ void _insw(const volatile u16 __iomem *port, void *buf, long count)
6264

6365
if (unlikely(count <= 0))
6466
return;
65-
asm volatile("sync");
67+
68+
mb();
6669
do {
6770
tmp = *(const volatile u16 __force *)port;
6871
eieio();
6972
*tbuf++ = tmp;
7073
} while (--count != 0);
71-
asm volatile("twi 0,%0,0; isync" : : "r" (tmp));
74+
data_barrier(tmp);
7275
}
7376
EXPORT_SYMBOL(_insw);
7477

@@ -78,11 +81,12 @@ void _outsw(volatile u16 __iomem *port, const void *buf, long count)
7881

7982
if (unlikely(count <= 0))
8083
return;
81-
asm volatile("sync");
84+
85+
mb();
8286
do {
8387
*(volatile u16 __force *)port = *tbuf++;
8488
} while (--count != 0);
85-
asm volatile("sync");
89+
mb();
8690
}
8791
EXPORT_SYMBOL(_outsw);
8892

@@ -93,13 +97,14 @@ void _insl(const volatile u32 __iomem *port, void *buf, long count)
9397

9498
if (unlikely(count <= 0))
9599
return;
96-
asm volatile("sync");
100+
101+
mb();
97102
do {
98103
tmp = *(const volatile u32 __force *)port;
99104
eieio();
100105
*tbuf++ = tmp;
101106
} while (--count != 0);
102-
asm volatile("twi 0,%0,0; isync" : : "r" (tmp));
107+
data_barrier(tmp);
103108
}
104109
EXPORT_SYMBOL(_insl);
105110

@@ -109,11 +114,12 @@ void _outsl(volatile u32 __iomem *port, const void *buf, long count)
109114

110115
if (unlikely(count <= 0))
111116
return;
112-
asm volatile("sync");
117+
118+
mb();
113119
do {
114120
*(volatile u32 __force *)port = *tbuf++;
115121
} while (--count != 0);
116-
asm volatile("sync");
122+
mb();
117123
}
118124
EXPORT_SYMBOL(_outsl);
119125

@@ -127,7 +133,7 @@ _memset_io(volatile void __iomem *addr, int c, unsigned long n)
127133
lc |= lc << 8;
128134
lc |= lc << 16;
129135

130-
__asm__ __volatile__ ("sync" : : : "memory");
136+
mb();
131137
while(n && !IO_CHECK_ALIGN(p, 4)) {
132138
*((volatile u8 *)p) = c;
133139
p++;
@@ -143,7 +149,7 @@ _memset_io(volatile void __iomem *addr, int c, unsigned long n)
143149
p++;
144150
n--;
145151
}
146-
__asm__ __volatile__ ("sync" : : : "memory");
152+
mb();
147153
}
148154
EXPORT_SYMBOL(_memset_io);
149155

@@ -152,7 +158,7 @@ void _memcpy_fromio(void *dest, const volatile void __iomem *src,
152158
{
153159
void *vsrc = (void __force *) src;
154160

155-
__asm__ __volatile__ ("sync" : : : "memory");
161+
mb();
156162
while(n && (!IO_CHECK_ALIGN(vsrc, 4) || !IO_CHECK_ALIGN(dest, 4))) {
157163
*((u8 *)dest) = *((volatile u8 *)vsrc);
158164
eieio();
@@ -174,15 +180,15 @@ void _memcpy_fromio(void *dest, const volatile void __iomem *src,
174180
dest++;
175181
n--;
176182
}
177-
__asm__ __volatile__ ("sync" : : : "memory");
183+
mb();
178184
}
179185
EXPORT_SYMBOL(_memcpy_fromio);
180186

181187
void _memcpy_toio(volatile void __iomem *dest, const void *src, unsigned long n)
182188
{
183189
void *vdest = (void __force *) dest;
184190

185-
__asm__ __volatile__ ("sync" : : : "memory");
191+
mb();
186192
while(n && (!IO_CHECK_ALIGN(vdest, 4) || !IO_CHECK_ALIGN(src, 4))) {
187193
*((volatile u8 *)vdest) = *((u8 *)src);
188194
src++;
@@ -201,6 +207,6 @@ void _memcpy_toio(volatile void __iomem *dest, const void *src, unsigned long n)
201207
vdest++;
202208
n--;
203209
}
204-
__asm__ __volatile__ ("sync" : : : "memory");
210+
mb();
205211
}
206212
EXPORT_SYMBOL(_memcpy_toio);

0 commit comments

Comments
 (0)