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);
 
 
        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);
 
 
        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);
 
 
        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);
 
 
        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);
 
 
        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);
 
        lc |= lc << 8;
        lc |= lc << 16;
 
-       __asm__ __volatile__ ("sync" : : : "memory");
+       mb();
        while(n && !IO_CHECK_ALIGN(p, 4)) {
                *((volatile u8 *)p) = c;
                p++;
                p++;
                n--;
        }
-       __asm__ __volatile__ ("sync" : : : "memory");
+       mb();
 }
 EXPORT_SYMBOL(_memset_io);
 
 {
        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();
                dest++;
                n--;
        }
-       __asm__ __volatile__ ("sync" : : : "memory");
+       mb();
 }
 EXPORT_SYMBOL(_memcpy_fromio);
 
 {
        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++;
                vdest++;
                n--;
        }
-       __asm__ __volatile__ ("sync" : : : "memory");
+       mb();
 }
 EXPORT_SYMBOL(_memcpy_toio);