bswapsdi2.S 649 B

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