muldi3.S 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. /* SPDX-License-Identifier: GPL-2.0-or-later */
  2. /* Copyright (C) 1989, 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
  3. This file is part of GNU CC.
  4. */
  5. #include <asm/export.h>
  6. .text
  7. .align 4
  8. .globl __muldi3
  9. __muldi3:
  10. save %sp, -104, %sp
  11. wr %g0, %i1, %y
  12. sra %i3, 0x1f, %g2
  13. and %i1, %g2, %g2
  14. andcc %g0, 0, %g1
  15. mulscc %g1, %i3, %g1
  16. mulscc %g1, %i3, %g1
  17. mulscc %g1, %i3, %g1
  18. mulscc %g1, %i3, %g1
  19. mulscc %g1, %i3, %g1
  20. mulscc %g1, %i3, %g1
  21. mulscc %g1, %i3, %g1
  22. mulscc %g1, %i3, %g1
  23. mulscc %g1, %i3, %g1
  24. mulscc %g1, %i3, %g1
  25. mulscc %g1, %i3, %g1
  26. mulscc %g1, %i3, %g1
  27. mulscc %g1, %i3, %g1
  28. mulscc %g1, %i3, %g1
  29. mulscc %g1, %i3, %g1
  30. mulscc %g1, %i3, %g1
  31. mulscc %g1, %i3, %g1
  32. mulscc %g1, %i3, %g1
  33. mulscc %g1, %i3, %g1
  34. mulscc %g1, %i3, %g1
  35. mulscc %g1, %i3, %g1
  36. mulscc %g1, %i3, %g1
  37. mulscc %g1, %i3, %g1
  38. mulscc %g1, %i3, %g1
  39. mulscc %g1, %i3, %g1
  40. mulscc %g1, %i3, %g1
  41. mulscc %g1, %i3, %g1
  42. mulscc %g1, %i3, %g1
  43. mulscc %g1, %i3, %g1
  44. mulscc %g1, %i3, %g1
  45. mulscc %g1, %i3, %g1
  46. mulscc %g1, %i3, %g1
  47. mulscc %g1, 0, %g1
  48. add %g1, %g2, %l2
  49. rd %y, %o1
  50. mov %o1, %l3
  51. mov %i1, %o0
  52. mov %i2, %o1
  53. umul %o0, %o1, %o0
  54. mov %o0, %l0
  55. mov %i0, %o0
  56. mov %i3, %o1
  57. umul %o0, %o1, %o0
  58. add %l0, %o0, %l0
  59. mov %l2, %i0
  60. add %l2, %l0, %i0
  61. ret
  62. restore %g0, %l3, %o1
  63. EXPORT_SYMBOL(__muldi3)