Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9f2c9492 authored by Krzysztof Hałasa's avatar Krzysztof Hałasa
Browse files

ARM: fix insl() and outsl() endianness on IXP4xx architecture.



The repetitive in/out functions must preserve order, not value.

Signed-off-by: default avatarKrzysztof Hałasa <khc@pm.waw.pl>
parent 8ae45a53
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -311,7 +311,7 @@ static inline void
__ixp4xx_outsl(u32 io_addr, const u32 *vaddr, u32 count)
{
	while (count--)
		outl(*vaddr++, io_addr);
		outl(cpu_to_le32(*vaddr++), io_addr);
}

static inline u8 
@@ -366,7 +366,7 @@ static inline void
__ixp4xx_insl(u32 io_addr, u32 *vaddr, u32 count)
{
	while (count--)
		*vaddr++ = inl(io_addr);
		*vaddr++ = le32_to_cpu(inl(io_addr));
}

#define PIO_OFFSET      0x10000UL
@@ -374,6 +374,7 @@ __ixp4xx_insl(u32 io_addr, u32 *vaddr, u32 count)

#define	__is_io_address(p)	(((unsigned long)p >= PIO_OFFSET) && \
					((unsigned long)p <= (PIO_MASK + PIO_OFFSET)))

static inline unsigned int
__ixp4xx_ioread8(const void __iomem *addr)
{