Commit 23ea2a4c authored by Thomas Weissschuh's avatar Thomas Weissschuh Committed by Russell King (Oracle)
Browse files

ARM: 9468/1: fix memset64() on big-endian



On big-endian systems the 32-bit low and high halves need to be swapped
for the underlying assembly implementation to work correctly.

Fixes: fd1d3626 ("ARM: implement memset32 & memset64")
Cc: stable@vger.kernel.org
Signed-off-by: default avatarThomas Weißschuh <thomas.weissschuh@linutronix.de>
Reviewed-by: default avatarMatthew Wilcox (Oracle) <willy@infradead.org>
Reviewed-by: default avatarArnd Bergmann <arnd@arndb.de>
Signed-off-by: default avatarRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
parent 8f0b4cce
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -42,7 +42,10 @@ static inline void *memset32(uint32_t *p, uint32_t v, __kernel_size_t n)
extern void *__memset64(uint64_t *, uint32_t low, __kernel_size_t, uint32_t hi);
static inline void *memset64(uint64_t *p, uint64_t v, __kernel_size_t n)
{
	if (IS_ENABLED(CONFIG_CPU_LITTLE_ENDIAN))
		return __memset64(p, v, n * 8, v >> 32);
	else
		return __memset64(p, v >> 32, n * 8, v);
}

/*