Artifact 821a49633f7a61fd5f55326ebc323a774f6609ee:


0000: 23 69 6e 63 6c 75 64 65 20 22 61 73 6d 6d 69 70  #include "asmmip
0010: 73 2e 68 22 0a 09 2e 66 69 6c 65 09 31 20 22 76  s.h"...file.1 "v
0020: 61 63 61 6c 6c 2d 6d 69 70 73 2e 63 22 0a 09 2e  acall-mips.c"...
0030: 73 65 74 09 6e 6f 62 6f 70 74 0a 09 2e 74 65 78  set.nobopt...tex
0040: 74 0a 09 2e 61 6c 69 67 6e 09 32 0a 09 2e 67 6c  t...align.2...gl
0050: 6f 62 6c 09 5f 5f 76 61 63 61 6c 6c 0a 09 44 45  obl.__vacall..DE
0060: 43 4c 41 52 45 5f 46 55 4e 43 54 49 4f 4e 28 5f  CLARE_FUNCTION(_
0070: 5f 76 61 63 61 6c 6c 29 0a 0a 09 2e 65 78 74 65  _vacall)....exte
0080: 72 6e 09 76 61 63 61 6c 6c 5f 66 75 6e 63 74 69  rn.vacall_functi
0090: 6f 6e 2c 20 34 0a 0a 09 2e 74 65 78 74 0a 09 2e  on, 4....text...
00a0: 74 65 78 74 0a 09 2e 65 6e 74 09 5f 5f 76 61 63  text...ent.__vac
00b0: 61 6c 6c 0a 5f 5f 76 61 63 61 6c 6c 3a 0a 09 2e  all.__vacall:...
00c0: 66 72 61 6d 65 09 24 66 70 2c 38 38 2c 24 33 31  frame.$fp,88,$31
00d0: 09 09 0a 09 2e 6d 61 73 6b 09 30 78 63 30 30 30  .....mask.0xc000
00e0: 30 30 30 30 2c 2d 34 0a 09 2e 66 6d 61 73 6b 09  0000,-4...fmask.
00f0: 30 78 30 30 30 30 30 30 30 30 2c 30 0a 09 73 75  0x00000000,0..su
0100: 62 75 09 24 73 70 2c 24 73 70 2c 38 38 0a 09 73  bu.$sp,$sp,88..s
0110: 77 09 24 66 70 2c 38 30 28 24 73 70 29 0a 09 6d  w.$fp,80($sp)..m
0120: 6f 76 65 09 24 66 70 2c 24 73 70 0a 09 73 77 09  ove.$fp,$sp..sw.
0130: 24 33 31 2c 38 34 28 24 73 70 29 0a 09 6c 77 09  $31,84($sp)..lw.
0140: 24 32 35 2c 76 61 63 61 6c 6c 5f 66 75 6e 63 74  $25,vacall_funct
0150: 69 6f 6e 0a 09 61 64 64 75 09 24 38 2c 24 66 70  ion..addu.$8,$fp
0160: 2c 31 30 34 0a 09 73 77 09 24 34 2c 2d 31 36 28  ,104..sw.$4,-16(
0170: 24 38 29 0a 09 61 64 64 75 09 24 34 2c 24 66 70  $8)..addu.$4,$fp
0180: 2c 38 38 0a 09 73 77 09 24 35 2c 2d 31 32 28 24  ,88..sw.$5,-12($
0190: 38 29 0a 09 73 77 09 24 36 2c 2d 38 28 24 38 29  8)..sw.$6,-8($8)
01a0: 0a 09 73 77 09 24 37 2c 2d 34 28 24 38 29 0a 09  ..sw.$7,-4($8)..
01b0: 73 77 09 24 34 2c 32 30 28 24 66 70 29 0a 09 61  sw.$4,20($fp)..a
01c0: 64 64 75 09 24 34 2c 24 66 70 2c 31 36 0a 09 73  ddu.$4,$fp,16..s
01d0: 2e 64 09 24 66 31 32 2c 36 34 28 24 66 70 29 0a  .d.$f12,64($fp).
01e0: 09 73 2e 64 09 24 66 31 34 2c 37 32 28 24 66 70  .s.d.$f14,72($fp
01f0: 29 0a 09 73 2e 73 09 24 66 31 32 2c 35 36 28 24  )..s.s.$f12,56($
0200: 66 70 29 0a 09 73 2e 73 09 24 66 31 34 2c 36 30  fp)..s.s.$f14,60
0210: 28 24 66 70 29 0a 09 73 77 09 24 30 2c 31 36 28  ($fp)..sw.$0,16(
0220: 24 66 70 29 0a 09 73 77 09 24 30 2c 32 34 28 24  $fp)..sw.$0,24($
0230: 66 70 29 0a 09 73 77 09 24 30 2c 32 38 28 24 66  fp)..sw.$0,28($f
0240: 70 29 0a 09 73 77 09 24 38 2c 34 38 28 24 66 70  p)..sw.$8,48($fp
0250: 29 0a 09 2e 73 65 74 09 6e 6f 72 65 6f 72 64 65  )...set.noreorde
0260: 72 0a 09 2e 73 65 74 09 6e 6f 6d 61 63 72 6f 0a  r...set.nomacro.
0270: 09 6a 61 6c 09 24 33 31 2c 24 32 35 0a 09 73 77  .jal.$31,$25..sw
0280: 09 24 30 2c 35 32 28 24 66 70 29 0a 09 2e 73 65  .$0,52($fp)...se
0290: 74 09 6d 61 63 72 6f 0a 09 2e 73 65 74 09 72 65  t.macro...set.re
02a0: 6f 72 64 65 72 0a 0a 09 6c 77 09 24 35 2c 32 38  order...lw.$5,28
02b0: 28 24 66 70 29 0a 09 0a 09 2e 73 65 74 09 6e 6f  ($fp).....set.no
02c0: 72 65 6f 72 64 65 72 0a 09 2e 73 65 74 09 6e 6f  reorder...set.no
02d0: 6d 61 63 72 6f 0a 09 62 65 71 09 24 35 2c 24 30  macro..beq.$5,$0
02e0: 2c 24 4c 34 0a 09 6c 69 09 24 34 2c 31 09 09 09  ,$L4..li.$4,1...
02f0: 0a 09 2e 73 65 74 09 6d 61 63 72 6f 0a 09 2e 73  ...set.macro...s
0300: 65 74 09 72 65 6f 72 64 65 72 0a 0a 09 2e 73 65  et.reorder....se
0310: 74 09 6e 6f 72 65 6f 72 64 65 72 0a 09 2e 73 65  t.noreorder...se
0320: 74 09 6e 6f 6d 61 63 72 6f 0a 09 62 65 71 09 24  t.nomacro..beq.$
0330: 35 2c 24 34 2c 24 4c 34 30 0a 09 6c 69 09 24 34  5,$4,$L40..li.$4
0340: 2c 32 09 09 09 0a 09 2e 73 65 74 09 6d 61 63 72  ,2......set.macr
0350: 6f 0a 09 2e 73 65 74 09 72 65 6f 72 64 65 72 0a  o...set.reorder.
0360: 0a 09 2e 73 65 74 09 6e 6f 72 65 6f 72 64 65 72  ...set.noreorder
0370: 0a 09 2e 73 65 74 09 6e 6f 6d 61 63 72 6f 0a 09  ...set.nomacro..
0380: 62 6e 65 09 24 35 2c 24 34 2c 24 4c 37 0a 09 6c  bne.$5,$4,$L7..l
0390: 69 09 24 34 2c 33 09 09 09 0a 09 2e 73 65 74 09  i.$4,3......set.
03a0: 6d 61 63 72 6f 0a 09 2e 73 65 74 09 72 65 6f 72  macro...set.reor
03b0: 64 65 72 0a 0a 09 6c 62 09 24 32 2c 34 30 28 24  der...lb.$2,40($
03c0: 66 70 29 0a 09 6a 09 24 4c 34 0a 24 4c 37 3a 0a  fp)..j.$L4.$L7:.
03d0: 09 2e 73 65 74 09 6e 6f 72 65 6f 72 64 65 72 0a  ..set.noreorder.
03e0: 09 2e 73 65 74 09 6e 6f 6d 61 63 72 6f 0a 09 62  ..set.nomacro..b
03f0: 6e 65 09 24 35 2c 24 34 2c 24 4c 39 0a 09 6c 69  ne.$5,$4,$L9..li
0400: 09 24 34 2c 34 09 09 09 0a 09 2e 73 65 74 09 6d  .$4,4......set.m
0410: 61 63 72 6f 0a 09 2e 73 65 74 09 72 65 6f 72 64  acro...set.reord
0420: 65 72 0a 0a 24 4c 34 30 3a 0a 09 6c 62 75 09 24  er..$L40:..lbu.$
0430: 32 2c 34 30 28 24 66 70 29 0a 09 6a 09 24 4c 34  2,40($fp)..j.$L4
0440: 0a 24 4c 39 3a 0a 09 2e 73 65 74 09 6e 6f 72 65  .$L9:...set.nore
0450: 6f 72 64 65 72 0a 09 2e 73 65 74 09 6e 6f 6d 61  order...set.noma
0460: 63 72 6f 0a 09 62 6e 65 09 24 35 2c 24 34 2c 24  cro..bne.$5,$4,$
0470: 4c 31 31 0a 09 6c 69 09 24 34 2c 35 09 09 09 0a  L11..li.$4,5....
0480: 09 2e 73 65 74 09 6d 61 63 72 6f 0a 09 2e 73 65  ..set.macro...se
0490: 74 09 72 65 6f 72 64 65 72 0a 0a 09 6c 68 09 24  t.reorder...lh.$
04a0: 32 2c 34 30 28 24 66 70 29 0a 09 6a 09 24 4c 34  2,40($fp)..j.$L4
04b0: 0a 24 4c 31 31 3a 0a 09 2e 73 65 74 09 6e 6f 72  .$L11:...set.nor
04c0: 65 6f 72 64 65 72 0a 09 2e 73 65 74 09 6e 6f 6d  eorder...set.nom
04d0: 61 63 72 6f 0a 09 62 6e 65 09 24 35 2c 24 34 2c  acro..bne.$5,$4,
04e0: 24 4c 31 33 0a 09 6c 69 09 24 34 2c 36 09 09 09  $L13..li.$4,6...
04f0: 0a 09 2e 73 65 74 09 6d 61 63 72 6f 0a 09 2e 73  ...set.macro...s
0500: 65 74 09 72 65 6f 72 64 65 72 0a 0a 09 6c 68 75  et.reorder...lhu
0510: 09 24 32 2c 34 30 28 24 66 70 29 0a 09 6a 09 24  .$2,40($fp)..j.$
0520: 4c 34 0a 24 4c 31 33 3a 0a 09 2e 73 65 74 09 6e  L4.$L13:...set.n
0530: 6f 72 65 6f 72 64 65 72 0a 09 2e 73 65 74 09 6e  oreorder...set.n
0540: 6f 6d 61 63 72 6f 0a 09 62 65 71 09 24 35 2c 24  omacro..beq.$5,$
0550: 34 2c 24 4c 34 31 0a 09 6c 69 09 24 34 2c 37 09  4,$L41..li.$4,7.
0560: 09 09 0a 09 2e 73 65 74 09 6d 61 63 72 6f 0a 09  .....set.macro..
0570: 2e 73 65 74 09 72 65 6f 72 64 65 72 0a 0a 09 2e  .set.reorder....
0580: 73 65 74 09 6e 6f 72 65 6f 72 64 65 72 0a 09 2e  set.noreorder...
0590: 73 65 74 09 6e 6f 6d 61 63 72 6f 0a 09 62 65 71  set.nomacro..beq
05a0: 09 24 35 2c 24 34 2c 24 4c 34 31 0a 09 6c 69 09  .$5,$4,$L41..li.
05b0: 24 34 2c 38 09 09 09 0a 09 2e 73 65 74 09 6d 61  $4,8......set.ma
05c0: 63 72 6f 0a 09 2e 73 65 74 09 72 65 6f 72 64 65  cro...set.reorde
05d0: 72 0a 0a 09 2e 73 65 74 09 6e 6f 72 65 6f 72 64  r....set.noreord
05e0: 65 72 0a 09 2e 73 65 74 09 6e 6f 6d 61 63 72 6f  er...set.nomacro
05f0: 0a 09 62 65 71 09 24 35 2c 24 34 2c 24 4c 34 31  ..beq.$5,$4,$L41
0600: 0a 09 6c 69 09 24 34 2c 39 09 09 09 0a 09 2e 73  ..li.$4,9......s
0610: 65 74 09 6d 61 63 72 6f 0a 09 2e 73 65 74 09 72  et.macro...set.r
0620: 65 6f 72 64 65 72 0a 0a 09 2e 73 65 74 09 6e 6f  eorder....set.no
0630: 72 65 6f 72 64 65 72 0a 09 2e 73 65 74 09 6e 6f  reorder...set.no
0640: 6d 61 63 72 6f 0a 09 62 65 71 09 24 35 2c 24 34  macro..beq.$5,$4
0650: 2c 24 4c 34 31 0a 09 61 64 64 75 09 24 34 2c 24  ,$L41..addu.$4,$
0660: 35 2c 2d 31 30 0a 09 2e 73 65 74 09 6d 61 63 72  5,-10...set.macr
0670: 6f 0a 09 2e 73 65 74 09 72 65 6f 72 64 65 72 0a  o...set.reorder.
0680: 0a 09 73 6c 74 75 09 24 34 2c 24 34 2c 32 0a 09  ..sltu.$4,$4,2..
0690: 2e 73 65 74 09 6e 6f 72 65 6f 72 64 65 72 0a 09  .set.noreorder..
06a0: 2e 73 65 74 09 6e 6f 6d 61 63 72 6f 0a 09 62 65  .set.nomacro..be
06b0: 71 09 24 34 2c 24 30 2c 24 4c 32 33 0a 09 6c 69  q.$4,$0,$L23..li
06c0: 09 24 34 2c 31 32 09 09 09 0a 09 2e 73 65 74 09  .$4,12......set.
06d0: 6d 61 63 72 6f 0a 09 2e 73 65 74 09 72 65 6f 72  macro...set.reor
06e0: 64 65 72 0a 0a 09 6c 77 09 24 32 2c 34 30 28 24  der...lw.$2,40($
06f0: 66 70 29 0a 09 6c 77 09 24 33 2c 34 34 28 24 66  fp)..lw.$3,44($f
0700: 70 29 0a 09 6a 09 24 4c 34 0a 24 4c 32 33 3a 0a  p)..j.$L4.$L23:.
0710: 09 6c 77 09 24 35 2c 32 38 28 24 66 70 29 0a 09  .lw.$5,28($fp)..
0720: 0a 09 2e 73 65 74 09 6e 6f 72 65 6f 72 64 65 72  ...set.noreorder
0730: 0a 09 2e 73 65 74 09 6e 6f 6d 61 63 72 6f 0a 09  ...set.nomacro..
0740: 62 6e 65 09 24 35 2c 24 34 2c 24 4c 32 35 0a 09  bne.$5,$4,$L25..
0750: 6c 69 09 24 34 2c 31 33 09 09 09 0a 09 2e 73 65  li.$4,13......se
0760: 74 09 6d 61 63 72 6f 0a 09 2e 73 65 74 09 72 65  t.macro...set.re
0770: 6f 72 64 65 72 0a 0a 09 6c 2e 73 09 24 66 30 2c  order...l.s.$f0,
0780: 34 30 28 24 66 70 29 0a 09 6a 09 24 4c 34 0a 24  40($fp)..j.$L4.$
0790: 4c 32 35 3a 0a 09 2e 73 65 74 09 6e 6f 72 65 6f  L25:...set.noreo
07a0: 72 64 65 72 0a 09 2e 73 65 74 09 6e 6f 6d 61 63  rder...set.nomac
07b0: 72 6f 0a 09 62 6e 65 09 24 35 2c 24 34 2c 24 4c  ro..bne.$5,$4,$L
07c0: 32 37 0a 09 6c 69 09 24 34 2c 31 34 09 09 09 0a  27..li.$4,14....
07d0: 09 2e 73 65 74 09 6d 61 63 72 6f 0a 09 2e 73 65  ..set.macro...se
07e0: 74 09 72 65 6f 72 64 65 72 0a 0a 09 6c 2e 64 09  t.reorder...l.d.
07f0: 24 66 30 2c 34 30 28 24 66 70 29 0a 09 6a 09 24  $f0,40($fp)..j.$
0800: 4c 34 0a 24 4c 32 37 3a 0a 09 2e 73 65 74 09 6e  L4.$L27:...set.n
0810: 6f 72 65 6f 72 64 65 72 0a 09 2e 73 65 74 09 6e  oreorder...set.n
0820: 6f 6d 61 63 72 6f 0a 09 62 6e 65 09 24 35 2c 24  omacro..bne.$5,$
0830: 34 2c 24 4c 32 39 0a 09 6c 69 09 24 34 2c 31 35  4,$L29..li.$4,15
0840: 09 09 09 0a 09 2e 73 65 74 09 6d 61 63 72 6f 0a  ......set.macro.
0850: 09 2e 73 65 74 09 72 65 6f 72 64 65 72 0a 0a 24  ..set.reorder..$
0860: 4c 34 31 3a 0a 09 6c 77 09 24 32 2c 34 30 28 24  L41:..lw.$2,40($
0870: 66 70 29 0a 09 6a 09 24 4c 34 0a 24 4c 32 39 3a  fp)..j.$L4.$L29:
0880: 0a 09 62 6e 65 09 24 35 2c 24 34 2c 24 4c 34 0a  ..bne.$5,$4,$L4.
0890: 09 6c 77 09 24 35 2c 31 36 28 24 66 70 29 0a 09  .lw.$5,16($fp)..
08a0: 0a 09 61 6e 64 69 09 24 34 2c 24 35 2c 30 78 31  ..andi.$4,$5,0x1
08b0: 0a 09 2e 73 65 74 09 6e 6f 72 65 6f 72 64 65 72  ...set.noreorder
08c0: 0a 09 2e 73 65 74 09 6e 6f 6d 61 63 72 6f 0a 09  ...set.nomacro..
08d0: 62 65 71 09 24 34 2c 24 30 2c 24 4c 33 32 0a 09  beq.$4,$0,$L32..
08e0: 61 6e 64 69 09 24 34 2c 24 35 2c 30 78 32 0a 09  andi.$4,$5,0x2..
08f0: 2e 73 65 74 09 6d 61 63 72 6f 0a 09 2e 73 65 74  .set.macro...set
0900: 09 72 65 6f 72 64 65 72 0a 0a 09 6c 77 09 24 32  .reorder...lw.$2
0910: 2c 32 34 28 24 66 70 29 0a 09 6a 09 24 4c 34 0a  ,24($fp)..j.$L4.
0920: 24 4c 33 32 3a 0a 09 2e 73 65 74 09 6e 6f 72 65  $L32:...set.nore
0930: 6f 72 64 65 72 0a 09 2e 73 65 74 09 6e 6f 6d 61  order...set.noma
0940: 63 72 6f 0a 09 62 65 71 09 24 34 2c 24 30 2c 24  cro..beq.$4,$0,$
0950: 4c 34 0a 09 6c 69 09 24 34 2c 31 09 09 09 0a 09  L4..li.$4,1.....
0960: 2e 73 65 74 09 6d 61 63 72 6f 0a 09 2e 73 65 74  .set.macro...set
0970: 09 72 65 6f 72 64 65 72 0a 0a 09 6c 77 09 24 35  .reorder...lw.$5
0980: 2c 33 32 28 24 66 70 29 0a 09 0a 09 2e 73 65 74  ,32($fp).....set
0990: 09 6e 6f 72 65 6f 72 64 65 72 0a 09 2e 73 65 74  .noreorder...set
09a0: 09 6e 6f 6d 61 63 72 6f 0a 09 62 6e 65 09 24 35  .nomacro..bne.$5
09b0: 2c 24 34 2c 24 4c 33 35 0a 09 6c 69 09 24 34 2c  ,$4,$L35..li.$4,
09c0: 32 09 09 09 0a 09 2e 73 65 74 09 6d 61 63 72 6f  2......set.macro
09d0: 0a 09 2e 73 65 74 09 72 65 6f 72 64 65 72 0a 0a  ...set.reorder..
09e0: 09 6c 77 09 24 34 2c 32 34 28 24 66 70 29 0a 09  .lw.$4,24($fp)..
09f0: 0a 09 6c 62 75 09 24 32 2c 30 28 24 34 29 0a 09  ..lbu.$2,0($4)..
0a00: 6a 09 24 4c 34 0a 24 4c 33 35 3a 0a 09 2e 73 65  j.$L4.$L35:...se
0a10: 74 09 6e 6f 72 65 6f 72 64 65 72 0a 09 2e 73 65  t.noreorder...se
0a20: 74 09 6e 6f 6d 61 63 72 6f 0a 09 62 6e 65 09 24  t.nomacro..bne.$
0a30: 35 2c 24 34 2c 24 4c 33 37 0a 09 6c 69 09 24 34  5,$4,$L37..li.$4
0a40: 2c 34 09 09 09 0a 09 2e 73 65 74 09 6d 61 63 72  ,4......set.macr
0a50: 6f 0a 09 2e 73 65 74 09 72 65 6f 72 64 65 72 0a  o...set.reorder.
0a60: 0a 09 6c 77 09 24 34 2c 32 34 28 24 66 70 29 0a  ..lw.$4,24($fp).
0a70: 09 0a 09 6c 68 75 09 24 32 2c 30 28 24 34 29 0a  ...lhu.$2,0($4).
0a80: 09 6a 09 24 4c 34 0a 24 4c 33 37 3a 0a 09 62 6e  .j.$L4.$L37:..bn
0a90: 65 09 24 35 2c 24 34 2c 24 4c 34 0a 09 6c 77 09  e.$5,$4,$L4..lw.
0aa0: 24 34 2c 32 34 28 24 66 70 29 0a 09 0a 09 6c 77  $4,24($fp)....lw
0ab0: 09 24 32 2c 30 28 24 34 29 0a 24 4c 34 3a 0a 09  .$2,0($4).$L4:..
0ac0: 6d 6f 76 65 09 24 73 70 2c 24 66 70 0a 09 6c 77  move.$sp,$fp..lw
0ad0: 09 24 33 31 2c 38 34 28 24 73 70 29 0a 09 6c 77  .$31,84($sp)..lw
0ae0: 09 24 66 70 2c 38 30 28 24 73 70 29 0a 09 0a 09  .$fp,80($sp)....
0af0: 2e 73 65 74 09 6e 6f 72 65 6f 72 64 65 72 0a 09  .set.noreorder..
0b00: 2e 73 65 74 09 6e 6f 6d 61 63 72 6f 0a 09 6a 09  .set.nomacro..j.
0b10: 24 33 31 0a 09 61 64 64 75 09 24 73 70 2c 24 73  $31..addu.$sp,$s
0b20: 70 2c 38 38 0a 09 2e 73 65 74 09 6d 61 63 72 6f  p,88...set.macro
0b30: 0a 09 2e 73 65 74 09 72 65 6f 72 64 65 72 0a 0a  ...set.reorder..
0b40: 09 2e 65 6e 64 09 5f 5f 76 61 63 61 6c 6c 0a     ..end.__vacall.