18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
28c2ecf20Sopenharmony_ci#include <linux/linkage.h>
38c2ecf20Sopenharmony_ci#include <asm/assembler.h>
48c2ecf20Sopenharmony_ci
58c2ecf20Sopenharmony_ci#if __LINUX_ARM_ARCH__ >= 6
68c2ecf20Sopenharmony_ciENTRY(__bswapsi2)
78c2ecf20Sopenharmony_ci	rev r0, r0
88c2ecf20Sopenharmony_ci	bx lr
98c2ecf20Sopenharmony_ciENDPROC(__bswapsi2)
108c2ecf20Sopenharmony_ci
118c2ecf20Sopenharmony_ciENTRY(__bswapdi2)
128c2ecf20Sopenharmony_ci	rev r3, r0
138c2ecf20Sopenharmony_ci	rev r0, r1
148c2ecf20Sopenharmony_ci	mov r1, r3
158c2ecf20Sopenharmony_ci	bx lr
168c2ecf20Sopenharmony_ciENDPROC(__bswapdi2)
178c2ecf20Sopenharmony_ci#else
188c2ecf20Sopenharmony_ciENTRY(__bswapsi2)
198c2ecf20Sopenharmony_ci	eor r3, r0, r0, ror #16
208c2ecf20Sopenharmony_ci	mov r3, r3, lsr #8
218c2ecf20Sopenharmony_ci	bic r3, r3, #0xff00
228c2ecf20Sopenharmony_ci	eor r0, r3, r0, ror #8
238c2ecf20Sopenharmony_ci	ret lr
248c2ecf20Sopenharmony_ciENDPROC(__bswapsi2)
258c2ecf20Sopenharmony_ci
268c2ecf20Sopenharmony_ciENTRY(__bswapdi2)
278c2ecf20Sopenharmony_ci	mov ip, r1
288c2ecf20Sopenharmony_ci	eor r3, ip, ip, ror #16
298c2ecf20Sopenharmony_ci	eor r1, r0, r0, ror #16
308c2ecf20Sopenharmony_ci	mov r1, r1, lsr #8
318c2ecf20Sopenharmony_ci	mov r3, r3, lsr #8
328c2ecf20Sopenharmony_ci	bic r3, r3, #0xff00
338c2ecf20Sopenharmony_ci	bic r1, r1, #0xff00
348c2ecf20Sopenharmony_ci	eor r1, r1, r0, ror #8
358c2ecf20Sopenharmony_ci	eor r0, r3, ip, ror #8
368c2ecf20Sopenharmony_ci	ret lr
378c2ecf20Sopenharmony_ciENDPROC(__bswapdi2)
388c2ecf20Sopenharmony_ci#endif
39