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.