Skip to content

Commit 23ea2a4

Browse files
t-8chRussell King (Oracle)
authored andcommitted
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: fd1d362 ("ARM: implement memset32 & memset64") Cc: [email protected] Signed-off-by: Thomas Weißschuh <[email protected]> Reviewed-by: Matthew Wilcox (Oracle) <[email protected]> Reviewed-by: Arnd Bergmann <[email protected]> Signed-off-by: Russell King (Oracle) <[email protected]>
1 parent 8f0b4cc commit 23ea2a4

1 file changed

Lines changed: 4 additions & 1 deletion

File tree

arch/arm/include/asm/string.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,10 @@ static inline void *memset32(uint32_t *p, uint32_t v, __kernel_size_t n)
4242
extern void *__memset64(uint64_t *, uint32_t low, __kernel_size_t, uint32_t hi);
4343
static inline void *memset64(uint64_t *p, uint64_t v, __kernel_size_t n)
4444
{
45-
return __memset64(p, v, n * 8, v >> 32);
45+
if (IS_ENABLED(CONFIG_CPU_LITTLE_ENDIAN))
46+
return __memset64(p, v, n * 8, v >> 32);
47+
else
48+
return __memset64(p, v >> 32, n * 8, v);
4649
}
4750

4851
/*

0 commit comments

Comments
 (0)