ashldi3.S 462 B

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