home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 9 / FreshFishVol9-CD2.bin / bbs / gnu / libnix-0.8-src.lha / libnix-0.8 / sources / nix / math / __mulsi3.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-12-12  |  486 b   |  45 lines

  1.  
  2. asm("
  3.         .globl    ___mulsi3
  4.  
  5. | D0 = D0 * D1"
  6.  
  7. #ifdef OS_20_ONLY
  8. "
  9. ___mulsi3:    moveml    sp@(4),d0/d1"
  10.  
  11. #ifndef SMALL_DATA
  12. "
  13.         movel    _UtilityBase,a0"
  14. #else
  15. "
  16.         movel    a4@(_UtilityBase:W),a0"
  17. #endif
  18. "
  19.         jmp    a0@(-138:W)"
  20.  
  21. #else
  22. "
  23. ___mulsi3:    moveml    sp@(4),d0/d1
  24.         movel    d3,sp@-
  25.         movel    d2,sp@-
  26.         movew    d1,d2
  27.         mulu    d0,d2
  28.         movel    d1,d3
  29.         swap    d3
  30.         mulu    d0,d3
  31.         swap    d3
  32.         clrw    d3
  33.         addl    d3,d2
  34.         swap    d0
  35.         mulu    d1,d0
  36.         swap    d0
  37.         clrw    d0
  38.         addl    d2,d0
  39.         movel    sp@+,d2
  40.         movel    sp@+,d3
  41.         rts"
  42.  
  43. #endif
  44. );
  45.