home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / Misc / CLISP-2.LHA / CLISP960530-ki.lha / ffcall / avcall / avcall-sparc.S < prev    next >
Encoding:
Text File  |  1996-04-15  |  3.2 KB  |  272 lines

  1. #ifdef UNDERSCORE
  2. #ifdef __STDC__
  3. #define C(entrypoint) _##entrypoint
  4. #else
  5. #define C(entrypoint) _/**/entrypoint
  6. #endif
  7. #else
  8. #define C(entrypoint) entrypoint
  9. #endif
  10. gcc2_compiled.:
  11. C(__gnu_compiled_c:)
  12. .text
  13.     .align 4
  14.     .global C(__builtin_avcall)
  15.     .proc    04
  16. C(__builtin_avcall:)
  17.     !#PROLOGUE# 0
  18.     save %sp,-1128,%sp
  19.     !#PROLOGUE# 1
  20.     ld [%i0+12],%o0
  21.     cmp %o0,14
  22.     ld [%i0+20],%o0
  23.     add %sp,68,%o4
  24.     add %o0,-40,%o0
  25.     sub %o0,%i0,%o0
  26.     bne L2
  27.     sra %o0,2,%o3
  28.     ld [%i0+4],%o0
  29.     andcc %o0,8,%g0
  30.     bne L71
  31.     cmp %o3,6
  32.     ld [%i0+8],%o0
  33.     st %o0,[%sp+64]
  34. L2:
  35.     cmp %o3,6
  36. L71:
  37.     ble L4
  38.     add %i0,24,%o1
  39.     mov 24,%o2
  40.     sll %o3,2,%o0
  41.     add %o0,%i0,%o3
  42. L6:
  43.     ld [%o1+40],%o0
  44.     st %o0,[%o2+%o4]
  45.     add %o1,4,%o1
  46.     cmp %o1,%o3
  47.     bl L6
  48.     add %o2,4,%o2
  49. L4:
  50.     ld [%i0+40],%o0
  51.     ld [%i0],%g2
  52.     ld [%i0+44],%o1
  53.     ld [%i0+48],%o2
  54.     ld [%i0+52],%o3
  55.     ld [%i0+56],%o4
  56.     call %g2,0
  57.     ld [%i0+60],%o5
  58.     nop
  59.     ld [%i0+12],%o1
  60.     cmp %o1,14
  61.     bgu L8
  62.     mov %o0,%o3
  63.     sethi %hi(L70),%o0
  64.     or %o0,%lo(L70),%o0
  65.     sll %o1,2,%o1
  66.     ld [%o1+%o0],%o0
  67.     jmp %o0
  68.     nop
  69. L70:
  70.     .word    L65
  71.     .word    L8
  72.     .word    L63
  73.     .word    L63
  74.     .word    L63
  75.     .word    L64
  76.     .word    L64
  77.     .word    L65
  78.     .word    L65
  79.     .word    L65
  80.     .word    L65
  81.     .word    L20
  82.     .word    L23
  83.     .word    L65
  84.     .word    L25
  85. L20:
  86.     ld [%i0+4],%o0
  87.     andcc %o0,16,%g0
  88.     bne,a L21
  89.     fdtos %f0,%f0
  90. L21:
  91.     ld [%i0+8],%o0
  92.     b L8
  93.     st %f0,[%o0]
  94. L23:
  95.     ld [%i0+8],%o0
  96.     b L8
  97.     std %f0,[%o0]
  98. L25:
  99.     ld [%i0+4],%o0
  100.     andcc %o0,8,%g0
  101.     be L26
  102.     andcc %o0,1,%g0
  103.     ld [%i0+16],%o0
  104.     cmp %o0,2
  105.     be,a L29
  106.     ld [%i0+8],%o1
  107.     bgu L45
  108.     cmp %o0,1
  109.     be,a L28
  110.     ld [%i0+8],%o1
  111.     b L72
  112.     andcc %o0,3,%g0
  113. L45:
  114.     cmp %o0,4
  115.     be L30
  116.     cmp %o0,8
  117.     be,a L31
  118.     ld [%i0+8],%o1
  119.     b L32
  120.     ld [%i0+16],%o0
  121. L28:
  122.     ldub [%sp-1],%o0
  123.     b L8
  124.     stb %o0,[%o1]
  125. L29:
  126.     lduh [%sp-2],%o0
  127.     b L8
  128.     sth %o0,[%o1]
  129. L30:
  130.     ld [%i0+8],%o1
  131.     ld [%sp-4],%o0
  132.     b L8
  133.     st %o0,[%o1]
  134. L31:
  135.     ld [%sp-8],%o0
  136.     st %o0,[%o1]
  137.     ld [%i0+8],%o1
  138.     ld [%sp-4],%o0
  139.     b L8
  140.     st %o0,[%o1+4]
  141. L32:
  142.     andcc %o0,3,%g0
  143. L72:
  144.     be L33
  145.     sub %sp,%o0,%o1
  146.     ld [%i0+8],%g2
  147.     cmp %o0,4
  148.     bleu L34
  149.     mov %o0,%o2
  150.     and %o1,-4,%o1
  151. L34:
  152.     cmp %o0,0
  153.     be L73
  154.     mov 0,%i0
  155. L37:
  156.     ldub [%o1],%o0
  157.     addcc %o2,-1,%o2
  158.     stb %o0,[%g2]
  159.     add %o1,1,%o1
  160.     bne L37
  161.     add %g2,1,%g2
  162.     b L73
  163.     mov 0,%i0
  164. L33:
  165.     cmp %o1,%sp
  166.     bgeu L8
  167.     ld [%i0+8],%g2
  168. L42:
  169.     ld [%o1],%o0
  170.     st %o0,[%g2]
  171.     add %o1,4,%o1
  172.     cmp %o1,%sp
  173.     blu L42
  174.     add %g2,4,%g2
  175.     b L73
  176.     mov 0,%i0
  177. L26:
  178.     be L47
  179.     andcc %o0,2,%g0
  180.     ld [%i0+16],%o0
  181.     cmp %o0,2
  182.     be,a L50
  183.     ld [%i0+8],%o1
  184.     bgu L59
  185.     cmp %o0,1
  186.     be,a L49
  187.     ld [%i0+8],%o1
  188.     b L74
  189.     add %o0,3,%o0
  190. L59:
  191.     cmp %o0,4
  192.     be L51
  193.     cmp %o0,8
  194.     be,a L52
  195.     ld [%i0+8],%o1
  196.     b L53
  197.     ld [%i0+16],%o0
  198. L49:
  199.     ldub [%o3],%o0
  200.     b L8
  201.     stb %o0,[%o1]
  202. L50:
  203.     lduh [%o3],%o0
  204.     b L8
  205.     sth %o0,[%o1]
  206. L51:
  207.     ld [%i0+8],%o1
  208.     ld [%o3],%o0
  209.     b L8
  210.     st %o0,[%o1]
  211. L52:
  212.     ld [%o3],%o0
  213.     st %o0,[%o1]
  214.     ld [%i0+8],%o1
  215.     ld [%o3+4],%o0
  216.     b L8
  217.     st %o0,[%o1+4]
  218. L53:
  219.     add %o0,3,%o0
  220. L74:
  221.     srl %o0,2,%o0
  222.     addcc %o0,-1,%o0
  223.     bneg L8
  224.     sll %o0,2,%o2
  225.     ld [%i0+8],%o1
  226. L75:
  227.     ld [%o2+%o3],%o0
  228.     st %o0,[%o1+%o2]
  229.     addcc %o2,-4,%o2
  230.     bpos,a L75
  231.     ld [%i0+8],%o1
  232.     b L73
  233.     mov 0,%i0
  234. L47:
  235.     be,a L73
  236.     mov 0,%i0
  237.     ld [%i0+16],%o0
  238.     cmp %o0,2
  239.     be,a L76
  240.     ld [%i0+8],%o0
  241.     bgu L68
  242.     cmp %o0,1
  243.     be,a L77
  244.     ld [%i0+8],%o0
  245.     b L73
  246.     mov 0,%i0
  247. L68:
  248.     cmp %o0,4
  249.     be,a L78
  250.     ld [%i0+8],%o0
  251.     b L73
  252.     mov 0,%i0
  253. L63:
  254.     ld [%i0+8],%o0
  255. L77:
  256.     b L8
  257.     stb %o3,[%o0]
  258. L64:
  259.     ld [%i0+8],%o0
  260. L76:
  261.     b L8
  262.     sth %o3,[%o0]
  263. L65:
  264.     ld [%i0+8],%o0
  265. L78:
  266.     st %o3,[%o0]
  267. L8:
  268.     mov 0,%i0
  269. L73:
  270.     ret
  271.     restore
  272.