/* Like insl but in the opposite direction. This is used by the IDE driver to write disk sectors. Works with any alignment in SRC. Performance is important, but the interfaces seems to be slow: just using the inlined version of the outl() breaks things.  */
void iowrite32_rep(void __iomem *port, const void *src, unsigned long count)
/* Like insl but in the opposite direction. This is used by the IDE driver to write disk sectors. Works with any alignment in SRC. Performance is important, but the interfaces seems to be slow: just using the inlined version of the outl() breaks things.  */
void iowrite32_rep(void __iomem *port, const void *src, unsigned long count)
{
	if (unlikely((unsigned long)src & 0x3)) {
		while (count--) {
			struct S { int x __attribute__((packed)); };
			iowrite32(((struct S *)src)->x, port);
			src += 4;
		}
	} else {
		while (count--) {
			iowrite32(*(unsigned int *)src, port);
			src += 4;
		}
	}
}