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: fd1d362600 ("ARM: implement memset32 & memset64")
Cc: stable@vger.kernel.org
Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
Reviewed-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
This commit is contained in:
1 parent
8f0b4cce44
commit
23ea2a4c72
1 file changed
+4
-1
@@ -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)
|
||||
{
|
||||
return __memset64(p, v, n * 8, v >> 32);
|
||||
if (IS_ENABLED(CONFIG_CPU_LITTLE_ENDIAN))
|
||||
return __memset64(p, v, n * 8, v >> 32);
|
||||
else
|
||||
return __memset64(p, v >> 32, n * 8, v);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
Reference in new issue
Block a user