ashrdi3.S 556 B

12345678910111213141516171819202122232425262728293031323334353637
  1. /*
  2. * ashrdi3.S: The filesystem code creates all kinds of references to
  3. * this little routine on the sparc with gcc.
  4. *
  5. * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu)
  6. */
  7. #include <linux/linkage.h>
  8. .text
  9. ENTRY(__ashrdi3)
  10. tst %o2
  11. be 3f
  12. or %g0, 32, %g2
  13. sub %g2, %o2, %g2
  14. tst %g2
  15. bg 1f
  16. sra %o0, %o2, %o4
  17. sra %o0, 31, %o4
  18. sub %g0, %g2, %g2
  19. ba 2f
  20. sra %o0, %g2, %o5
  21. 1:
  22. sll %o0, %g2, %g3
  23. srl %o1, %o2, %g2
  24. or %g2, %g3, %o5
  25. 2:
  26. or %g0, %o4, %o0
  27. or %g0, %o5, %o1
  28. 3:
  29. jmpl %o7 + 8, %g0
  30. nop
  31. ENDPROC(__ashrdi3)