aarch64: fix strcpy and strnlen for big-endian [BZ #25824]
This patch fixes the optimized implementation of strcpy and strnlen on a big-endian arm64 machine. The optimized method uses neon, which can process 128bit with one instruction. On a big-endian machine, the bit order should be reversed for the whole 128-bits double word. But with instuction rev64 datav.16b, datav.16b it reverses 64bits in the two halves rather than reversing 128bits. There is no such instruction as rev128 to reverse the 128bits, but we can fix this by loading the data registers accordingly. Fixes 0237b615("aarch64: Optimized implementation of strcpy") and 2911cb68("aarch64: Optimized implementation of strnlen"). Signed-off-by:Lexi Shao <shaolexi@huawei.com> Reviewed-by:
Szabolcs Nagy <szabolcs.nagy@arm.com> (cherry picked from commit 59b64f9c)
Loading
Please register or sign in to comment