ashrdi.s 504 B

12345678910111213141516171819202122232425262728293031
  1. |ashrdi3 routine copyright (C) 2002, Kevin Kofler
  2. .data
  3. xdef __ashrdi3
  4. .even
  5. __ashrdi3:
  6. tst.w 12(%a7)
  7. bne.s .L__ashrdi3_return0
  8. move.l 4(%a7),%d0
  9. move.l 8(%a7),%d1
  10. move.w 14(%a7),%d2
  11. beq.s .L__ashrdi3_returnn
  12. subq.w #1,%d2
  13. .L__ashrdi3_loop:
  14. asr.l #1,%d0
  15. roxr.l #1,%d1
  16. dbra.w %d2,.L__ashrdi3_loop
  17. .L__ashrdi3_returnn:
  18. rts
  19. .L__ashrdi3_return0:
  20. tst.b 4(%a7)
  21. blt.s .L__ashrdi3_return_neg1
  22. moveq.l #0,%d0
  23. moveq.l #0,%d1
  24. rts
  25. .L__ashrdi3_return_neg1:
  26. moveq.l #-1,%d0
  27. moveq.l #-1,%d1
  28. rts