muldi3.S 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. /* Copyright (C) 1989, 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
  2. This file is part of GNU CC.
  3. GNU CC is free software; you can redistribute it and/or modify
  4. it under the terms of the GNU General Public License as published by
  5. the Free Software Foundation; either version 2, or (at your option)
  6. any later version.
  7. GNU CC is distributed in the hope that it will be useful,
  8. but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  10. GNU General Public License for more details.
  11. You should have received a copy of the GNU General Public License
  12. along with GNU CC; see the file COPYING. If not, write to
  13. the Free Software Foundation, 59 Temple Place - Suite 330,
  14. Boston, MA 02111-1307, USA. */
  15. #include <asm/export.h>
  16. .text
  17. .align 4
  18. .globl __muldi3
  19. __muldi3:
  20. save %sp, -104, %sp
  21. wr %g0, %i1, %y
  22. sra %i3, 0x1f, %g2
  23. and %i1, %g2, %g2
  24. andcc %g0, 0, %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, %i3, %g1
  48. mulscc %g1, %i3, %g1
  49. mulscc %g1, %i3, %g1
  50. mulscc %g1, %i3, %g1
  51. mulscc %g1, %i3, %g1
  52. mulscc %g1, %i3, %g1
  53. mulscc %g1, %i3, %g1
  54. mulscc %g1, %i3, %g1
  55. mulscc %g1, %i3, %g1
  56. mulscc %g1, %i3, %g1
  57. mulscc %g1, 0, %g1
  58. add %g1, %g2, %l2
  59. rd %y, %o1
  60. mov %o1, %l3
  61. mov %i1, %o0
  62. mov %i2, %o1
  63. umul %o0, %o1, %o0
  64. mov %o0, %l0
  65. mov %i0, %o0
  66. mov %i3, %o1
  67. umul %o0, %o1, %o0
  68. add %l0, %o0, %l0
  69. mov %l2, %i0
  70. add %l2, %l0, %i0
  71. ret
  72. restore %g0, %l3, %o1
  73. EXPORT_SYMBOL(__muldi3)