/* Read COUNT 32-bit words from port PORT into memory starting at SRC. Now works with any alignment in SRC. Performance is important, but the interfaces seems to be slow: just using the inlined version of the inl() breaks things.  */
void ioread32_rep(void __iomem *port, void *dst, unsigned long count)
/* Read COUNT 32-bit words from port PORT into memory starting at SRC. Now works with any alignment in SRC. Performance is important, but the interfaces seems to be slow: just using the inlined version of the inl() breaks things.  */
void ioread32_rep(void __iomem *port, void *dst, unsigned long count)
{
	if (unlikely((unsigned long)dst & 0x3)) {
		while (count--) {
			struct S { int x __attribute__((packed)); };
			((struct S *)dst)->x = ioread32(port);
			dst += 4;
		}
	} else {
		while (count--) {
			*(unsigned int *)dst = ioread32(port);
			dst += 4;
		}
	}
}