0001
0002 #include <linux/linkage.h>
0003 #include <asm/assembler.h>
0004
0005 #if __LINUX_ARM_ARCH__ >= 6
0006 ENTRY(__bswapsi2)
0007 rev r0, r0
0008 bx lr
0009 ENDPROC(__bswapsi2)
0010
0011 ENTRY(__bswapdi2)
0012 rev r3, r0
0013 rev r0, r1
0014 mov r1, r3
0015 bx lr
0016 ENDPROC(__bswapdi2)
0017 #else
0018 ENTRY(__bswapsi2)
0019 eor r3, r0, r0, ror #16
0020 mov r3, r3, lsr #8
0021 bic r3, r3, #0xff00
0022 eor r0, r3, r0, ror #8
0023 ret lr
0024 ENDPROC(__bswapsi2)
0025
0026 ENTRY(__bswapdi2)
0027 mov ip, r1
0028 eor r3, ip, ip, ror #16
0029 eor r1, r0, r0, ror #16
0030 mov r1, r1, lsr #8
0031 mov r3, r3, lsr #8
0032 bic r3, r3, #0xff00
0033 bic r1, r1, #0xff00
0034 eor r1, r1, r0, ror #8
0035 eor r0, r3, ip, ror #8
0036 ret lr
0037 ENDPROC(__bswapdi2)
0038 #endif