| xj | b04a402 | 2021-11-25 15:01:52 +0800 | [diff] [blame] | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
| 2 | #include <linux/linkage.h> | ||||
| 3 | #include <asm/assembler.h> | ||||
| 4 | |||||
| 5 | #if __LINUX_ARM_ARCH__ >= 6 | ||||
| 6 | ENTRY(__bswapsi2) | ||||
| 7 | rev r0, r0 | ||||
| 8 | bx lr | ||||
| 9 | ENDPROC(__bswapsi2) | ||||
| 10 | |||||
| 11 | ENTRY(__bswapdi2) | ||||
| 12 | rev r3, r0 | ||||
| 13 | rev r0, r1 | ||||
| 14 | mov r1, r3 | ||||
| 15 | bx lr | ||||
| 16 | ENDPROC(__bswapdi2) | ||||
| 17 | #else | ||||
| 18 | ENTRY(__bswapsi2) | ||||
| 19 | eor r3, r0, r0, ror #16 | ||||
| 20 | mov r3, r3, lsr #8 | ||||
| 21 | bic r3, r3, #0xff00 | ||||
| 22 | eor r0, r3, r0, ror #8 | ||||
| 23 | ret lr | ||||
| 24 | ENDPROC(__bswapsi2) | ||||
| 25 | |||||
| 26 | ENTRY(__bswapdi2) | ||||
| 27 | mov ip, r1 | ||||
| 28 | eor r3, ip, ip, ror #16 | ||||
| 29 | eor r1, r0, r0, ror #16 | ||||
| 30 | mov r1, r1, lsr #8 | ||||
| 31 | mov r3, r3, lsr #8 | ||||
| 32 | bic r3, r3, #0xff00 | ||||
| 33 | bic r1, r1, #0xff00 | ||||
| 34 | eor r1, r1, r0, ror #8 | ||||
| 35 | eor r0, r3, ip, ror #8 | ||||
| 36 | ret lr | ||||
| 37 | ENDPROC(__bswapdi2) | ||||
| 38 | #endif | ||||