Artifact c37b16a00e06593872578fc013c677afdc5296b3:


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                                       */.