xref: /OK3568_Linux_fs/kernel/arch/arm/lib/bswapsdi2.S (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun/* SPDX-License-Identifier: GPL-2.0 */
2*4882a593Smuzhiyun#include <linux/linkage.h>
3*4882a593Smuzhiyun#include <asm/assembler.h>
4*4882a593Smuzhiyun
5*4882a593Smuzhiyun#if __LINUX_ARM_ARCH__ >= 6
6*4882a593SmuzhiyunENTRY(__bswapsi2)
7*4882a593Smuzhiyun	rev r0, r0
8*4882a593Smuzhiyun	bx lr
9*4882a593SmuzhiyunENDPROC(__bswapsi2)
10*4882a593Smuzhiyun
11*4882a593SmuzhiyunENTRY(__bswapdi2)
12*4882a593Smuzhiyun	rev r3, r0
13*4882a593Smuzhiyun	rev r0, r1
14*4882a593Smuzhiyun	mov r1, r3
15*4882a593Smuzhiyun	bx lr
16*4882a593SmuzhiyunENDPROC(__bswapdi2)
17*4882a593Smuzhiyun#else
18*4882a593SmuzhiyunENTRY(__bswapsi2)
19*4882a593Smuzhiyun	eor r3, r0, r0, ror #16
20*4882a593Smuzhiyun	mov r3, r3, lsr #8
21*4882a593Smuzhiyun	bic r3, r3, #0xff00
22*4882a593Smuzhiyun	eor r0, r3, r0, ror #8
23*4882a593Smuzhiyun	ret lr
24*4882a593SmuzhiyunENDPROC(__bswapsi2)
25*4882a593Smuzhiyun
26*4882a593SmuzhiyunENTRY(__bswapdi2)
27*4882a593Smuzhiyun	mov ip, r1
28*4882a593Smuzhiyun	eor r3, ip, ip, ror #16
29*4882a593Smuzhiyun	eor r1, r0, r0, ror #16
30*4882a593Smuzhiyun	mov r1, r1, lsr #8
31*4882a593Smuzhiyun	mov r3, r3, lsr #8
32*4882a593Smuzhiyun	bic r3, r3, #0xff00
33*4882a593Smuzhiyun	bic r1, r1, #0xff00
34*4882a593Smuzhiyun	eor r1, r1, r0, ror #8
35*4882a593Smuzhiyun	eor r0, r3, ip, ror #8
36*4882a593Smuzhiyun	ret lr
37*4882a593SmuzhiyunENDPROC(__bswapdi2)
38*4882a593Smuzhiyun#endif
39