ashldi3.S 550 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. /*
  3. * ashldi3.S: GCC emits these for certain drivers playing
  4. * with long longs.
  5. *
  6. * Copyright (C) 1999 David S. Miller (davem@redhat.com)
  7. */
  8. #include <linux/linkage.h>
  9. #include <asm/export.h>
  10. .text
  11. ENTRY(__ashldi3)
  12. cmp %o2, 0
  13. be 9f
  14. mov 0x20, %g2
  15. sub %g2, %o2, %g2
  16. cmp %g2, 0
  17. bg 7f
  18. sll %o0, %o2, %g3
  19. neg %g2
  20. clr %o5
  21. b 8f
  22. sll %o1, %g2, %o4
  23. 7:
  24. srl %o1, %g2, %g2
  25. sll %o1, %o2, %o5
  26. or %g3, %g2, %o4
  27. 8:
  28. mov %o4, %o0
  29. mov %o5, %o1
  30. 9:
  31. retl
  32. nop
  33. ENDPROC(__ashldi3)
  34. EXPORT_SYMBOL(__ashldi3)