ashldi3.S 511 B

1234567891011121314151617181920212223242526272829303132333435363738
  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. #include <asm/export.h>
  9. .text
  10. ENTRY(__ashldi3)
  11. cmp %o2, 0
  12. be 9f
  13. mov 0x20, %g2
  14. sub %g2, %o2, %g2
  15. cmp %g2, 0
  16. bg 7f
  17. sll %o0, %o2, %g3
  18. neg %g2
  19. clr %o5
  20. b 8f
  21. sll %o1, %g2, %o4
  22. 7:
  23. srl %o1, %g2, %g2
  24. sll %o1, %o2, %o5
  25. or %g3, %g2, %o4
  26. 8:
  27. mov %o4, %o0
  28. mov %o5, %o1
  29. 9:
  30. retl
  31. nop
  32. ENDPROC(__ashldi3)
  33. EXPORT_SYMBOL(__ashldi3)