0000: 23 69 66 6e 64 65 66 20 5f 61 76 63 61 6c 6c 5f #ifndef _avcall_
0010: 6d 69 70 73 36 34 5f 63 09 09 09 09 2f 2a 2d 2a mips64_c..../*-*
0020: 2d 20 43 20 2d 2a 2d 2a 2f 0a 23 64 65 66 69 6e - C -*-*/.#defin
0030: 65 20 5f 61 76 63 61 6c 6c 5f 6d 69 70 73 36 34 e _avcall_mips64
0040: 5f 63 0a 2f 2a 2a 0a 20 20 43 6f 70 79 72 69 67 _c./**. Copyrig
0050: 68 74 20 31 39 39 33 20 42 69 6c 6c 20 54 72 69 ht 1993 Bill Tri
0060: 67 67 73 2c 20 3c 42 69 6c 6c 2e 54 72 69 67 67 ggs, <Bill.Trigg
0070: 73 40 69 6e 72 69 61 6c 70 65 73 2e 66 72 3e 0a s@inrialpes.fr>.
0080: 20 20 43 6f 70 79 72 69 67 68 74 20 31 39 39 35 Copyright 1995
0090: 2d 31 39 39 39 20 42 72 75 6e 6f 20 48 61 69 62 -1999 Bruno Haib
00a0: 6c 65 2c 20 3c 62 72 75 6e 6f 40 63 6c 69 73 70 le, <bruno@clisp
00b0: 2e 6f 72 67 3e 0a 0a 20 20 54 68 69 73 20 69 73 .org>.. This is
00c0: 20 66 72 65 65 20 73 6f 66 74 77 61 72 65 20 64 free software d
00d0: 69 73 74 72 69 62 75 74 65 64 20 75 6e 64 65 72 istributed under
00e0: 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c the GNU General
00f0: 20 50 75 62 6c 69 63 0a 20 20 4c 69 63 65 6e 63 Public. Licenc
0100: 65 20 64 65 73 63 72 69 62 65 64 20 69 6e 20 74 e described in t
0110: 68 65 20 66 69 6c 65 20 43 4f 50 59 49 4e 47 2e he file COPYING.
0120: 20 43 6f 6e 74 61 63 74 20 74 68 65 20 61 75 74 Contact the aut
0130: 68 6f 72 20 69 66 0a 20 20 79 6f 75 20 64 6f 6e hor if. you don
0140: 27 74 20 68 61 76 65 20 74 68 69 73 20 6f 72 20 't have this or
0150: 63 61 6e 27 74 20 6c 69 76 65 20 77 69 74 68 20 can't live with
0160: 69 74 2e 20 54 68 65 72 65 20 69 73 20 41 42 53 it. There is ABS
0170: 4f 4c 55 54 45 4c 59 0a 20 20 4e 4f 20 57 41 52 OLUTELY. NO WAR
0180: 52 41 4e 54 59 2c 20 65 78 70 6c 69 63 69 74 20 RANTY, explicit
0190: 6f 72 20 69 6d 70 6c 69 65 64 2c 20 6f 6e 20 74 or implied, on t
01a0: 68 69 73 20 73 6f 66 74 77 61 72 65 2e 0a 2a 2a his software..**
01b0: 2f 0a 2f 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d /./*------------
01c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
01d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
01e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
01f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 21 21 21 ----------. !!!
0200: 20 54 48 49 53 20 52 4f 55 54 49 4e 45 20 4d 55 THIS ROUTINE MU
0210: 53 54 20 42 45 20 43 4f 4d 50 49 4c 45 44 20 67 ST BE COMPILED g
0220: 63 63 20 2d 4f 20 21 21 21 0a 0a 20 20 46 6f 72 cc -O !!!.. For
0230: 65 69 67 6e 20 66 75 6e 63 74 69 6f 6e 20 69 6e eign function in
0240: 74 65 72 66 61 63 65 20 66 6f 72 20 61 6e 20 53 terface for an S
0250: 47 49 20 36 34 2d 62 69 74 20 4d 49 50 53 20 77 GI 64-bit MIPS w
0260: 69 74 68 20 73 67 69 2d 63 63 2e 0a 0a 20 20 54 ith sgi-cc... T
0270: 68 69 73 20 63 61 6c 6c 73 20 61 20 43 20 66 75 his calls a C fu
0280: 6e 63 74 69 6f 6e 20 77 69 74 68 20 61 6e 20 61 nction with an a
0290: 72 67 75 6d 65 6e 74 20 6c 69 73 74 20 62 75 69 rgument list bui
02a0: 6c 74 20 75 70 20 75 73 69 6e 67 20 6d 61 63 72 lt up using macr
02b0: 6f 73 0a 20 20 64 65 66 69 6e 65 64 20 69 6e 20 os. defined in
02c0: 61 76 5f 63 61 6c 6c 2e 68 2e 0a 0a 20 20 53 47 av_call.h... SG
02d0: 49 20 4d 49 50 53 20 36 34 2d 62 69 74 20 41 72 I MIPS 64-bit Ar
02e0: 67 75 6d 65 6e 74 20 50 61 73 73 69 6e 67 20 43 gument Passing C
02f0: 6f 6e 76 65 6e 74 69 6f 6e 73 0a 0a 20 20 2d 20 onventions.. -
0300: 54 68 65 20 65 6e 74 69 72 65 20 61 72 67 75 6d The entire argum
0310: 65 6e 74 20 6c 69 73 74 20 66 6f 72 6d 73 20 61 ent list forms a
0320: 20 73 74 72 75 63 74 75 72 65 20 77 69 74 68 20 structure with
0330: 61 6c 6c 20 74 68 65 20 61 70 70 72 6f 70 72 69 all the appropri
0340: 61 74 65 0a 20 20 20 20 68 6f 6c 65 73 20 26 20 ate. holes &
0350: 61 6c 69 67 6e 6d 65 6e 74 73 2c 20 61 6e 64 20 alignments, and
0360: 73 70 61 63 65 20 66 6f 72 20 74 68 69 73 20 69 space for this i
0370: 73 20 61 6c 6c 6f 63 61 74 65 64 20 69 6e 20 74 s allocated in t
0380: 68 65 20 73 74 61 63 6b 20 66 72 61 6d 65 2e 0a he stack frame..
0390: 20 20 2d 20 53 68 6f 72 74 65 72 20 69 6e 74 65 - Shorter inte
03a0: 67 65 72 73 20 61 72 65 20 70 72 6f 6d 6f 74 65 gers are promote
03b0: 64 20 74 6f 20 6c 6f 6e 67 77 6f 72 64 20 6c 65 d to longword le
03c0: 6e 67 74 68 20 28 73 69 7a 65 6f 66 28 6c 6f 6e ngth (sizeof(lon
03d0: 67 29 3d 38 29 2e 0a 20 20 2d 20 44 6f 75 62 6c g)=8).. - Doubl
03e0: 65 73 20 61 72 65 20 31 20 6c 6f 6e 67 77 6f 72 es are 1 longwor
03f0: 64 2e 0a 20 20 2d 20 53 74 72 75 63 74 75 72 65 d.. - Structure
0400: 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 63 arguments are c
0410: 6f 70 69 65 73 20 65 6d 62 65 64 64 65 64 20 69 opies embedded i
0420: 6e 20 74 68 65 20 61 72 67 6c 69 73 74 20 73 74 n the arglist st
0430: 72 75 63 74 75 72 65 2e 0a 20 20 2d 20 54 68 65 ructure.. - The
0440: 20 66 69 72 73 74 20 38 20 6c 6f 6e 67 77 6f 72 first 8 longwor
0450: 64 73 20 6f 66 20 74 68 65 20 73 74 72 75 63 74 ds of the struct
0460: 75 72 65 20 61 72 65 20 70 61 73 73 65 64 20 69 ure are passed i
0470: 6e 20 72 65 67 69 73 74 65 72 73 20 24 34 2e 2e n registers $4..
0480: 2e 24 31 31 2c 0a 20 20 20 20 65 78 63 65 70 74 .$11,. except
0490: 20 74 68 61 74 20 66 6c 6f 61 74 20 61 72 67 75 that float argu
04a0: 6d 65 6e 74 73 20 61 72 65 20 70 61 73 73 65 64 ments are passed
04b0: 20 69 6e 20 72 65 67 69 73 74 65 72 73 20 24 66 in registers $f
04c0: 31 32 2e 2e 2e 24 66 31 39 2c 20 61 6e 64 0a 20 12...$f19, and.
04d0: 20 20 20 74 68 61 74 20 64 6f 75 62 6c 65 20 61 that double a
04e0: 72 67 75 6d 65 6e 74 73 20 61 6e 64 20 73 74 72 rguments and str
04f0: 75 63 74 75 72 65 20 65 6c 65 6d 65 6e 74 73 20 ucture elements
0500: 6f 66 20 74 79 70 65 20 64 6f 75 62 6c 65 20 61 of type double a
0510: 72 65 20 70 61 73 73 65 64 0a 20 20 20 20 69 6e re passed. in
0520: 20 72 65 67 69 73 74 65 72 73 20 24 66 31 32 2e registers $f12.
0530: 2e 2e 24 66 31 39 2e 20 28 42 75 74 20 76 61 72 ..$f19. (But var
0540: 61 72 67 73 20 66 75 6e 63 74 69 6f 6e 73 20 6d args functions m
0550: 61 79 20 65 78 70 65 63 74 20 74 68 65 6d 20 69 ay expect them i
0560: 6e 20 74 68 65 0a 20 20 20 20 69 6e 74 65 67 65 n the. intege
0570: 72 20 72 65 67 69 73 74 65 72 73 20 61 6e 64 20 r registers and
0580: 77 65 20 63 61 6e 27 74 20 74 65 6c 6c 20 77 68 we can't tell wh
0590: 65 74 68 65 72 20 74 68 65 20 66 75 6e 63 74 69 ether the functi
05a0: 6f 6e 20 69 73 20 76 61 72 61 72 67 73 20 73 6f on is varargs so
05b0: 0a 20 20 20 20 77 65 20 70 61 73 73 20 74 68 65 . we pass the
05c0: 6d 20 62 6f 74 68 20 77 61 79 73 2e 29 0a 20 20 m both ways.).
05d0: 20 20 52 65 6d 61 69 6e 69 6e 67 20 6c 6f 6e 67 Remaining long
05e0: 77 6f 72 64 73 20 61 72 65 20 70 61 73 73 65 64 words are passed
05f0: 20 6f 6e 20 74 68 65 20 73 74 61 63 6b 2e 20 4e on the stack. N
0600: 6f 20 73 74 61 63 6b 20 73 70 61 63 65 20 69 73 o stack space is
0610: 20 61 6c 6c 6f 63 61 74 65 64 0a 20 20 20 20 66 allocated. f
0620: 6f 72 20 74 68 65 20 66 69 72 73 74 20 38 20 6c or the first 8 l
0630: 6f 6e 67 77 6f 72 64 73 20 6f 66 20 74 68 65 20 ongwords of the
0640: 73 74 72 75 63 74 75 72 65 2e 0a 20 20 2d 20 53 structure.. - S
0650: 74 72 75 63 74 75 72 65 20 72 65 74 75 72 6e 73 tructure returns
0660: 20 6f 66 20 73 74 72 75 63 74 75 72 65 73 20 3e of structures >
0670: 20 31 36 20 62 79 74 65 73 3a 20 70 6f 69 6e 74 16 bytes: point
0680: 65 72 73 20 74 6f 20 63 61 6c 6c 65 72 2d 61 6c ers to caller-al
0690: 6c 6f 63 61 74 65 64 0a 20 20 20 20 73 70 61 63 located. spac
06a0: 65 20 61 72 65 20 70 61 73 73 65 64 20 69 6e 20 e are passed in
06b0: 61 73 20 74 68 65 20 66 69 72 73 74 20 61 72 67 as the first arg
06c0: 75 6d 65 6e 74 20 6f 66 20 74 68 65 20 6c 69 73 ument of the lis
06d0: 74 2e 0a 20 20 2d 20 53 74 72 75 63 74 75 72 65 t.. - Structure
06e0: 20 72 65 74 75 72 6e 73 20 6f 66 20 73 74 72 75 returns of stru
06f0: 63 74 75 72 65 73 20 3c 3d 20 31 36 20 62 79 74 ctures <= 16 byt
0700: 65 73 3a 20 69 6e 20 74 68 65 20 72 65 67 69 73 es: in the regis
0710: 74 65 72 73 20 24 32 20 28 66 6f 72 20 74 68 65 ters $2 (for the
0720: 0a 20 20 20 20 66 69 72 73 74 20 38 20 62 79 74 . first 8 byt
0730: 65 73 29 20 61 6e 64 20 24 33 20 28 66 6f 72 20 es) and $3 (for
0740: 74 68 65 20 6e 65 78 74 20 38 20 62 79 74 65 73 the next 8 bytes
0750: 29 2e 0a 20 20 20 20 41 20 73 74 72 75 63 74 75 ).. A structu
0760: 72 65 20 6f 66 20 31 20 6f 72 20 32 20 66 6c 6f re of 1 or 2 flo
0770: 61 74 73 20 6f 72 20 64 6f 75 62 6c 65 73 20 69 ats or doubles i
0780: 73 20 72 65 74 75 72 6e 65 64 20 69 6e 20 24 66 s returned in $f
0790: 30 20 61 6e 64 20 24 66 32 3a 0a 20 20 20 20 74 0 and $f2:. t
07a0: 68 65 20 66 69 72 73 74 20 66 6c 6f 61 74 20 6f he first float o
07b0: 72 20 64 6f 75 62 6c 65 20 69 6e 20 24 66 30 2c r double in $f0,
07c0: 20 74 68 65 20 73 65 63 6f 6e 64 20 66 6c 6f 61 the second floa
07d0: 74 20 6f 72 20 64 6f 75 62 6c 65 20 69 6e 20 24 t or double in $
07e0: 66 32 2e 0a 20 20 2d 20 49 6e 74 65 67 65 72 2f f2.. - Integer/
07f0: 70 6f 69 6e 74 65 72 20 72 65 74 75 72 6e 73 20 pointer returns
0800: 61 72 65 20 69 6e 20 24 32 2c 20 66 6c 6f 61 74 are in $2, float
0810: 2f 64 6f 75 62 6c 65 20 72 65 74 75 72 6e 73 20 /double returns
0820: 69 6e 20 24 66 30 2e 0a 20 20 2d 20 54 68 65 20 in $f0.. - The
0830: 63 61 6c 6c 65 64 20 66 75 6e 63 74 69 6f 6e 20 called function
0840: 65 78 70 65 63 74 73 20 74 6f 20 73 65 65 20 69 expects to see i
0850: 74 73 20 6f 77 6e 20 61 64 64 72 65 73 73 20 69 ts own address i
0860: 6e 20 24 32 35 2e 0a 0a 20 20 54 68 69 73 20 66 n $25... This f
0870: 69 6c 65 20 6e 65 65 64 73 20 74 6f 20 62 65 20 ile needs to be
0880: 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 67 63 compiled with gc
0890: 63 20 66 6f 72 20 74 68 65 20 61 73 6d 20 65 78 c for the asm ex
08a0: 74 65 6e 73 69 6f 6e 73 2c 20 62 75 74 20 74 68 tensions, but th
08b0: 65 0a 20 20 61 73 73 65 6d 62 6c 79 20 76 65 72 e. assembly ver
08c0: 73 69 6f 6e 20 6f 66 20 69 74 20 61 6e 64 20 74 sion of it and t
08d0: 68 65 20 68 65 61 64 65 72 20 66 69 6c 65 20 73 he header file s
08e0: 65 65 6d 20 74 6f 20 77 6f 72 6b 20 77 69 74 68 eem to work with
08f0: 20 53 47 49 20 63 63 2e 0a 20 20 2d 2d 2d 2d 2d SGI cc.. -----
0900: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0910: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0920: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0930: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0940: 2d 2a 2f 0a 23 69 6e 63 6c 75 64 65 20 22 61 76 -*/.#include "av
0950: 63 61 6c 6c 2e 68 2e 69 6e 22 0a 0a 23 64 65 66 call.h.in"..#def
0960: 69 6e 65 20 52 45 54 55 52 4e 28 54 59 50 45 2c ine RETURN(TYPE,
0970: 56 41 4c 29 09 28 2a 28 54 59 50 45 2a 29 6c 2d VAL).(*(TYPE*)l-
0980: 3e 72 61 64 64 72 20 3d 20 28 54 59 50 45 29 28 >raddr = (TYPE)(
0990: 56 41 4c 29 29 0a 23 64 65 66 69 6e 65 20 4f 46 VAL)).#define OF
09a0: 46 53 45 54 4f 46 28 73 74 72 75 63 74 2c 6d 65 FSETOF(struct,me
09b0: 6d 62 65 72 29 20 28 28 69 6e 74 29 26 28 28 28 mber) ((int)&(((
09c0: 73 74 72 75 63 74 2a 29 30 29 2d 3e 6d 65 6d 62 struct*)0)->memb
09d0: 65 72 29 29 0a 0a 74 79 70 65 64 65 66 20 5f 5f er))..typedef __
09e0: 61 76 77 6f 72 64 20 28 2a 66 75 6e 63 5f 70 6f avword (*func_po
09f0: 69 6e 74 65 72 29 28 29 3b 0a 72 65 67 69 73 74 inter)();.regist
0a00: 65 72 20 66 75 6e 63 5f 70 6f 69 6e 74 65 72 09 er func_pointer.
0a10: 74 39 09 5f 5f 61 73 6d 5f 5f 28 22 24 32 35 22 t9.__asm__("$25"
0a20: 29 3b 0a 0a 69 6e 74 0a 5f 5f 62 75 69 6c 74 69 );..int.__builti
0a30: 6e 5f 61 76 63 61 6c 6c 28 61 76 5f 61 6c 69 73 n_avcall(av_alis
0a40: 74 2a 20 6c 29 0a 7b 0a 20 20 72 65 67 69 73 74 t* l).{. regist
0a50: 65 72 20 5f 5f 61 76 77 6f 72 64 2a 09 73 70 09 er __avword*.sp.
0a60: 5f 5f 61 73 6d 5f 5f 28 22 24 73 70 22 29 3b 20 __asm__("$sp");
0a70: 20 2f 2a 20 43 20 6e 61 6d 65 73 20 66 6f 72 20 /* C names for
0a80: 72 65 67 69 73 74 65 72 73 20 2a 2f 0a 20 20 72 registers */. r
0a90: 65 67 69 73 74 65 72 20 66 6c 6f 61 74 09 66 72 egister float.fr
0aa0: 65 74 09 5f 5f 61 73 6d 5f 5f 28 22 24 66 30 22 et.__asm__("$f0"
0ab0: 29 3b 0a 20 20 72 65 67 69 73 74 65 72 20 64 6f );. register do
0ac0: 75 62 6c 65 09 64 72 65 74 09 5f 5f 61 73 6d 5f uble.dret.__asm_
0ad0: 5f 28 22 24 66 30 22 29 3b 0a 2f 2a 72 65 67 69 _("$f0");./*regi
0ae0: 73 74 65 72 20 5f 5f 61 76 77 6f 72 64 09 69 72 ster __avword.ir
0af0: 65 74 31 09 5f 5f 61 73 6d 5f 5f 28 22 24 32 22 et1.__asm__("$2"
0b00: 29 3b 20 2a 2f 0a 20 20 72 65 67 69 73 74 65 72 ); */. register
0b10: 20 5f 5f 61 76 77 6f 72 64 09 69 72 65 74 32 09 __avword.iret2.
0b20: 5f 5f 61 73 6d 5f 5f 28 22 24 33 22 29 3b 0a 20 __asm__("$3");.
0b30: 20 5f 5f 61 76 77 6f 72 64 20 73 70 61 63 65 5b __avword space[
0b40: 5f 5f 41 56 5f 41 4c 49 53 54 5f 57 4f 52 44 53 __AV_ALIST_WORDS
0b50: 5d 3b 09 2f 2a 20 62 69 67 20 73 70 61 63 65 20 ];./* big space
0b60: 66 6f 72 20 63 68 69 6c 64 27 73 20 73 74 61 63 for child's stac
0b70: 6b 20 66 72 61 6d 65 20 2a 2f 0a 20 20 5f 5f 61 k frame */. __a
0b80: 76 77 6f 72 64 20 2a 61 72 67 66 72 61 6d 65 20 vword *argframe
0b90: 3d 20 28 5f 5f 61 76 77 6f 72 64 2a 29 73 70 3b = (__avword*)sp;
0ba0: 09 2f 2a 20 73 74 61 63 6b 20 6f 66 66 73 65 74 ./* stack offset
0bb0: 20 66 6f 72 20 61 72 67 75 6d 65 6e 74 20 6c 69 for argument li
0bc0: 73 74 20 69 73 20 30 20 2a 2f 0a 20 20 69 6e 74 st is 0 */. int
0bd0: 20 61 72 67 6c 65 6e 20 3d 20 6c 2d 3e 61 70 74 arglen = l->apt
0be0: 72 20 2d 20 6c 2d 3e 61 72 67 73 3b 0a 20 20 5f r - l->args;. _
0bf0: 5f 61 76 77 6f 72 64 20 69 3b 0a 0a 20 20 69 66 _avword i;.. if
0c00: 20 28 6c 2d 3e 66 61 72 67 5f 6d 61 73 6b 29 0a (l->farg_mask).
0c10: 20 20 20 20 7b 20 2f 2a 20 70 75 73 68 20 6c 65 { /* push le
0c20: 61 64 69 6e 67 20 66 6c 6f 61 74 20 61 72 67 73 ading float args
0c30: 20 2a 2f 0a 20 20 20 20 20 20 69 66 20 28 6c 2d */. if (l-
0c40: 3e 66 61 72 67 5f 6d 61 73 6b 20 26 20 28 31 3c >farg_mask & (1<
0c50: 3c 30 29 29 0a 20 20 20 20 20 20 20 20 5f 5f 61 <0)). __a
0c60: 73 6d 5f 5f 28 22 6c 77 63 31 20 24 66 31 32 2c sm__("lwc1 $f12,
0c70: 25 31 28 25 30 29 22 20 3a 20 3a 20 22 70 22 20 %1(%0)" : : "p"
0c80: 28 6c 29 2c 20 22 69 22 20 4f 46 46 53 45 54 4f (l), "i" OFFSETO
0c90: 46 28 61 76 5f 61 6c 69 73 74 2c 66 61 72 67 5b F(av_alist,farg[
0ca0: 30 5d 29 29 3b 0a 20 20 20 20 20 20 69 66 20 28 0]));. if (
0cb0: 6c 2d 3e 66 61 72 67 5f 6d 61 73 6b 20 26 20 28 l->farg_mask & (
0cc0: 31 3c 3c 31 29 29 0a 20 20 20 20 20 20 20 20 5f 1<<1)). _
0cd0: 5f 61 73 6d 5f 5f 28 22 6c 77 63 31 20 24 66 31 _asm__("lwc1 $f1
0ce0: 33 2c 25 31 28 25 30 29 22 20 3a 20 3a 20 22 70 3,%1(%0)" : : "p
0cf0: 22 20 28 6c 29 2c 20 22 69 22 20 4f 46 46 53 45 " (l), "i" OFFSE
0d00: 54 4f 46 28 61 76 5f 61 6c 69 73 74 2c 66 61 72 TOF(av_alist,far
0d10: 67 5b 31 5d 29 29 3b 0a 20 20 20 20 20 20 69 66 g[1]));. if
0d20: 20 28 6c 2d 3e 66 61 72 67 5f 6d 61 73 6b 20 26 (l->farg_mask &
0d30: 20 28 31 3c 3c 32 29 29 0a 20 20 20 20 20 20 20 (1<<2)).
0d40: 20 5f 5f 61 73 6d 5f 5f 28 22 6c 77 63 31 20 24 __asm__("lwc1 $
0d50: 66 31 34 2c 25 31 28 25 30 29 22 20 3a 20 3a 20 f14,%1(%0)" : :
0d60: 22 70 22 20 28 6c 29 2c 20 22 69 22 20 4f 46 46 "p" (l), "i" OFF
0d70: 53 45 54 4f 46 28 61 76 5f 61 6c 69 73 74 2c 66 SETOF(av_alist,f
0d80: 61 72 67 5b 32 5d 29 29 3b 0a 20 20 20 20 20 20 arg[2]));.
0d90: 69 66 20 28 6c 2d 3e 66 61 72 67 5f 6d 61 73 6b if (l->farg_mask
0da0: 20 26 20 28 31 3c 3c 33 29 29 0a 20 20 20 20 20 & (1<<3)).
0db0: 20 20 20 5f 5f 61 73 6d 5f 5f 28 22 6c 77 63 31 __asm__("lwc1
0dc0: 20 24 66 31 35 2c 25 31 28 25 30 29 22 20 3a 20 $f15,%1(%0)" :
0dd0: 3a 20 22 70 22 20 28 6c 29 2c 20 22 69 22 20 4f : "p" (l), "i" O
0de0: 46 46 53 45 54 4f 46 28 61 76 5f 61 6c 69 73 74 FFSETOF(av_alist
0df0: 2c 66 61 72 67 5b 33 5d 29 29 3b 0a 20 20 20 20 ,farg[3]));.
0e00: 20 20 69 66 20 28 6c 2d 3e 66 61 72 67 5f 6d 61 if (l->farg_ma
0e10: 73 6b 20 26 20 28 31 3c 3c 34 29 29 0a 20 20 20 sk & (1<<4)).
0e20: 20 20 20 20 20 5f 5f 61 73 6d 5f 5f 28 22 6c 77 __asm__("lw
0e30: 63 31 20 24 66 31 36 2c 25 31 28 25 30 29 22 20 c1 $f16,%1(%0)"
0e40: 3a 20 3a 20 22 70 22 20 28 6c 29 2c 20 22 69 22 : : "p" (l), "i"
0e50: 20 4f 46 46 53 45 54 4f 46 28 61 76 5f 61 6c 69 OFFSETOF(av_ali
0e60: 73 74 2c 66 61 72 67 5b 34 5d 29 29 3b 0a 20 20 st,farg[4]));.
0e70: 20 20 20 20 69 66 20 28 6c 2d 3e 66 61 72 67 5f if (l->farg_
0e80: 6d 61 73 6b 20 26 20 28 31 3c 3c 35 29 29 0a 20 mask & (1<<5)).
0e90: 20 20 20 20 20 20 20 5f 5f 61 73 6d 5f 5f 28 22 __asm__("
0ea0: 6c 77 63 31 20 24 66 31 37 2c 25 31 28 25 30 29 lwc1 $f17,%1(%0)
0eb0: 22 20 3a 20 3a 20 22 70 22 20 28 6c 29 2c 20 22 " : : "p" (l), "
0ec0: 69 22 20 4f 46 46 53 45 54 4f 46 28 61 76 5f 61 i" OFFSETOF(av_a
0ed0: 6c 69 73 74 2c 66 61 72 67 5b 35 5d 29 29 3b 0a list,farg[5]));.
0ee0: 20 20 20 20 20 20 69 66 20 28 6c 2d 3e 66 61 72 if (l->far
0ef0: 67 5f 6d 61 73 6b 20 26 20 28 31 3c 3c 36 29 29 g_mask & (1<<6))
0f00: 0a 20 20 20 20 20 20 20 20 5f 5f 61 73 6d 5f 5f . __asm__
0f10: 28 22 6c 77 63 31 20 24 66 31 38 2c 25 31 28 25 ("lwc1 $f18,%1(%
0f20: 30 29 22 20 3a 20 3a 20 22 70 22 20 28 6c 29 2c 0)" : : "p" (l),
0f30: 20 22 69 22 20 4f 46 46 53 45 54 4f 46 28 61 76 "i" OFFSETOF(av
0f40: 5f 61 6c 69 73 74 2c 66 61 72 67 5b 36 5d 29 29 _alist,farg[6]))
0f50: 3b 0a 20 20 20 20 20 20 69 66 20 28 6c 2d 3e 66 ;. if (l->f
0f60: 61 72 67 5f 6d 61 73 6b 20 26 20 28 31 3c 3c 37 arg_mask & (1<<7
0f70: 29 29 0a 20 20 20 20 20 20 20 20 5f 5f 61 73 6d )). __asm
0f80: 5f 5f 28 22 6c 77 63 31 20 24 66 31 39 2c 25 31 __("lwc1 $f19,%1
0f90: 28 25 30 29 22 20 3a 20 3a 20 22 70 22 20 28 6c (%0)" : : "p" (l
0fa0: 29 2c 20 22 69 22 20 4f 46 46 53 45 54 4f 46 28 ), "i" OFFSETOF(
0fb0: 61 76 5f 61 6c 69 73 74 2c 66 61 72 67 5b 37 5d av_alist,farg[7]
0fc0: 29 29 3b 0a 20 20 20 20 7d 0a 20 20 69 66 20 28 ));. }. if (
0fd0: 6c 2d 3e 64 61 72 67 5f 6d 61 73 6b 29 0a 20 20 l->darg_mask).
0fe0: 20 20 7b 20 2f 2a 20 70 75 73 68 20 6c 65 61 64 { /* push lead
0ff0: 69 6e 67 20 64 6f 75 62 6c 65 20 61 72 67 73 20 ing double args
1000: 2a 2f 0a 20 20 20 20 20 20 69 66 20 28 6c 2d 3e */. if (l->
1010: 64 61 72 67 5f 6d 61 73 6b 20 26 20 28 31 3c 3c darg_mask & (1<<
1020: 30 29 29 0a 20 20 20 20 20 20 20 20 5f 5f 61 73 0)). __as
1030: 6d 5f 5f 28 22 6c 64 63 31 20 24 66 31 32 2c 25 m__("ldc1 $f12,%
1040: 31 28 25 30 29 22 20 3a 20 3a 20 22 70 22 20 28 1(%0)" : : "p" (
1050: 6c 29 2c 20 22 69 22 20 4f 46 46 53 45 54 4f 46 l), "i" OFFSETOF
1060: 28 61 76 5f 61 6c 69 73 74 2c 61 72 67 73 5b 30 (av_alist,args[0
1070: 5d 29 29 3b 0a 20 20 20 20 20 20 69 66 20 28 6c ]));. if (l
1080: 2d 3e 64 61 72 67 5f 6d 61 73 6b 20 26 20 28 31 ->darg_mask & (1
1090: 3c 3c 31 29 29 0a 20 20 20 20 20 20 20 20 5f 5f <<1)). __
10a0: 61 73 6d 5f 5f 28 22 6c 64 63 31 20 24 66 31 33 asm__("ldc1 $f13
10b0: 2c 25 31 28 25 30 29 22 20 3a 20 3a 20 22 70 22 ,%1(%0)" : : "p"
10c0: 20 28 6c 29 2c 20 22 69 22 20 4f 46 46 53 45 54 (l), "i" OFFSET
10d0: 4f 46 28 61 76 5f 61 6c 69 73 74 2c 61 72 67 73 OF(av_alist,args
10e0: 5b 31 5d 29 29 3b 0a 20 20 20 20 20 20 69 66 20 [1]));. if
10f0: 28 6c 2d 3e 64 61 72 67 5f 6d 61 73 6b 20 26 20 (l->darg_mask &
1100: 28 31 3c 3c 32 29 29 0a 20 20 20 20 20 20 20 20 (1<<2)).
1110: 5f 5f 61 73 6d 5f 5f 28 22 6c 64 63 31 20 24 66 __asm__("ldc1 $f
1120: 31 34 2c 25 31 28 25 30 29 22 20 3a 20 3a 20 22 14,%1(%0)" : : "
1130: 70 22 20 28 6c 29 2c 20 22 69 22 20 4f 46 46 53 p" (l), "i" OFFS
1140: 45 54 4f 46 28 61 76 5f 61 6c 69 73 74 2c 61 72 ETOF(av_alist,ar
1150: 67 73 5b 32 5d 29 29 3b 0a 20 20 20 20 20 20 69 gs[2]));. i
1160: 66 20 28 6c 2d 3e 64 61 72 67 5f 6d 61 73 6b 20 f (l->darg_mask
1170: 26 20 28 31 3c 3c 33 29 29 0a 20 20 20 20 20 20 & (1<<3)).
1180: 20 20 5f 5f 61 73 6d 5f 5f 28 22 6c 64 63 31 20 __asm__("ldc1
1190: 24 66 31 35 2c 25 31 28 25 30 29 22 20 3a 20 3a $f15,%1(%0)" : :
11a0: 20 22 70 22 20 28 6c 29 2c 20 22 69 22 20 4f 46 "p" (l), "i" OF
11b0: 46 53 45 54 4f 46 28 61 76 5f 61 6c 69 73 74 2c FSETOF(av_alist,
11c0: 61 72 67 73 5b 33 5d 29 29 3b 0a 20 20 20 20 20 args[3]));.
11d0: 20 69 66 20 28 6c 2d 3e 64 61 72 67 5f 6d 61 73 if (l->darg_mas
11e0: 6b 20 26 20 28 31 3c 3c 34 29 29 0a 20 20 20 20 k & (1<<4)).
11f0: 20 20 20 20 5f 5f 61 73 6d 5f 5f 28 22 6c 64 63 __asm__("ldc
1200: 31 20 24 66 31 36 2c 25 31 28 25 30 29 22 20 3a 1 $f16,%1(%0)" :
1210: 20 3a 20 22 70 22 20 28 6c 29 2c 20 22 69 22 20 : "p" (l), "i"
1220: 4f 46 46 53 45 54 4f 46 28 61 76 5f 61 6c 69 73 OFFSETOF(av_alis
1230: 74 2c 61 72 67 73 5b 34 5d 29 29 3b 0a 20 20 20 t,args[4]));.
1240: 20 20 20 69 66 20 28 6c 2d 3e 64 61 72 67 5f 6d if (l->darg_m
1250: 61 73 6b 20 26 20 28 31 3c 3c 35 29 29 0a 20 20 ask & (1<<5)).
1260: 20 20 20 20 20 20 5f 5f 61 73 6d 5f 5f 28 22 6c __asm__("l
1270: 64 63 31 20 24 66 31 37 2c 25 31 28 25 30 29 22 dc1 $f17,%1(%0)"
1280: 20 3a 20 3a 20 22 70 22 20 28 6c 29 2c 20 22 69 : : "p" (l), "i
1290: 22 20 4f 46 46 53 45 54 4f 46 28 61 76 5f 61 6c " OFFSETOF(av_al
12a0: 69 73 74 2c 61 72 67 73 5b 35 5d 29 29 3b 0a 20 ist,args[5]));.
12b0: 20 20 20 20 20 69 66 20 28 6c 2d 3e 64 61 72 67 if (l->darg
12c0: 5f 6d 61 73 6b 20 26 20 28 31 3c 3c 36 29 29 0a _mask & (1<<6)).
12d0: 20 20 20 20 20 20 20 20 5f 5f 61 73 6d 5f 5f 28 __asm__(
12e0: 22 6c 64 63 31 20 24 66 31 38 2c 25 31 28 25 30 "ldc1 $f18,%1(%0
12f0: 29 22 20 3a 20 3a 20 22 70 22 20 28 6c 29 2c 20 )" : : "p" (l),
1300: 22 69 22 20 4f 46 46 53 45 54 4f 46 28 61 76 5f "i" OFFSETOF(av_
1310: 61 6c 69 73 74 2c 61 72 67 73 5b 36 5d 29 29 3b alist,args[6]));
1320: 0a 20 20 20 20 20 20 69 66 20 28 6c 2d 3e 64 61 . if (l->da
1330: 72 67 5f 6d 61 73 6b 20 26 20 28 31 3c 3c 37 29 rg_mask & (1<<7)
1340: 29 0a 20 20 20 20 20 20 20 20 5f 5f 61 73 6d 5f ). __asm_
1350: 5f 28 22 6c 64 63 31 20 24 66 31 39 2c 25 31 28 _("ldc1 $f19,%1(
1360: 25 30 29 22 20 3a 20 3a 20 22 70 22 20 28 6c 29 %0)" : : "p" (l)
1370: 2c 20 22 69 22 20 4f 46 46 53 45 54 4f 46 28 61 , "i" OFFSETOF(a
1380: 76 5f 61 6c 69 73 74 2c 61 72 67 73 5b 37 5d 29 v_alist,args[7])
1390: 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 66 6f 72 20 );. }.. for
13a0: 28 69 20 3d 20 38 3b 20 69 20 3c 20 61 72 67 6c (i = 8; i < argl
13b0: 65 6e 3b 20 69 2b 2b 29 09 09 2f 2a 20 70 75 73 en; i++)../* pus
13c0: 68 20 65 78 63 65 73 73 20 66 75 6e 63 74 69 6f h excess functio
13d0: 6e 20 61 72 67 73 20 2a 2f 0a 20 20 20 20 61 72 n args */. ar
13e0: 67 66 72 61 6d 65 5b 69 2d 38 5d 20 3d 20 6c 2d gframe[i-8] = l-
13f0: 3e 61 72 67 73 5b 69 5d 3b 0a 0a 09 09 09 09 09 >args[i];.......
1400: 2f 2a 20 63 61 6c 6c 20 66 75 6e 63 74 69 6f 6e /* call function
1410: 20 77 69 74 68 20 31 73 74 20 38 20 61 72 67 73 with 1st 8 args
1420: 20 2a 2f 0a 20 20 5f 5f 61 73 6d 5f 5f 20 5f 5f */. __asm__ __
1430: 76 6f 6c 61 74 69 6c 65 5f 5f 20 28 22 6c 64 20 volatile__ ("ld
1440: 24 34 2c 25 30 22 20 3a 20 3a 20 22 6d 22 20 28 $4,%0" : : "m" (
1450: 6c 2d 3e 61 72 67 73 5b 30 5d 29 20 3a 20 22 24 l->args[0]) : "$
1460: 34 22 29 3b 20 2f 2a 20 61 72 67 31 20 3d 20 6c 4"); /* arg1 = l
1470: 2d 3e 61 72 67 73 5b 30 5d 3b 20 2a 2f 0a 20 20 ->args[0]; */.
1480: 5f 5f 61 73 6d 5f 5f 20 5f 5f 76 6f 6c 61 74 69 __asm__ __volati
1490: 6c 65 5f 5f 20 28 22 6c 64 20 24 35 2c 25 30 22 le__ ("ld $5,%0"
14a0: 20 3a 20 3a 20 22 6d 22 20 28 6c 2d 3e 61 72 67 : : "m" (l->arg
14b0: 73 5b 31 5d 29 20 3a 20 22 24 35 22 29 3b 20 2f s[1]) : "$5"); /
14c0: 2a 20 61 72 67 31 20 3d 20 6c 2d 3e 61 72 67 73 * arg1 = l->args
14d0: 5b 31 5d 3b 20 2a 2f 0a 20 20 5f 5f 61 73 6d 5f [1]; */. __asm_
14e0: 5f 20 5f 5f 76 6f 6c 61 74 69 6c 65 5f 5f 20 28 _ __volatile__ (
14f0: 22 6c 64 20 24 36 2c 25 30 22 20 3a 20 3a 20 22 "ld $6,%0" : : "
1500: 6d 22 20 28 6c 2d 3e 61 72 67 73 5b 32 5d 29 20 m" (l->args[2])
1510: 3a 20 22 24 36 22 29 3b 20 2f 2a 20 61 72 67 31 : "$6"); /* arg1
1520: 20 3d 20 6c 2d 3e 61 72 67 73 5b 32 5d 3b 20 2a = l->args[2]; *
1530: 2f 0a 20 20 5f 5f 61 73 6d 5f 5f 20 5f 5f 76 6f /. __asm__ __vo
1540: 6c 61 74 69 6c 65 5f 5f 20 28 22 6c 64 20 24 37 latile__ ("ld $7
1550: 2c 25 30 22 20 3a 20 3a 20 22 6d 22 20 28 6c 2d ,%0" : : "m" (l-
1560: 3e 61 72 67 73 5b 33 5d 29 20 3a 20 22 24 37 22 >args[3]) : "$7"
1570: 29 3b 20 2f 2a 20 61 72 67 31 20 3d 20 6c 2d 3e ); /* arg1 = l->
1580: 61 72 67 73 5b 33 5d 3b 20 2a 2f 0a 20 20 5f 5f args[3]; */. __
1590: 61 73 6d 5f 5f 20 5f 5f 76 6f 6c 61 74 69 6c 65 asm__ __volatile
15a0: 5f 5f 20 28 22 6c 64 20 24 38 2c 25 30 22 20 3a __ ("ld $8,%0" :
15b0: 20 3a 20 22 6d 22 20 28 6c 2d 3e 61 72 67 73 5b : "m" (l->args[
15c0: 34 5d 29 20 3a 20 22 24 38 22 29 3b 20 2f 2a 20 4]) : "$8"); /*
15d0: 61 72 67 31 20 3d 20 6c 2d 3e 61 72 67 73 5b 34 arg1 = l->args[4
15e0: 5d 3b 20 2a 2f 0a 20 20 5f 5f 61 73 6d 5f 5f 20 ]; */. __asm__
15f0: 5f 5f 76 6f 6c 61 74 69 6c 65 5f 5f 20 28 22 6c __volatile__ ("l
1600: 64 20 24 39 2c 25 30 22 20 3a 20 3a 20 22 6d 22 d $9,%0" : : "m"
1610: 20 28 6c 2d 3e 61 72 67 73 5b 35 5d 29 20 3a 20 (l->args[5]) :
1620: 22 24 39 22 29 3b 20 2f 2a 20 61 72 67 31 20 3d "$9"); /* arg1 =
1630: 20 6c 2d 3e 61 72 67 73 5b 35 5d 3b 20 2a 2f 0a l->args[5]; */.
1640: 20 20 5f 5f 61 73 6d 5f 5f 20 5f 5f 76 6f 6c 61 __asm__ __vola
1650: 74 69 6c 65 5f 5f 20 28 22 6c 64 20 24 31 30 2c tile__ ("ld $10,
1660: 25 30 22 20 3a 20 3a 20 22 6d 22 20 28 6c 2d 3e %0" : : "m" (l->
1670: 61 72 67 73 5b 36 5d 29 20 3a 20 22 24 31 30 22 args[6]) : "$10"
1680: 29 3b 20 2f 2a 20 61 72 67 31 20 3d 20 6c 2d 3e ); /* arg1 = l->
1690: 61 72 67 73 5b 36 5d 3b 20 2a 2f 0a 20 20 5f 5f args[6]; */. __
16a0: 61 73 6d 5f 5f 20 5f 5f 76 6f 6c 61 74 69 6c 65 asm__ __volatile
16b0: 5f 5f 20 28 22 6c 64 20 24 31 31 2c 25 30 22 20 __ ("ld $11,%0"
16c0: 3a 20 3a 20 22 6d 22 20 28 6c 2d 3e 61 72 67 73 : : "m" (l->args
16d0: 5b 37 5d 29 20 3a 20 22 24 31 31 22 29 3b 20 2f [7]) : "$11"); /
16e0: 2a 20 61 72 67 31 20 3d 20 6c 2d 3e 61 72 67 73 * arg1 = l->args
16f0: 5b 37 5d 3b 20 2a 2f 0a 20 20 69 20 3d 20 28 2a [7]; */. i = (*
1700: 28 74 39 20 3d 20 6c 2d 3e 66 75 6e 63 29 29 28 (t9 = l->func))(
1710: 29 3b 0a 0a 20 20 2f 2a 20 73 61 76 65 20 72 65 );.. /* save re
1720: 74 75 72 6e 20 76 61 6c 75 65 20 2a 2f 0a 20 20 turn value */.
1730: 69 66 20 28 6c 2d 3e 72 74 79 70 65 20 3d 3d 20 if (l->rtype ==
1740: 5f 5f 41 56 76 6f 69 64 29 20 7b 0a 20 20 7d 20 __AVvoid) {. }
1750: 65 6c 73 65 0a 20 20 69 66 20 28 6c 2d 3e 72 74 else. if (l->rt
1760: 79 70 65 20 3d 3d 20 5f 5f 41 56 77 6f 72 64 29 ype == __AVword)
1770: 20 7b 0a 20 20 20 20 52 45 54 55 52 4e 28 5f 5f {. RETURN(__
1780: 61 76 77 6f 72 64 2c 20 69 29 3b 0a 20 20 7d 20 avword, i);. }
1790: 65 6c 73 65 0a 20 20 69 66 20 28 6c 2d 3e 72 74 else. if (l->rt
17a0: 79 70 65 20 3d 3d 20 5f 5f 41 56 63 68 61 72 29 ype == __AVchar)
17b0: 20 7b 0a 20 20 20 20 52 45 54 55 52 4e 28 63 68 {. RETURN(ch
17c0: 61 72 2c 20 69 29 3b 0a 20 20 7d 20 65 6c 73 65 ar, i);. } else
17d0: 0a 20 20 69 66 20 28 6c 2d 3e 72 74 79 70 65 20 . if (l->rtype
17e0: 3d 3d 20 5f 5f 41 56 73 63 68 61 72 29 20 7b 0a == __AVschar) {.
17f0: 20 20 20 20 52 45 54 55 52 4e 28 73 69 67 6e 65 RETURN(signe
1800: 64 20 63 68 61 72 2c 20 69 29 3b 0a 20 20 7d 20 d char, i);. }
1810: 65 6c 73 65 0a 20 20 69 66 20 28 6c 2d 3e 72 74 else. if (l->rt
1820: 79 70 65 20 3d 3d 20 5f 5f 41 56 75 63 68 61 72 ype == __AVuchar
1830: 29 20 7b 0a 20 20 20 20 52 45 54 55 52 4e 28 75 ) {. RETURN(u
1840: 6e 73 69 67 6e 65 64 20 63 68 61 72 2c 20 69 29 nsigned char, i)
1850: 3b 0a 20 20 7d 20 65 6c 73 65 0a 20 20 69 66 20 ;. } else. if
1860: 28 6c 2d 3e 72 74 79 70 65 20 3d 3d 20 5f 5f 41 (l->rtype == __A
1870: 56 73 68 6f 72 74 29 20 7b 0a 20 20 20 20 52 45 Vshort) {. RE
1880: 54 55 52 4e 28 73 68 6f 72 74 2c 20 69 29 3b 0a TURN(short, i);.
1890: 20 20 7d 20 65 6c 73 65 0a 20 20 69 66 20 28 6c } else. if (l
18a0: 2d 3e 72 74 79 70 65 20 3d 3d 20 5f 5f 41 56 75 ->rtype == __AVu
18b0: 73 68 6f 72 74 29 20 7b 0a 20 20 20 20 52 45 54 short) {. RET
18c0: 55 52 4e 28 75 6e 73 69 67 6e 65 64 20 73 68 6f URN(unsigned sho
18d0: 72 74 2c 20 69 29 3b 0a 20 20 7d 20 65 6c 73 65 rt, i);. } else
18e0: 0a 20 20 69 66 20 28 6c 2d 3e 72 74 79 70 65 20 . if (l->rtype
18f0: 3d 3d 20 5f 5f 41 56 69 6e 74 29 20 7b 0a 20 20 == __AVint) {.
1900: 20 20 52 45 54 55 52 4e 28 69 6e 74 2c 20 69 29 RETURN(int, i)
1910: 3b 0a 20 20 7d 20 65 6c 73 65 0a 20 20 69 66 20 ;. } else. if
1920: 28 6c 2d 3e 72 74 79 70 65 20 3d 3d 20 5f 5f 41 (l->rtype == __A
1930: 56 75 69 6e 74 29 20 7b 0a 20 20 20 20 52 45 54 Vuint) {. RET
1940: 55 52 4e 28 75 6e 73 69 67 6e 65 64 20 69 6e 74 URN(unsigned int
1950: 2c 20 69 29 3b 0a 20 20 7d 20 65 6c 73 65 0a 20 , i);. } else.
1960: 20 69 66 20 28 6c 2d 3e 72 74 79 70 65 20 3d 3d if (l->rtype ==
1970: 20 5f 5f 41 56 6c 6f 6e 67 29 20 7b 0a 20 20 20 __AVlong) {.
1980: 20 52 45 54 55 52 4e 28 6c 6f 6e 67 2c 20 69 29 RETURN(long, i)
1990: 3b 0a 20 20 7d 20 65 6c 73 65 0a 20 20 69 66 20 ;. } else. if
19a0: 28 6c 2d 3e 72 74 79 70 65 20 3d 3d 20 5f 5f 41 (l->rtype == __A
19b0: 56 75 6c 6f 6e 67 29 20 7b 0a 20 20 20 20 52 45 Vulong) {. RE
19c0: 54 55 52 4e 28 75 6e 73 69 67 6e 65 64 20 6c 6f TURN(unsigned lo
19d0: 6e 67 2c 20 69 29 3b 0a 20 20 7d 20 65 6c 73 65 ng, i);. } else
19e0: 0a 20 20 69 66 20 28 6c 2d 3e 72 74 79 70 65 20 . if (l->rtype
19f0: 3d 3d 20 5f 5f 41 56 6c 6f 6e 67 6c 6f 6e 67 29 == __AVlonglong)
1a00: 20 7b 0a 20 20 20 20 52 45 54 55 52 4e 28 6c 6f {. RETURN(lo
1a10: 6e 67 20 6c 6f 6e 67 2c 20 69 29 3b 0a 20 20 7d ng long, i);. }
1a20: 20 65 6c 73 65 0a 20 20 69 66 20 28 6c 2d 3e 72 else. if (l->r
1a30: 74 79 70 65 20 3d 3d 20 5f 5f 41 56 75 6c 6f 6e type == __AVulon
1a40: 67 6c 6f 6e 67 29 20 7b 0a 20 20 20 20 52 45 54 glong) {. RET
1a50: 55 52 4e 28 75 6e 73 69 67 6e 65 64 20 6c 6f 6e URN(unsigned lon
1a60: 67 20 6c 6f 6e 67 2c 20 69 29 3b 0a 20 20 7d 20 g long, i);. }
1a70: 65 6c 73 65 0a 20 20 69 66 20 28 6c 2d 3e 72 74 else. if (l->rt
1a80: 79 70 65 20 3d 3d 20 5f 5f 41 56 66 6c 6f 61 74 ype == __AVfloat
1a90: 29 20 7b 0a 20 20 20 20 52 45 54 55 52 4e 28 66 ) {. RETURN(f
1aa0: 6c 6f 61 74 2c 20 66 72 65 74 29 3b 0a 20 20 7d loat, fret);. }
1ab0: 20 65 6c 73 65 0a 20 20 69 66 20 28 6c 2d 3e 72 else. if (l->r
1ac0: 74 79 70 65 20 3d 3d 20 5f 5f 41 56 64 6f 75 62 type == __AVdoub
1ad0: 6c 65 29 20 7b 0a 20 20 20 20 52 45 54 55 52 4e le) {. RETURN
1ae0: 28 64 6f 75 62 6c 65 2c 20 64 72 65 74 29 3b 0a (double, dret);.
1af0: 20 20 7d 20 65 6c 73 65 0a 20 20 69 66 20 28 6c } else. if (l
1b00: 2d 3e 72 74 79 70 65 20 3d 3d 20 5f 5f 41 56 76 ->rtype == __AVv
1b10: 6f 69 64 70 29 20 7b 0a 20 20 20 20 52 45 54 55 oidp) {. RETU
1b20: 52 4e 28 76 6f 69 64 2a 2c 20 69 29 3b 0a 20 20 RN(void*, i);.
1b30: 7d 20 65 6c 73 65 0a 20 20 69 66 20 28 6c 2d 3e } else. if (l->
1b40: 72 74 79 70 65 20 3d 3d 20 5f 5f 41 56 73 74 72 rtype == __AVstr
1b50: 75 63 74 29 20 7b 0a 20 20 20 20 69 66 20 28 6c uct) {. if (l
1b60: 2d 3e 66 6c 61 67 73 20 26 20 5f 5f 41 56 5f 50 ->flags & __AV_P
1b70: 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e CC_STRUCT_RETURN
1b80: 29 20 7b 0a 20 20 20 20 20 20 2f 2a 20 70 63 63 ) {. /* pcc
1b90: 20 73 74 72 75 63 74 20 72 65 74 75 72 6e 20 63 struct return c
1ba0: 6f 6e 76 65 6e 74 69 6f 6e 3a 20 6e 65 65 64 20 onvention: need
1bb0: 61 20 20 2a 28 54 59 50 45 2a 29 6c 2d 3e 72 61 a *(TYPE*)l->ra
1bc0: 64 64 72 20 3d 20 2a 28 54 59 50 45 2a 29 69 3b ddr = *(TYPE*)i;
1bd0: 20 20 2a 2f 0a 20 20 20 20 20 20 69 66 20 28 6c */. if (l
1be0: 2d 3e 72 73 69 7a 65 20 3d 3d 20 73 69 7a 65 6f ->rsize == sizeo
1bf0: 66 28 63 68 61 72 29 29 20 7b 0a 20 20 20 20 20 f(char)) {.
1c00: 20 20 20 52 45 54 55 52 4e 28 63 68 61 72 2c 20 RETURN(char,
1c10: 2a 28 63 68 61 72 2a 29 69 29 3b 0a 20 20 20 20 *(char*)i);.
1c20: 20 20 7d 20 65 6c 73 65 0a 20 20 20 20 20 20 69 } else. i
1c30: 66 20 28 6c 2d 3e 72 73 69 7a 65 20 3d 3d 20 73 f (l->rsize == s
1c40: 69 7a 65 6f 66 28 73 68 6f 72 74 29 29 20 7b 0a izeof(short)) {.
1c50: 20 20 20 20 20 20 20 20 52 45 54 55 52 4e 28 73 RETURN(s
1c60: 68 6f 72 74 2c 20 2a 28 73 68 6f 72 74 2a 29 69 hort, *(short*)i
1c70: 29 3b 0a 20 20 20 20 20 20 7d 20 65 6c 73 65 0a );. } else.
1c80: 20 20 20 20 20 20 69 66 20 28 6c 2d 3e 72 73 69 if (l->rsi
1c90: 7a 65 20 3d 3d 20 73 69 7a 65 6f 66 28 69 6e 74 ze == sizeof(int
1ca0: 29 29 20 7b 0a 20 20 20 20 20 20 20 20 52 45 54 )) {. RET
1cb0: 55 52 4e 28 69 6e 74 2c 20 2a 28 69 6e 74 2a 29 URN(int, *(int*)
1cc0: 69 29 3b 0a 20 20 20 20 20 20 7d 20 65 6c 73 65 i);. } else
1cd0: 0a 20 20 20 20 20 20 69 66 20 28 6c 2d 3e 72 73 . if (l->rs
1ce0: 69 7a 65 20 3d 3d 20 73 69 7a 65 6f 66 28 6c 6f ize == sizeof(lo
1cf0: 6e 67 29 29 20 7b 0a 20 20 20 20 20 20 20 20 52 ng)) {. R
1d00: 45 54 55 52 4e 28 6c 6f 6e 67 2c 20 2a 28 6c 6f ETURN(long, *(lo
1d10: 6e 67 2a 29 69 29 3b 0a 20 20 20 20 20 20 7d 20 ng*)i);. }
1d20: 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 69 else {. i
1d30: 6e 74 20 6e 20 3d 20 28 6c 2d 3e 72 73 69 7a 65 nt n = (l->rsize
1d40: 20 2b 20 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f + sizeof(__avwo
1d50: 72 64 29 2d 31 29 2f 73 69 7a 65 6f 66 28 5f 5f rd)-1)/sizeof(__
1d60: 61 76 77 6f 72 64 29 3b 0a 20 20 20 20 20 20 20 avword);.
1d70: 20 77 68 69 6c 65 20 28 2d 2d 6e 20 3e 3d 20 30 while (--n >= 0
1d80: 29 0a 20 20 20 20 20 20 20 20 20 20 28 28 5f 5f ). ((__
1d90: 61 76 77 6f 72 64 2a 29 6c 2d 3e 72 61 64 64 72 avword*)l->raddr
1da0: 29 5b 6e 5d 20 3d 20 28 28 5f 5f 61 76 77 6f 72 )[n] = ((__avwor
1db0: 64 2a 29 69 29 5b 6e 5d 3b 0a 20 20 20 20 20 20 d*)i)[n];.
1dc0: 7d 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 }. } else {.
1dd0: 20 20 20 20 20 2f 2a 20 6e 6f 72 6d 61 6c 20 73 /* normal s
1de0: 74 72 75 63 74 20 72 65 74 75 72 6e 20 63 6f 6e truct return con
1df0: 76 65 6e 74 69 6f 6e 20 2a 2f 0a 20 20 20 20 20 vention */.
1e00: 20 69 66 20 28 6c 2d 3e 66 6c 61 67 73 20 26 20 if (l->flags &
1e10: 5f 5f 41 56 5f 52 45 47 49 53 54 45 52 5f 53 54 __AV_REGISTER_ST
1e20: 52 55 43 54 5f 52 45 54 55 52 4e 29 20 7b 0a 20 RUCT_RETURN) {.
1e30: 20 20 20 20 20 20 20 69 66 20 28 6c 2d 3e 66 6c if (l->fl
1e40: 61 67 73 20 26 20 5f 5f 41 56 5f 47 43 43 5f 53 ags & __AV_GCC_S
1e50: 54 52 55 43 54 5f 52 45 54 55 52 4e 29 20 7b 0a TRUCT_RETURN) {.
1e60: 20 20 20 20 20 20 20 20 20 20 2f 2a 20 67 63 63 /* gcc
1e70: 20 72 65 74 75 72 6e 73 20 73 74 72 75 63 74 73 returns structs
1e80: 20 6f 66 20 73 69 7a 65 20 31 2c 32 2c 34 2c 38 of size 1,2,4,8
1e90: 20 69 6e 20 72 65 67 69 73 74 65 72 73 2e 20 2a in registers. *
1ea0: 2f 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 /. if (
1eb0: 6c 2d 3e 72 73 69 7a 65 20 3d 3d 20 73 69 7a 65 l->rsize == size
1ec0: 6f 66 28 63 68 61 72 29 29 20 7b 0a 20 20 20 20 of(char)) {.
1ed0: 20 20 20 20 20 20 20 20 52 45 54 55 52 4e 28 63 RETURN(c
1ee0: 68 61 72 2c 20 69 29 3b 0a 20 20 20 20 20 20 20 har, i);.
1ef0: 20 20 20 7d 20 65 6c 73 65 0a 20 20 20 20 20 20 } else.
1f00: 20 20 20 20 69 66 20 28 6c 2d 3e 72 73 69 7a 65 if (l->rsize
1f10: 20 3d 3d 20 73 69 7a 65 6f 66 28 73 68 6f 72 74 == sizeof(short
1f20: 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 )) {.
1f30: 20 52 45 54 55 52 4e 28 73 68 6f 72 74 2c 20 69 RETURN(short, i
1f40: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 7d 20 65 );. } e
1f50: 6c 73 65 0a 20 20 20 20 20 20 20 20 20 20 69 66 lse. if
1f60: 20 28 6c 2d 3e 72 73 69 7a 65 20 3d 3d 20 73 69 (l->rsize == si
1f70: 7a 65 6f 66 28 69 6e 74 29 29 20 7b 0a 20 20 20 zeof(int)) {.
1f80: 20 20 20 20 20 20 20 20 20 52 45 54 55 52 4e 28 RETURN(
1f90: 69 6e 74 2c 20 69 29 3b 0a 20 20 20 20 20 20 20 int, i);.
1fa0: 20 20 20 7d 20 65 6c 73 65 0a 20 20 20 20 20 20 } else.
1fb0: 20 20 20 20 69 66 20 28 6c 2d 3e 72 73 69 7a 65 if (l->rsize
1fc0: 20 3d 3d 20 73 69 7a 65 6f 66 28 6c 6f 6e 67 29 == sizeof(long)
1fd0: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {.
1fe0: 52 45 54 55 52 4e 28 6c 6f 6e 67 2c 20 69 29 3b RETURN(long, i);
1ff0: 0a 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 . }.
2000: 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 } else {.
2010: 20 20 20 20 20 20 20 20 2f 2a 20 63 63 20 72 65 /* cc re
2020: 74 75 72 6e 73 20 73 74 72 75 63 74 73 20 6f 66 turns structs of
2030: 20 73 69 7a 65 20 3c 3d 20 31 36 20 69 6e 20 72 size <= 16 in r
2040: 65 67 69 73 74 65 72 73 2e 20 2a 2f 0a 20 20 20 egisters. */.
2050: 20 20 20 20 20 20 20 69 66 20 28 6c 2d 3e 72 73 if (l->rs
2060: 69 7a 65 20 3e 20 30 20 26 26 20 6c 2d 3e 72 73 ize > 0 && l->rs
2070: 69 7a 65 20 3c 3d 20 31 36 29 20 7b 0a 20 20 20 ize <= 16) {.
2080: 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 2d 3e if (l->
2090: 72 73 69 7a 65 20 3d 3d 20 31 29 20 7b 0a 20 20 rsize == 1) {.
20a0: 20 20 20 20 20 20 20 20 20 20 20 20 28 28 75 6e ((un
20b0: 73 69 67 6e 65 64 20 63 68 61 72 20 2a 29 6c 2d signed char *)l-
20c0: 3e 72 61 64 64 72 29 5b 30 5d 20 3d 20 28 75 6e >raddr)[0] = (un
20d0: 73 69 67 6e 65 64 20 63 68 61 72 29 28 69 3e 3e signed char)(i>>
20e0: 35 36 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 56);.
20f0: 20 7d 20 65 6c 73 65 0a 20 20 20 20 20 20 20 20 } else.
2100: 20 20 20 20 69 66 20 28 6c 2d 3e 72 73 69 7a 65 if (l->rsize
2110: 20 3d 3d 20 32 29 20 7b 0a 20 20 20 20 20 20 20 == 2) {.
2120: 20 20 20 20 20 20 20 28 28 75 6e 73 69 67 6e 65 ((unsigne
2130: 64 20 63 68 61 72 20 2a 29 6c 2d 3e 72 61 64 64 d char *)l->radd
2140: 72 29 5b 30 5d 20 3d 20 28 75 6e 73 69 67 6e 65 r)[0] = (unsigne
2150: 64 20 63 68 61 72 29 28 69 3e 3e 35 36 29 3b 0a d char)(i>>56);.
2160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 ((
2170: 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 29 unsigned char *)
2180: 6c 2d 3e 72 61 64 64 72 29 5b 31 5d 20 3d 20 28 l->raddr)[1] = (
2190: 75 6e 73 69 67 6e 65 64 20 63 68 61 72 29 28 69 unsigned char)(i
21a0: 3e 3e 34 38 29 3b 0a 20 20 20 20 20 20 20 20 20 >>48);.
21b0: 20 20 20 7d 20 65 6c 73 65 0a 20 20 20 20 20 20 } else.
21c0: 20 20 20 20 20 20 69 66 20 28 6c 2d 3e 72 73 69 if (l->rsi
21d0: 7a 65 20 3d 3d 20 33 29 20 7b 0a 20 20 20 20 20 ze == 3) {.
21e0: 20 20 20 20 20 20 20 20 20 28 28 75 6e 73 69 67 ((unsig
21f0: 6e 65 64 20 63 68 61 72 20 2a 29 6c 2d 3e 72 61 ned char *)l->ra
2200: 64 64 72 29 5b 30 5d 20 3d 20 28 75 6e 73 69 67 ddr)[0] = (unsig
2210: 6e 65 64 20 63 68 61 72 29 28 69 3e 3e 35 36 29 ned char)(i>>56)
2220: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ;.
2230: 28 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 ((unsigned char
2240: 2a 29 6c 2d 3e 72 61 64 64 72 29 5b 31 5d 20 3d *)l->raddr)[1] =
2250: 20 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 29 (unsigned char)
2260: 28 69 3e 3e 34 38 29 3b 0a 20 20 20 20 20 20 20 (i>>48);.
2270: 20 20 20 20 20 20 20 28 28 75 6e 73 69 67 6e 65 ((unsigne
2280: 64 20 63 68 61 72 20 2a 29 6c 2d 3e 72 61 64 64 d char *)l->radd
2290: 72 29 5b 32 5d 20 3d 20 28 75 6e 73 69 67 6e 65 r)[2] = (unsigne
22a0: 64 20 63 68 61 72 29 28 69 3e 3e 34 30 29 3b 0a d char)(i>>40);.
22b0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c } el
22c0: 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 se. i
22d0: 66 20 28 6c 2d 3e 72 73 69 7a 65 20 3d 3d 20 34 f (l->rsize == 4
22e0: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {.
22f0: 20 20 28 28 75 6e 73 69 67 6e 65 64 20 63 68 61 ((unsigned cha
2300: 72 20 2a 29 6c 2d 3e 72 61 64 64 72 29 5b 30 5d r *)l->raddr)[0]
2310: 20 3d 20 28 75 6e 73 69 67 6e 65 64 20 63 68 61 = (unsigned cha
2320: 72 29 28 69 3e 3e 35 36 29 3b 0a 20 20 20 20 20 r)(i>>56);.
2330: 20 20 20 20 20 20 20 20 20 28 28 75 6e 73 69 67 ((unsig
2340: 6e 65 64 20 63 68 61 72 20 2a 29 6c 2d 3e 72 61 ned char *)l->ra
2350: 64 64 72 29 5b 31 5d 20 3d 20 28 75 6e 73 69 67 ddr)[1] = (unsig
2360: 6e 65 64 20 63 68 61 72 29 28 69 3e 3e 34 38 29 ned char)(i>>48)
2370: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ;.
2380: 28 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 ((unsigned char
2390: 2a 29 6c 2d 3e 72 61 64 64 72 29 5b 32 5d 20 3d *)l->raddr)[2] =
23a0: 20 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 29 (unsigned char)
23b0: 28 69 3e 3e 34 30 29 3b 0a 20 20 20 20 20 20 20 (i>>40);.
23c0: 20 20 20 20 20 20 20 28 28 75 6e 73 69 67 6e 65 ((unsigne
23d0: 64 20 63 68 61 72 20 2a 29 6c 2d 3e 72 61 64 64 d char *)l->radd
23e0: 72 29 5b 33 5d 20 3d 20 28 75 6e 73 69 67 6e 65 r)[3] = (unsigne
23f0: 64 20 63 68 61 72 29 28 69 3e 3e 33 32 29 3b 0a d char)(i>>32);.
2400: 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c } el
2410: 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 se. i
2420: 66 20 28 6c 2d 3e 72 73 69 7a 65 20 3d 3d 20 35 f (l->rsize == 5
2430: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {.
2440: 20 20 28 28 75 6e 73 69 67 6e 65 64 20 63 68 61 ((unsigned cha
2450: 72 20 2a 29 6c 2d 3e 72 61 64 64 72 29 5b 30 5d r *)l->raddr)[0]
2460: 20 3d 20 28 75 6e 73 69 67 6e 65 64 20 63 68 61 = (unsigned cha
2470: 72 29 28 69 3e 3e 35 36 29 3b 0a 20 20 20 20 20 r)(i>>56);.
2480: 20 20 20 20 20 20 20 20 20 28 28 75 6e 73 69 67 ((unsig
2490: 6e 65 64 20 63 68 61 72 20 2a 29 6c 2d 3e 72 61 ned char *)l->ra
24a0: 64 64 72 29 5b 31 5d 20 3d 20 28 75 6e 73 69 67 ddr)[1] = (unsig
24b0: 6e 65 64 20 63 68 61 72 29 28 69 3e 3e 34 38 29 ned char)(i>>48)
24c0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ;.
24d0: 28 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 ((unsigned char
24e0: 2a 29 6c 2d 3e 72 61 64 64 72 29 5b 32 5d 20 3d *)l->raddr)[2] =
24f0: 20 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 29 (unsigned char)
2500: 28 69 3e 3e 34 30 29 3b 0a 20 20 20 20 20 20 20 (i>>40);.
2510: 20 20 20 20 20 20 20 28 28 75 6e 73 69 67 6e 65 ((unsigne
2520: 64 20 63 68 61 72 20 2a 29 6c 2d 3e 72 61 64 64 d char *)l->radd
2530: 72 29 5b 33 5d 20 3d 20 28 75 6e 73 69 67 6e 65 r)[3] = (unsigne
2540: 64 20 63 68 61 72 29 28 69 3e 3e 33 32 29 3b 0a d char)(i>>32);.
2550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 ((
2560: 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 29 unsigned char *)
2570: 6c 2d 3e 72 61 64 64 72 29 5b 34 5d 20 3d 20 28 l->raddr)[4] = (
2580: 75 6e 73 69 67 6e 65 64 20 63 68 61 72 29 28 69 unsigned char)(i
2590: 3e 3e 32 34 29 3b 0a 20 20 20 20 20 20 20 20 20 >>24);.
25a0: 20 20 20 7d 20 65 6c 73 65 0a 20 20 20 20 20 20 } else.
25b0: 20 20 20 20 20 20 69 66 20 28 6c 2d 3e 72 73 69 if (l->rsi
25c0: 7a 65 20 3d 3d 20 36 29 20 7b 0a 20 20 20 20 20 ze == 6) {.
25d0: 20 20 20 20 20 20 20 20 20 28 28 75 6e 73 69 67 ((unsig
25e0: 6e 65 64 20 63 68 61 72 20 2a 29 6c 2d 3e 72 61 ned char *)l->ra
25f0: 64 64 72 29 5b 30 5d 20 3d 20 28 75 6e 73 69 67 ddr)[0] = (unsig
2600: 6e 65 64 20 63 68 61 72 29 28 69 3e 3e 35 36 29 ned char)(i>>56)
2610: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ;.
2620: 28 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 ((unsigned char
2630: 2a 29 6c 2d 3e 72 61 64 64 72 29 5b 31 5d 20 3d *)l->raddr)[1] =
2640: 20 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 29 (unsigned char)
2650: 28 69 3e 3e 34 38 29 3b 0a 20 20 20 20 20 20 20 (i>>48);.
2660: 20 20 20 20 20 20 20 28 28 75 6e 73 69 67 6e 65 ((unsigne
2670: 64 20 63 68 61 72 20 2a 29 6c 2d 3e 72 61 64 64 d char *)l->radd
2680: 72 29 5b 32 5d 20 3d 20 28 75 6e 73 69 67 6e 65 r)[2] = (unsigne
2690: 64 20 63 68 61 72 29 28 69 3e 3e 34 30 29 3b 0a d char)(i>>40);.
26a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 ((
26b0: 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 29 unsigned char *)
26c0: 6c 2d 3e 72 61 64 64 72 29 5b 33 5d 20 3d 20 28 l->raddr)[3] = (
26d0: 75 6e 73 69 67 6e 65 64 20 63 68 61 72 29 28 69 unsigned char)(i
26e0: 3e 3e 33 32 29 3b 0a 20 20 20 20 20 20 20 20 20 >>32);.
26f0: 20 20 20 20 20 28 28 75 6e 73 69 67 6e 65 64 20 ((unsigned
2700: 63 68 61 72 20 2a 29 6c 2d 3e 72 61 64 64 72 29 char *)l->raddr)
2710: 5b 34 5d 20 3d 20 28 75 6e 73 69 67 6e 65 64 20 [4] = (unsigned
2720: 63 68 61 72 29 28 69 3e 3e 32 34 29 3b 0a 20 20 char)(i>>24);.
2730: 20 20 20 20 20 20 20 20 20 20 20 20 28 28 75 6e ((un
2740: 73 69 67 6e 65 64 20 63 68 61 72 20 2a 29 6c 2d signed char *)l-
2750: 3e 72 61 64 64 72 29 5b 35 5d 20 3d 20 28 75 6e >raddr)[5] = (un
2760: 73 69 67 6e 65 64 20 63 68 61 72 29 28 69 3e 3e signed char)(i>>
2770: 31 36 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 16);.
2780: 20 7d 20 65 6c 73 65 0a 20 20 20 20 20 20 20 20 } else.
2790: 20 20 20 20 69 66 20 28 6c 2d 3e 72 73 69 7a 65 if (l->rsize
27a0: 20 3d 3d 20 37 29 20 7b 0a 20 20 20 20 20 20 20 == 7) {.
27b0: 20 20 20 20 20 20 20 28 28 75 6e 73 69 67 6e 65 ((unsigne
27c0: 64 20 63 68 61 72 20 2a 29 6c 2d 3e 72 61 64 64 d char *)l->radd
27d0: 72 29 5b 30 5d 20 3d 20 28 75 6e 73 69 67 6e 65 r)[0] = (unsigne
27e0: 64 20 63 68 61 72 29 28 69 3e 3e 35 36 29 3b 0a d char)(i>>56);.
27f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 ((
2800: 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 29 unsigned char *)
2810: 6c 2d 3e 72 61 64 64 72 29 5b 31 5d 20 3d 20 28 l->raddr)[1] = (
2820: 75 6e 73 69 67 6e 65 64 20 63 68 61 72 29 28 69 unsigned char)(i
2830: 3e 3e 34 38 29 3b 0a 20 20 20 20 20 20 20 20 20 >>48);.
2840: 20 20 20 20 20 28 28 75 6e 73 69 67 6e 65 64 20 ((unsigned
2850: 63 68 61 72 20 2a 29 6c 2d 3e 72 61 64 64 72 29 char *)l->raddr)
2860: 5b 32 5d 20 3d 20 28 75 6e 73 69 67 6e 65 64 20 [2] = (unsigned
2870: 63 68 61 72 29 28 69 3e 3e 34 30 29 3b 0a 20 20 char)(i>>40);.
2880: 20 20 20 20 20 20 20 20 20 20 20 20 28 28 75 6e ((un
2890: 73 69 67 6e 65 64 20 63 68 61 72 20 2a 29 6c 2d signed char *)l-
28a0: 3e 72 61 64 64 72 29 5b 33 5d 20 3d 20 28 75 6e >raddr)[3] = (un
28b0: 73 69 67 6e 65 64 20 63 68 61 72 29 28 69 3e 3e signed char)(i>>
28c0: 33 32 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 32);.
28d0: 20 20 20 28 28 75 6e 73 69 67 6e 65 64 20 63 68 ((unsigned ch
28e0: 61 72 20 2a 29 6c 2d 3e 72 61 64 64 72 29 5b 34 ar *)l->raddr)[4
28f0: 5d 20 3d 20 28 75 6e 73 69 67 6e 65 64 20 63 68 ] = (unsigned ch
2900: 61 72 29 28 69 3e 3e 32 34 29 3b 0a 20 20 20 20 ar)(i>>24);.
2910: 20 20 20 20 20 20 20 20 20 20 28 28 75 6e 73 69 ((unsi
2920: 67 6e 65 64 20 63 68 61 72 20 2a 29 6c 2d 3e 72 gned char *)l->r
2930: 61 64 64 72 29 5b 35 5d 20 3d 20 28 75 6e 73 69 addr)[5] = (unsi
2940: 67 6e 65 64 20 63 68 61 72 29 28 69 3e 3e 31 36 gned char)(i>>16
2950: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 );.
2960: 20 28 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 ((unsigned char
2970: 20 2a 29 6c 2d 3e 72 61 64 64 72 29 5b 36 5d 20 *)l->raddr)[6]
2980: 3d 20 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 = (unsigned char
2990: 29 28 69 3e 3e 38 29 3b 0a 20 20 20 20 20 20 20 )(i>>8);.
29a0: 20 20 20 20 20 7d 20 65 6c 73 65 0a 20 20 20 20 } else.
29b0: 20 20 20 20 20 20 20 20 69 66 20 28 6c 2d 3e 72 if (l->r
29c0: 73 69 7a 65 20 3e 3d 20 38 20 26 26 20 6c 2d 3e size >= 8 && l->
29d0: 72 73 69 7a 65 20 3c 3d 20 31 36 29 20 7b 0a 20 rsize <= 16) {.
29e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 75 ((u
29f0: 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 29 6c nsigned char *)l
2a00: 2d 3e 72 61 64 64 72 29 5b 30 5d 20 3d 20 28 75 ->raddr)[0] = (u
2a10: 6e 73 69 67 6e 65 64 20 63 68 61 72 29 28 69 3e nsigned char)(i>
2a20: 3e 35 36 29 3b 0a 20 20 20 20 20 20 20 20 20 20 >56);.
2a30: 20 20 20 20 28 28 75 6e 73 69 67 6e 65 64 20 63 ((unsigned c
2a40: 68 61 72 20 2a 29 6c 2d 3e 72 61 64 64 72 29 5b har *)l->raddr)[
2a50: 31 5d 20 3d 20 28 75 6e 73 69 67 6e 65 64 20 63 1] = (unsigned c
2a60: 68 61 72 29 28 69 3e 3e 34 38 29 3b 0a 20 20 20 har)(i>>48);.
2a70: 20 20 20 20 20 20 20 20 20 20 20 28 28 75 6e 73 ((uns
2a80: 69 67 6e 65 64 20 63 68 61 72 20 2a 29 6c 2d 3e igned char *)l->
2a90: 72 61 64 64 72 29 5b 32 5d 20 3d 20 28 75 6e 73 raddr)[2] = (uns
2aa0: 69 67 6e 65 64 20 63 68 61 72 29 28 69 3e 3e 34 igned char)(i>>4
2ab0: 30 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 0);.
2ac0: 20 20 28 28 75 6e 73 69 67 6e 65 64 20 63 68 61 ((unsigned cha
2ad0: 72 20 2a 29 6c 2d 3e 72 61 64 64 72 29 5b 33 5d r *)l->raddr)[3]
2ae0: 20 3d 20 28 75 6e 73 69 67 6e 65 64 20 63 68 61 = (unsigned cha
2af0: 72 29 28 69 3e 3e 33 32 29 3b 0a 20 20 20 20 20 r)(i>>32);.
2b00: 20 20 20 20 20 20 20 20 20 28 28 75 6e 73 69 67 ((unsig
2b10: 6e 65 64 20 63 68 61 72 20 2a 29 6c 2d 3e 72 61 ned char *)l->ra
2b20: 64 64 72 29 5b 34 5d 20 3d 20 28 75 6e 73 69 67 ddr)[4] = (unsig
2b30: 6e 65 64 20 63 68 61 72 29 28 69 3e 3e 32 34 29 ned char)(i>>24)
2b40: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ;.
2b50: 28 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 ((unsigned char
2b60: 2a 29 6c 2d 3e 72 61 64 64 72 29 5b 35 5d 20 3d *)l->raddr)[5] =
2b70: 20 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 29 (unsigned char)
2b80: 28 69 3e 3e 31 36 29 3b 0a 20 20 20 20 20 20 20 (i>>16);.
2b90: 20 20 20 20 20 20 20 28 28 75 6e 73 69 67 6e 65 ((unsigne
2ba0: 64 20 63 68 61 72 20 2a 29 6c 2d 3e 72 61 64 64 d char *)l->radd
2bb0: 72 29 5b 36 5d 20 3d 20 28 75 6e 73 69 67 6e 65 r)[6] = (unsigne
2bc0: 64 20 63 68 61 72 29 28 69 3e 3e 38 29 3b 0a 20 d char)(i>>8);.
2bd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 75 ((u
2be0: 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 29 6c nsigned char *)l
2bf0: 2d 3e 72 61 64 64 72 29 5b 37 5d 20 3d 20 28 75 ->raddr)[7] = (u
2c00: 6e 73 69 67 6e 65 64 20 63 68 61 72 29 28 69 29 nsigned char)(i)
2c10: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ;.
2c20: 69 66 20 28 6c 2d 3e 72 73 69 7a 65 20 3d 3d 20 if (l->rsize ==
2c30: 38 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 8) {.
2c40: 20 20 20 7d 20 65 6c 73 65 0a 20 20 20 20 20 20 } else.
2c50: 20 20 20 20 20 20 20 20 69 66 20 28 6c 2d 3e 72 if (l->r
2c60: 73 69 7a 65 20 3d 3d 20 39 29 20 7b 0a 20 20 20 size == 9) {.
2c70: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 75 ((u
2c80: 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 29 6c nsigned char *)l
2c90: 2d 3e 72 61 64 64 72 29 5b 38 2b 30 5d 20 3d 20 ->raddr)[8+0] =
2ca0: 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 29 28 (unsigned char)(
2cb0: 69 72 65 74 32 3e 3e 35 36 29 3b 0a 20 20 20 20 iret2>>56);.
2cc0: 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 } else
2cd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 . i
2ce0: 66 20 28 6c 2d 3e 72 73 69 7a 65 20 3d 3d 20 31 f (l->rsize == 1
2cf0: 30 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 0) {.
2d00: 20 20 20 20 20 28 28 75 6e 73 69 67 6e 65 64 20 ((unsigned
2d10: 63 68 61 72 20 2a 29 6c 2d 3e 72 61 64 64 72 29 char *)l->raddr)
2d20: 5b 38 2b 30 5d 20 3d 20 28 75 6e 73 69 67 6e 65 [8+0] = (unsigne
2d30: 64 20 63 68 61 72 29 28 69 72 65 74 32 3e 3e 35 d char)(iret2>>5
2d40: 36 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 6);.
2d50: 20 20 20 20 28 28 75 6e 73 69 67 6e 65 64 20 63 ((unsigned c
2d60: 68 61 72 20 2a 29 6c 2d 3e 72 61 64 64 72 29 5b har *)l->raddr)[
2d70: 38 2b 31 5d 20 3d 20 28 75 6e 73 69 67 6e 65 64 8+1] = (unsigned
2d80: 20 63 68 61 72 29 28 69 72 65 74 32 3e 3e 34 38 char)(iret2>>48
2d90: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 );.
2da0: 20 7d 20 65 6c 73 65 0a 20 20 20 20 20 20 20 20 } else.
2db0: 20 20 20 20 20 20 69 66 20 28 6c 2d 3e 72 73 69 if (l->rsi
2dc0: 7a 65 20 3d 3d 20 31 31 29 20 7b 0a 20 20 20 20 ze == 11) {.
2dd0: 20 20 20 20 20 20 20 20 20 20 20 20 28 28 75 6e ((un
2de0: 73 69 67 6e 65 64 20 63 68 61 72 20 2a 29 6c 2d signed char *)l-
2df0: 3e 72 61 64 64 72 29 5b 38 2b 30 5d 20 3d 20 28 >raddr)[8+0] = (
2e00: 75 6e 73 69 67 6e 65 64 20 63 68 61 72 29 28 69 unsigned char)(i
2e10: 72 65 74 32 3e 3e 35 36 29 3b 0a 20 20 20 20 20 ret2>>56);.
2e20: 20 20 20 20 20 20 20 20 20 20 20 28 28 75 6e 73 ((uns
2e30: 69 67 6e 65 64 20 63 68 61 72 20 2a 29 6c 2d 3e igned char *)l->
2e40: 72 61 64 64 72 29 5b 38 2b 31 5d 20 3d 20 28 75 raddr)[8+1] = (u
2e50: 6e 73 69 67 6e 65 64 20 63 68 61 72 29 28 69 72 nsigned char)(ir
2e60: 65 74 32 3e 3e 34 38 29 3b 0a 20 20 20 20 20 20 et2>>48);.
2e70: 20 20 20 20 20 20 20 20 20 20 28 28 75 6e 73 69 ((unsi
2e80: 67 6e 65 64 20 63 68 61 72 20 2a 29 6c 2d 3e 72 gned char *)l->r
2e90: 61 64 64 72 29 5b 38 2b 32 5d 20 3d 20 28 75 6e addr)[8+2] = (un
2ea0: 73 69 67 6e 65 64 20 63 68 61 72 29 28 69 72 65 signed char)(ire
2eb0: 74 32 3e 3e 34 30 29 3b 0a 20 20 20 20 20 20 20 t2>>40);.
2ec0: 20 20 20 20 20 20 20 7d 20 65 6c 73 65 0a 20 20 } else.
2ed0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 if (
2ee0: 6c 2d 3e 72 73 69 7a 65 20 3d 3d 20 31 32 29 20 l->rsize == 12)
2ef0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 {.
2f00: 20 20 28 28 75 6e 73 69 67 6e 65 64 20 63 68 61 ((unsigned cha
2f10: 72 20 2a 29 6c 2d 3e 72 61 64 64 72 29 5b 38 2b r *)l->raddr)[8+
2f20: 30 5d 20 3d 20 28 75 6e 73 69 67 6e 65 64 20 63 0] = (unsigned c
2f30: 68 61 72 29 28 69 72 65 74 32 3e 3e 35 36 29 3b har)(iret2>>56);
2f40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
2f50: 20 28 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 ((unsigned char
2f60: 20 2a 29 6c 2d 3e 72 61 64 64 72 29 5b 38 2b 31 *)l->raddr)[8+1
2f70: 5d 20 3d 20 28 75 6e 73 69 67 6e 65 64 20 63 68 ] = (unsigned ch
2f80: 61 72 29 28 69 72 65 74 32 3e 3e 34 38 29 3b 0a ar)(iret2>>48);.
2f90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2fa0: 28 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 ((unsigned char
2fb0: 2a 29 6c 2d 3e 72 61 64 64 72 29 5b 38 2b 32 5d *)l->raddr)[8+2]
2fc0: 20 3d 20 28 75 6e 73 69 67 6e 65 64 20 63 68 61 = (unsigned cha
2fd0: 72 29 28 69 72 65 74 32 3e 3e 34 30 29 3b 0a 20 r)(iret2>>40);.
2fe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 (
2ff0: 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a (unsigned char *
3000: 29 6c 2d 3e 72 61 64 64 72 29 5b 38 2b 33 5d 20 )l->raddr)[8+3]
3010: 3d 20 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 = (unsigned char
3020: 29 28 69 72 65 74 32 3e 3e 33 32 29 3b 0a 20 20 )(iret2>>32);.
3030: 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c } el
3040: 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 se.
3050: 20 69 66 20 28 6c 2d 3e 72 73 69 7a 65 20 3d 3d if (l->rsize ==
3060: 20 31 33 29 20 7b 0a 20 20 20 20 20 20 20 20 20 13) {.
3070: 20 20 20 20 20 20 20 28 28 75 6e 73 69 67 6e 65 ((unsigne
3080: 64 20 63 68 61 72 20 2a 29 6c 2d 3e 72 61 64 64 d char *)l->radd
3090: 72 29 5b 38 2b 30 5d 20 3d 20 28 75 6e 73 69 67 r)[8+0] = (unsig
30a0: 6e 65 64 20 63 68 61 72 29 28 69 72 65 74 32 3e ned char)(iret2>
30b0: 3e 35 36 29 3b 0a 20 20 20 20 20 20 20 20 20 20 >56);.
30c0: 20 20 20 20 20 20 28 28 75 6e 73 69 67 6e 65 64 ((unsigned
30d0: 20 63 68 61 72 20 2a 29 6c 2d 3e 72 61 64 64 72 char *)l->raddr
30e0: 29 5b 38 2b 31 5d 20 3d 20 28 75 6e 73 69 67 6e )[8+1] = (unsign
30f0: 65 64 20 63 68 61 72 29 28 69 72 65 74 32 3e 3e ed char)(iret2>>
3100: 34 38 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 48);.
3110: 20 20 20 20 20 28 28 75 6e 73 69 67 6e 65 64 20 ((unsigned
3120: 63 68 61 72 20 2a 29 6c 2d 3e 72 61 64 64 72 29 char *)l->raddr)
3130: 5b 38 2b 32 5d 20 3d 20 28 75 6e 73 69 67 6e 65 [8+2] = (unsigne
3140: 64 20 63 68 61 72 29 28 69 72 65 74 32 3e 3e 34 d char)(iret2>>4
3150: 30 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 0);.
3160: 20 20 20 20 28 28 75 6e 73 69 67 6e 65 64 20 63 ((unsigned c
3170: 68 61 72 20 2a 29 6c 2d 3e 72 61 64 64 72 29 5b har *)l->raddr)[
3180: 38 2b 33 5d 20 3d 20 28 75 6e 73 69 67 6e 65 64 8+3] = (unsigned
3190: 20 63 68 61 72 29 28 69 72 65 74 32 3e 3e 33 32 char)(iret2>>32
31a0: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 );.
31b0: 20 20 20 28 28 75 6e 73 69 67 6e 65 64 20 63 68 ((unsigned ch
31c0: 61 72 20 2a 29 6c 2d 3e 72 61 64 64 72 29 5b 38 ar *)l->raddr)[8
31d0: 2b 34 5d 20 3d 20 28 75 6e 73 69 67 6e 65 64 20 +4] = (unsigned
31e0: 63 68 61 72 29 28 69 72 65 74 32 3e 3e 32 34 29 char)(iret2>>24)
31f0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ;.
3200: 7d 20 65 6c 73 65 0a 20 20 20 20 20 20 20 20 20 } else.
3210: 20 20 20 20 20 69 66 20 28 6c 2d 3e 72 73 69 7a if (l->rsiz
3220: 65 20 3d 3d 20 31 34 29 20 7b 0a 20 20 20 20 20 e == 14) {.
3230: 20 20 20 20 20 20 20 20 20 20 20 28 28 75 6e 73 ((uns
3240: 69 67 6e 65 64 20 63 68 61 72 20 2a 29 6c 2d 3e igned char *)l->
3250: 72 61 64 64 72 29 5b 38 2b 30 5d 20 3d 20 28 75 raddr)[8+0] = (u
3260: 6e 73 69 67 6e 65 64 20 63 68 61 72 29 28 69 72 nsigned char)(ir
3270: 65 74 32 3e 3e 35 36 29 3b 0a 20 20 20 20 20 20 et2>>56);.
3280: 20 20 20 20 20 20 20 20 20 20 28 28 75 6e 73 69 ((unsi
3290: 67 6e 65 64 20 63 68 61 72 20 2a 29 6c 2d 3e 72 gned char *)l->r
32a0: 61 64 64 72 29 5b 38 2b 31 5d 20 3d 20 28 75 6e addr)[8+1] = (un
32b0: 73 69 67 6e 65 64 20 63 68 61 72 29 28 69 72 65 signed char)(ire
32c0: 74 32 3e 3e 34 38 29 3b 0a 20 20 20 20 20 20 20 t2>>48);.
32d0: 20 20 20 20 20 20 20 20 20 28 28 75 6e 73 69 67 ((unsig
32e0: 6e 65 64 20 63 68 61 72 20 2a 29 6c 2d 3e 72 61 ned char *)l->ra
32f0: 64 64 72 29 5b 38 2b 32 5d 20 3d 20 28 75 6e 73 ddr)[8+2] = (uns
3300: 69 67 6e 65 64 20 63 68 61 72 29 28 69 72 65 74 igned char)(iret
3310: 32 3e 3e 34 30 29 3b 0a 20 20 20 20 20 20 20 20 2>>40);.
3320: 20 20 20 20 20 20 20 20 28 28 75 6e 73 69 67 6e ((unsign
3330: 65 64 20 63 68 61 72 20 2a 29 6c 2d 3e 72 61 64 ed char *)l->rad
3340: 64 72 29 5b 38 2b 33 5d 20 3d 20 28 75 6e 73 69 dr)[8+3] = (unsi
3350: 67 6e 65 64 20 63 68 61 72 29 28 69 72 65 74 32 gned char)(iret2
3360: 3e 3e 33 32 29 3b 0a 20 20 20 20 20 20 20 20 20 >>32);.
3370: 20 20 20 20 20 20 20 28 28 75 6e 73 69 67 6e 65 ((unsigne
3380: 64 20 63 68 61 72 20 2a 29 6c 2d 3e 72 61 64 64 d char *)l->radd
3390: 72 29 5b 38 2b 34 5d 20 3d 20 28 75 6e 73 69 67 r)[8+4] = (unsig
33a0: 6e 65 64 20 63 68 61 72 29 28 69 72 65 74 32 3e ned char)(iret2>
33b0: 3e 32 34 29 3b 0a 20 20 20 20 20 20 20 20 20 20 >24);.
33c0: 20 20 20 20 20 20 28 28 75 6e 73 69 67 6e 65 64 ((unsigned
33d0: 20 63 68 61 72 20 2a 29 6c 2d 3e 72 61 64 64 72 char *)l->raddr
33e0: 29 5b 38 2b 35 5d 20 3d 20 28 75 6e 73 69 67 6e )[8+5] = (unsign
33f0: 65 64 20 63 68 61 72 29 28 69 72 65 74 32 3e 3e ed char)(iret2>>
3400: 31 36 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 16);.
3410: 20 20 20 7d 20 65 6c 73 65 0a 20 20 20 20 20 20 } else.
3420: 20 20 20 20 20 20 20 20 69 66 20 28 6c 2d 3e 72 if (l->r
3430: 73 69 7a 65 20 3d 3d 20 31 35 29 20 7b 0a 20 20 size == 15) {.
3440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 ((
3450: 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 29 unsigned char *)
3460: 6c 2d 3e 72 61 64 64 72 29 5b 38 2b 30 5d 20 3d l->raddr)[8+0] =
3470: 20 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 29 (unsigned char)
3480: 28 69 72 65 74 32 3e 3e 35 36 29 3b 0a 20 20 20 (iret2>>56);.
3490: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 75 ((u
34a0: 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 29 6c nsigned char *)l
34b0: 2d 3e 72 61 64 64 72 29 5b 38 2b 31 5d 20 3d 20 ->raddr)[8+1] =
34c0: 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 29 28 (unsigned char)(
34d0: 69 72 65 74 32 3e 3e 34 38 29 3b 0a 20 20 20 20 iret2>>48);.
34e0: 20 20 20 20 20 20 20 20 20 20 20 20 28 28 75 6e ((un
34f0: 73 69 67 6e 65 64 20 63 68 61 72 20 2a 29 6c 2d signed char *)l-
3500: 3e 72 61 64 64 72 29 5b 38 2b 32 5d 20 3d 20 28 >raddr)[8+2] = (
3510: 75 6e 73 69 67 6e 65 64 20 63 68 61 72 29 28 69 unsigned char)(i
3520: 72 65 74 32 3e 3e 34 30 29 3b 0a 20 20 20 20 20 ret2>>40);.
3530: 20 20 20 20 20 20 20 20 20 20 20 28 28 75 6e 73 ((uns
3540: 69 67 6e 65 64 20 63 68 61 72 20 2a 29 6c 2d 3e igned char *)l->
3550: 72 61 64 64 72 29 5b 38 2b 33 5d 20 3d 20 28 75 raddr)[8+3] = (u
3560: 6e 73 69 67 6e 65 64 20 63 68 61 72 29 28 69 72 nsigned char)(ir
3570: 65 74 32 3e 3e 33 32 29 3b 0a 20 20 20 20 20 20 et2>>32);.
3580: 20 20 20 20 20 20 20 20 20 20 28 28 75 6e 73 69 ((unsi
3590: 67 6e 65 64 20 63 68 61 72 20 2a 29 6c 2d 3e 72 gned char *)l->r
35a0: 61 64 64 72 29 5b 38 2b 34 5d 20 3d 20 28 75 6e addr)[8+4] = (un
35b0: 73 69 67 6e 65 64 20 63 68 61 72 29 28 69 72 65 signed char)(ire
35c0: 74 32 3e 3e 32 34 29 3b 0a 20 20 20 20 20 20 20 t2>>24);.
35d0: 20 20 20 20 20 20 20 20 20 28 28 75 6e 73 69 67 ((unsig
35e0: 6e 65 64 20 63 68 61 72 20 2a 29 6c 2d 3e 72 61 ned char *)l->ra
35f0: 64 64 72 29 5b 38 2b 35 5d 20 3d 20 28 75 6e 73 ddr)[8+5] = (uns
3600: 69 67 6e 65 64 20 63 68 61 72 29 28 69 72 65 74 igned char)(iret
3610: 32 3e 3e 31 36 29 3b 0a 20 20 20 20 20 20 20 20 2>>16);.
3620: 20 20 20 20 20 20 20 20 28 28 75 6e 73 69 67 6e ((unsign
3630: 65 64 20 63 68 61 72 20 2a 29 6c 2d 3e 72 61 64 ed char *)l->rad
3640: 64 72 29 5b 38 2b 36 5d 20 3d 20 28 75 6e 73 69 dr)[8+6] = (unsi
3650: 67 6e 65 64 20 63 68 61 72 29 28 69 72 65 74 32 gned char)(iret2
3660: 3e 3e 38 29 3b 0a 20 20 20 20 20 20 20 20 20 20 >>8);.
3670: 20 20 20 20 7d 20 65 6c 73 65 0a 20 20 20 20 20 } else.
3680: 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 2d 3e if (l->
3690: 72 73 69 7a 65 20 3d 3d 20 31 36 29 20 7b 0a 20 rsize == 16) {.
36a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 (
36b0: 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a (unsigned char *
36c0: 29 6c 2d 3e 72 61 64 64 72 29 5b 38 2b 30 5d 20 )l->raddr)[8+0]
36d0: 3d 20 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 = (unsigned char
36e0: 29 28 69 72 65 74 32 3e 3e 35 36 29 3b 0a 20 20 )(iret2>>56);.
36f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 ((
3700: 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 29 unsigned char *)
3710: 6c 2d 3e 72 61 64 64 72 29 5b 38 2b 31 5d 20 3d l->raddr)[8+1] =
3720: 20 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 29 (unsigned char)
3730: 28 69 72 65 74 32 3e 3e 34 38 29 3b 0a 20 20 20 (iret2>>48);.
3740: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 75 ((u
3750: 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 29 6c nsigned char *)l
3760: 2d 3e 72 61 64 64 72 29 5b 38 2b 32 5d 20 3d 20 ->raddr)[8+2] =
3770: 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 29 28 (unsigned char)(
3780: 69 72 65 74 32 3e 3e 34 30 29 3b 0a 20 20 20 20 iret2>>40);.
3790: 20 20 20 20 20 20 20 20 20 20 20 20 28 28 75 6e ((un
37a0: 73 69 67 6e 65 64 20 63 68 61 72 20 2a 29 6c 2d signed char *)l-
37b0: 3e 72 61 64 64 72 29 5b 38 2b 33 5d 20 3d 20 28 >raddr)[8+3] = (
37c0: 75 6e 73 69 67 6e 65 64 20 63 68 61 72 29 28 69 unsigned char)(i
37d0: 72 65 74 32 3e 3e 33 32 29 3b 0a 20 20 20 20 20 ret2>>32);.
37e0: 20 20 20 20 20 20 20 20 20 20 20 28 28 75 6e 73 ((uns
37f0: 69 67 6e 65 64 20 63 68 61 72 20 2a 29 6c 2d 3e igned char *)l->
3800: 72 61 64 64 72 29 5b 38 2b 34 5d 20 3d 20 28 75 raddr)[8+4] = (u
3810: 6e 73 69 67 6e 65 64 20 63 68 61 72 29 28 69 72 nsigned char)(ir
3820: 65 74 32 3e 3e 32 34 29 3b 0a 20 20 20 20 20 20 et2>>24);.
3830: 20 20 20 20 20 20 20 20 20 20 28 28 75 6e 73 69 ((unsi
3840: 67 6e 65 64 20 63 68 61 72 20 2a 29 6c 2d 3e 72 gned char *)l->r
3850: 61 64 64 72 29 5b 38 2b 35 5d 20 3d 20 28 75 6e addr)[8+5] = (un
3860: 73 69 67 6e 65 64 20 63 68 61 72 29 28 69 72 65 signed char)(ire
3870: 74 32 3e 3e 31 36 29 3b 0a 20 20 20 20 20 20 20 t2>>16);.
3880: 20 20 20 20 20 20 20 20 20 28 28 75 6e 73 69 67 ((unsig
3890: 6e 65 64 20 63 68 61 72 20 2a 29 6c 2d 3e 72 61 ned char *)l->ra
38a0: 64 64 72 29 5b 38 2b 36 5d 20 3d 20 28 75 6e 73 ddr)[8+6] = (uns
38b0: 69 67 6e 65 64 20 63 68 61 72 29 28 69 72 65 74 igned char)(iret
38c0: 32 3e 3e 38 29 3b 0a 20 20 20 20 20 20 20 20 20 2>>8);.
38d0: 20 20 20 20 20 20 20 28 28 75 6e 73 69 67 6e 65 ((unsigne
38e0: 64 20 63 68 61 72 20 2a 29 6c 2d 3e 72 61 64 64 d char *)l->radd
38f0: 72 29 5b 38 2b 37 5d 20 3d 20 28 75 6e 73 69 67 r)[8+7] = (unsig
3900: 6e 65 64 20 63 68 61 72 29 28 69 72 65 74 32 29 ned char)(iret2)
3910: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ;.
3920: 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a }. }.
3930: 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 }.
3940: 20 20 20 20 7d 0a 20 20 20 20 20 20 7d 0a 20 20 }. }.
3950: 20 20 7d 0a 20 20 7d 0a 20 20 72 65 74 75 72 6e }. }. return
3960: 20 30 3b 0a 7d 0a 0a 23 65 6e 64 69 66 20 2f 2a 0;.}..#endif /*
3970: 5f 61 76 63 61 6c 6c 5f 6d 69 70 73 36 34 5f 63 _avcall_mips64_c
3980: 20 2a 2f 0a */.