Artifact 3f5f7a94f25295636c8f0b97f22e3252e5aafa88:


0000: 23 69 66 6e 64 65 66 20 5f 61 76 63 61 6c 6c 5f  #ifndef _avcall_
0010: 68 09 09 09 09 2f 2a 2d 2a 2d 20 43 20 2d 2a 2d  h..../*-*- C -*-
0020: 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 61 76 63 61  */.#define _avca
0030: 6c 6c 5f 68 0a 2f 2a 2a 0a 20 20 43 6f 70 79 72  ll_h./**.  Copyr
0040: 69 67 68 74 20 31 39 39 33 20 42 69 6c 6c 20 54  ight 1993 Bill T
0050: 72 69 67 67 73 2c 20 3c 42 69 6c 6c 2e 54 72 69  riggs, <Bill.Tri
0060: 67 67 73 40 69 6e 72 69 61 6c 70 65 73 2e 66 72  ggs@inrialpes.fr
0070: 3e 0a 0a 20 20 43 6f 70 79 72 69 67 68 74 20 31  >..  Copyright 1
0080: 39 39 35 2d 32 30 30 34 20 42 72 75 6e 6f 20 48  995-2004 Bruno H
0090: 61 69 62 6c 65 2c 20 3c 62 72 75 6e 6f 40 63 6c  aible, <bruno@cl
00a0: 69 73 70 2e 6f 72 67 3e 0a 0a 20 20 54 68 69 73  isp.org>..  This
00b0: 20 69 73 20 66 72 65 65 20 73 6f 66 74 77 61 72   is free softwar
00c0: 65 20 64 69 73 74 72 69 62 75 74 65 64 20 75 6e  e distributed un
00d0: 64 65 72 20 74 68 65 20 47 4e 55 20 47 65 6e 65  der the GNU Gene
00e0: 72 61 6c 20 50 75 62 6c 69 63 0a 20 20 4c 69 63  ral Public.  Lic
00f0: 65 6e 63 65 20 64 65 73 63 72 69 62 65 64 20 69  ence described i
0100: 6e 20 74 68 65 20 66 69 6c 65 20 43 4f 50 59 49  n the file COPYI
0110: 4e 47 2e 20 43 6f 6e 74 61 63 74 20 74 68 65 20  NG. Contact the 
0120: 61 75 74 68 6f 72 20 69 66 0a 20 20 79 6f 75 20  author if.  you 
0130: 64 6f 6e 27 74 20 68 61 76 65 20 74 68 69 73 20  don't have this 
0140: 6f 72 20 63 61 6e 27 74 20 6c 69 76 65 20 77 69  or can't live wi
0150: 74 68 20 69 74 2e 20 54 68 65 72 65 20 69 73 20  th it. There is 
0160: 41 42 53 4f 4c 55 54 45 4c 59 0a 20 20 4e 4f 20  ABSOLUTELY.  NO 
0170: 57 41 52 52 41 4e 54 59 2c 20 65 78 70 6c 69 63  WARRANTY, explic
0180: 69 74 20 6f 72 20 69 6d 70 6c 69 65 64 2c 20 6f  it or implied, o
0190: 6e 20 74 68 69 73 20 73 6f 66 74 77 61 72 65 2e  n this software.
01a0: 0a 2a 2a 2f 0a 2f 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d  .**/./*---------
01b0: 2d 2d 2d 2d 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 0a 20 20  -------------.  
01f0: 61 76 5f 63 61 6c 6c 28 29 20 66 6f 72 65 69 67  av_call() foreig
0200: 6e 20 66 75 6e 63 74 69 6f 6e 20 69 6e 74 65 72  n function inter
0210: 66 61 63 65 2e 0a 0a 20 20 56 61 72 61 72 67 73  face...  Varargs
0220: 2d 73 74 79 6c 65 20 6d 61 63 72 6f 73 20 74 6f  -style macros to
0230: 20 62 75 69 6c 64 20 61 20 43 20 61 72 67 75 6d   build a C argum
0240: 65 6e 74 20 6c 69 73 74 20 69 6e 63 72 65 6d 65  ent list increme
0250: 6e 74 61 6c 6c 79 0a 20 20 61 6e 64 20 63 61 6c  ntally.  and cal
0260: 6c 20 61 20 66 75 6e 63 74 69 6f 6e 20 6f 6e 20  l a function on 
0270: 69 74 2e 0a 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  it.. -----------
0280: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0290: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
02a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
02b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2a 2f 0a 0a 0a  -----------*/...
02c0: 2f 2a 20 54 68 65 73 65 20 64 65 66 69 6e 69 74  /* These definit
02d0: 69 6f 6e 73 20 61 72 65 20 61 64 6a 75 73 74 65  ions are adjuste
02e0: 64 20 62 79 20 60 63 6f 6e 66 69 67 75 72 65 27  d by `configure'
02f0: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e 20   automatically. 
0300: 2a 2f 0a 0a 2f 2a 20 43 50 55 20 2a 2f 0a 23 69  */../* CPU */.#i
0310: 66 6e 64 65 66 20 5f 5f 69 33 38 36 5f 5f 0a 23  fndef __i386__.#
0320: 75 6e 64 65 66 20 5f 5f 69 33 38 36 5f 5f 0a 23  undef __i386__.#
0330: 65 6e 64 69 66 0a 23 69 66 6e 64 65 66 20 5f 5f  endif.#ifndef __
0340: 6d 36 38 6b 5f 5f 0a 23 75 6e 64 65 66 20 5f 5f  m68k__.#undef __
0350: 6d 36 38 6b 5f 5f 0a 23 65 6e 64 69 66 0a 23 69  m68k__.#endif.#i
0360: 66 6e 64 65 66 20 5f 5f 6d 69 70 73 5f 5f 0a 23  fndef __mips__.#
0370: 75 6e 64 65 66 20 5f 5f 6d 69 70 73 5f 5f 0a 23  undef __mips__.#
0380: 65 6e 64 69 66 0a 23 69 66 6e 64 65 66 20 5f 5f  endif.#ifndef __
0390: 6d 69 70 73 6e 33 32 5f 5f 0a 23 75 6e 64 65 66  mipsn32__.#undef
03a0: 20 5f 5f 6d 69 70 73 6e 33 32 5f 5f 0a 23 65 6e   __mipsn32__.#en
03b0: 64 69 66 0a 23 69 66 6e 64 65 66 20 5f 5f 6d 69  dif.#ifndef __mi
03c0: 70 73 36 34 5f 5f 0a 23 75 6e 64 65 66 20 5f 5f  ps64__.#undef __
03d0: 6d 69 70 73 36 34 5f 5f 0a 23 65 6e 64 69 66 0a  mips64__.#endif.
03e0: 23 69 66 6e 64 65 66 20 5f 5f 73 70 61 72 63 5f  #ifndef __sparc_
03f0: 5f 0a 23 75 6e 64 65 66 20 5f 5f 73 70 61 72 63  _.#undef __sparc
0400: 5f 5f 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64 65  __.#endif.#ifnde
0410: 66 20 5f 5f 73 70 61 72 63 36 34 5f 5f 0a 23 75  f __sparc64__.#u
0420: 6e 64 65 66 20 5f 5f 73 70 61 72 63 36 34 5f 5f  ndef __sparc64__
0430: 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64 65 66 20  .#endif.#ifndef 
0440: 5f 5f 61 6c 70 68 61 5f 5f 0a 23 75 6e 64 65 66  __alpha__.#undef
0450: 20 5f 5f 61 6c 70 68 61 5f 5f 0a 23 65 6e 64 69   __alpha__.#endi
0460: 66 0a 23 69 66 6e 64 65 66 20 5f 5f 68 70 70 61  f.#ifndef __hppa
0470: 5f 5f 0a 23 75 6e 64 65 66 20 5f 5f 68 70 70 61  __.#undef __hppa
0480: 5f 5f 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64 65  __.#endif.#ifnde
0490: 66 20 5f 5f 61 72 6d 5f 5f 0a 23 75 6e 64 65 66  f __arm__.#undef
04a0: 20 5f 5f 61 72 6d 5f 5f 0a 23 65 6e 64 69 66 0a   __arm__.#endif.
04b0: 23 69 66 6e 64 65 66 20 5f 5f 72 73 36 30 30 30  #ifndef __rs6000
04c0: 5f 5f 0a 23 75 6e 64 65 66 20 5f 5f 72 73 36 30  __.#undef __rs60
04d0: 30 30 5f 5f 0a 23 65 6e 64 69 66 0a 23 69 66 6e  00__.#endif.#ifn
04e0: 64 65 66 20 5f 5f 73 33 39 30 5f 5f 0a 23 75 6e  def __s390__.#un
04f0: 64 65 66 20 5f 5f 73 33 39 30 5f 5f 0a 23 65 6e  def __s390__.#en
0500: 64 69 66 0a 23 69 66 6e 64 65 66 20 5f 5f 6d 38  dif.#ifndef __m8
0510: 38 6b 5f 5f 0a 23 75 6e 64 65 66 20 5f 5f 6d 38  8k__.#undef __m8
0520: 38 6b 5f 5f 0a 23 65 6e 64 69 66 0a 23 69 66 6e  8k__.#endif.#ifn
0530: 64 65 66 20 5f 5f 63 6f 6e 76 65 78 5f 5f 0a 23  def __convex__.#
0540: 75 6e 64 65 66 20 5f 5f 63 6f 6e 76 65 78 5f 5f  undef __convex__
0550: 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64 65 66 20  .#endif.#ifndef 
0560: 5f 5f 69 61 36 34 5f 5f 0a 23 75 6e 64 65 66 20  __ia64__.#undef 
0570: 5f 5f 69 61 36 34 5f 5f 0a 23 65 6e 64 69 66 0a  __ia64__.#endif.
0580: 23 69 66 6e 64 65 66 20 5f 5f 78 38 36 5f 36 34  #ifndef __x86_64
0590: 5f 5f 0a 23 75 6e 64 65 66 20 5f 5f 78 38 36 5f  __.#undef __x86_
05a0: 36 34 5f 5f 0a 23 65 6e 64 69 66 0a 0a 2f 2a 20  64__.#endif../* 
05b0: 43 61 6c 6c 69 6e 67 20 63 6f 6e 76 65 6e 74 69  Calling conventi
05c0: 6f 6e 20 2a 2f 0a 2f 2a 20 44 65 66 69 6e 65 20  on */./* Define 
05d0: 69 66 20 75 73 69 6e 67 20 70 63 63 20 6e 6f 6e  if using pcc non
05e0: 2d 72 65 65 6e 74 72 61 6e 74 20 73 74 72 75 63  -reentrant struc
05f0: 74 20 72 65 74 75 72 6e 20 63 6f 6e 76 65 6e 74  t return convent
0600: 69 6f 6e 20 2a 2f 0a 23 75 6e 64 65 66 20 5f 5f  ion */.#undef __
0610: 50 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52  PCC_STRUCT_RETUR
0620: 4e 5f 5f 0a 2f 2a 20 44 65 66 69 6e 65 20 69 66  N__./* Define if
0630: 20 73 6d 61 6c 6c 20 73 74 72 75 63 74 73 20 61   small structs a
0640: 72 65 20 72 65 74 75 72 6e 65 64 20 69 6e 20 72  re returned in r
0650: 65 67 69 73 74 65 72 73 20 2a 2f 0a 23 75 6e 64  egisters */.#und
0660: 65 66 20 5f 5f 53 4d 41 4c 4c 5f 53 54 52 55 43  ef __SMALL_STRUC
0670: 54 5f 52 45 54 55 52 4e 5f 5f 0a 2f 2a 20 44 65  T_RETURN__./* De
0680: 66 69 6e 65 20 69 66 20 66 6c 6f 61 74 69 6e 67  fine if floating
0690: 2d 70 6f 69 6e 74 20 72 65 73 75 6c 74 73 20 61  -point results a
06a0: 72 65 20 72 65 74 75 72 6e 65 64 20 69 6e 20 74  re returned in t
06b0: 68 65 20 69 6e 74 65 67 65 72 20 72 65 67 69 73  he integer regis
06c0: 74 65 72 73 20 2a 2f 0a 23 75 6e 64 65 66 20 5f  ters */.#undef _
06d0: 5f 49 52 45 47 5f 46 4c 4f 41 54 5f 52 45 54 55  _IREG_FLOAT_RETU
06e0: 52 4e 5f 5f 0a 0a 2f 2a 20 43 4c 5f 4c 4f 4e 47  RN__../* CL_LONG
06f0: 4c 4f 4e 47 20 2a 2f 0a 2f 2a 20 44 65 66 69 6e  LONG */./* Defin
0700: 65 20 69 66 20 79 6f 75 72 20 63 6f 6d 70 69 6c  e if your compil
0710: 65 72 20 73 75 70 70 6f 72 74 73 20 74 68 65 20  er supports the 
0720: 60 6c 6f 6e 67 20 6c 6f 6e 67 27 20 74 79 70 65  `long long' type
0730: 2e 20 2a 2f 0a 23 75 6e 64 65 66 20 48 41 56 45  . */.#undef HAVE
0740: 5f 4c 4f 4e 47 4c 4f 4e 47 0a 0a 2f 2a 20 45 6e  _LONGLONG../* En
0750: 64 20 6f 66 20 64 65 66 69 6e 69 74 69 6f 6e 73  d of definitions
0760: 20 61 64 6a 75 73 74 65 64 20 62 79 20 60 63 6f   adjusted by `co
0770: 6e 66 69 67 75 72 65 27 2e 20 2a 2f 0a 0a 0a 2f  nfigure'. */.../
0780: 2a 20 4d 61 78 20 23 20 77 6f 72 64 73 20 69 6e  * Max # words in
0790: 20 61 72 67 75 6d 65 6e 74 2d 6c 69 73 74 20 61   argument-list a
07a0: 6e 64 20 74 65 6d 70 6f 72 61 72 79 20 73 74 72  nd temporary str
07b0: 75 63 74 75 72 65 20 73 74 6f 72 61 67 65 2e 0a  ucture storage..
07c0: 20 2a 2f 0a 23 69 66 6e 64 65 66 20 5f 5f 41 56   */.#ifndef __AV
07d0: 5f 41 4c 49 53 54 5f 57 4f 52 44 53 0a 23 64 65  _ALIST_WORDS.#de
07e0: 66 69 6e 65 20 5f 5f 41 56 5f 41 4c 49 53 54 5f  fine __AV_ALIST_
07f0: 57 4f 52 44 53 20 20 32 35 36 0a 23 65 6e 64 69  WORDS  256.#endi
0800: 66 0a 0a 2f 2a 20 44 65 74 65 72 6d 69 6e 65 20  f../* Determine 
0810: 74 68 65 20 61 6c 69 67 6e 6d 65 6e 74 20 6f 66  the alignment of
0820: 20 61 20 74 79 70 65 20 61 74 20 63 6f 6d 70 69   a type at compi
0830: 6c 65 20 74 69 6d 65 2e 0a 20 2a 2f 0a 23 69 66  le time.. */.#if
0840: 20 64 65 66 69 6e 65 64 28 5f 5f 47 4e 55 43 5f   defined(__GNUC_
0850: 5f 29 0a 23 64 65 66 69 6e 65 20 5f 5f 41 56 5f  _).#define __AV_
0860: 61 6c 69 67 6e 6f 66 20 5f 5f 61 6c 69 67 6e 6f  alignof __aligno
0870: 66 5f 5f 0a 23 65 6c 73 65 0a 23 69 66 20 64 65  f__.#else.#if de
0880: 66 69 6e 65 64 28 5f 5f 6d 69 70 73 5f 5f 29 20  fined(__mips__) 
0890: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70  || defined(__mip
08a0: 73 6e 33 32 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  sn32__) || defin
08b0: 65 64 28 5f 5f 6d 69 70 73 36 34 5f 5f 29 20 2f  ed(__mips64__) /
08c0: 2a 20 53 47 49 20 63 6f 6d 70 69 6c 65 72 20 2a  * SGI compiler *
08d0: 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 41 56 5f 61  /.#define __AV_a
08e0: 6c 69 67 6e 6f 66 20 5f 5f 62 75 69 6c 74 69 6e  lignof __builtin
08f0: 5f 61 6c 69 67 6e 6f 66 0a 23 65 6c 73 65 0a 23  _alignof.#else.#
0900: 64 65 66 69 6e 65 20 5f 5f 41 56 5f 6f 66 66 73  define __AV_offs
0910: 65 74 6f 66 28 74 79 70 65 2c 69 64 65 6e 74 29  etof(type,ident)
0920: 20 20 28 28 75 6e 73 69 67 6e 65 64 20 6c 6f 6e    ((unsigned lon
0930: 67 29 26 28 28 28 74 79 70 65 2a 29 30 29 2d 3e  g)&(((type*)0)->
0940: 69 64 65 6e 74 29 29 0a 23 64 65 66 69 6e 65 20  ident)).#define 
0950: 5f 5f 41 56 5f 61 6c 69 67 6e 6f 66 28 74 79 70  __AV_alignof(typ
0960: 65 29 20 20 5f 5f 41 56 5f 6f 66 66 73 65 74 6f  e)  __AV_offseto
0970: 66 28 73 74 72 75 63 74 20 7b 20 63 68 61 72 20  f(struct { char 
0980: 5f 5f 73 6c 6f 74 31 3b 20 74 79 70 65 20 5f 5f  __slot1; type __
0990: 73 6c 6f 74 32 3b 20 7d 2c 20 5f 5f 73 6c 6f 74  slot2; }, __slot
09a0: 32 29 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69 66  2).#endif.#endif
09b0: 0a 0a 2f 2a 20 43 20 62 75 69 6c 74 69 6e 20 74  ../* C builtin t
09c0: 79 70 65 73 2e 0a 20 2a 2f 0a 23 69 66 20 64 65  ypes.. */.#if de
09d0: 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f  fined(__mipsn32_
09e0: 5f 29 0a 74 79 70 65 64 65 66 20 6c 6f 6e 67 20  _).typedef long 
09f0: 6c 6f 6e 67 20 5f 5f 61 76 77 6f 72 64 3b 0a 23  long __avword;.#
0a00: 65 6c 73 65 0a 74 79 70 65 64 65 66 20 6c 6f 6e  else.typedef lon
0a10: 67 20 5f 5f 61 76 77 6f 72 64 3b 0a 23 65 6e 64  g __avword;.#end
0a20: 69 66 0a 0a 65 6e 75 6d 20 5f 5f 41 56 74 79 70  if..enum __AVtyp
0a30: 65 0a 7b 0a 20 20 5f 5f 41 56 77 6f 72 64 2c 0a  e.{.  __AVword,.
0a40: 20 20 5f 5f 41 56 76 6f 69 64 2c 0a 20 20 5f 5f    __AVvoid,.  __
0a50: 41 56 63 68 61 72 2c 0a 20 20 5f 5f 41 56 73 63  AVchar,.  __AVsc
0a60: 68 61 72 2c 0a 20 20 5f 5f 41 56 75 63 68 61 72  har,.  __AVuchar
0a70: 2c 0a 20 20 5f 5f 41 56 73 68 6f 72 74 2c 0a 20  ,.  __AVshort,. 
0a80: 20 5f 5f 41 56 75 73 68 6f 72 74 2c 0a 20 20 5f   __AVushort,.  _
0a90: 5f 41 56 69 6e 74 2c 0a 20 20 5f 5f 41 56 75 69  _AVint,.  __AVui
0aa0: 6e 74 2c 0a 20 20 5f 5f 41 56 6c 6f 6e 67 2c 0a  nt,.  __AVlong,.
0ab0: 20 20 5f 5f 41 56 75 6c 6f 6e 67 2c 0a 20 20 5f    __AVulong,.  _
0ac0: 5f 41 56 6c 6f 6e 67 6c 6f 6e 67 2c 0a 20 20 5f  _AVlonglong,.  _
0ad0: 5f 41 56 75 6c 6f 6e 67 6c 6f 6e 67 2c 0a 20 20  _AVulonglong,.  
0ae0: 5f 5f 41 56 66 6c 6f 61 74 2c 0a 20 20 5f 5f 41  __AVfloat,.  __A
0af0: 56 64 6f 75 62 6c 65 2c 0a 20 20 5f 5f 41 56 76  Vdouble,.  __AVv
0b00: 6f 69 64 70 2c 0a 20 20 5f 5f 41 56 73 74 72 75  oidp,.  __AVstru
0b10: 63 74 0a 7d 3b 0a 0a 65 6e 75 6d 20 5f 5f 41 56  ct.};..enum __AV
0b20: 5f 61 6c 69 73 74 5f 66 6c 61 67 73 0a 7b 0a 0a  _alist_flags.{..
0b30: 20 20 2f 2a 20 68 6f 77 20 74 6f 20 72 65 74 75    /* how to retu
0b40: 72 6e 20 73 74 72 75 63 74 73 20 2a 2f 0a 20 20  rn structs */.  
0b50: 2f 2a 20 54 68 65 72 65 20 61 72 65 20 62 61 73  /* There are bas
0b60: 69 63 61 6c 6c 79 20 33 20 77 61 79 73 20 74 6f  ically 3 ways to
0b70: 20 72 65 74 75 72 6e 20 73 74 72 75 63 74 73 3a   return structs:
0b80: 0a 20 20 20 2a 20 61 2e 20 54 68 65 20 63 61 6c  .   * a. The cal
0b90: 6c 65 64 20 66 75 6e 63 74 69 6f 6e 20 72 65 74  led function ret
0ba0: 75 72 6e 73 20 61 20 70 6f 69 6e 74 65 72 20 74  urns a pointer t
0bb0: 6f 20 73 74 61 74 69 63 20 64 61 74 61 2e 20 4e  o static data. N
0bc0: 6f 74 20 72 65 65 6e 74 72 61 6e 74 2e 0a 20 20  ot reentrant..  
0bd0: 20 2a 20 62 2e 20 54 68 65 20 63 61 6c 6c 65 72   * b. The caller
0be0: 20 70 61 73 73 65 73 20 74 68 65 20 72 65 74 75   passes the retu
0bf0: 72 6e 20 73 74 72 75 63 74 75 72 65 20 61 64 64  rn structure add
0c00: 72 65 73 73 20 69 6e 20 61 20 64 65 64 69 63 61  ress in a dedica
0c10: 74 65 64 20 72 65 67 69 73 74 65 72 0a 20 20 20  ted register.   
0c20: 2a 20 20 20 20 6f 72 20 61 73 20 61 20 66 69 72  *    or as a fir
0c30: 73 74 20 28 6f 72 20 6c 61 73 74 29 2c 20 69 6e  st (or last), in
0c40: 76 69 73 69 62 6c 65 20 61 72 67 75 6d 65 6e 74  visible argument
0c50: 2e 20 54 68 65 20 63 61 6c 6c 65 64 20 66 75 6e  . The called fun
0c60: 63 74 69 6f 6e 20 73 74 6f 72 65 73 0a 20 20 20  ction stores.   
0c70: 2a 20 20 20 20 69 74 73 20 72 65 73 75 6c 74 20  *    its result 
0c80: 74 68 65 72 65 2e 0a 20 20 20 2a 20 63 2e 20 4c  there..   * c. L
0c90: 69 6b 65 20 62 2c 20 61 6e 64 20 74 68 65 20 63  ike b, and the c
0ca0: 61 6c 6c 65 64 20 66 75 6e 63 74 69 6f 6e 20 61  alled function a
0cb0: 6c 73 6f 20 72 65 74 75 72 6e 73 20 74 68 65 20  lso returns the 
0cc0: 72 65 74 75 72 6e 20 73 74 72 75 63 74 75 72 65  return structure
0cd0: 0a 20 20 20 2a 20 20 20 20 61 64 64 72 65 73 73  .   *    address
0ce0: 20 69 6e 20 74 68 65 20 72 65 74 75 72 6e 20 76   in the return v
0cf0: 61 6c 75 65 20 72 65 67 69 73 74 65 72 2e 20 28  alue register. (
0d00: 54 68 69 73 20 69 73 20 6e 6f 74 20 76 65 72 79  This is not very
0d10: 20 64 69 73 74 69 6e 67 75 69 73 68 61 62 6c 65   distinguishable
0d20: 0a 20 20 20 2a 20 20 20 20 66 72 6f 6d 20 62 2e  .   *    from b.
0d30: 29 0a 20 20 20 2a 20 49 6e 64 65 70 65 6e 64 65  ).   * Independe
0d40: 6e 74 6c 79 20 6f 66 20 74 68 69 73 2c 0a 20 20  ntly of this,.  
0d50: 20 2a 20 72 2e 20 73 6d 61 6c 6c 20 73 74 72 75   * r. small stru
0d60: 63 74 75 72 65 73 20 28 3c 3d 20 34 20 6f 72 20  ctures (<= 4 or 
0d70: 3c 3d 20 38 20 62 79 74 65 73 29 20 6d 61 79 20  <= 8 bytes) may 
0d80: 62 65 20 72 65 74 75 72 6e 65 64 20 69 6e 20 74  be returned in t
0d90: 68 65 20 72 65 74 75 72 6e 0a 20 20 20 2a 20 20  he return.   *  
0da0: 20 20 76 61 6c 75 65 20 72 65 67 69 73 74 65 72    value register
0db0: 28 73 29 2c 20 6f 72 0a 20 20 20 2a 20 6d 2e 20  (s), or.   * m. 
0dc0: 65 76 65 6e 20 73 6d 61 6c 6c 20 73 74 72 75 63  even small struc
0dd0: 74 75 72 65 73 20 61 72 65 20 70 61 73 73 65 64  tures are passed
0de0: 20 69 6e 20 6d 65 6d 6f 72 79 2e 0a 20 20 20 2a   in memory..   *
0df0: 2f 0a 20 20 2f 2a 20 67 63 63 2d 32 2e 36 2e 33  /.  /* gcc-2.6.3
0e00: 20 65 6d 70 6c 6f 79 73 20 74 68 65 20 66 6f 6c   employs the fol
0e10: 6c 6f 77 69 6e 67 20 73 74 72 61 74 65 67 79 3a  lowing strategy:
0e20: 0a 20 20 20 2a 20 20 20 2d 20 49 66 20 50 43 43  .   *   - If PCC
0e30: 5f 53 54 41 54 49 43 5f 53 54 52 55 43 54 5f 52  _STATIC_STRUCT_R
0e40: 45 54 55 52 4e 20 69 73 20 64 65 66 69 6e 65 64  ETURN is defined
0e50: 20 69 6e 20 74 68 65 20 6d 61 63 68 69 6e 65 20   in the machine 
0e60: 64 65 73 63 72 69 70 74 69 6f 6e 0a 20 20 20 2a  description.   *
0e70: 20 20 20 20 20 69 74 20 75 73 65 73 20 6d 65 74       it uses met
0e80: 68 6f 64 20 61 2c 20 65 6c 73 65 20 6d 65 74 68  hod a, else meth
0e90: 6f 64 20 63 2e 0a 20 20 20 2a 20 20 20 2d 20 49  od c..   *   - I
0ea0: 66 20 66 6c 61 67 5f 70 63 63 5f 73 74 72 75 63  f flag_pcc_struc
0eb0: 74 5f 72 65 74 75 72 6e 20 69 73 20 73 65 74 20  t_return is set 
0ec0: 28 65 69 74 68 65 72 20 62 79 20 2d 66 70 63 63  (either by -fpcc
0ed0: 2d 73 74 72 75 63 74 2d 72 65 74 75 72 6e 20 6f  -struct-return o
0ee0: 72 20 69 66 0a 20 20 20 2a 20 20 20 20 20 44 45  r if.   *     DE
0ef0: 46 41 55 4c 54 5f 50 43 43 5f 53 54 52 55 43 54  FAULT_PCC_STRUCT
0f00: 5f 52 45 54 55 52 4e 20 69 73 20 64 65 66 69 6e  _RETURN is defin
0f10: 65 64 20 74 6f 20 31 20 69 6e 20 74 68 65 20 6d  ed to 1 in the m
0f20: 61 63 68 69 6e 65 20 64 65 73 63 72 69 70 74 69  achine descripti
0f30: 6f 6e 29 0a 20 20 20 2a 20 20 20 20 20 69 74 20  on).   *     it 
0f40: 75 73 65 73 20 6d 65 74 68 6f 64 20 6d 2c 20 65  uses method m, e
0f50: 6c 73 65 20 28 65 69 74 68 65 72 20 62 79 20 2d  lse (either by -
0f60: 66 72 65 67 2d 73 74 72 75 63 74 2d 72 65 74 75  freg-struct-retu
0f70: 72 6e 20 6f 72 20 69 66 0a 20 20 20 2a 20 20 20  rn or if.   *   
0f80: 20 20 44 45 46 41 55 4c 54 5f 50 43 43 5f 53 54    DEFAULT_PCC_ST
0f90: 52 55 43 54 5f 52 45 54 55 52 4e 20 69 73 20 64  RUCT_RETURN is d
0fa0: 65 66 69 6e 65 64 20 74 6f 20 30 20 69 6e 20 74  efined to 0 in t
0fb0: 68 65 20 6d 61 63 68 69 6e 65 20 64 65 73 63 72  he machine descr
0fc0: 69 70 74 69 6f 6e 29 0a 20 20 20 2a 20 20 20 20  iption).   *    
0fd0: 20 6d 65 74 68 6f 64 20 72 2e 0a 20 20 20 2a 2f   method r..   */
0fe0: 0a 20 20 5f 5f 41 56 5f 50 43 43 5f 53 54 52 55  .  __AV_PCC_STRU
0ff0: 43 54 5f 52 45 54 55 52 4e 09 3d 20 31 3c 3c 30  CT_RETURN.= 1<<0
1000: 2c 09 2f 2a 20 61 3a 20 6e 65 65 64 20 74 6f 20  ,./* a: need to 
1010: 63 6f 70 79 20 74 68 65 20 73 74 72 75 63 74 20  copy the struct 
1020: 2a 2f 0a 20 20 5f 5f 41 56 5f 53 4d 41 4c 4c 5f  */.  __AV_SMALL_
1030: 53 54 52 55 43 54 5f 52 45 54 55 52 4e 09 3d 20  STRUCT_RETURN.= 
1040: 31 3c 3c 31 2c 09 2f 2a 20 72 3a 20 73 70 65 63  1<<1,./* r: spec
1050: 69 61 6c 20 63 61 73 65 20 66 6f 72 20 73 6d 61  ial case for sma
1060: 6c 6c 20 73 74 72 75 63 74 73 20 2a 2f 0a 20 20  ll structs */.  
1070: 5f 5f 41 56 5f 47 43 43 5f 53 54 52 55 43 54 5f  __AV_GCC_STRUCT_
1080: 52 45 54 55 52 4e 09 3d 20 31 3c 3c 32 2c 09 2f  RETURN.= 1<<2,./
1090: 2a 20 63 6f 6e 73 69 64 65 72 20 38 20 62 79 74  * consider 8 byt
10a0: 65 20 73 74 72 75 63 74 73 20 61 73 20 73 6d 61  e structs as sma
10b0: 6c 6c 20 2a 2f 0a 23 69 66 20 64 65 66 69 6e 65  ll */.#if define
10c0: 64 28 5f 5f 73 70 61 72 63 5f 5f 29 20 26 26 20  d(__sparc__) && 
10d0: 21 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63  !defined(__sparc
10e0: 36 34 5f 5f 29 0a 20 20 5f 5f 41 56 5f 53 55 4e  64__).  __AV_SUN
10f0: 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e  CC_STRUCT_RETURN
1100: 09 3d 20 31 3c 3c 33 2c 0a 20 20 5f 5f 41 56 5f  .= 1<<3,.  __AV_
1110: 53 55 4e 50 52 4f 43 43 5f 53 54 52 55 43 54 5f  SUNPROCC_STRUCT_
1120: 52 45 54 55 52 4e 09 3d 20 31 3c 3c 34 2c 0a 23  RETURN.= 1<<4,.#
1130: 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65  endif.#if define
1140: 64 28 5f 5f 69 33 38 36 5f 5f 29 0a 20 20 5f 5f  d(__i386__).  __
1150: 41 56 5f 4e 45 58 54 47 43 43 5f 53 54 52 55 43  AV_NEXTGCC_STRUC
1160: 54 5f 52 45 54 55 52 4e 09 3d 20 31 3c 3c 33 2c  T_RETURN.= 1<<3,
1170: 0a 20 20 5f 5f 41 56 5f 4d 53 56 43 5f 53 54 52  .  __AV_MSVC_STR
1180: 55 43 54 5f 52 45 54 55 52 4e 09 3d 20 31 3c 3c  UCT_RETURN.= 1<<
1190: 34 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65  4,.#endif.#if de
11a0: 66 69 6e 65 64 28 5f 5f 68 70 70 61 5f 5f 29 0a  fined(__hppa__).
11b0: 20 20 5f 5f 41 56 5f 4f 4c 44 47 43 43 5f 53 54    __AV_OLDGCC_ST
11c0: 52 55 43 54 5f 52 45 54 55 52 4e 09 3d 20 31 3c  RUCT_RETURN.= 1<
11d0: 3c 33 2c 0a 23 65 6e 64 69 66 0a 20 20 2f 2a 20  <3,.#endif.  /* 
11e0: 74 68 65 20 64 65 66 61 75 6c 74 20 77 61 79 20  the default way 
11f0: 74 6f 20 72 65 74 75 72 6e 20 73 74 72 75 63 74  to return struct
1200: 73 20 2a 2f 0a 20 20 2f 2a 20 54 68 69 73 20 63  s */.  /* This c
1210: 68 6f 69 63 65 20 68 65 72 65 20 69 73 20 62 61  hoice here is ba
1220: 73 65 64 20 6f 6e 20 74 68 65 20 61 73 73 75 6d  sed on the assum
1230: 70 74 69 6f 6e 20 74 68 61 74 20 74 68 65 20 66  ption that the f
1240: 75 6e 63 74 69 6f 6e 20 79 6f 75 20 61 72 65 0a  unction you are.
1250: 20 20 20 2a 20 67 6f 69 6e 67 20 74 6f 20 63 61     * going to ca
1260: 6c 6c 20 68 61 73 20 62 65 65 6e 20 63 6f 6d 70  ll has been comp
1270: 69 6c 65 64 20 77 69 74 68 20 74 68 65 20 73 61  iled with the sa
1280: 6d 65 20 63 6f 6d 70 69 6c 65 72 20 79 6f 75 20  me compiler you 
1290: 61 72 65 20 75 73 69 6e 67 20 74 6f 0a 20 20 20  are using to.   
12a0: 2a 20 69 6e 63 6c 75 64 65 20 74 68 69 73 20 66  * include this f
12b0: 69 6c 65 2e 0a 20 20 20 2a 20 49 66 20 79 6f 75  ile..   * If you
12c0: 20 77 61 6e 74 20 74 6f 20 63 61 6c 6c 20 66 75   want to call fu
12d0: 6e 63 74 69 6f 6e 73 20 77 69 74 68 20 61 6e 6f  nctions with ano
12e0: 74 68 65 72 20 73 74 72 75 63 74 20 72 65 74 75  ther struct retu
12f0: 72 6e 69 6e 67 20 63 6f 6e 76 65 6e 74 69 6f 6e  rning convention
1300: 2c 0a 20 20 20 2a 20 6a 75 73 74 20 20 23 64 65  ,.   * just  #de
1310: 66 69 6e 65 20 5f 5f 41 56 5f 53 54 52 55 43 54  fine __AV_STRUCT
1320: 5f 52 45 54 55 52 4e 20 2e 2e 2e 0a 20 20 20 2a  _RETURN ....   *
1330: 20 62 65 66 6f 72 65 20 6f 72 20 61 66 74 65 72   before or after
1340: 20 23 69 6e 63 6c 75 64 69 6e 67 20 3c 61 76 63   #including <avc
1350: 61 6c 6c 2e 68 3e 2e 0a 20 20 20 2a 2f 0a 23 69  all.h>..   */.#i
1360: 66 6e 64 65 66 20 5f 5f 41 56 5f 53 54 52 55 43  fndef __AV_STRUC
1370: 54 5f 52 45 54 55 52 4e 0a 20 20 5f 5f 41 56 5f  T_RETURN.  __AV_
1380: 53 54 52 55 43 54 5f 52 45 54 55 52 4e 09 09 3d  STRUCT_RETURN..=
1390: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 73  .#if defined(__s
13a0: 70 61 72 63 5f 5f 29 20 26 26 20 21 64 65 66 69  parc__) && !defi
13b0: 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29  ned(__sparc64__)
13c0: 20 26 26 20 64 65 66 69 6e 65 64 28 73 75 6e 29   && defined(sun)
13d0: 20 26 26 20 64 65 66 69 6e 65 64 28 5f 5f 53 55   && defined(__SU
13e0: 4e 50 52 4f 5f 43 29 20 2f 2a 20 53 55 4e 57 73  NPRO_C) /* SUNWs
13f0: 70 72 6f 20 63 63 20 2a 2f 0a 09 09 09 09 20 20  pro cc */.....  
1400: 5f 5f 41 56 5f 53 55 4e 50 52 4f 43 43 5f 53 54  __AV_SUNPROCC_ST
1410: 52 55 43 54 5f 52 45 54 55 52 4e 2c 0a 23 65 6c  RUCT_RETURN,.#el
1420: 73 65 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f  se.#if defined(_
1430: 5f 50 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55  _PCC_STRUCT_RETU
1440: 52 4e 5f 5f 29 20 2f 2a 20 64 65 66 69 6e 65 64  RN__) /* defined
1450: 20 74 68 72 6f 75 67 68 20 63 6f 6e 66 69 67 75   through configu
1460: 72 65 2c 20 73 65 65 20 61 62 6f 76 65 20 2a 2f  re, see above */
1470: 0a 09 09 09 09 20 20 5f 5f 41 56 5f 50 43 43 5f  .....  __AV_PCC_
1480: 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20 7c 0a  STRUCT_RETURN |.
1490: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 73 70  #if defined(__sp
14a0: 61 72 63 5f 5f 29 20 26 26 20 21 64 65 66 69 6e  arc__) && !defin
14b0: 65 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29 20  ed(__sparc64__) 
14c0: 26 26 20 64 65 66 69 6e 65 64 28 73 75 6e 29 20  && defined(sun) 
14d0: 26 26 20 21 28 64 65 66 69 6e 65 64 28 5f 5f 53  && !(defined(__S
14e0: 54 44 43 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65  TDC__) || define
14f0: 64 28 5f 5f 47 4e 55 43 5f 5f 29 29 20 2f 2a 20  d(__GNUC__)) /* 
1500: 73 75 6e 20 63 63 20 2a 2f 0a 20 20 09 09 09 09  sun cc */.  ....
1510: 20 20 5f 5f 41 56 5f 53 55 4e 43 43 5f 53 54 52    __AV_SUNCC_STR
1520: 55 43 54 5f 52 45 54 55 52 4e 2c 0a 23 65 6c 73  UCT_RETURN,.#els
1530: 65 0a 20 20 09 09 09 09 20 20 30 2c 0a 23 65 6e  e.  ....  0,.#en
1540: 64 69 66 0a 23 65 6c 73 65 0a 23 69 66 20 64 65  dif.#else.#if de
1550: 66 69 6e 65 64 28 5f 5f 53 4d 41 4c 4c 5f 53 54  fined(__SMALL_ST
1560: 52 55 43 54 5f 52 45 54 55 52 4e 5f 5f 29 20 7c  RUCT_RETURN__) |
1570: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73  | defined(__mips
1580: 6e 33 32 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65  n32__) || define
1590: 64 28 5f 5f 6d 69 70 73 36 34 5f 5f 29 20 2f 2a  d(__mips64__) /*
15a0: 20 64 65 66 69 6e 65 64 20 74 68 72 6f 75 67 68   defined through
15b0: 20 63 6f 6e 66 69 67 75 72 65 2c 20 73 65 65 20   configure, see 
15c0: 61 62 6f 76 65 20 2a 2f 0a 09 09 09 09 20 20 5f  above */.....  _
15d0: 5f 41 56 5f 53 4d 41 4c 4c 5f 53 54 52 55 43 54  _AV_SMALL_STRUCT
15e0: 5f 52 45 54 55 52 4e 20 7c 0a 23 65 6e 64 69 66  _RETURN |.#endif
15f0: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 47  .#if defined(__G
1600: 4e 55 43 5f 5f 29 0a 09 09 09 09 20 20 5f 5f 41  NUC__).....  __A
1610: 56 5f 47 43 43 5f 53 54 52 55 43 54 5f 52 45 54  V_GCC_STRUCT_RET
1620: 55 52 4e 20 7c 0a 23 65 6e 64 69 66 0a 23 69 66  URN |.#endif.#if
1630: 20 64 65 66 69 6e 65 64 28 5f 5f 69 33 38 36 5f   defined(__i386_
1640: 5f 29 20 26 26 20 64 65 66 69 6e 65 64 28 4e 65  _) && defined(Ne
1650: 58 54 29 20 26 26 20 64 65 66 69 6e 65 64 28 5f  XT) && defined(_
1660: 5f 47 4e 55 43 5f 5f 29 20 2f 2a 20 4e 65 58 54  _GNUC__) /* NeXT
1670: 20 67 63 63 2d 32 2e 35 2e 38 20 2a 2f 0a 09 09   gcc-2.5.8 */...
1680: 09 09 20 20 5f 5f 41 56 5f 4e 45 58 54 47 43 43  ..  __AV_NEXTGCC
1690: 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20 7c  _STRUCT_RETURN |
16a0: 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69  .#endif.#if defi
16b0: 6e 65 64 28 5f 5f 69 33 38 36 5f 5f 29 20 26 26  ned(__i386__) &&
16c0: 20 64 65 66 69 6e 65 64 28 5f 4d 53 43 5f 56 45   defined(_MSC_VE
16d0: 52 29 20 2f 2a 20 4d 53 56 43 20 34 2e 30 20 2a  R) /* MSVC 4.0 *
16e0: 2f 0a 09 09 09 09 20 20 5f 5f 41 56 5f 4d 53 56  /.....  __AV_MSV
16f0: 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20  C_STRUCT_RETURN 
1700: 7c 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66  |.#endif.#if def
1710: 69 6e 65 64 28 5f 5f 68 70 70 61 5f 5f 29 20 26  ined(__hppa__) &
1720: 26 20 64 65 66 69 6e 65 64 28 5f 5f 47 4e 55 43  & defined(__GNUC
1730: 5f 5f 29 20 26 26 20 28 5f 5f 47 4e 55 43 5f 5f  __) && (__GNUC__
1740: 20 3c 20 33 29 20 26 26 20 28 5f 5f 47 4e 55 43   < 3) && (__GNUC
1750: 5f 4d 49 4e 4f 52 5f 5f 20 3c 20 37 29 0a 09 09  _MINOR__ < 7)...
1760: 09 09 20 20 5f 5f 41 56 5f 4f 4c 44 47 43 43 5f  ..  __AV_OLDGCC_
1770: 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20 7c 0a  STRUCT_RETURN |.
1780: 23 65 6e 64 69 66 0a 20 20 09 09 09 09 20 20 30  #endif.  ....  0
1790: 2c 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69 66 0a  ,.#endif.#endif.
17a0: 23 65 6e 64 69 66 0a 0a 20 20 2f 2a 20 68 6f 77  #endif..  /* how
17b0: 20 74 6f 20 72 65 74 75 72 6e 20 66 6c 6f 61 74   to return float
17c0: 73 20 2a 2f 0a 23 69 66 20 64 65 66 69 6e 65 64  s */.#if defined
17d0: 28 5f 5f 6d 36 38 6b 5f 5f 29 20 7c 7c 20 28 64  (__m68k__) || (d
17e0: 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f 5f  efined(__sparc__
17f0: 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f  ) && !defined(__
1800: 73 70 61 72 63 36 34 5f 5f 29 29 0a 20 20 5f 5f  sparc64__)).  __
1810: 41 56 5f 53 55 4e 43 43 5f 46 4c 4f 41 54 5f 52  AV_SUNCC_FLOAT_R
1820: 45 54 55 52 4e 09 3d 20 31 3c 3c 35 2c 0a 23 65  ETURN.= 1<<5,.#e
1830: 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64  ndif.#if defined
1840: 28 5f 5f 6d 36 38 6b 5f 5f 29 0a 20 20 5f 5f 41  (__m68k__).  __A
1850: 56 5f 46 52 45 47 5f 46 4c 4f 41 54 5f 52 45 54  V_FREG_FLOAT_RET
1860: 55 52 4e 09 3d 20 31 3c 3c 36 2c 0a 23 65 6e 64  URN.= 1<<6,.#end
1870: 69 66 0a 20 20 2f 2a 20 74 68 65 20 64 65 66 61  if.  /* the defa
1880: 75 6c 74 20 77 61 79 20 74 6f 20 72 65 74 75 72  ult way to retur
1890: 6e 20 66 6c 6f 61 74 73 20 2a 2f 0a 20 20 2f 2a  n floats */.  /*
18a0: 20 54 68 69 73 20 63 68 6f 69 63 65 20 68 65 72   This choice her
18b0: 65 20 69 73 20 62 61 73 65 64 20 6f 6e 20 74 68  e is based on th
18c0: 65 20 61 73 73 75 6d 70 74 69 6f 6e 20 74 68 61  e assumption tha
18d0: 74 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 79  t the function y
18e0: 6f 75 20 61 72 65 0a 20 20 20 2a 20 67 6f 69 6e  ou are.   * goin
18f0: 67 20 74 6f 20 63 61 6c 6c 20 68 61 73 20 62 65  g to call has be
1900: 65 6e 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68  en compiled with
1910: 20 74 68 65 20 73 61 6d 65 20 63 6f 6d 70 69 6c   the same compil
1920: 65 72 20 79 6f 75 20 61 72 65 20 75 73 69 6e 67  er you are using
1930: 20 74 6f 0a 20 20 20 2a 20 69 6e 63 6c 75 64 65   to.   * include
1940: 20 74 68 69 73 20 66 69 6c 65 2e 0a 20 20 20 2a   this file..   *
1950: 20 49 66 20 79 6f 75 20 77 61 6e 74 20 74 6f 20   If you want to 
1960: 63 61 6c 6c 20 66 75 6e 63 74 69 6f 6e 73 20 77  call functions w
1970: 69 74 68 20 61 6e 6f 74 68 65 72 20 66 6c 6f 61  ith another floa
1980: 74 20 72 65 74 75 72 6e 69 6e 67 20 63 6f 6e 76  t returning conv
1990: 65 6e 74 69 6f 6e 2c 0a 20 20 20 2a 20 6a 75 73  ention,.   * jus
19a0: 74 20 20 23 64 65 66 69 6e 65 20 5f 5f 41 56 5f  t  #define __AV_
19b0: 46 4c 4f 41 54 5f 52 45 54 55 52 4e 20 2e 2e 2e  FLOAT_RETURN ...
19c0: 0a 20 20 20 2a 20 62 65 66 6f 72 65 20 6f 72 20  .   * before or 
19d0: 61 66 74 65 72 20 23 69 6e 63 6c 75 64 69 6e 67  after #including
19e0: 20 3c 61 76 63 61 6c 6c 2e 68 3e 2e 0a 20 20 20   <avcall.h>..   
19f0: 2a 2f 0a 23 69 66 6e 64 65 66 20 5f 5f 41 56 5f  */.#ifndef __AV_
1a00: 46 4c 4f 41 54 5f 52 45 54 55 52 4e 0a 23 69 66  FLOAT_RETURN.#if
1a10: 20 28 64 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b   (defined(__m68k
1a20: 5f 5f 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28  __) || (defined(
1a30: 5f 5f 73 70 61 72 63 5f 5f 29 20 26 26 20 21 64  __sparc__) && !d
1a40: 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34  efined(__sparc64
1a50: 5f 5f 29 29 29 20 26 26 20 21 64 65 66 69 6e 65  __))) && !define
1a60: 64 28 5f 5f 47 4e 55 43 5f 5f 29 20 26 26 20 64  d(__GNUC__) && d
1a70: 65 66 69 6e 65 64 28 73 75 6e 29 20 26 26 20 21  efined(sun) && !
1a80: 64 65 66 69 6e 65 64 28 5f 5f 53 55 4e 50 52 4f  defined(__SUNPRO
1a90: 5f 43 29 20 20 2f 2a 20 73 75 6e 20 63 63 20 2a  _C)  /* sun cc *
1aa0: 2f 0a 20 20 5f 5f 41 56 5f 46 4c 4f 41 54 5f 52  /.  __AV_FLOAT_R
1ab0: 45 54 55 52 4e 09 09 3d 20 5f 5f 41 56 5f 53 55  ETURN..= __AV_SU
1ac0: 4e 43 43 5f 46 4c 4f 41 54 5f 52 45 54 55 52 4e  NCC_FLOAT_RETURN
1ad0: 2c 0a 23 65 6c 69 66 20 28 64 65 66 69 6e 65 64  ,.#elif (defined
1ae0: 28 5f 5f 6d 36 38 6b 5f 5f 29 20 26 26 20 21 64  (__m68k__) && !d
1af0: 65 66 69 6e 65 64 28 5f 5f 49 52 45 47 5f 46 4c  efined(__IREG_FL
1b00: 4f 41 54 5f 52 45 54 55 52 4e 5f 5f 29 29 0a 20  OAT_RETURN__)). 
1b10: 20 5f 5f 41 56 5f 46 4c 4f 41 54 5f 52 45 54 55   __AV_FLOAT_RETU
1b20: 52 4e 09 09 3d 20 5f 5f 41 56 5f 46 52 45 47 5f  RN..= __AV_FREG_
1b30: 46 4c 4f 41 54 5f 52 45 54 55 52 4e 2c 0a 23 65  FLOAT_RETURN,.#e
1b40: 6c 73 65 0a 20 20 5f 5f 41 56 5f 46 4c 4f 41 54  lse.  __AV_FLOAT
1b50: 5f 52 45 54 55 52 4e 09 09 3d 20 30 2c 0a 23 65  _RETURN..= 0,.#e
1b60: 6e 64 69 66 0a 23 65 6e 64 69 66 0a 0a 20 20 2f  ndif.#endif..  /
1b70: 2a 20 68 6f 77 20 74 6f 20 70 61 73 73 20 73 74  * how to pass st
1b80: 72 75 63 74 73 20 2a 2f 0a 23 69 66 20 64 65 66  ructs */.#if def
1b90: 69 6e 65 64 28 5f 5f 6d 69 70 73 5f 5f 29 20 7c  ined(__mips__) |
1ba0: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73  | defined(__mips
1bb0: 6e 33 32 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65  n32__) || define
1bc0: 64 28 5f 5f 6d 69 70 73 36 34 5f 5f 29 0a 20 20  d(__mips64__).  
1bd0: 5f 5f 41 56 5f 53 47 49 43 43 5f 53 54 52 55 43  __AV_SGICC_STRUC
1be0: 54 5f 41 52 47 53 09 3d 20 31 3c 3c 37 2c 0a 23  T_ARGS.= 1<<7,.#
1bf0: 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65  endif.#if define
1c00: 64 28 5f 5f 72 73 36 30 30 30 5f 5f 29 0a 20 20  d(__rs6000__).  
1c10: 5f 5f 41 56 5f 41 49 58 43 43 5f 53 54 52 55 43  __AV_AIXCC_STRUC
1c20: 54 5f 41 52 47 53 09 3d 20 31 3c 3c 37 2c 0a 23  T_ARGS.= 1<<7,.#
1c30: 65 6e 64 69 66 0a 20 20 2f 2a 20 74 68 65 20 64  endif.  /* the d
1c40: 65 66 61 75 6c 74 20 77 61 79 20 74 6f 20 70 61  efault way to pa
1c50: 73 73 20 66 6c 6f 61 74 73 20 2a 2f 0a 20 20 2f  ss floats */.  /
1c60: 2a 20 54 68 69 73 20 63 68 6f 69 63 65 20 68 65  * This choice he
1c70: 72 65 20 69 73 20 62 61 73 65 64 20 6f 6e 20 74  re is based on t
1c80: 68 65 20 61 73 73 75 6d 70 74 69 6f 6e 20 74 68  he assumption th
1c90: 61 74 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20  at the function 
1ca0: 79 6f 75 20 61 72 65 0a 20 20 20 2a 20 67 6f 69  you are.   * goi
1cb0: 6e 67 20 74 6f 20 63 61 6c 6c 20 68 61 73 20 62  ng to call has b
1cc0: 65 65 6e 20 63 6f 6d 70 69 6c 65 64 20 77 69 74  een compiled wit
1cd0: 68 20 74 68 65 20 73 61 6d 65 20 63 6f 6d 70 69  h the same compi
1ce0: 6c 65 72 20 79 6f 75 20 61 72 65 20 75 73 69 6e  ler you are usin
1cf0: 67 20 74 6f 0a 20 20 20 2a 20 69 6e 63 6c 75 64  g to.   * includ
1d00: 65 20 74 68 69 73 20 66 69 6c 65 2e 0a 20 20 20  e this file..   
1d10: 2a 20 49 66 20 79 6f 75 20 77 61 6e 74 20 74 6f  * If you want to
1d20: 20 63 61 6c 6c 20 66 75 6e 63 74 69 6f 6e 73 20   call functions 
1d30: 77 69 74 68 20 61 6e 6f 74 68 65 72 20 66 6c 6f  with another flo
1d40: 61 74 20 70 61 73 73 69 6e 67 20 63 6f 6e 76 65  at passing conve
1d50: 6e 74 69 6f 6e 2c 0a 20 20 20 2a 20 6a 75 73 74  ntion,.   * just
1d60: 20 20 23 64 65 66 69 6e 65 20 5f 5f 41 56 5f 53    #define __AV_S
1d70: 54 52 55 43 54 5f 41 52 47 53 20 2e 2e 2e 0a 20  TRUCT_ARGS .... 
1d80: 20 20 2a 20 62 65 66 6f 72 65 20 6f 72 20 61 66    * before or af
1d90: 74 65 72 20 23 69 6e 63 6c 75 64 69 6e 67 20 3c  ter #including <
1da0: 61 76 63 61 6c 6c 2e 68 3e 2e 0a 20 20 20 2a 2f  avcall.h>..   */
1db0: 0a 23 69 66 6e 64 65 66 20 5f 5f 41 56 5f 53 54  .#ifndef __AV_ST
1dc0: 52 55 43 54 5f 41 52 47 53 0a 23 69 66 20 28 64  RUCT_ARGS.#if (d
1dd0: 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 5f 5f 29  efined(__mips__)
1de0: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69   || defined(__mi
1df0: 70 73 6e 33 32 5f 5f 29 20 7c 7c 20 64 65 66 69  psn32__) || defi
1e00: 6e 65 64 28 5f 5f 6d 69 70 73 36 34 5f 5f 29 29  ned(__mips64__))
1e10: 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 47   && !defined(__G
1e20: 4e 55 43 5f 5f 29 20 2f 2a 20 53 47 49 20 6d 69  NUC__) /* SGI mi
1e30: 70 73 20 63 63 20 2a 2f 0a 20 20 5f 5f 41 56 5f  ps cc */.  __AV_
1e40: 53 54 52 55 43 54 5f 41 52 47 53 09 09 3d 20 5f  STRUCT_ARGS..= _
1e50: 5f 41 56 5f 53 47 49 43 43 5f 53 54 52 55 43 54  _AV_SGICC_STRUCT
1e60: 5f 41 52 47 53 2c 0a 23 65 6c 73 65 0a 23 69 66  _ARGS,.#else.#if
1e70: 20 64 65 66 69 6e 65 64 28 5f 5f 72 73 36 30 30   defined(__rs600
1e80: 30 5f 5f 29 20 26 26 20 64 65 66 69 6e 65 64 28  0__) && defined(
1e90: 5f 41 49 58 29 20 26 26 20 21 64 65 66 69 6e 65  _AIX) && !define
1ea0: 64 28 5f 5f 47 4e 55 43 5f 5f 29 20 2f 2a 20 41  d(__GNUC__) /* A
1eb0: 49 58 20 63 63 2c 20 78 6c 63 20 2a 2f 0a 20 20  IX cc, xlc */.  
1ec0: 5f 5f 41 56 5f 53 54 52 55 43 54 5f 41 52 47 53  __AV_STRUCT_ARGS
1ed0: 09 09 3d 20 5f 5f 41 56 5f 41 49 58 43 43 5f 53  ..= __AV_AIXCC_S
1ee0: 54 52 55 43 54 5f 41 52 47 53 2c 0a 23 65 6c 73  TRUCT_ARGS,.#els
1ef0: 65 0a 20 20 5f 5f 41 56 5f 53 54 52 55 43 54 5f  e.  __AV_STRUCT_
1f00: 41 52 47 53 09 09 3d 20 30 2c 0a 23 65 6e 64 69  ARGS..= 0,.#endi
1f10: 66 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69 66 0a  f.#endif.#endif.
1f20: 0a 20 20 2f 2a 20 68 6f 77 20 74 6f 20 70 61 73  .  /* how to pas
1f30: 73 20 66 6c 6f 61 74 73 20 2a 2f 0a 20 20 2f 2a  s floats */.  /*
1f40: 20 41 4e 53 49 20 43 20 63 6f 6d 70 69 6c 65 72   ANSI C compiler
1f50: 73 20 61 6e 64 20 47 4e 55 20 67 63 63 20 70 61  s and GNU gcc pa
1f60: 73 73 20 66 6c 6f 61 74 73 20 61 73 20 66 6c 6f  ss floats as flo
1f70: 61 74 73 2e 0a 20 20 20 2a 20 4b 26 52 20 43 20  ats..   * K&R C 
1f80: 63 6f 6d 70 69 6c 65 72 73 20 70 61 73 73 20 66  compilers pass f
1f90: 6c 6f 61 74 73 20 61 73 20 64 6f 75 62 6c 65 73  loats as doubles
1fa0: 2e 0a 20 20 20 2a 20 28 45 78 63 65 70 74 20 73  ..   * (Except s
1fb0: 6f 6d 65 20 63 6f 6d 70 69 6c 65 72 73 20 6c 69  ome compilers li
1fc0: 6b 65 20 53 47 49 20 4d 49 50 53 20 22 63 63 22  ke SGI MIPS "cc"
1fd0: 20 61 6e 64 20 22 63 63 20 2d 63 63 6b 72 22 20   and "cc -cckr" 
1fe0: 69 66 20 61 20 70 72 6f 74 6f 74 79 70 65 20 69  if a prototype i
1ff0: 73 0a 20 20 20 2a 20 6b 6e 6f 77 6e 20 66 6f 72  s.   * known for
2000: 20 74 68 65 20 63 61 6c 6c 65 64 20 66 75 6e 63   the called func
2010: 74 69 6f 6e 73 2e 20 42 75 74 20 74 6f 20 63 6f  tions. But to co
2020: 6d 70 69 6c 65 20 61 20 70 72 6f 67 72 61 6d 20  mpile a program 
2030: 77 69 74 68 20 70 72 6f 74 6f 74 79 70 65 73 2c  with prototypes,
2040: 0a 20 20 20 2a 20 22 63 63 20 2d 61 6e 73 69 22  .   * "cc -ansi"
2050: 20 69 73 20 62 65 74 74 65 72 20 61 6e 79 77 61   is better anywa
2060: 79 2e 0a 20 20 20 2a 2f 0a 20 20 5f 5f 41 56 5f  y..   */.  __AV_
2070: 41 4e 53 49 5f 46 4c 4f 41 54 5f 41 52 47 53 09  ANSI_FLOAT_ARGS.
2080: 09 3d 20 30 2c 20 20 20 20 2f 2a 20 70 61 73 73  .= 0,    /* pass
2090: 20 66 6c 6f 61 74 73 20 61 73 20 66 6c 6f 61 74   floats as float
20a0: 73 20 2a 2f 0a 20 20 5f 5f 41 56 5f 54 52 41 44  s */.  __AV_TRAD
20b0: 49 54 49 4f 4e 41 4c 5f 46 4c 4f 41 54 5f 41 52  ITIONAL_FLOAT_AR
20c0: 47 53 09 3d 20 31 3c 3c 38 2c 20 2f 2a 20 70 61  GS.= 1<<8, /* pa
20d0: 73 73 20 66 6c 6f 61 74 73 20 61 73 20 64 6f 75  ss floats as dou
20e0: 62 6c 65 73 20 2a 2f 0a 20 20 2f 2a 20 74 68 65  bles */.  /* the
20f0: 20 64 65 66 61 75 6c 74 20 77 61 79 20 74 6f 20   default way to 
2100: 70 61 73 73 20 66 6c 6f 61 74 73 20 2a 2f 0a 20  pass floats */. 
2110: 20 2f 2a 20 54 68 69 73 20 63 68 6f 69 63 65 20   /* This choice 
2120: 68 65 72 65 20 69 73 20 62 61 73 65 64 20 6f 6e  here is based on
2130: 20 74 68 65 20 61 73 73 75 6d 70 74 69 6f 6e 20   the assumption 
2140: 74 68 61 74 20 74 68 65 20 66 75 6e 63 74 69 6f  that the functio
2150: 6e 20 79 6f 75 20 61 72 65 0a 20 20 20 2a 20 67  n you are.   * g
2160: 6f 69 6e 67 20 74 6f 20 63 61 6c 6c 20 68 61 73  oing to call has
2170: 20 62 65 65 6e 20 63 6f 6d 70 69 6c 65 64 20 77   been compiled w
2180: 69 74 68 20 74 68 65 20 73 61 6d 65 20 63 6f 6d  ith the same com
2190: 70 69 6c 65 72 20 79 6f 75 20 61 72 65 20 75 73  piler you are us
21a0: 69 6e 67 20 74 6f 0a 20 20 20 2a 20 69 6e 63 6c  ing to.   * incl
21b0: 75 64 65 20 74 68 69 73 20 66 69 6c 65 2e 0a 20  ude this file.. 
21c0: 20 20 2a 20 49 66 20 79 6f 75 20 77 61 6e 74 20    * If you want 
21d0: 74 6f 20 63 61 6c 6c 20 66 75 6e 63 74 69 6f 6e  to call function
21e0: 73 20 77 69 74 68 20 61 6e 6f 74 68 65 72 20 66  s with another f
21f0: 6c 6f 61 74 20 70 61 73 73 69 6e 67 20 63 6f 6e  loat passing con
2200: 76 65 6e 74 69 6f 6e 2c 0a 20 20 20 2a 20 6a 75  vention,.   * ju
2210: 73 74 20 20 23 64 65 66 69 6e 65 20 5f 5f 41 56  st  #define __AV
2220: 5f 46 4c 4f 41 54 5f 41 52 47 53 20 2e 2e 2e 0a  _FLOAT_ARGS ....
2230: 20 20 20 2a 20 62 65 66 6f 72 65 20 6f 72 20 61     * before or a
2240: 66 74 65 72 20 23 69 6e 63 6c 75 64 69 6e 67 20  fter #including 
2250: 3c 61 76 63 61 6c 6c 2e 68 3e 2e 0a 20 20 20 2a  <avcall.h>..   *
2260: 2f 0a 23 69 66 6e 64 65 66 20 5f 5f 41 56 5f 46  /.#ifndef __AV_F
2270: 4c 4f 41 54 5f 41 52 47 53 0a 23 69 66 20 64 65  LOAT_ARGS.#if de
2280: 66 69 6e 65 64 28 5f 5f 53 54 44 43 5f 5f 29 20  fined(__STDC__) 
2290: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 47 4e 55  || defined(__GNU
22a0: 43 5f 5f 29 20 2f 2a 20 77 68 61 74 20 61 62 6f  C__) /* what abo
22b0: 75 74 20 68 70 70 61 20 22 63 63 20 2d 41 61 22  ut hppa "cc -Aa"
22c0: 20 3f 3f 20 2a 2f 0a 20 20 5f 5f 41 56 5f 46 4c   ?? */.  __AV_FL
22d0: 4f 41 54 5f 41 52 47 53 09 09 3d 20 5f 5f 41 56  OAT_ARGS..= __AV
22e0: 5f 41 4e 53 49 5f 46 4c 4f 41 54 5f 41 52 47 53  _ANSI_FLOAT_ARGS
22f0: 2c 0a 23 65 6c 73 65 0a 20 20 5f 5f 41 56 5f 46  ,.#else.  __AV_F
2300: 4c 4f 41 54 5f 41 52 47 53 09 09 3d 20 5f 5f 41  LOAT_ARGS..= __A
2310: 56 5f 54 52 41 44 49 54 49 4f 4e 41 4c 5f 46 4c  V_TRADITIONAL_FL
2320: 4f 41 54 5f 41 52 47 53 2c 0a 23 65 6e 64 69 66  OAT_ARGS,.#endif
2330: 0a 23 65 6e 64 69 66 0a 0a 20 20 2f 2a 20 68 6f  .#endif..  /* ho
2340: 77 20 74 6f 20 70 61 73 73 20 61 6e 64 20 72 65  w to pass and re
2350: 74 75 72 6e 20 73 6d 61 6c 6c 20 69 6e 74 65 67  turn small integ
2360: 65 72 20 61 72 67 75 6d 65 6e 74 73 20 2a 2f 0a  er arguments */.
2370: 20 20 5f 5f 41 56 5f 41 4e 53 49 5f 49 4e 54 45    __AV_ANSI_INTE
2380: 47 45 52 53 09 09 3d 20 30 2c 20 2f 2a 20 6e 6f  GERS..= 0, /* no
2390: 20 70 72 6f 6d 6f 74 69 6f 6e 73 20 2a 2f 0a 20   promotions */. 
23a0: 20 5f 5f 41 56 5f 54 52 41 44 49 54 49 4f 4e 41   __AV_TRADITIONA
23b0: 4c 5f 49 4e 54 45 47 45 52 53 09 3d 20 30 2c 20  L_INTEGERS.= 0, 
23c0: 2f 2a 20 70 72 6f 6d 6f 74 65 20 5b 75 5d 63 68  /* promote [u]ch
23d0: 61 72 2c 20 5b 75 5d 73 68 6f 72 74 20 74 6f 20  ar, [u]short to 
23e0: 5b 75 5d 69 6e 74 20 2a 2f 0a 20 20 2f 2a 20 46  [u]int */.  /* F
23f0: 6f 72 74 75 6e 61 74 65 6c 79 20 74 68 65 73 65  ortunately these
2400: 20 74 77 6f 20 6d 65 74 68 6f 64 73 20 61 72 65   two methods are
2410: 20 63 6f 6d 70 61 74 69 62 6c 65 2e 20 4f 75 72   compatible. Our
2420: 20 6d 61 63 72 6f 73 20 77 6f 72 6b 20 77 69 74   macros work wit
2430: 68 20 62 6f 74 68 2e 20 2a 2f 0a 20 20 2f 2a 20  h both. */.  /* 
2440: 74 68 65 20 64 65 66 61 75 6c 74 20 77 61 79 20  the default way 
2450: 74 6f 20 70 61 73 73 20 61 6e 64 20 72 65 74 75  to pass and retu
2460: 72 6e 20 73 6d 61 6c 6c 20 69 6e 74 65 67 65 72  rn small integer
2470: 20 61 72 67 75 6d 65 6e 74 73 20 2a 2f 0a 20 20   arguments */.  
2480: 2f 2a 20 54 68 69 73 20 63 68 6f 69 63 65 20 68  /* This choice h
2490: 65 72 65 20 69 73 20 62 61 73 65 64 20 6f 6e 20  ere is based on 
24a0: 74 68 65 20 61 73 73 75 6d 70 74 69 6f 6e 20 74  the assumption t
24b0: 68 61 74 20 74 68 65 20 66 75 6e 63 74 69 6f 6e  hat the function
24c0: 20 79 6f 75 20 61 72 65 0a 20 20 20 2a 20 67 6f   you are.   * go
24d0: 69 6e 67 20 74 6f 20 63 61 6c 6c 20 68 61 73 20  ing to call has 
24e0: 62 65 65 6e 20 63 6f 6d 70 69 6c 65 64 20 77 69  been compiled wi
24f0: 74 68 20 74 68 65 20 73 61 6d 65 20 63 6f 6d 70  th the same comp
2500: 69 6c 65 72 20 79 6f 75 20 61 72 65 20 75 73 69  iler you are usi
2510: 6e 67 20 74 6f 0a 20 20 20 2a 20 69 6e 63 6c 75  ng to.   * inclu
2520: 64 65 20 74 68 69 73 20 66 69 6c 65 2e 0a 20 20  de this file..  
2530: 20 2a 20 49 66 20 79 6f 75 20 77 61 6e 74 20 74   * If you want t
2540: 6f 20 63 61 6c 6c 20 66 75 6e 63 74 69 6f 6e 73  o call functions
2550: 20 77 69 74 68 20 61 6e 6f 74 68 65 72 20 66 6c   with another fl
2560: 6f 61 74 20 70 61 73 73 69 6e 67 20 63 6f 6e 76  oat passing conv
2570: 65 6e 74 69 6f 6e 2c 0a 20 20 20 2a 20 6a 75 73  ention,.   * jus
2580: 74 20 20 23 64 65 66 69 6e 65 20 5f 5f 41 56 5f  t  #define __AV_
2590: 49 4e 54 45 47 45 52 53 20 2e 2e 2e 0a 20 20 20  INTEGERS ....   
25a0: 2a 20 62 65 66 6f 72 65 20 6f 72 20 61 66 74 65  * before or afte
25b0: 72 20 23 69 6e 63 6c 75 64 69 6e 67 20 3c 61 76  r #including <av
25c0: 63 61 6c 6c 2e 68 3e 2e 0a 20 20 20 2a 2f 0a 23  call.h>..   */.#
25d0: 69 66 6e 64 65 66 20 5f 5f 41 56 5f 49 4e 54 45  ifndef __AV_INTE
25e0: 47 45 52 53 0a 23 69 66 20 64 65 66 69 6e 65 64  GERS.#if defined
25f0: 28 5f 5f 53 54 44 43 5f 5f 29 20 7c 7c 20 64 65  (__STDC__) || de
2600: 66 69 6e 65 64 28 5f 5f 47 4e 55 43 5f 5f 29 0a  fined(__GNUC__).
2610: 20 20 5f 5f 41 56 5f 49 4e 54 45 47 45 52 53 09    __AV_INTEGERS.
2620: 09 09 3d 20 5f 5f 41 56 5f 41 4e 53 49 5f 49 4e  ..= __AV_ANSI_IN
2630: 54 45 47 45 52 53 2c 0a 23 65 6c 73 65 0a 20 20  TEGERS,.#else.  
2640: 5f 5f 41 56 5f 49 4e 54 45 47 45 52 53 09 09 09  __AV_INTEGERS...
2650: 3d 20 5f 5f 41 56 5f 54 52 41 44 49 54 49 4f 4e  = __AV_TRADITION
2660: 41 4c 5f 49 4e 54 45 47 45 52 53 2c 0a 23 65 6e  AL_INTEGERS,.#en
2670: 64 69 66 0a 23 65 6e 64 69 66 0a 0a 20 20 2f 2a  dif.#endif..  /*
2680: 20 73 74 61 63 6b 20 63 6c 65 61 6e 75 70 20 70   stack cleanup p
2690: 6f 6c 69 63 79 20 2a 2f 0a 20 20 5f 5f 41 56 5f  olicy */.  __AV_
26a0: 43 44 45 43 4c 5f 43 4c 45 41 4e 55 50 09 09 3d  CDECL_CLEANUP..=
26b0: 20 30 2c 20 2f 2a 20 63 61 6c 6c 65 72 20 70 6f   0, /* caller po
26c0: 70 73 20 61 72 67 73 20 61 66 74 65 72 20 72 65  ps args after re
26d0: 74 75 72 6e 20 2a 2f 0a 20 20 5f 5f 41 56 5f 53  turn */.  __AV_S
26e0: 54 44 43 41 4c 4c 5f 43 4c 45 41 4e 55 50 09 09  TDCALL_CLEANUP..
26f0: 3d 20 30 2c 20 2f 2a 20 63 61 6c 6c 65 65 20 70  = 0, /* callee p
2700: 6f 70 73 20 61 72 67 73 20 62 65 66 6f 72 65 20  ops args before 
2710: 72 65 74 75 72 6e 20 2a 2f 0a 09 09 09 09 20 20  return */.....  
2720: 20 20 20 2f 2a 20 63 75 72 72 65 6e 74 6c 79 20     /* currently 
2730: 6f 6e 6c 79 20 73 75 70 70 6f 72 74 65 64 20 6f  only supported o
2740: 6e 20 5f 5f 69 33 38 36 5f 5f 20 2a 2f 0a 23 69  n __i386__ */.#i
2750: 66 6e 64 65 66 20 5f 5f 41 56 5f 43 4c 45 41 4e  fndef __AV_CLEAN
2760: 55 50 0a 20 20 5f 5f 41 56 5f 43 4c 45 41 4e 55  UP.  __AV_CLEANU
2770: 50 09 09 09 3d 20 5f 5f 41 56 5f 43 44 45 43 4c  P...= __AV_CDECL
2780: 5f 43 4c 45 41 4e 55 50 2c 0a 23 65 6e 64 69 66  _CLEANUP,.#endif
2790: 0a 0a 20 20 2f 2a 20 54 68 65 73 65 20 61 72 65  ..  /* These are
27a0: 20 66 6f 72 20 69 6e 74 65 72 6e 61 6c 20 75 73   for internal us
27b0: 65 20 6f 6e 6c 79 20 2a 2f 0a 23 69 66 20 64 65  e only */.#if de
27c0: 66 69 6e 65 64 28 5f 5f 69 33 38 36 5f 5f 29 20  fined(__i386__) 
27d0: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 36 38  || defined(__m68
27e0: 6b 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  k__) || defined(
27f0: 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 7c 7c 20  __mipsn32__) || 
2800: 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 36 34  defined(__mips64
2810: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
2820: 5f 73 70 61 72 63 36 34 5f 5f 29 20 7c 7c 20 64  _sparc64__) || d
2830: 65 66 69 6e 65 64 28 5f 5f 61 6c 70 68 61 5f 5f  efined(__alpha__
2840: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 61  ) || defined(__a
2850: 72 6d 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  rm__) || defined
2860: 28 5f 5f 72 73 36 30 30 30 5f 5f 29 20 7c 7c 20  (__rs6000__) || 
2870: 64 65 66 69 6e 65 64 28 5f 5f 63 6f 6e 76 65 78  defined(__convex
2880: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
2890: 5f 69 61 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69  _ia64__) || defi
28a0: 6e 65 64 28 5f 5f 78 38 36 5f 36 34 5f 5f 29 20  ned(__x86_64__) 
28b0: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 73 33 39  || defined(__s39
28c0: 30 5f 5f 29 0a 20 20 5f 5f 41 56 5f 52 45 47 49  0__).  __AV_REGI
28d0: 53 54 45 52 5f 53 54 52 55 43 54 5f 52 45 54 55  STER_STRUCT_RETU
28e0: 52 4e 09 3d 20 31 3c 3c 39 2c 0a 23 65 6e 64 69  RN.= 1<<9,.#endi
28f0: 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  f.#if defined(__
2900: 6d 69 70 73 5f 5f 29 20 26 26 20 21 64 65 66 69  mips__) && !defi
2910: 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29  ned(__mipsn32__)
2920: 0a 20 20 5f 5f 41 56 5f 46 4c 4f 41 54 5f 31 09  .  __AV_FLOAT_1.
2930: 09 09 3d 20 31 3c 3c 31 30 2c 0a 20 20 5f 5f 41  ..= 1<<10,.  __A
2940: 56 5f 46 4c 4f 41 54 5f 32 09 09 09 3d 20 31 3c  V_FLOAT_2...= 1<
2950: 3c 31 31 2c 0a 23 65 6e 64 69 66 0a 0a 20 20 5f  <11,.#endif..  _
2960: 5f 41 56 5f 66 6c 61 67 5f 66 6f 72 5f 62 72 6f  _AV_flag_for_bro
2970: 6b 65 6e 5f 63 6f 6d 70 69 6c 65 72 73 5f 74 68  ken_compilers_th
2980: 61 74 5f 64 6f 6e 74 5f 6c 69 6b 65 5f 74 72 61  at_dont_like_tra
2990: 69 6c 69 6e 67 5f 63 6f 6d 6d 61 73 0a 7d 3b 0a  iling_commas.};.
29a0: 0a 74 79 70 65 64 65 66 20 73 74 72 75 63 74 0a  .typedef struct.
29b0: 7b 0a 20 20 2f 2a 20 66 75 6e 63 74 69 6f 6e 20  {.  /* function 
29c0: 74 6f 20 62 65 20 63 61 6c 6c 65 64 20 2a 2f 0a  to be called */.
29d0: 20 20 5f 5f 61 76 77 6f 72 64 09 09 28 2a 66 75    __avword..(*fu
29e0: 6e 63 29 28 29 3b 0a 20 20 2f 2a 20 73 6f 6d 65  nc)();.  /* some
29f0: 20 61 76 5f 2e 2e 2e 20 6d 61 63 72 6f 73 20 6e   av_... macros n
2a00: 65 65 64 20 74 68 65 73 65 20 66 6c 61 67 73 20  eed these flags 
2a10: 2a 2f 0a 20 20 69 6e 74 09 09 09 66 6c 61 67 73  */.  int...flags
2a20: 3b 0a 20 20 2f 2a 20 72 65 74 75 72 6e 20 74 79  ;.  /* return ty
2a30: 70 65 2c 20 61 64 64 72 65 73 73 20 66 6f 72 20  pe, address for 
2a40: 74 68 65 20 72 65 73 75 6c 74 20 2a 2f 0a 20 20  the result */.  
2a50: 76 6f 69 64 2a 09 09 09 72 61 64 64 72 3b 0a 20  void*...raddr;. 
2a60: 20 65 6e 75 6d 20 5f 5f 41 56 74 79 70 65 09 09   enum __AVtype..
2a70: 72 74 79 70 65 3b 0a 20 20 75 6e 73 69 67 6e 65  rtype;.  unsigne
2a80: 64 20 6c 6f 6e 67 09 09 72 73 69 7a 65 3b 0a 20  d long..rsize;. 
2a90: 20 2f 2a 20 63 75 72 72 65 6e 74 20 70 6f 69 6e   /* current poin
2aa0: 74 65 72 20 69 6e 74 6f 20 74 68 65 20 61 72 67  ter into the arg
2ab0: 73 5b 5d 20 61 72 72 61 79 20 2a 2f 0a 20 20 5f  s[] array */.  _
2ac0: 5f 61 76 77 6f 72 64 2a 09 09 61 70 74 72 3b 0a  _avword*..aptr;.
2ad0: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 73 70  #if defined(__sp
2ae0: 61 72 63 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65  arc__) || define
2af0: 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29 20 7c  d(__sparc64__) |
2b00: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 68 70 70 61  | defined(__hppa
2b10: 5f 5f 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28  __) || (defined(
2b20: 5f 5f 72 73 36 30 30 30 5f 5f 29 20 26 26 20 21  __rs6000__) && !
2b30: 64 65 66 69 6e 65 64 28 5f 41 49 58 29 20 26 26  defined(_AIX) &&
2b40: 20 21 28 64 65 66 69 6e 65 64 28 5f 5f 4d 41 43   !(defined(__MAC
2b50: 48 5f 5f 29 20 26 26 20 64 65 66 69 6e 65 64 28  H__) && defined(
2b60: 5f 5f 41 50 50 4c 45 5f 5f 29 29 29 20 7c 7c 20  __APPLE__))) || 
2b70: 64 65 66 69 6e 65 64 28 5f 5f 73 33 39 30 5f 5f  defined(__s390__
2b80: 29 0a 20 20 2f 2a 20 6c 69 6d 69 74 20 70 6f 69  ).  /* limit poi
2b90: 6e 74 65 72 20 69 6e 74 6f 20 74 68 65 20 61 72  nter into the ar
2ba0: 67 73 5b 5d 20 61 72 72 61 79 20 2a 2f 0a 20 20  gs[] array */.  
2bb0: 5f 5f 61 76 77 6f 72 64 2a 09 09 65 70 74 72 3b  __avword*..eptr;
2bc0: 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69  .#endif.#if defi
2bd0: 6e 65 64 28 5f 5f 69 33 38 36 5f 5f 29 20 26 26  ned(__i386__) &&
2be0: 20 30 0a 20 20 2f 2a 20 46 69 6c 6c 65 72 20 77   0.  /* Filler w
2bf0: 6f 72 64 2c 20 6e 65 65 64 65 64 20 69 66 20 74  ord, needed if t
2c00: 68 65 20 6e 75 6d 62 65 72 73 20 6f 66 20 77 6f  he numbers of wo
2c10: 72 64 73 20 75 70 20 74 6f 20 6e 6f 77 20 69 6e  rds up to now in
2c20: 20 74 68 69 73 20 73 74 72 75 63 74 75 72 65 20   this structure 
2c30: 2a 2f 0a 20 20 2f 2a 20 69 73 20 6f 64 64 20 28  */.  /* is odd (
2c40: 62 65 63 61 75 73 65 20 6f 6e 20 4d 53 56 43 2c  because on MSVC,
2c50: 20 61 6c 69 67 6e 6f 66 28 64 6f 75 62 6c 65 29   alignof(double)
2c60: 20 3d 20 38 2c 20 6e 6f 72 6d 61 6c 6c 79 20 3d   = 8, normally =
2c70: 20 34 29 2e 20 20 20 20 20 20 20 20 20 20 20 20   4).            
2c80: 2a 2f 0a 20 20 5f 5f 61 76 77 6f 72 64 09 09 66  */.  __avword..f
2c90: 69 6c 6c 65 72 31 3b 0a 23 65 6e 64 69 66 0a 23  iller1;.#endif.#
2ca0: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 69 33 38  if defined(__i38
2cb0: 36 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  6__) || defined(
2cc0: 5f 5f 6d 36 38 6b 5f 5f 29 20 7c 7c 20 28 64 65  __m68k__) || (de
2cd0: 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f 5f 29  fined(__sparc__)
2ce0: 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 73   && !defined(__s
2cf0: 70 61 72 63 36 34 5f 5f 29 29 20 7c 7c 20 64 65  parc64__)) || de
2d00: 66 69 6e 65 64 28 5f 5f 68 70 70 61 5f 5f 29 20  fined(__hppa__) 
2d10: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 61 72 6d  || defined(__arm
2d20: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
2d30: 5f 72 73 36 30 30 30 5f 5f 29 20 7c 7c 20 64 65  _rs6000__) || de
2d40: 66 69 6e 65 64 28 5f 5f 63 6f 6e 76 65 78 5f 5f  fined(__convex__
2d50: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 73  ) || defined(__s
2d60: 33 39 30 5f 5f 29 0a 20 20 2f 2a 20 74 65 6d 70  390__).  /* temp
2d70: 6f 72 61 72 79 20 73 74 6f 72 61 67 65 2c 20 75  orary storage, u
2d80: 73 65 64 20 74 6f 20 73 70 6c 69 74 20 64 6f 75  sed to split dou
2d90: 62 6c 65 73 20 69 6e 74 6f 20 74 77 6f 20 77 6f  bles into two wo
2da0: 72 64 73 20 2a 2f 0a 20 20 75 6e 69 6f 6e 20 7b  rds */.  union {
2db0: 0a 20 20 20 20 64 6f 75 62 6c 65 09 5f 64 6f 75  .    double._dou
2dc0: 62 6c 65 3b 0a 23 69 66 20 64 65 66 69 6e 65 64  ble;.#if defined
2dd0: 28 5f 5f 73 70 61 72 63 5f 5f 29 20 26 26 20 21  (__sparc__) && !
2de0: 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36  defined(__sparc6
2df0: 34 5f 5f 29 20 26 26 20 64 65 66 69 6e 65 64 28  4__) && defined(
2e00: 48 41 56 45 5f 4c 4f 4e 47 4c 4f 4e 47 29 0a 20  HAVE_LONGLONG). 
2e10: 20 20 20 6c 6f 6e 67 20 6c 6f 6e 67 09 5f 6c 6f     long long._lo
2e20: 6e 67 6c 6f 6e 67 3b 0a 23 65 6e 64 69 66 0a 20  nglong;.#endif. 
2e30: 20 20 20 5f 5f 61 76 77 6f 72 64 09 77 6f 72 64     __avword.word
2e40: 73 5b 32 5d 3b 0a 20 20 7d 09 09 09 74 6d 70 3b  s[2];.  }...tmp;
2e50: 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69  .#endif.#if defi
2e60: 6e 65 64 28 5f 5f 78 38 36 5f 36 34 5f 5f 29 0a  ned(__x86_64__).
2e70: 20 20 2f 2a 20 73 74 6f 72 65 20 74 68 65 20 69    /* store the i
2e80: 6e 74 65 67 65 72 20 61 72 67 75 6d 65 6e 74 73  nteger arguments
2e90: 20 69 6e 20 61 6e 20 65 78 74 72 61 20 61 72 72   in an extra arr
2ea0: 61 79 20 2a 2f 0a 20 20 5f 5f 61 76 77 6f 72 64  ay */.  __avword
2eb0: 2a 09 09 69 61 70 74 72 3b 0a 20 20 5f 5f 61 76  *..iaptr;.  __av
2ec0: 77 6f 72 64 09 09 69 61 72 67 73 5b 36 5d 3b 0a  word..iargs[6];.
2ed0: 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e  #endif.#if defin
2ee0: 65 64 28 5f 5f 6d 69 70 73 5f 5f 29 20 26 26 20  ed(__mips__) && 
2ef0: 21 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e  !defined(__mipsn
2f00: 33 32 5f 5f 29 0a 20 20 2f 2a 20 73 74 6f 72 65  32__).  /* store
2f10: 20 74 68 65 20 66 6c 6f 61 74 69 6e 67 2d 70 6f   the floating-po
2f20: 69 6e 74 20 61 72 67 75 6d 65 6e 74 73 20 69 6e  int arguments in
2f30: 20 61 6e 20 65 78 74 72 61 20 61 72 72 61 79 20   an extra array 
2f40: 2a 2f 0a 20 20 69 6e 74 09 09 09 61 6e 75 6d 3b  */.  int...anum;
2f50: 0a 20 20 64 6f 75 62 6c 65 09 09 66 6c 6f 61 74  .  double..float
2f60: 61 72 67 5b 32 5d 3b 0a 23 65 6e 64 69 66 0a 23  arg[2];.#endif.#
2f70: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70  if defined(__mip
2f80: 73 6e 33 32 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  sn32__) || defin
2f90: 65 64 28 5f 5f 6d 69 70 73 36 34 5f 5f 29 0a 20  ed(__mips64__). 
2fa0: 20 2f 2a 20 73 74 6f 72 65 20 74 68 65 20 66 6c   /* store the fl
2fb0: 6f 61 74 69 6e 67 2d 70 6f 69 6e 74 20 61 72 67  oating-point arg
2fc0: 75 6d 65 6e 74 73 20 69 6e 20 61 6e 20 65 78 74  uments in an ext
2fd0: 72 61 20 61 72 72 61 79 20 2a 2f 0a 20 20 69 6e  ra array */.  in
2fe0: 74 09 09 09 61 6e 75 6d 3b 09 09 2f 2a 20 72 65  t...anum;../* re
2ff0: 64 75 6e 64 61 6e 74 3a 20 28 4c 49 53 54 29 2e  dundant: (LIST).
3000: 61 70 74 72 20 3d 20 26 28 4c 49 53 54 29 2e 61  aptr = &(LIST).a
3010: 72 67 73 5b 28 4c 49 53 54 29 2e 61 6e 75 6d 5d  rgs[(LIST).anum]
3020: 20 2a 2f 0a 20 20 75 6e 73 69 67 6e 65 64 20 69   */.  unsigned i
3030: 6e 74 09 09 66 61 72 67 5f 6d 61 73 6b 3b 09 2f  nt..farg_mask;./
3040: 2a 20 62 69 74 6d 61 73 6b 20 6f 66 20 74 68 6f  * bitmask of tho
3050: 73 65 20 65 6e 74 72 69 65 73 20 69 6e 20 66 61  se entries in fa
3060: 72 67 5b 5d 20 77 68 69 63 68 20 68 61 76 65 20  rg[] which have 
3070: 61 20 76 61 6c 75 65 20 2a 2f 0a 20 20 75 6e 73  a value */.  uns
3080: 69 67 6e 65 64 20 69 6e 74 09 09 64 61 72 67 5f  igned int..darg_
3090: 6d 61 73 6b 3b 09 2f 2a 20 62 69 74 6d 61 73 6b  mask;./* bitmask
30a0: 20 6f 66 20 74 68 6f 73 65 20 65 6e 74 72 69 65   of those entrie
30b0: 73 20 69 6e 20 61 72 67 73 5b 5d 20 77 68 69 63  s in args[] whic
30c0: 68 20 68 61 76 65 20 61 20 64 6f 75 62 6c 65 20  h have a double 
30d0: 76 61 6c 75 65 20 2a 2f 0a 20 20 66 6c 6f 61 74  value */.  float
30e0: 09 09 09 66 61 72 67 5b 38 5d 3b 0a 23 65 6e 64  ...farg[8];.#end
30f0: 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f  if.#if defined(_
3100: 5f 73 70 61 72 63 36 34 5f 5f 29 0a 20 20 2f 2a  _sparc64__).  /*
3110: 20 73 74 6f 72 65 20 74 68 65 20 66 6c 6f 61 74   store the float
3120: 69 6e 67 2d 70 6f 69 6e 74 20 61 72 67 75 6d 65  ing-point argume
3130: 6e 74 73 20 69 6e 20 61 6e 20 65 78 74 72 61 20  nts in an extra 
3140: 61 72 72 61 79 20 2a 2f 0a 20 20 69 6e 74 09 09  array */.  int..
3150: 09 61 6e 75 6d 3b 09 09 2f 2a 20 72 65 64 75 6e  .anum;../* redun
3160: 64 61 6e 74 3a 20 28 4c 49 53 54 29 2e 61 70 74  dant: (LIST).apt
3170: 72 20 3d 20 26 28 4c 49 53 54 29 2e 61 72 67 73  r = &(LIST).args
3180: 5b 28 4c 49 53 54 29 2e 61 6e 75 6d 5d 20 2a 2f  [(LIST).anum] */
3190: 0a 20 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 09  .  unsigned int.
31a0: 09 66 61 72 67 5f 6d 61 73 6b 3b 09 2f 2a 20 62  .farg_mask;./* b
31b0: 69 74 6d 61 73 6b 20 6f 66 20 74 68 6f 73 65 20  itmask of those 
31c0: 65 6e 74 72 69 65 73 20 69 6e 20 66 61 72 67 5b  entries in farg[
31d0: 5d 20 77 68 69 63 68 20 68 61 76 65 20 61 20 76  ] which have a v
31e0: 61 6c 75 65 20 2a 2f 0a 20 20 75 6e 73 69 67 6e  alue */.  unsign
31f0: 65 64 20 69 6e 74 09 09 64 61 72 67 5f 6d 61 73  ed int..darg_mas
3200: 6b 3b 09 2f 2a 20 62 69 74 6d 61 73 6b 20 6f 66  k;./* bitmask of
3210: 20 74 68 6f 73 65 20 65 6e 74 72 69 65 73 20 69   those entries i
3220: 6e 20 61 72 67 73 5b 5d 20 77 68 69 63 68 20 68  n args[] which h
3230: 61 76 65 20 61 20 64 6f 75 62 6c 65 20 76 61 6c  ave a double val
3240: 75 65 20 2a 2f 0a 23 65 6e 64 69 66 0a 23 69 66  ue */.#endif.#if
3250: 20 64 65 66 69 6e 65 64 28 5f 5f 69 61 36 34 5f   defined(__ia64_
3260: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  _) || defined(__
3270: 78 38 36 5f 36 34 5f 5f 29 0a 20 20 2f 2a 20 73  x86_64__).  /* s
3280: 74 6f 72 65 20 74 68 65 20 66 6c 6f 61 74 69 6e  tore the floatin
3290: 67 2d 70 6f 69 6e 74 20 61 72 67 75 6d 65 6e 74  g-point argument
32a0: 73 20 69 6e 20 61 6e 20 65 78 74 72 61 20 61 72  s in an extra ar
32b0: 72 61 79 20 2a 2f 0a 20 20 64 6f 75 62 6c 65 2a  ray */.  double*
32c0: 09 09 66 61 70 74 72 3b 0a 20 20 64 6f 75 62 6c  ..faptr;.  doubl
32d0: 65 09 09 66 61 72 67 73 5b 38 5d 3b 0a 23 65 6e  e..fargs[8];.#en
32e0: 64 69 66 0a 20 20 5f 5f 61 76 77 6f 72 64 09 09  dif.  __avword..
32f0: 61 72 67 73 5b 5f 5f 41 56 5f 41 4c 49 53 54 5f  args[__AV_ALIST_
3300: 57 4f 52 44 53 5d 3b 20 2f 2a 20 73 69 7a 65 6f  WORDS]; /* sizeo
3310: 66 28 64 6f 75 62 6c 65 29 2d 61 6c 69 67 6e 65  f(double)-aligne
3320: 64 20 2a 2f 0a 23 69 66 20 64 65 66 69 6e 65 64  d */.#if defined
3330: 28 5f 5f 72 73 36 30 30 30 5f 5f 29 0a 20 20 2f  (__rs6000__).  /
3340: 2a 20 73 74 6f 72 65 20 74 68 65 20 66 6c 6f 61  * store the floa
3350: 74 69 6e 67 2d 70 6f 69 6e 74 20 61 72 67 75 6d  ting-point argum
3360: 65 6e 74 73 20 69 6e 20 61 6e 20 65 78 74 72 61  ents in an extra
3370: 20 61 72 72 61 79 20 2a 2f 0a 20 20 64 6f 75 62   array */.  doub
3380: 6c 65 2a 09 09 66 61 70 74 72 3b 0a 20 20 64 6f  le*..faptr;.  do
3390: 75 62 6c 65 09 09 66 61 72 67 73 5b 31 33 5d 3b  uble..fargs[13];
33a0: 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69  .#endif.#if defi
33b0: 6e 65 64 28 5f 5f 73 33 39 30 5f 5f 29 0a 20 20  ned(__s390__).  
33c0: 2f 2a 20 73 74 6f 72 65 20 74 68 65 20 66 6c 6f  /* store the flo
33d0: 61 74 69 6e 67 2d 70 6f 69 6e 74 20 61 72 67 75  ating-point argu
33e0: 6d 65 6e 74 73 20 69 6e 20 61 6e 20 65 78 74 72  ments in an extr
33f0: 61 20 61 72 72 61 79 20 2a 2f 0a 20 20 69 6e 74  a array */.  int
3400: 20 20 20 09 09 66 61 72 67 77 6f 72 64 73 3b 0a     ..fargwords;.
3410: 20 20 66 6c 6f 61 74 2a 09 09 66 61 70 74 72 3b    float*..faptr;
3420: 0a 20 20 66 6c 6f 61 74 20 09 09 66 61 72 67 73  .  float ..fargs
3430: 5b 32 5d 3b 0a 20 20 69 6e 74 2a 09 09 09 66 61  [2];.  int*...fa
3440: 72 67 73 75 73 65 64 70 74 72 3b 0a 20 20 69 6e  rgsusedptr;.  in
3450: 74 09 09 09 66 61 72 67 73 75 73 65 64 5b 32 5d  t...fargsused[2]
3460: 3b 0a 20 20 64 6f 75 62 6c 65 2a 09 09 64 61 70  ;.  double*..dap
3470: 74 72 3b 0a 20 20 64 6f 75 62 6c 65 09 09 64 61  tr;.  double..da
3480: 72 67 73 5b 32 5d 3b 0a 20 20 69 6e 74 2a 09 09  rgs[2];.  int*..
3490: 09 64 61 72 67 73 75 73 65 64 70 74 72 3b 0a 20  .dargsusedptr;. 
34a0: 20 69 6e 74 09 09 09 64 61 72 67 73 75 73 65 64   int...dargsused
34b0: 5b 32 5d 3b 0a 23 65 6e 64 69 66 0a 23 69 66 20  [2];.#endif.#if 
34c0: 64 65 66 69 6e 65 64 28 41 4d 49 47 41 29 0a 20  defined(AMIGA). 
34d0: 20 2f 2a 20 73 74 6f 72 65 20 74 68 65 20 61 72   /* store the ar
34e0: 67 75 6d 65 6e 74 73 20 70 61 73 73 65 64 20 69  guments passed i
34f0: 6e 20 72 65 67 69 73 74 65 72 73 20 69 6e 20 61  n registers in a
3500: 6e 20 65 78 74 72 61 20 61 72 72 61 79 20 2a 2f  n extra array */
3510: 0a 20 20 5f 5f 61 76 77 6f 72 64 09 09 72 65 67  .  __avword..reg
3520: 61 72 67 73 5b 38 2b 37 5d 3b 0a 23 65 6e 64 69  args[8+7];.#endi
3530: 66 0a 7d 20 61 76 5f 61 6c 69 73 74 3b 0a 0a 2f  f.} av_alist;../
3540: 2a 20 54 68 65 20 6c 69 6d 69 74 20 66 6f 72 20  * The limit for 
3550: 74 68 65 20 70 6f 69 6e 74 65 72 20 69 6e 74 6f  the pointer into
3560: 20 74 68 65 20 61 72 67 73 5b 5d 20 61 72 72 61   the args[] arra
3570: 79 2e 20 2a 2f 0a 23 69 66 20 64 65 66 69 6e 65  y. */.#if define
3580: 64 28 5f 5f 73 70 61 72 63 5f 5f 29 20 7c 7c 20  d(__sparc__) || 
3590: 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36  defined(__sparc6
35a0: 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  4__) || defined(
35b0: 5f 5f 68 70 70 61 5f 5f 29 20 7c 7c 20 28 64 65  __hppa__) || (de
35c0: 66 69 6e 65 64 28 5f 5f 72 73 36 30 30 30 5f 5f  fined(__rs6000__
35d0: 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 41  ) && !defined(_A
35e0: 49 58 29 20 26 26 20 21 28 64 65 66 69 6e 65 64  IX) && !(defined
35f0: 28 5f 5f 4d 41 43 48 5f 5f 29 20 26 26 20 64 65  (__MACH__) && de
3600: 66 69 6e 65 64 28 5f 5f 41 50 50 4c 45 5f 5f 29  fined(__APPLE__)
3610: 29 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  )) || defined(__
3620: 73 33 39 30 29 0a 23 64 65 66 69 6e 65 20 5f 5f  s390).#define __
3630: 61 76 5f 65 70 74 72 28 4c 49 53 54 29 09 28 28  av_eptr(LIST).((
3640: 4c 49 53 54 29 2e 65 70 74 72 29 0a 23 65 6c 73  LIST).eptr).#els
3650: 65 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 65  e.#define __av_e
3660: 70 74 72 28 4c 49 53 54 29 09 28 26 28 4c 49 53  ptr(LIST).(&(LIS
3670: 54 29 2e 61 72 67 73 5b 5f 5f 41 56 5f 41 4c 49  T).args[__AV_ALI
3680: 53 54 5f 57 4f 52 44 53 5d 29 0a 23 65 6e 64 69  ST_WORDS]).#endi
3690: 66 0a 0a 2f 2a 20 44 65 6c 61 79 65 64 20 6f 76  f../* Delayed ov
36a0: 65 72 66 6c 6f 77 20 64 65 74 65 63 74 69 6f 6e  erflow detection
36b0: 20 2a 2f 0a 23 69 66 20 64 65 66 69 6e 65 64 28   */.#if defined(
36c0: 5f 5f 68 70 70 61 5f 5f 29 0a 23 64 65 66 69 6e  __hppa__).#defin
36d0: 65 20 61 76 5f 6f 76 65 72 66 6c 6f 77 6e 28 4c  e av_overflown(L
36e0: 49 53 54 29 20 28 28 4c 49 53 54 29 2e 61 70 74  IST) ((LIST).apt
36f0: 72 20 3c 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49  r < __av_eptr(LI
3700: 53 54 29 29 0a 23 65 6c 73 65 0a 23 64 65 66 69  ST)).#else.#defi
3710: 6e 65 20 61 76 5f 6f 76 65 72 66 6c 6f 77 6e 28  ne av_overflown(
3720: 4c 49 53 54 29 20 28 28 4c 49 53 54 29 2e 61 70  LIST) ((LIST).ap
3730: 74 72 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c  tr > __av_eptr(L
3740: 49 53 54 29 29 0a 23 65 6e 64 69 66 0a 0a 0a 2f  IST)).#endif.../
3750: 2a 0a 20 2a 20 20 61 76 5f 73 74 61 72 74 5f 3c  *. *  av_start_<
3760: 74 79 70 65 3e 20 6d 61 63 72 6f 73 20 77 68 69  type> macros whi
3770: 63 68 20 73 70 65 63 69 66 79 20 74 68 65 20 72  ch specify the r
3780: 65 74 75 72 6e 20 74 79 70 65 0a 20 2a 2f 0a 0a  eturn type. */..
3790: 23 64 65 66 69 6e 65 20 5f 5f 41 56 5f 53 54 41  #define __AV_STA
37a0: 52 54 5f 46 4c 41 47 53 20 20 5c 0a 20 20 5f 5f  RT_FLAGS  \.  __
37b0: 41 56 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e  AV_STRUCT_RETURN
37c0: 20 7c 20 5f 5f 41 56 5f 46 4c 4f 41 54 5f 52 45   | __AV_FLOAT_RE
37d0: 54 55 52 4e 20 7c 20 5f 5f 41 56 5f 53 54 52 55  TURN | __AV_STRU
37e0: 43 54 5f 41 52 47 53 20 7c 20 5f 5f 41 56 5f 46  CT_ARGS | __AV_F
37f0: 4c 4f 41 54 5f 41 52 47 53 20 7c 20 5f 5f 41 56  LOAT_ARGS | __AV
3800: 5f 49 4e 54 45 47 45 52 53 20 7c 20 5f 5f 41 56  _INTEGERS | __AV
3810: 5f 43 4c 45 41 4e 55 50 0a 0a 23 64 65 66 69 6e  _CLEANUP..#defin
3820: 65 20 5f 5f 61 76 5f 73 74 61 72 74 28 4c 49 53  e __av_start(LIS
3830: 54 2c 46 55 4e 43 2c 52 41 44 44 52 2c 52 45 54  T,FUNC,RADDR,RET
3840: 54 59 50 45 29 09 09 09 09 5c 0a 20 20 28 28 4c  TYPE)....\.  ((L
3850: 49 53 54 29 2e 66 75 6e 63 20 3d 20 28 5f 5f 61  IST).func = (__a
3860: 76 77 6f 72 64 28 2a 29 28 29 29 28 46 55 4e 43  vword(*)())(FUNC
3870: 29 2c 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 53  ),.....\.   (LIS
3880: 54 29 2e 72 61 64 64 72 20 3d 20 28 76 6f 69 64  T).raddr = (void
3890: 2a 29 28 52 41 44 44 52 29 2c 09 09 09 09 09 5c  *)(RADDR),.....\
38a0: 0a 20 20 20 28 4c 49 53 54 29 2e 72 74 79 70 65  .   (LIST).rtype
38b0: 20 3d 20 28 52 45 54 54 59 50 45 29 2c 09 09 09   = (RETTYPE),...
38c0: 09 09 09 5c 0a 20 20 20 5f 5f 61 76 5f 73 74 61  ...\.   __av_sta
38d0: 72 74 31 28 4c 49 53 54 29 09 09 09 09 09 09 09  rt1(LIST).......
38e0: 5c 0a 20 20 20 28 4c 49 53 54 29 2e 66 6c 61 67  \.   (LIST).flag
38f0: 73 20 3d 20 5f 5f 41 56 5f 53 54 41 52 54 5f 46  s = __AV_START_F
3900: 4c 41 47 53 29 0a 0a 23 69 66 20 64 65 66 69 6e  LAGS)..#if defin
3910: 65 64 28 5f 5f 69 33 38 36 5f 5f 29 20 7c 7c 20  ed(__i386__) || 
3920: 64 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f 5f  defined(__m68k__
3930: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 61  ) || defined(__a
3940: 6c 70 68 61 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  lpha__) || defin
3950: 65 64 28 5f 5f 61 72 6d 5f 5f 29 20 7c 7c 20 64  ed(__arm__) || d
3960: 65 66 69 6e 65 64 28 5f 5f 6d 38 38 6b 5f 5f 29  efined(__m88k__)
3970: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 63 6f   || defined(__co
3980: 6e 76 65 78 5f 5f 29 0a 23 64 65 66 69 6e 65 20  nvex__).#define 
3990: 5f 5f 61 76 5f 73 74 61 72 74 31 28 4c 49 53 54  __av_start1(LIST
39a0: 29 09 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 53  )......\.   (LIS
39b0: 54 29 2e 61 70 74 72 20 3d 20 26 28 4c 49 53 54  T).aptr = &(LIST
39c0: 29 2e 61 72 67 73 5b 30 5d 2c 0a 23 65 6e 64 69  ).args[0],.#endi
39d0: 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  f.#if defined(__
39e0: 6d 69 70 73 5f 5f 29 20 26 26 20 21 64 65 66 69  mips__) && !defi
39f0: 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29  ned(__mipsn32__)
3a00: 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74  .#define __av_st
3a10: 61 72 74 31 28 4c 49 53 54 29 09 09 09 09 09 09  art1(LIST)......
3a20: 5c 0a 20 20 20 28 4c 49 53 54 29 2e 61 6e 75 6d  \.   (LIST).anum
3a30: 20 3d 20 30 2c 09 09 09 09 09 09 09 5c 0a 20 20   = 0,.......\.  
3a40: 20 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 26   (LIST).aptr = &
3a50: 28 4c 49 53 54 29 2e 61 72 67 73 5b 30 5d 2c 0a  (LIST).args[0],.
3a60: 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e  #endif.#if defin
3a70: 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20  ed(__mipsn32__) 
3a80: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70  || defined(__mip
3a90: 73 36 34 5f 5f 29 0a 23 64 65 66 69 6e 65 20 5f  s64__).#define _
3aa0: 5f 61 76 5f 73 74 61 72 74 31 28 4c 49 53 54 29  _av_start1(LIST)
3ab0: 09 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 53 54  ......\.   (LIST
3ac0: 29 2e 61 6e 75 6d 20 3d 20 30 2c 09 09 09 09 09  ).anum = 0,.....
3ad0: 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2e 66 61  ..\.   (LIST).fa
3ae0: 72 67 5f 6d 61 73 6b 20 3d 20 30 2c 09 09 09 09  rg_mask = 0,....
3af0: 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2e 64 61  ..\.   (LIST).da
3b00: 72 67 5f 6d 61 73 6b 20 3d 20 30 2c 09 09 09 09  rg_mask = 0,....
3b10: 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2e 61 70  ..\.   (LIST).ap
3b20: 74 72 20 3d 20 26 28 4c 49 53 54 29 2e 61 72 67  tr = &(LIST).arg
3b30: 73 5b 30 5d 2c 0a 23 65 6e 64 69 66 0a 23 69 66  s[0],.#endif.#if
3b40: 20 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63   defined(__sparc
3b50: 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 28  __) && !defined(
3b60: 5f 5f 73 70 61 72 63 36 34 5f 5f 29 0a 23 64 65  __sparc64__).#de
3b70: 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72 74 31  fine __av_start1
3b80: 28 4c 49 53 54 29 09 09 09 09 09 09 5c 0a 20 20  (LIST)......\.  
3b90: 20 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 26   (LIST).aptr = &
3ba0: 28 4c 49 53 54 29 2e 61 72 67 73 5b 30 5d 2c 09  (LIST).args[0],.
3bb0: 09 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2e  ....\.   (LIST).
3bc0: 65 70 74 72 20 3d 20 26 28 4c 49 53 54 29 2e 61  eptr = &(LIST).a
3bd0: 72 67 73 5b 5f 5f 41 56 5f 41 4c 49 53 54 5f 57  rgs[__AV_ALIST_W
3be0: 4f 52 44 53 5d 2c 0a 23 65 6e 64 69 66 0a 23 69  ORDS],.#endif.#i
3bf0: 66 20 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72  f defined(__spar
3c00: 63 36 34 5f 5f 29 0a 23 64 65 66 69 6e 65 20 5f  c64__).#define _
3c10: 5f 61 76 5f 73 74 61 72 74 31 28 4c 49 53 54 29  _av_start1(LIST)
3c20: 09 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 53 54  ......\.   (LIST
3c30: 29 2e 61 6e 75 6d 20 3d 20 30 2c 09 09 09 09 09  ).anum = 0,.....
3c40: 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2e 66 61  ..\.   (LIST).fa
3c50: 72 67 5f 6d 61 73 6b 20 3d 20 30 2c 09 09 09 09  rg_mask = 0,....
3c60: 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2e 64 61  ..\.   (LIST).da
3c70: 72 67 5f 6d 61 73 6b 20 3d 20 30 2c 09 09 09 09  rg_mask = 0,....
3c80: 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2e 61 70  ..\.   (LIST).ap
3c90: 74 72 20 3d 20 26 28 4c 49 53 54 29 2e 61 72 67  tr = &(LIST).arg
3ca0: 73 5b 30 5d 2c 09 09 09 09 09 5c 0a 20 20 20 28  s[0],.....\.   (
3cb0: 4c 49 53 54 29 2e 65 70 74 72 20 3d 20 26 28 4c  LIST).eptr = &(L
3cc0: 49 53 54 29 2e 61 72 67 73 5b 5f 5f 41 56 5f 41  IST).args[__AV_A
3cd0: 4c 49 53 54 5f 57 4f 52 44 53 5d 2c 0a 23 65 6e  LIST_WORDS],.#en
3ce0: 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28  dif.#if defined(
3cf0: 5f 5f 68 70 70 61 5f 5f 29 0a 23 64 65 66 69 6e  __hppa__).#defin
3d00: 65 20 5f 5f 61 76 5f 73 74 61 72 74 31 28 4c 49  e __av_start1(LI
3d10: 53 54 29 09 09 09 09 09 09 5c 0a 20 20 20 28 4c  ST)......\.   (L
3d20: 49 53 54 29 2e 61 70 74 72 20 3d 20 26 28 4c 49  IST).aptr = &(LI
3d30: 53 54 29 2e 61 72 67 73 5b 5f 5f 41 56 5f 41 4c  ST).args[__AV_AL
3d40: 49 53 54 5f 57 4f 52 44 53 5d 2c 09 09 09 5c 0a  IST_WORDS],...\.
3d50: 20 20 20 28 4c 49 53 54 29 2e 65 70 74 72 20 3d     (LIST).eptr =
3d60: 20 26 28 4c 49 53 54 29 2e 61 72 67 73 5b 30 5d   &(LIST).args[0]
3d70: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66  ,.#endif.#if def
3d80: 69 6e 65 64 28 5f 5f 72 73 36 30 30 30 5f 5f 29  ined(__rs6000__)
3d90: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 41 49  .#if defined(_AI
3da0: 58 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f  X) || (defined(_
3db0: 5f 4d 41 43 48 5f 5f 29 20 26 26 20 64 65 66 69  _MACH__) && defi
3dc0: 6e 65 64 28 5f 5f 41 50 50 4c 45 5f 5f 29 29 0a  ned(__APPLE__)).
3dd0: 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61  #define __av_sta
3de0: 72 74 31 28 4c 49 53 54 29 09 09 09 09 09 09 5c  rt1(LIST)......\
3df0: 0a 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72 20  .   (LIST).aptr 
3e00: 3d 20 26 28 4c 49 53 54 29 2e 61 72 67 73 5b 30  = &(LIST).args[0
3e10: 5d 2c 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 53  ],.....\.   (LIS
3e20: 54 29 2e 66 61 70 74 72 20 3d 20 26 28 4c 49 53  T).faptr = &(LIS
3e30: 54 29 2e 66 61 72 67 73 5b 30 5d 2c 0a 23 65 6c  T).fargs[0],.#el
3e40: 73 65 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f  se.#define __av_
3e50: 73 74 61 72 74 31 28 4c 49 53 54 29 09 09 09 09  start1(LIST)....
3e60: 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2e 61 70  ..\.   (LIST).ap
3e70: 74 72 20 3d 20 26 28 4c 49 53 54 29 2e 61 72 67  tr = &(LIST).arg
3e80: 73 5b 30 5d 2c 09 09 09 09 09 5c 0a 20 20 20 28  s[0],.....\.   (
3e90: 4c 49 53 54 29 2e 66 61 70 74 72 20 3d 20 26 28  LIST).faptr = &(
3ea0: 4c 49 53 54 29 2e 66 61 72 67 73 5b 30 5d 2c 20  LIST).fargs[0], 
3eb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3ec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3ed0: 20 20 20 20 5c 0a 20 20 20 28 4c 49 53 54 29 2e      \.   (LIST).
3ee0: 65 70 74 72 20 3d 20 26 28 4c 49 53 54 29 2e 61  eptr = &(LIST).a
3ef0: 72 67 73 5b 5f 5f 41 56 5f 41 4c 49 53 54 5f 57  rgs[__AV_ALIST_W
3f00: 4f 52 44 53 5d 2c 0a 23 65 6e 64 69 66 0a 23 65  ORDS],.#endif.#e
3f10: 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64  ndif.#if defined
3f20: 28 5f 5f 73 33 39 30 5f 5f 29 0a 23 64 65 66 69  (__s390__).#defi
3f30: 6e 65 20 5f 5f 61 76 5f 73 74 61 72 74 31 28 4c  ne __av_start1(L
3f40: 49 53 54 29 09 09 09 09 09 09 5c 0a 20 20 20 28  IST)......\.   (
3f50: 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 26 28 4c  LIST).aptr = &(L
3f60: 49 53 54 29 2e 61 72 67 73 5b 30 5d 2c 09 09 09  IST).args[0],...
3f70: 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2e 66 61  ..\.   (LIST).fa
3f80: 72 67 77 6f 72 64 73 20 3d 20 30 2c 09 09 09 09  rgwords = 0,....
3f90: 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2e 66 61  ..\.   (LIST).fa
3fa0: 70 74 72 20 3d 20 26 28 4c 49 53 54 29 2e 66 61  ptr = &(LIST).fa
3fb0: 72 67 73 5b 30 5d 2c 20 20 20 20 20 20 20 20 20  rgs[0],         
3fc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3fd0: 20 20 20 20 20 20 20 20 20 20 20 20 5c 0a 20 20              \.  
3fe0: 20 28 4c 49 53 54 29 2e 64 61 70 74 72 20 3d 20   (LIST).daptr = 
3ff0: 26 28 4c 49 53 54 29 2e 64 61 72 67 73 5b 30 5d  &(LIST).dargs[0]
4000: 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ,               
4010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4020: 20 20 20 20 20 20 5c 0a 20 20 20 28 4c 49 53 54        \.   (LIST
4030: 29 2e 66 61 72 67 73 75 73 65 64 70 74 72 20 3d  ).fargsusedptr =
4040: 20 26 28 4c 49 53 54 29 2e 66 61 72 67 73 75 73   &(LIST).fargsus
4050: 65 64 5b 30 5d 2c 20 20 20 20 20 20 20 20 20 20  ed[0],          
4060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4070: 5c 0a 20 20 20 28 4c 49 53 54 29 2e 64 61 72 67  \.   (LIST).darg
4080: 73 75 73 65 64 70 74 72 20 3d 20 26 28 4c 49 53  susedptr = &(LIS
4090: 54 29 2e 64 61 72 67 73 75 73 65 64 5b 30 5d 2c  T).dargsused[0],
40a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
40b0: 20 20 20 20 20 20 20 20 20 20 5c 0a 20 20 20 28            \.   (
40c0: 4c 49 53 54 29 2e 65 70 74 72 20 3d 20 26 28 4c  LIST).eptr = &(L
40d0: 49 53 54 29 2e 61 72 67 73 5b 5f 5f 41 56 5f 41  IST).args[__AV_A
40e0: 4c 49 53 54 5f 57 4f 52 44 53 5d 2c 0a 23 65 6e  LIST_WORDS],.#en
40f0: 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28  dif.#if defined(
4100: 5f 5f 69 61 36 34 5f 5f 29 0a 23 64 65 66 69 6e  __ia64__).#defin
4110: 65 20 5f 5f 61 76 5f 73 74 61 72 74 31 28 4c 49  e __av_start1(LI
4120: 53 54 29 09 09 09 09 09 09 5c 0a 20 20 20 28 4c  ST)......\.   (L
4130: 49 53 54 29 2e 61 70 74 72 20 3d 20 26 28 4c 49  IST).aptr = &(LI
4140: 53 54 29 2e 61 72 67 73 5b 30 5d 2c 09 09 09 09  ST).args[0],....
4150: 09 5c 0a 20 20 20 28 4c 49 53 54 29 2e 66 61 70  .\.   (LIST).fap
4160: 74 72 20 3d 20 26 28 4c 49 53 54 29 2e 66 61 72  tr = &(LIST).far
4170: 67 73 5b 30 5d 2c 0a 23 65 6e 64 69 66 0a 23 69  gs[0],.#endif.#i
4180: 66 20 64 65 66 69 6e 65 64 28 5f 5f 78 38 36 5f  f defined(__x86_
4190: 36 34 5f 5f 29 0a 23 64 65 66 69 6e 65 20 5f 5f  64__).#define __
41a0: 61 76 5f 73 74 61 72 74 31 28 4c 49 53 54 29 09  av_start1(LIST).
41b0: 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 29  .....\.   (LIST)
41c0: 2e 61 70 74 72 20 3d 20 26 28 4c 49 53 54 29 2e  .aptr = &(LIST).
41d0: 61 72 67 73 5b 30 5d 2c 09 09 09 09 09 5c 0a 20  args[0],.....\. 
41e0: 20 20 28 4c 49 53 54 29 2e 69 61 70 74 72 20 3d    (LIST).iaptr =
41f0: 20 26 28 4c 49 53 54 29 2e 69 61 72 67 73 5b 30   &(LIST).iargs[0
4200: 5d 2c 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 53  ],.....\.   (LIS
4210: 54 29 2e 66 61 70 74 72 20 3d 20 26 28 4c 49 53  T).faptr = &(LIS
4220: 54 29 2e 66 61 72 67 73 5b 30 5d 2c 0a 23 65 6e  T).fargs[0],.#en
4230: 64 69 66 0a 0a 23 64 65 66 69 6e 65 20 61 76 5f  dif..#define av_
4240: 73 74 61 72 74 5f 76 6f 69 64 28 4c 49 53 54 2c  start_void(LIST,
4250: 46 55 4e 43 29 09 09 5f 5f 61 76 5f 73 74 61 72  FUNC)..__av_star
4260: 74 28 4c 49 53 54 2c 46 55 4e 43 2c 30 2c 20 20  t(LIST,FUNC,0,  
4270: 20 20 5f 5f 41 56 76 6f 69 64 29 0a 23 64 65 66    __AVvoid).#def
4280: 69 6e 65 20 61 76 5f 73 74 61 72 74 5f 63 68 61  ine av_start_cha
4290: 72 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44 44  r(LIST,FUNC,RADD
42a0: 52 29 09 09 5f 5f 61 76 5f 73 74 61 72 74 28 4c  R)..__av_start(L
42b0: 49 53 54 2c 46 55 4e 43 2c 52 41 44 44 52 2c 5f  IST,FUNC,RADDR,_
42c0: 5f 41 56 63 68 61 72 29 0a 23 64 65 66 69 6e 65  _AVchar).#define
42d0: 20 61 76 5f 73 74 61 72 74 5f 73 63 68 61 72 28   av_start_schar(
42e0: 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44 44 52 29  LIST,FUNC,RADDR)
42f0: 09 09 5f 5f 61 76 5f 73 74 61 72 74 28 4c 49 53  ..__av_start(LIS
4300: 54 2c 46 55 4e 43 2c 52 41 44 44 52 2c 5f 5f 41  T,FUNC,RADDR,__A
4310: 56 73 63 68 61 72 29 0a 23 64 65 66 69 6e 65 20  Vschar).#define 
4320: 61 76 5f 73 74 61 72 74 5f 75 63 68 61 72 28 4c  av_start_uchar(L
4330: 49 53 54 2c 46 55 4e 43 2c 52 41 44 44 52 29 09  IST,FUNC,RADDR).
4340: 09 5f 5f 61 76 5f 73 74 61 72 74 28 4c 49 53 54  .__av_start(LIST
4350: 2c 46 55 4e 43 2c 52 41 44 44 52 2c 5f 5f 41 56  ,FUNC,RADDR,__AV
4360: 75 63 68 61 72 29 0a 23 64 65 66 69 6e 65 20 61  uchar).#define a
4370: 76 5f 73 74 61 72 74 5f 73 68 6f 72 74 28 4c 49  v_start_short(LI
4380: 53 54 2c 46 55 4e 43 2c 52 41 44 44 52 29 09 09  ST,FUNC,RADDR)..
4390: 5f 5f 61 76 5f 73 74 61 72 74 28 4c 49 53 54 2c  __av_start(LIST,
43a0: 46 55 4e 43 2c 52 41 44 44 52 2c 5f 5f 41 56 73  FUNC,RADDR,__AVs
43b0: 68 6f 72 74 29 0a 23 64 65 66 69 6e 65 20 61 76  hort).#define av
43c0: 5f 73 74 61 72 74 5f 75 73 68 6f 72 74 28 4c 49  _start_ushort(LI
43d0: 53 54 2c 46 55 4e 43 2c 52 41 44 44 52 29 09 5f  ST,FUNC,RADDR)._
43e0: 5f 61 76 5f 73 74 61 72 74 28 4c 49 53 54 2c 46  _av_start(LIST,F
43f0: 55 4e 43 2c 52 41 44 44 52 2c 5f 5f 41 56 75 73  UNC,RADDR,__AVus
4400: 68 6f 72 74 29 0a 23 64 65 66 69 6e 65 20 61 76  hort).#define av
4410: 5f 73 74 61 72 74 5f 69 6e 74 28 4c 49 53 54 2c  _start_int(LIST,
4420: 46 55 4e 43 2c 52 41 44 44 52 29 09 09 5f 5f 61  FUNC,RADDR)..__a
4430: 76 5f 73 74 61 72 74 28 4c 49 53 54 2c 46 55 4e  v_start(LIST,FUN
4440: 43 2c 52 41 44 44 52 2c 5f 5f 41 56 69 6e 74 29  C,RADDR,__AVint)
4450: 0a 23 64 65 66 69 6e 65 20 61 76 5f 73 74 61 72  .#define av_star
4460: 74 5f 75 69 6e 74 28 4c 49 53 54 2c 46 55 4e 43  t_uint(LIST,FUNC
4470: 2c 52 41 44 44 52 29 09 09 5f 5f 61 76 5f 73 74  ,RADDR)..__av_st
4480: 61 72 74 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41  art(LIST,FUNC,RA
4490: 44 44 52 2c 5f 5f 41 56 75 69 6e 74 29 0a 23 64  DDR,__AVuint).#d
44a0: 65 66 69 6e 65 20 61 76 5f 73 74 61 72 74 5f 6c  efine av_start_l
44b0: 6f 6e 67 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41  ong(LIST,FUNC,RA
44c0: 44 44 52 29 09 09 5f 5f 61 76 5f 73 74 61 72 74  DDR)..__av_start
44d0: 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44 44 52  (LIST,FUNC,RADDR
44e0: 2c 5f 5f 41 56 6c 6f 6e 67 29 0a 23 64 65 66 69  ,__AVlong).#defi
44f0: 6e 65 20 61 76 5f 73 74 61 72 74 5f 75 6c 6f 6e  ne av_start_ulon
4500: 67 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44 44  g(LIST,FUNC,RADD
4510: 52 29 09 09 5f 5f 61 76 5f 73 74 61 72 74 28 4c  R)..__av_start(L
4520: 49 53 54 2c 46 55 4e 43 2c 52 41 44 44 52 2c 5f  IST,FUNC,RADDR,_
4530: 5f 41 56 75 6c 6f 6e 67 29 0a 23 64 65 66 69 6e  _AVulong).#defin
4540: 65 20 61 76 5f 73 74 61 72 74 5f 6c 6f 6e 67 6c  e av_start_longl
4550: 6f 6e 67 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41  ong(LIST,FUNC,RA
4560: 44 44 52 29 09 5f 5f 61 76 5f 73 74 61 72 74 28  DDR).__av_start(
4570: 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44 44 52 2c  LIST,FUNC,RADDR,
4580: 5f 5f 41 56 6c 6f 6e 67 6c 6f 6e 67 29 0a 23 64  __AVlonglong).#d
4590: 65 66 69 6e 65 20 61 76 5f 73 74 61 72 74 5f 75  efine av_start_u
45a0: 6c 6f 6e 67 6c 6f 6e 67 28 4c 49 53 54 2c 46 55  longlong(LIST,FU
45b0: 4e 43 2c 52 41 44 44 52 29 09 5f 5f 61 76 5f 73  NC,RADDR).__av_s
45c0: 74 61 72 74 28 4c 49 53 54 2c 46 55 4e 43 2c 52  tart(LIST,FUNC,R
45d0: 41 44 44 52 2c 5f 5f 41 56 75 6c 6f 6e 67 6c 6f  ADDR,__AVulonglo
45e0: 6e 67 29 0a 23 64 65 66 69 6e 65 20 61 76 5f 73  ng).#define av_s
45f0: 74 61 72 74 5f 66 6c 6f 61 74 28 4c 49 53 54 2c  tart_float(LIST,
4600: 46 55 4e 43 2c 52 41 44 44 52 29 09 09 5f 5f 61  FUNC,RADDR)..__a
4610: 76 5f 73 74 61 72 74 28 4c 49 53 54 2c 46 55 4e  v_start(LIST,FUN
4620: 43 2c 52 41 44 44 52 2c 5f 5f 41 56 66 6c 6f 61  C,RADDR,__AVfloa
4630: 74 29 0a 23 64 65 66 69 6e 65 20 61 76 5f 73 74  t).#define av_st
4640: 61 72 74 5f 64 6f 75 62 6c 65 28 4c 49 53 54 2c  art_double(LIST,
4650: 46 55 4e 43 2c 52 41 44 44 52 29 09 5f 5f 61 76  FUNC,RADDR).__av
4660: 5f 73 74 61 72 74 28 4c 49 53 54 2c 46 55 4e 43  _start(LIST,FUNC
4670: 2c 52 41 44 44 52 2c 5f 5f 41 56 64 6f 75 62 6c  ,RADDR,__AVdoubl
4680: 65 29 0a 23 64 65 66 69 6e 65 20 61 76 5f 73 74  e).#define av_st
4690: 61 72 74 5f 70 74 72 28 4c 49 53 54 2c 46 55 4e  art_ptr(LIST,FUN
46a0: 43 2c 54 59 50 45 2c 52 41 44 44 52 29 09 5f 5f  C,TYPE,RADDR).__
46b0: 61 76 5f 73 74 61 72 74 28 4c 49 53 54 2c 46 55  av_start(LIST,FU
46c0: 4e 43 2c 52 41 44 44 52 2c 5f 5f 41 56 76 6f 69  NC,RADDR,__AVvoi
46d0: 64 70 29 0a 0a 23 64 65 66 69 6e 65 20 61 76 5f  dp)..#define av_
46e0: 73 74 61 72 74 5f 73 74 72 75 63 74 28 4c 49 53  start_struct(LIS
46f0: 54 2c 46 55 4e 43 2c 54 59 50 45 2c 54 59 50 45  T,FUNC,TYPE,TYPE
4700: 5f 53 50 4c 49 54 54 41 42 4c 45 2c 52 41 44 44  _SPLITTABLE,RADD
4710: 52 29 09 09 5c 0a 20 20 5f 61 76 5f 73 74 61 72  R)..\.  _av_star
4720: 74 5f 73 74 72 75 63 74 28 4c 49 53 54 2c 46 55  t_struct(LIST,FU
4730: 4e 43 2c 73 69 7a 65 6f 66 28 54 59 50 45 29 2c  NC,sizeof(TYPE),
4740: 54 59 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 2c  TYPE_SPLITTABLE,
4750: 52 41 44 44 52 29 0a 23 64 65 66 69 6e 65 20 5f  RADDR).#define _
4760: 61 76 5f 73 74 61 72 74 5f 73 74 72 75 63 74 28  av_start_struct(
4770: 4c 49 53 54 2c 46 55 4e 43 2c 54 59 50 45 5f 53  LIST,FUNC,TYPE_S
4780: 49 5a 45 2c 54 59 50 45 5f 53 50 4c 49 54 54 41  IZE,TYPE_SPLITTA
4790: 42 4c 45 2c 52 41 44 44 52 29 09 5c 0a 20 20 28  BLE,RADDR).\.  (
47a0: 5f 5f 61 76 5f 73 74 61 72 74 28 4c 49 53 54 2c  __av_start(LIST,
47b0: 46 55 4e 43 2c 52 41 44 44 52 2c 5f 5f 41 56 73  FUNC,RADDR,__AVs
47c0: 74 72 75 63 74 29 2c 09 09 09 09 5c 0a 20 20 20  truct),....\.   
47d0: 28 4c 49 53 54 29 2e 72 73 69 7a 65 20 3d 20 54  (LIST).rsize = T
47e0: 59 50 45 5f 53 49 5a 45 2c 09 09 09 09 09 09 5c  YPE_SIZE,......\
47f0: 0a 20 20 20 5f 5f 61 76 5f 73 74 61 72 74 5f 73  .   __av_start_s
4800: 74 72 75 63 74 31 28 4c 49 53 54 2c 54 59 50 45  truct1(LIST,TYPE
4810: 5f 53 49 5a 45 2c 54 59 50 45 5f 53 50 4c 49 54  _SIZE,TYPE_SPLIT
4820: 54 41 42 4c 45 29 2c 09 09 09 5c 0a 20 20 20 30  TABLE),...\.   0
4830: 29 0a 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f  )..#define __av_
4840: 73 74 61 72 74 5f 73 74 72 75 63 74 31 28 4c 49  start_struct1(LI
4850: 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50  ST,TYPE_SIZE,TYP
4860: 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 20 20 5c  E_SPLITTABLE)  \
4870: 0a 20 20 28 28 4c 49 53 54 29 2e 66 6c 61 67 73  .  ((LIST).flags
4880: 20 26 20 5f 5f 41 56 5f 50 43 43 5f 53 54 52 55   & __AV_PCC_STRU
4890: 43 54 5f 52 45 54 55 52 4e 09 09 09 09 5c 0a 20  CT_RETURN....\. 
48a0: 20 20 3f 20 2f 2a 20 70 63 63 20 73 74 72 75 63    ? /* pcc struc
48b0: 74 20 72 65 74 75 72 6e 20 63 6f 6e 76 65 6e 74  t return convent
48c0: 69 6f 6e 3a 09 09 09 09 09 5c 0a 20 20 20 20 20  ion:.....\.     
48d0: 20 2a 20 63 61 6c 6c 65 64 20 66 75 6e 63 74 69   * called functi
48e0: 6f 6e 20 72 65 74 75 72 6e 73 20 70 6f 69 6e 74  on returns point
48f0: 65 72 20 74 6f 20 76 61 6c 75 65 2c 20 77 65 27  er to value, we'
4900: 6c 6c 20 63 6f 70 79 20 69 74 73 20 63 6f 6e 74  ll copy its cont
4910: 65 6e 74 73 20 61 66 74 65 72 77 61 72 64 73 2e  ents afterwards.
4920: 20 5c 0a 20 20 20 20 20 20 2a 2f 09 09 09 09 09   \.      */.....
4930: 09 09 09 5c 0a 20 20 20 20 20 30 09 09 09 09 09  ...\.     0.....
4940: 09 09 09 09 5c 0a 20 20 20 3a 20 5f 5f 61 76 5f  ....\.   : __av_
4950: 73 74 61 72 74 5f 73 74 72 75 63 74 32 28 4c 49  start_struct2(LI
4960: 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50  ST,TYPE_SIZE,TYP
4970: 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 09 09 09  E_SPLITTABLE)...
4980: 5c 0a 20 20 29 0a 23 69 66 20 28 64 65 66 69 6e  \.  ).#if (defin
4990: 65 64 28 5f 5f 73 70 61 72 63 5f 5f 29 20 26 26  ed(__sparc__) &&
49a0: 20 21 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72   !defined(__spar
49b0: 63 36 34 5f 5f 29 29 20 7c 7c 20 64 65 66 69 6e  c64__)) || defin
49c0: 65 64 28 5f 5f 6d 38 38 6b 5f 5f 29 0a 2f 2a 20  ed(__m88k__)./* 
49d0: 52 65 74 75 72 6e 20 73 74 72 75 63 74 75 72 65  Return structure
49e0: 20 70 6f 69 6e 74 65 72 20 69 73 20 70 61 73 73   pointer is pass
49f0: 65 64 20 69 6e 20 61 20 73 70 65 63 69 61 6c 20  ed in a special 
4a00: 72 65 67 69 73 74 65 72 2e 0a 20 2a 2f 0a 23 64  register.. */.#d
4a10: 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72 74  efine __av_start
4a20: 5f 73 74 72 75 63 74 32 28 4c 49 53 54 2c 54 59  _struct2(LIST,TY
4a30: 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 53 50 4c  PE_SIZE,TYPE_SPL
4a40: 49 54 54 41 42 4c 45 29 20 20 30 0a 23 65 6c 73  ITTABLE)  0.#els
4a50: 65 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73  e.#define __av_s
4a60: 74 61 72 74 5f 73 74 72 75 63 74 32 28 4c 49 53  tart_struct2(LIS
4a70: 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45  T,TYPE_SIZE,TYPE
4a80: 5f 53 50 4c 49 54 54 41 42 4c 45 29 20 20 5c 0a  _SPLITTABLE)  \.
4a90: 20 20 28 28 28 4c 49 53 54 29 2e 66 6c 61 67 73    (((LIST).flags
4aa0: 20 26 20 5f 5f 41 56 5f 53 4d 41 4c 4c 5f 53 54   & __AV_SMALL_ST
4ab0: 52 55 43 54 5f 52 45 54 55 52 4e 29 09 09 09 09  RUCT_RETURN)....
4ac0: 5c 0a 20 20 20 26 26 20 5f 5f 61 76 5f 72 65 67  \.   && __av_reg
4ad0: 5f 73 74 72 75 63 74 5f 72 65 74 75 72 6e 28 4c  _struct_return(L
4ae0: 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59  IST,TYPE_SIZE,TY
4af0: 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 09 09  PE_SPLITTABLE)..
4b00: 5c 0a 20 20 20 3f 20 2f 2a 20 3c 3d 20 57 6f 72  \.   ? /* <= Wor
4b10: 64 2d 73 69 7a 65 64 20 73 74 72 75 63 74 75 72  d-sized structur
4b20: 65 73 20 61 72 65 20 72 65 74 75 72 6e 65 64 20  es are returned 
4b30: 69 6e 20 61 20 72 65 67 69 73 74 65 72 2e 20 2a  in a register. *
4b40: 2f 09 09 5c 0a 20 20 20 20 20 5f 5f 61 76 5f 73  /..\.     __av_s
4b50: 74 61 72 74 5f 73 74 72 75 63 74 33 28 4c 49 53  tart_struct3(LIS
4b60: 54 29 09 09 09 09 09 09 5c 0a 20 20 20 3a 20 5f  T)......\.   : _
4b70: 5f 61 76 5f 73 74 61 72 74 5f 73 74 72 75 63 74  _av_start_struct
4b80: 34 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45  4(LIST,TYPE_SIZE
4b90: 29 09 09 09 09 09 5c 0a 20 20 29 0a 2f 2a 20 44  ).....\.  )./* D
4ba0: 65 74 65 72 6d 69 6e 65 73 20 77 68 65 74 68 65  etermines whethe
4bb0: 72 20 61 20 73 74 72 75 63 74 75 72 65 20 69 73  r a structure is
4bc0: 20 72 65 74 75 72 6e 65 64 20 69 6e 20 72 65 67   returned in reg
4bd0: 69 73 74 65 72 73 2c 0a 20 2a 20 64 65 70 65 6e  isters,. * depen
4be0: 64 69 6e 67 20 6f 6e 20 69 74 73 20 73 69 7a 65  ding on its size
4bf0: 20 61 6e 64 20 69 74 73 20 77 6f 72 64 2d 73 70   and its word-sp
4c00: 6c 69 74 74 61 62 6c 65 20 66 6c 61 67 2e 0a 20  littable flag.. 
4c10: 2a 2f 0a 23 69 66 20 28 64 65 66 69 6e 65 64 28  */.#if (defined(
4c20: 5f 5f 69 33 38 36 5f 5f 29 20 26 26 20 64 65 66  __i386__) && def
4c30: 69 6e 65 64 28 5f 57 49 4e 33 32 29 29 0a 23 64  ined(_WIN32)).#d
4c40: 65 66 69 6e 65 20 5f 5f 61 76 5f 72 65 67 5f 73  efine __av_reg_s
4c50: 74 72 75 63 74 5f 72 65 74 75 72 6e 28 4c 49 53  truct_return(LIS
4c60: 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45  T,TYPE_SIZE,TYPE
4c70: 5f 53 50 4c 49 54 54 41 42 4c 45 29 20 20 5c 0a  _SPLITTABLE)  \.
4c80: 20 20 28 28 54 59 50 45 5f 53 49 5a 45 29 20 3d    ((TYPE_SIZE) =
4c90: 3d 20 31 20 7c 7c 20 28 54 59 50 45 5f 53 49 5a  = 1 || (TYPE_SIZ
4ca0: 45 29 20 3d 3d 20 32 20 7c 7c 20 28 54 59 50 45  E) == 2 || (TYPE
4cb0: 5f 53 49 5a 45 29 20 3d 3d 20 34 09 09 5c 0a 20  _SIZE) == 4..\. 
4cc0: 20 20 7c 7c 20 28 28 54 59 50 45 5f 53 49 5a 45    || ((TYPE_SIZE
4cd0: 29 20 3d 3d 20 38 09 09 09 09 09 09 09 5c 0a 20  ) == 8.......\. 
4ce0: 20 20 20 20 20 20 26 26 20 28 28 28 4c 49 53 54        && (((LIST
4cf0: 29 2e 66 6c 61 67 73 20 26 20 5f 5f 41 56 5f 4d  ).flags & __AV_M
4d00: 53 56 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52  SVC_STRUCT_RETUR
4d10: 4e 29 09 09 09 5c 0a 20 20 20 20 20 20 20 20 20  N)...\.         
4d20: 20 20 7c 7c 20 28 28 54 59 50 45 5f 53 50 4c 49    || ((TYPE_SPLI
4d30: 54 54 41 42 4c 45 29 09 09 09 09 09 5c 0a 20 20  TTABLE).....\.  
4d40: 20 20 20 20 20 20 20 20 20 20 20 20 20 26 26 20               && 
4d50: 28 28 4c 49 53 54 29 2e 66 6c 61 67 73 20 26 20  ((LIST).flags & 
4d60: 5f 5f 41 56 5f 47 43 43 5f 53 54 52 55 43 54 5f  __AV_GCC_STRUCT_
4d70: 52 45 54 55 52 4e 29 09 09 5c 0a 20 20 29 20 20  RETURN)..\.  )  
4d80: 20 29 20 20 20 29 20 20 20 29 0a 2f 2a 20 54 75   )   )   )./* Tu
4d90: 72 6e 20 6f 6e 20 5f 5f 41 56 5f 52 45 47 49 53  rn on __AV_REGIS
4da0: 54 45 52 5f 53 54 52 55 43 54 5f 52 45 54 55 52  TER_STRUCT_RETUR
4db0: 4e 20 69 66 20 5f 5f 41 56 5f 53 4d 41 4c 4c 5f  N if __AV_SMALL_
4dc0: 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20 77 61  STRUCT_RETURN wa
4dd0: 73 20 73 65 74 0a 20 2a 20 61 6e 64 20 74 68 65  s set. * and the
4de0: 20 73 74 72 75 63 74 20 77 69 6c 6c 20 61 63 74   struct will act
4df0: 75 61 6c 6c 79 20 62 65 20 72 65 74 75 72 6e 65  ually be returne
4e00: 64 20 69 6e 20 72 65 67 69 73 74 65 72 73 2e 0a  d in registers..
4e10: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76   */.#define __av
4e20: 5f 73 74 61 72 74 5f 73 74 72 75 63 74 33 28 4c  _start_struct3(L
4e30: 49 53 54 29 20 20 5c 0a 20 20 28 28 4c 49 53 54  IST)  \.  ((LIST
4e40: 29 2e 66 6c 61 67 73 20 7c 3d 20 5f 5f 41 56 5f  ).flags |= __AV_
4e50: 52 45 47 49 53 54 45 52 5f 53 54 52 55 43 54 5f  REGISTER_STRUCT_
4e60: 52 45 54 55 52 4e 2c 20 30 29 0a 23 65 6e 64 69  RETURN, 0).#endi
4e70: 66 0a 23 69 66 20 28 64 65 66 69 6e 65 64 28 5f  f.#if (defined(_
4e80: 5f 69 33 38 36 5f 5f 29 20 26 26 20 21 64 65 66  _i386__) && !def
4e90: 69 6e 65 64 28 5f 57 49 4e 33 32 29 29 20 7c 7c  ined(_WIN32)) ||
4ea0: 20 64 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f   defined(__m68k_
4eb0: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  _) || defined(__
4ec0: 61 72 6d 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65  arm__) || define
4ed0: 64 28 5f 5f 72 73 36 30 30 30 5f 5f 29 20 7c 7c  d(__rs6000__) ||
4ee0: 20 64 65 66 69 6e 65 64 28 5f 5f 63 6f 6e 76 65   defined(__conve
4ef0: 78 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  x__) || defined(
4f00: 5f 5f 73 33 39 30 5f 5f 29 0a 23 64 65 66 69 6e  __s390__).#defin
4f10: 65 20 5f 5f 61 76 5f 72 65 67 5f 73 74 72 75 63  e __av_reg_struc
4f20: 74 5f 72 65 74 75 72 6e 28 4c 49 53 54 2c 54 59  t_return(LIST,TY
4f30: 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 53 50 4c  PE_SIZE,TYPE_SPL
4f40: 49 54 54 41 42 4c 45 29 20 20 5c 0a 20 20 28 28  ITTABLE)  \.  ((
4f50: 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 31 20  TYPE_SIZE) == 1 
4f60: 7c 7c 20 28 54 59 50 45 5f 53 49 5a 45 29 20 3d  || (TYPE_SIZE) =
4f70: 3d 20 32 20 7c 7c 20 28 54 59 50 45 5f 53 49 5a  = 2 || (TYPE_SIZ
4f80: 45 29 20 3d 3d 20 34 09 09 5c 0a 20 20 20 7c 7c  E) == 4..\.   ||
4f90: 20 28 28 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d   ((TYPE_SIZE) ==
4fa0: 20 38 20 26 26 20 28 54 59 50 45 5f 53 50 4c 49   8 && (TYPE_SPLI
4fb0: 54 54 41 42 4c 45 29 09 09 09 09 5c 0a 20 20 20  TTABLE)....\.   
4fc0: 20 20 20 20 26 26 20 28 28 4c 49 53 54 29 2e 66      && ((LIST).f
4fd0: 6c 61 67 73 20 26 20 5f 5f 41 56 5f 47 43 43 5f  lags & __AV_GCC_
4fe0: 53 54 52 55 43 54 5f 52 45 54 55 52 4e 29 09 09  STRUCT_RETURN)..
4ff0: 09 5c 0a 20 20 29 20 20 20 29 0a 2f 2a 20 54 75  .\.  )   )./* Tu
5000: 72 6e 20 6f 6e 20 5f 5f 41 56 5f 52 45 47 49 53  rn on __AV_REGIS
5010: 54 45 52 5f 53 54 52 55 43 54 5f 52 45 54 55 52  TER_STRUCT_RETUR
5020: 4e 20 69 66 20 5f 5f 41 56 5f 53 4d 41 4c 4c 5f  N if __AV_SMALL_
5030: 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20 77 61  STRUCT_RETURN wa
5040: 73 20 73 65 74 0a 20 2a 20 61 6e 64 20 74 68 65  s set. * and the
5050: 20 73 74 72 75 63 74 20 77 69 6c 6c 20 61 63 74   struct will act
5060: 75 61 6c 6c 79 20 62 65 20 72 65 74 75 72 6e 65  ually be returne
5070: 64 20 69 6e 20 72 65 67 69 73 74 65 72 73 2e 0a  d in registers..
5080: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76   */.#define __av
5090: 5f 73 74 61 72 74 5f 73 74 72 75 63 74 33 28 4c  _start_struct3(L
50a0: 49 53 54 29 20 20 5c 0a 20 20 28 28 4c 49 53 54  IST)  \.  ((LIST
50b0: 29 2e 66 6c 61 67 73 20 7c 3d 20 5f 5f 41 56 5f  ).flags |= __AV_
50c0: 52 45 47 49 53 54 45 52 5f 53 54 52 55 43 54 5f  REGISTER_STRUCT_
50d0: 52 45 54 55 52 4e 2c 20 30 29 0a 23 65 6e 64 69  RETURN, 0).#endi
50e0: 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  f.#if defined(__
50f0: 61 6c 70 68 61 5f 5f 29 0a 23 64 65 66 69 6e 65  alpha__).#define
5100: 20 5f 5f 61 76 5f 72 65 67 5f 73 74 72 75 63 74   __av_reg_struct
5110: 5f 72 65 74 75 72 6e 28 4c 49 53 54 2c 54 59 50  _return(LIST,TYP
5120: 45 5f 53 49 5a 45 2c 54 59 50 45 5f 53 50 4c 49  E_SIZE,TYPE_SPLI
5130: 54 54 41 42 4c 45 29 20 20 5c 0a 20 20 28 28 54  TTABLE)  \.  ((T
5140: 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 31 20 7c  YPE_SIZE) == 1 |
5150: 7c 20 28 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d  | (TYPE_SIZE) ==
5160: 20 32 20 7c 7c 20 28 54 59 50 45 5f 53 49 5a 45   2 || (TYPE_SIZE
5170: 29 20 3d 3d 20 34 20 7c 7c 20 28 54 59 50 45 5f  ) == 4 || (TYPE_
5180: 53 49 5a 45 29 20 3d 3d 20 38 09 5c 0a 20 20 20  SIZE) == 8.\.   
5190: 7c 7c 20 28 28 54 59 50 45 5f 53 49 5a 45 29 20  || ((TYPE_SIZE) 
51a0: 3d 3d 20 31 36 20 26 26 20 28 54 59 50 45 5f 53  == 16 && (TYPE_S
51b0: 50 4c 49 54 54 41 42 4c 45 29 09 09 09 09 5c 0a  PLITTABLE)....\.
51c0: 20 20 20 20 20 20 20 26 26 20 28 28 4c 49 53 54         && ((LIST
51d0: 29 2e 66 6c 61 67 73 20 26 20 5f 5f 41 56 5f 47  ).flags & __AV_G
51e0: 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e  CC_STRUCT_RETURN
51f0: 29 09 09 09 5c 0a 20 20 29 20 20 20 29 0a 2f 2a  )...\.  )   )./*
5200: 20 54 75 72 6e 20 6f 6e 20 5f 5f 41 56 5f 52 45   Turn on __AV_RE
5210: 47 49 53 54 45 52 5f 53 54 52 55 43 54 5f 52 45  GISTER_STRUCT_RE
5220: 54 55 52 4e 20 69 66 20 5f 5f 41 56 5f 53 4d 41  TURN if __AV_SMA
5230: 4c 4c 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e  LL_STRUCT_RETURN
5240: 20 77 61 73 20 73 65 74 0a 20 2a 20 61 6e 64 20   was set. * and 
5250: 74 68 65 20 73 74 72 75 63 74 20 77 69 6c 6c 20  the struct will 
5260: 61 63 74 75 61 6c 6c 79 20 62 65 20 72 65 74 75  actually be retu
5270: 72 6e 65 64 20 69 6e 20 72 65 67 69 73 74 65 72  rned in register
5280: 73 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f  s.. */.#define _
5290: 5f 61 76 5f 73 74 61 72 74 5f 73 74 72 75 63 74  _av_start_struct
52a0: 33 28 4c 49 53 54 29 20 20 5c 0a 20 20 28 28 4c  3(LIST)  \.  ((L
52b0: 49 53 54 29 2e 66 6c 61 67 73 20 7c 3d 20 5f 5f  IST).flags |= __
52c0: 41 56 5f 52 45 47 49 53 54 45 52 5f 53 54 52 55  AV_REGISTER_STRU
52d0: 43 54 5f 52 45 54 55 52 4e 2c 20 30 29 0a 23 65  CT_RETURN, 0).#e
52e0: 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64  ndif.#if defined
52f0: 28 5f 5f 68 70 70 61 5f 5f 29 0a 23 64 65 66 69  (__hppa__).#defi
5300: 6e 65 20 5f 5f 61 76 5f 72 65 67 5f 73 74 72 75  ne __av_reg_stru
5310: 63 74 5f 72 65 74 75 72 6e 28 4c 49 53 54 2c 54  ct_return(LIST,T
5320: 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 53 50  YPE_SIZE,TYPE_SP
5330: 4c 49 54 54 41 42 4c 45 29 20 20 5c 0a 20 20 28  LITTABLE)  \.  (
5340: 28 4c 49 53 54 29 2e 66 6c 61 67 73 20 26 20 5f  (LIST).flags & _
5350: 5f 41 56 5f 4f 4c 44 47 43 43 5f 53 54 52 55 43  _AV_OLDGCC_STRUC
5360: 54 5f 52 45 54 55 52 4e 09 09 09 09 5c 0a 20 20  T_RETURN....\.  
5370: 20 3f 20 28 28 54 59 50 45 5f 53 49 5a 45 29 20   ? ((TYPE_SIZE) 
5380: 3d 3d 20 31 20 7c 7c 20 28 54 59 50 45 5f 53 49  == 1 || (TYPE_SI
5390: 5a 45 29 20 3d 3d 20 32 20 7c 7c 20 28 54 59 50  ZE) == 2 || (TYP
53a0: 45 5f 53 49 5a 45 29 20 3d 3d 20 34 29 09 09 5c  E_SIZE) == 4)..\
53b0: 0a 20 20 20 3a 20 28 28 54 59 50 45 5f 53 49 5a  .   : ((TYPE_SIZ
53c0: 45 29 20 3c 3d 20 38 29 09 09 09 09 09 09 09 5c  E) <= 8).......\
53d0: 0a 20 20 29 0a 2f 2a 20 54 65 73 74 20 62 6f 74  .  )./* Test bot
53e0: 68 20 5f 5f 41 56 5f 4f 4c 44 47 43 43 5f 53 54  h __AV_OLDGCC_ST
53f0: 52 55 43 54 5f 52 45 54 55 52 4e 20 61 6e 64 20  RUCT_RETURN and 
5400: 5f 5f 41 56 5f 53 4d 41 4c 4c 5f 53 54 52 55 43  __AV_SMALL_STRUC
5410: 54 5f 52 45 54 55 52 4e 20 61 74 20 72 75 6e 20  T_RETURN at run 
5420: 74 69 6d 65 2e 20 2a 2f 0a 23 64 65 66 69 6e 65  time. */.#define
5430: 20 5f 5f 61 76 5f 73 74 61 72 74 5f 73 74 72 75   __av_start_stru
5440: 63 74 33 28 4c 49 53 54 29 20 20 5c 0a 20 20 30  ct3(LIST)  \.  0
5450: 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69  .#endif.#if defi
5460: 6e 65 64 28 5f 5f 6d 69 70 73 5f 5f 29 20 26 26  ned(__mips__) &&
5470: 20 21 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73   !defined(__mips
5480: 6e 33 32 5f 5f 29 0a 23 64 65 66 69 6e 65 20 5f  n32__).#define _
5490: 5f 61 76 5f 72 65 67 5f 73 74 72 75 63 74 5f 72  _av_reg_struct_r
54a0: 65 74 75 72 6e 28 4c 49 53 54 2c 54 59 50 45 5f  eturn(LIST,TYPE_
54b0: 53 49 5a 45 2c 54 59 50 45 5f 53 50 4c 49 54 54  SIZE,TYPE_SPLITT
54c0: 41 42 4c 45 29 20 20 5c 0a 20 20 28 28 54 59 50  ABLE)  \.  ((TYP
54d0: 45 5f 53 49 5a 45 29 20 3d 3d 20 31 20 7c 7c 20  E_SIZE) == 1 || 
54e0: 28 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 32  (TYPE_SIZE) == 2
54f0: 20 7c 7c 20 28 54 59 50 45 5f 53 49 5a 45 29 20   || (TYPE_SIZE) 
5500: 3d 3d 20 34 29 0a 2f 2a 20 54 65 73 74 20 5f 5f  == 4)./* Test __
5510: 41 56 5f 53 4d 41 4c 4c 5f 53 54 52 55 43 54 5f  AV_SMALL_STRUCT_
5520: 52 45 54 55 52 4e 20 69 6e 73 74 65 61 64 20 6f  RETURN instead o
5530: 66 20 5f 5f 41 56 5f 52 45 47 49 53 54 45 52 5f  f __AV_REGISTER_
5540: 53 54 52 55 43 54 5f 52 45 54 55 52 4e 2e 20 2a  STRUCT_RETURN. *
5550: 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73  /.#define __av_s
5560: 74 61 72 74 5f 73 74 72 75 63 74 33 28 4c 49 53  tart_struct3(LIS
5570: 54 29 20 20 5c 0a 20 20 30 0a 23 65 6e 64 69 66  T)  \.  0.#endif
5580: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d  .#if defined(__m
5590: 69 70 73 6e 33 32 5f 5f 29 20 7c 7c 20 64 65 66  ipsn32__) || def
55a0: 69 6e 65 64 28 5f 5f 6d 69 70 73 36 34 5f 5f 29  ined(__mips64__)
55b0: 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 72 65  .#define __av_re
55c0: 67 5f 73 74 72 75 63 74 5f 72 65 74 75 72 6e 28  g_struct_return(
55d0: 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54  LIST,TYPE_SIZE,T
55e0: 59 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 20  YPE_SPLITTABLE) 
55f0: 20 5c 0a 20 20 28 28 4c 49 53 54 29 2e 66 6c 61   \.  ((LIST).fla
5600: 67 73 20 26 20 5f 5f 41 56 5f 47 43 43 5f 53 54  gs & __AV_GCC_ST
5610: 52 55 43 54 5f 52 45 54 55 52 4e 09 09 09 09 5c  RUCT_RETURN....\
5620: 0a 20 20 20 3f 20 28 28 54 59 50 45 5f 53 49 5a  .   ? ((TYPE_SIZ
5630: 45 29 20 3d 3d 20 31 20 7c 7c 20 28 54 59 50 45  E) == 1 || (TYPE
5640: 5f 53 49 5a 45 29 20 3d 3d 20 32 20 7c 7c 20 28  _SIZE) == 2 || (
5650: 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 34 20  TYPE_SIZE) == 4 
5660: 7c 7c 20 28 54 59 50 45 5f 53 49 5a 45 29 20 3d  || (TYPE_SIZE) =
5670: 3d 20 38 29 20 5c 0a 20 20 20 3a 20 28 28 54 59  = 8) \.   : ((TY
5680: 50 45 5f 53 49 5a 45 29 20 3c 3d 20 31 36 29 09  PE_SIZE) <= 16).
5690: 09 09 09 09 09 5c 0a 20 20 29 0a 2f 2a 20 54 75  .....\.  )./* Tu
56a0: 72 6e 20 6f 6e 20 5f 5f 41 56 5f 52 45 47 49 53  rn on __AV_REGIS
56b0: 54 45 52 5f 53 54 52 55 43 54 5f 52 45 54 55 52  TER_STRUCT_RETUR
56c0: 4e 20 69 66 20 5f 5f 41 56 5f 53 4d 41 4c 4c 5f  N if __AV_SMALL_
56d0: 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20 77 61  STRUCT_RETURN wa
56e0: 73 20 73 65 74 0a 20 2a 20 61 6e 64 20 74 68 65  s set. * and the
56f0: 20 73 74 72 75 63 74 20 77 69 6c 6c 20 61 63 74   struct will act
5700: 75 61 6c 6c 79 20 62 65 20 72 65 74 75 72 6e 65  ually be returne
5710: 64 20 69 6e 20 72 65 67 69 73 74 65 72 73 2e 0a  d in registers..
5720: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76   */.#define __av
5730: 5f 73 74 61 72 74 5f 73 74 72 75 63 74 33 28 4c  _start_struct3(L
5740: 49 53 54 29 20 20 5c 0a 20 20 28 28 4c 49 53 54  IST)  \.  ((LIST
5750: 29 2e 66 6c 61 67 73 20 7c 3d 20 5f 5f 41 56 5f  ).flags |= __AV_
5760: 52 45 47 49 53 54 45 52 5f 53 54 52 55 43 54 5f  REGISTER_STRUCT_
5770: 52 45 54 55 52 4e 2c 20 30 29 0a 23 65 6e 64 69  RETURN, 0).#endi
5780: 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  f.#if defined(__
5790: 73 70 61 72 63 36 34 5f 5f 29 20 7c 7c 20 64 65  sparc64__) || de
57a0: 66 69 6e 65 64 28 5f 5f 69 61 36 34 5f 5f 29 0a  fined(__ia64__).
57b0: 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 72 65 67  #define __av_reg
57c0: 5f 73 74 72 75 63 74 5f 72 65 74 75 72 6e 28 4c  _struct_return(L
57d0: 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59  IST,TYPE_SIZE,TY
57e0: 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 20 20  PE_SPLITTABLE)  
57f0: 5c 0a 20 20 28 28 54 59 50 45 5f 53 49 5a 45 29  \.  ((TYPE_SIZE)
5800: 20 3c 3d 20 33 32 29 0a 2f 2a 20 54 75 72 6e 20   <= 32)./* Turn 
5810: 6f 6e 20 5f 5f 41 56 5f 52 45 47 49 53 54 45 52  on __AV_REGISTER
5820: 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20 69  _STRUCT_RETURN i
5830: 66 20 5f 5f 41 56 5f 53 4d 41 4c 4c 5f 53 54 52  f __AV_SMALL_STR
5840: 55 43 54 5f 52 45 54 55 52 4e 20 77 61 73 20 73  UCT_RETURN was s
5850: 65 74 0a 20 2a 20 61 6e 64 20 74 68 65 20 73 74  et. * and the st
5860: 72 75 63 74 20 77 69 6c 6c 20 61 63 74 75 61 6c  ruct will actual
5870: 6c 79 20 62 65 20 72 65 74 75 72 6e 65 64 20 69  ly be returned i
5880: 6e 20 72 65 67 69 73 74 65 72 73 2e 0a 20 2a 2f  n registers.. */
5890: 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74  .#define __av_st
58a0: 61 72 74 5f 73 74 72 75 63 74 33 28 4c 49 53 54  art_struct3(LIST
58b0: 29 20 20 5c 0a 20 20 28 28 4c 49 53 54 29 2e 66  )  \.  ((LIST).f
58c0: 6c 61 67 73 20 7c 3d 20 5f 5f 41 56 5f 52 45 47  lags |= __AV_REG
58d0: 49 53 54 45 52 5f 53 54 52 55 43 54 5f 52 45 54  ISTER_STRUCT_RET
58e0: 55 52 4e 2c 20 30 29 0a 23 65 6e 64 69 66 0a 23  URN, 0).#endif.#
58f0: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 78 38 36  if defined(__x86
5900: 5f 36 34 5f 5f 29 0a 23 64 65 66 69 6e 65 20 5f  _64__).#define _
5910: 5f 61 76 5f 72 65 67 5f 73 74 72 75 63 74 5f 72  _av_reg_struct_r
5920: 65 74 75 72 6e 28 4c 49 53 54 2c 54 59 50 45 5f  eturn(LIST,TYPE_
5930: 53 49 5a 45 2c 54 59 50 45 5f 53 50 4c 49 54 54  SIZE,TYPE_SPLITT
5940: 41 42 4c 45 29 20 20 5c 0a 20 20 28 28 54 59 50  ABLE)  \.  ((TYP
5950: 45 5f 53 49 5a 45 29 20 3c 3d 20 31 36 29 0a 2f  E_SIZE) <= 16)./
5960: 2a 20 54 75 72 6e 20 6f 6e 20 5f 5f 41 56 5f 52  * Turn on __AV_R
5970: 45 47 49 53 54 45 52 5f 53 54 52 55 43 54 5f 52  EGISTER_STRUCT_R
5980: 45 54 55 52 4e 20 69 66 20 5f 5f 41 56 5f 53 4d  ETURN if __AV_SM
5990: 41 4c 4c 5f 53 54 52 55 43 54 5f 52 45 54 55 52  ALL_STRUCT_RETUR
59a0: 4e 20 77 61 73 20 73 65 74 0a 20 2a 20 61 6e 64  N was set. * and
59b0: 20 74 68 65 20 73 74 72 75 63 74 20 77 69 6c 6c   the struct will
59c0: 20 61 63 74 75 61 6c 6c 79 20 62 65 20 72 65 74   actually be ret
59d0: 75 72 6e 65 64 20 69 6e 20 72 65 67 69 73 74 65  urned in registe
59e0: 72 73 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20  rs.. */.#define 
59f0: 5f 5f 61 76 5f 73 74 61 72 74 5f 73 74 72 75 63  __av_start_struc
5a00: 74 33 28 4c 49 53 54 29 20 20 5c 0a 20 20 28 28  t3(LIST)  \.  ((
5a10: 4c 49 53 54 29 2e 66 6c 61 67 73 20 7c 3d 20 5f  LIST).flags |= _
5a20: 5f 41 56 5f 52 45 47 49 53 54 45 52 5f 53 54 52  _AV_REGISTER_STR
5a30: 55 43 54 5f 52 45 54 55 52 4e 2c 20 30 29 0a 23  UCT_RETURN, 0).#
5a40: 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65  endif.#if define
5a50: 64 28 5f 5f 69 33 38 36 5f 5f 29 0a 2f 2a 20 52  d(__i386__)./* R
5a60: 65 74 75 72 6e 20 73 74 72 75 63 74 75 72 65 20  eturn structure 
5a70: 70 6f 69 6e 74 65 72 20 69 73 20 70 61 73 73 65  pointer is passe
5a80: 64 20 69 6e 20 61 20 73 70 65 63 69 61 6c 20 72  d in a special r
5a90: 65 67 69 73 74 65 72 20 6f 72 20 61 73 20 66 69  egister or as fi
5aa0: 72 73 74 20 61 72 67 2e 20 2a 2f 0a 23 64 65 66  rst arg. */.#def
5ab0: 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72 74 5f 73  ine __av_start_s
5ac0: 74 72 75 63 74 34 28 4c 49 53 54 2c 54 59 50 45  truct4(LIST,TYPE
5ad0: 5f 53 49 5a 45 29 09 09 09 09 5c 0a 20 20 28 28  _SIZE)....\.  ((
5ae0: 4c 49 53 54 29 2e 66 6c 61 67 73 20 26 20 5f 5f  LIST).flags & __
5af0: 41 56 5f 4e 45 58 54 47 43 43 5f 53 54 52 55 43  AV_NEXTGCC_STRUC
5b00: 54 5f 52 45 54 55 52 4e 09 09 09 09 5c 0a 20 20  T_RETURN....\.  
5b10: 20 3f 20 30 09 09 09 09 09 09 20 2f 2a 20 73 70   ? 0...... /* sp
5b20: 65 63 69 61 6c 20 72 65 67 69 73 74 65 72 20 2a  ecial register *
5b30: 2f 09 5c 0a 20 20 20 3a 20 28 2a 28 4c 49 53 54  /.\.   : (*(LIST
5b40: 29 2e 61 70 74 72 2b 2b 20 3d 20 28 5f 5f 61 76  ).aptr++ = (__av
5b50: 77 6f 72 64 29 28 28 4c 49 53 54 29 2e 72 61 64  word)((LIST).rad
5b60: 64 72 29 2c 20 30 29 09 2f 2a 20 66 69 72 73 74  dr), 0)./* first
5b70: 20 61 72 67 20 2a 2f 09 5c 0a 20 20 29 0a 23 65   arg */.\.  ).#e
5b80: 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64  ndif.#if defined
5b90: 28 5f 5f 6d 36 38 6b 5f 5f 29 20 7c 7c 20 64 65  (__m68k__) || de
5ba0: 66 69 6e 65 64 28 5f 5f 68 70 70 61 5f 5f 29 20  fined(__hppa__) 
5bb0: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 69 61 36  || defined(__ia6
5bc0: 34 5f 5f 29 0a 2f 2a 20 52 65 74 75 72 6e 20 73  4__)./* Return s
5bd0: 74 72 75 63 74 75 72 65 20 70 6f 69 6e 74 65 72  tructure pointer
5be0: 20 69 73 20 70 61 73 73 65 64 20 69 6e 20 61 20   is passed in a 
5bf0: 73 70 65 63 69 61 6c 20 72 65 67 69 73 74 65 72  special register
5c00: 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f  .. */.#define __
5c10: 61 76 5f 73 74 61 72 74 5f 73 74 72 75 63 74 34  av_start_struct4
5c20: 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 29  (LIST,TYPE_SIZE)
5c30: 20 20 30 0a 23 65 6e 64 69 66 0a 2f 2a 20 52 65    0.#endif./* Re
5c40: 74 75 72 6e 20 73 74 72 75 63 74 75 72 65 20 70  turn structure p
5c50: 6f 69 6e 74 65 72 20 69 73 20 70 61 73 73 65 64  ointer is passed
5c60: 20 61 73 20 66 69 72 73 74 20 61 72 67 2e 0a 20   as first arg.. 
5c70: 2a 2f 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f  */.#if defined(_
5c80: 5f 61 6c 70 68 61 5f 5f 29 20 7c 7c 20 64 65 66  _alpha__) || def
5c90: 69 6e 65 64 28 5f 5f 61 72 6d 5f 5f 29 20 7c 7c  ined(__arm__) ||
5ca0: 20 64 65 66 69 6e 65 64 28 5f 5f 72 73 36 30 30   defined(__rs600
5cb0: 30 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  0__) || defined(
5cc0: 5f 5f 63 6f 6e 76 65 78 5f 5f 29 20 7c 7c 20 64  __convex__) || d
5cd0: 65 66 69 6e 65 64 28 5f 5f 73 33 39 30 5f 5f 29  efined(__s390__)
5ce0: 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74  .#define __av_st
5cf0: 61 72 74 5f 73 74 72 75 63 74 34 28 4c 49 53 54  art_struct4(LIST
5d00: 2c 54 59 50 45 5f 53 49 5a 45 29 09 09 09 09 5c  ,TYPE_SIZE)....\
5d10: 0a 20 20 20 28 2a 28 4c 49 53 54 29 2e 61 70 74  .   (*(LIST).apt
5d20: 72 2b 2b 20 3d 20 28 5f 5f 61 76 77 6f 72 64 29  r++ = (__avword)
5d30: 28 28 4c 49 53 54 29 2e 72 61 64 64 72 29 2c 20  ((LIST).raddr), 
5d40: 30 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65  0).#endif.#if de
5d50: 66 69 6e 65 64 28 5f 5f 6d 69 70 73 5f 5f 29 20  fined(__mips__) 
5d60: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70  || defined(__mip
5d70: 73 6e 33 32 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  sn32__) || defin
5d80: 65 64 28 5f 5f 6d 69 70 73 36 34 5f 5f 29 20 7c  ed(__mips64__) |
5d90: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72  | defined(__spar
5da0: 63 36 34 5f 5f 29 0a 23 64 65 66 69 6e 65 20 5f  c64__).#define _
5db0: 5f 61 76 5f 73 74 61 72 74 5f 73 74 72 75 63 74  _av_start_struct
5dc0: 34 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45  4(LIST,TYPE_SIZE
5dd0: 29 09 09 09 09 5c 0a 20 20 20 28 2a 28 4c 49 53  )....\.   (*(LIS
5de0: 54 29 2e 61 70 74 72 2b 2b 20 3d 20 28 5f 5f 61  T).aptr++ = (__a
5df0: 76 77 6f 72 64 29 28 28 4c 49 53 54 29 2e 72 61  vword)((LIST).ra
5e00: 64 64 72 29 2c 09 09 09 09 5c 0a 20 20 20 20 28  ddr),....\.    (
5e10: 4c 49 53 54 29 2e 61 6e 75 6d 2b 2b 2c 09 09 09  LIST).anum++,...
5e20: 09 09 09 09 5c 0a 20 20 20 20 30 09 09 09 09 09  ....\.    0.....
5e30: 09 09 09 09 5c 0a 20 20 20 29 0a 23 65 6e 64 69  ....\.   ).#endi
5e40: 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  f.#if defined(__
5e50: 78 38 36 5f 36 34 5f 5f 29 0a 23 64 65 66 69 6e  x86_64__).#defin
5e60: 65 20 5f 5f 61 76 5f 73 74 61 72 74 5f 73 74 72  e __av_start_str
5e70: 75 63 74 34 28 4c 49 53 54 2c 54 59 50 45 5f 53  uct4(LIST,TYPE_S
5e80: 49 5a 45 29 09 09 09 09 5c 0a 20 20 20 28 2a 28  IZE)....\.   (*(
5e90: 4c 49 53 54 29 2e 69 61 70 74 72 2b 2b 20 3d 20  LIST).iaptr++ = 
5ea0: 28 5f 5f 61 76 77 6f 72 64 29 28 28 4c 49 53 54  (__avword)((LIST
5eb0: 29 2e 72 61 64 64 72 29 2c 20 30 29 0a 23 65 6e  ).raddr), 0).#en
5ec0: 64 69 66 0a 23 65 6e 64 69 66 0a 0a 0a 2f 2a 0a  dif.#endif.../*.
5ed0: 20 2a 20 61 76 5f 3c 74 79 70 65 3e 20 6d 61 63   * av_<type> mac
5ee0: 72 6f 73 20 77 68 69 63 68 20 73 70 65 63 69 66  ros which specif
5ef0: 79 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20 61  y the argument a
5f00: 6e 64 20 69 74 73 20 74 79 70 65 0a 20 2a 2f 0a  nd its type. */.
5f10: 0a 2f 2a 0a 20 2a 20 73 63 61 6c 61 72 20 61 72  ./*. * scalar ar
5f20: 67 75 6d 65 6e 74 20 74 79 70 65 73 0a 20 2a 2f  gument types. */
5f30: 0a 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  ..#if defined(__
5f40: 69 33 38 36 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  i386__) || defin
5f50: 65 64 28 5f 5f 6d 36 38 6b 5f 5f 29 20 7c 7c 20  ed(__m68k__) || 
5f60: 28 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63  (defined(__sparc
5f70: 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 28  __) && !defined(
5f80: 5f 5f 73 70 61 72 63 36 34 5f 5f 29 29 20 7c 7c  __sparc64__)) ||
5f90: 20 64 65 66 69 6e 65 64 28 5f 5f 61 6c 70 68 61   defined(__alpha
5fa0: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
5fb0: 5f 61 72 6d 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  _arm__) || defin
5fc0: 65 64 28 5f 5f 72 73 36 30 30 30 5f 5f 29 20 7c  ed(__rs6000__) |
5fd0: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 38 38 6b  | defined(__m88k
5fe0: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
5ff0: 5f 63 6f 6e 76 65 78 5f 5f 29 20 7c 7c 20 64 65  _convex__) || de
6000: 66 69 6e 65 64 28 5f 5f 69 61 36 34 5f 5f 29 20  fined(__ia64__) 
6010: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 78 38 36  || defined(__x86
6020: 5f 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65  _64__) || define
6030: 64 28 5f 5f 73 33 39 30 5f 5f 29 0a 2f 2a 20 46  d(__s390__)./* F
6040: 6c 6f 61 74 73 20 61 6e 64 20 61 6c 6c 20 69 6e  loats and all in
6050: 74 65 67 65 72 20 74 79 70 65 73 20 61 72 65 20  teger types are 
6060: 70 61 73 73 65 64 20 61 73 20 77 6f 72 64 73 2c  passed as words,
6070: 0a 20 2a 20 64 6f 75 62 6c 65 73 20 61 73 20 74  . * doubles as t
6080: 77 6f 20 77 6f 72 64 73 2e 0a 20 2a 2f 0a 23 64  wo words.. */.#d
6090: 65 66 69 6e 65 20 5f 5f 61 76 5f 77 6f 72 64 28  efine __av_word(
60a0: 4c 49 53 54 2c 56 41 4c 29 09 09 09 09 09 09 5c  LIST,VAL)......\
60b0: 0a 20 20 28 2b 2b 28 4c 49 53 54 29 2e 61 70 74  .  (++(LIST).apt
60c0: 72 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49  r > __av_eptr(LI
60d0: 53 54 29 09 09 09 09 09 5c 0a 20 20 20 3f 20 2d  ST).....\.   ? -
60e0: 31 20 3a 20 28 28 4c 49 53 54 29 2e 61 70 74 72  1 : ((LIST).aptr
60f0: 5b 2d 31 5d 20 3d 20 28 5f 5f 61 76 77 6f 72 64  [-1] = (__avword
6100: 29 28 56 41 4c 29 2c 20 30 29 29 0a 23 65 6e 64  )(VAL), 0)).#end
6110: 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f  if.#if defined(_
6120: 5f 6d 69 70 73 5f 5f 29 20 7c 7c 20 64 65 66 69  _mips__) || defi
6130: 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29  ned(__mipsn32__)
6140: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69   || defined(__mi
6150: 70 73 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  ps64__) || defin
6160: 65 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29 0a  ed(__sparc64__).
6170: 2f 2a 20 4d 6f 73 74 20 74 68 69 6e 67 73 20 61  /* Most things a
6180: 72 65 20 70 61 73 73 65 64 20 61 73 20 69 6e 74  re passed as int
6190: 65 67 65 72 73 3a 0a 20 2a 2f 0a 23 64 65 66 69  egers:. */.#defi
61a0: 6e 65 20 5f 5f 61 76 5f 77 6f 72 64 28 4c 49 53  ne __av_word(LIS
61b0: 54 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a 20 20  T,VAL)......\.  
61c0: 28 2b 2b 28 4c 49 53 54 29 2e 61 70 74 72 20 3e  (++(LIST).aptr >
61d0: 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29   __av_eptr(LIST)
61e0: 09 09 09 09 09 5c 0a 20 20 20 3f 20 2d 31 20 3a  .....\.   ? -1 :
61f0: 20 28 28 4c 49 53 54 29 2e 61 6e 75 6d 2b 2b 2c   ((LIST).anum++,
6200: 20 28 4c 49 53 54 29 2e 61 70 74 72 5b 2d 31 5d   (LIST).aptr[-1]
6210: 20 3d 20 28 5f 5f 61 76 77 6f 72 64 29 28 56 41   = (__avword)(VA
6220: 4c 29 2c 20 30 29 29 0a 23 65 6e 64 69 66 0a 23  L), 0)).#endif.#
6230: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 68 70 70  if defined(__hpp
6240: 61 5f 5f 29 0a 2f 2a 20 46 6c 6f 61 74 73 20 61  a__)./* Floats a
6250: 6e 64 20 61 6c 6c 20 69 6e 74 65 67 65 72 20 74  nd all integer t
6260: 79 70 65 73 20 61 72 65 20 70 61 73 73 65 64 20  ypes are passed 
6270: 61 73 20 77 6f 72 64 73 2c 0a 20 2a 20 64 6f 75  as words,. * dou
6280: 62 6c 65 73 20 61 73 20 74 77 6f 20 77 6f 72 64  bles as two word
6290: 73 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f  s.. */.#define _
62a0: 5f 61 76 5f 77 6f 72 64 28 4c 49 53 54 2c 56 41  _av_word(LIST,VA
62b0: 4c 29 09 09 09 09 09 09 5c 0a 20 20 28 2d 2d 28  L)......\.  (--(
62c0: 4c 49 53 54 29 2e 61 70 74 72 20 3c 20 5f 5f 61  LIST).aptr < __a
62d0: 76 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09 09  v_eptr(LIST)....
62e0: 09 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 28 2a 28  .\.   ? -1 : (*(
62f0: 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 28 5f 5f  LIST).aptr = (__
6300: 61 76 77 6f 72 64 29 28 56 41 4c 29 2c 20 30 29  avword)(VAL), 0)
6310: 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66  ).#endif.#if def
6320: 69 6e 65 64 28 41 4d 49 47 41 29 0a 2f 2a 20 53  ined(AMIGA)./* S
6330: 6f 6d 65 20 61 72 67 75 6d 65 6e 74 73 20 61 72  ome arguments ar
6340: 65 20 70 61 73 73 65 64 20 69 6e 20 72 65 67 69  e passed in regi
6350: 73 74 65 72 73 2e 20 51 75 65 72 79 20 74 68 65  sters. Query the
6360: 20 6d 61 63 72 6f 20 41 56 5f 41 52 47 5f 52 45   macro AV_ARG_RE
6370: 47 4e 55 4d 2e 0a 20 2a 20 54 68 69 73 20 73 68  GNUM.. * This sh
6380: 6f 75 6c 64 20 72 65 61 6c 6c 79 20 62 65 20 61  ould really be a
6390: 6e 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 5f 5f  n argument to __
63a0: 61 76 5f 77 6f 72 64 2e 0a 20 2a 2f 0a 23 75 6e  av_word.. */.#un
63b0: 64 65 66 20 5f 5f 61 76 5f 77 6f 72 64 20 2f 2a  def __av_word /*
63c0: 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f  */.#define __av_
63d0: 77 6f 72 64 28 4c 49 53 54 2c 56 41 4c 29 09 09  word(LIST,VAL)..
63e0: 09 09 09 09 5c 0a 20 20 28 28 41 56 5f 41 52 47  ....\.  ((AV_ARG
63f0: 5f 52 45 47 4e 55 4d 29 20 3e 3d 20 30 09 09 09  _REGNUM) >= 0...
6400: 09 09 09 09 5c 0a 20 20 20 3f 20 28 28 41 56 5f  ....\.   ? ((AV_
6410: 41 52 47 5f 52 45 47 4e 55 4d 29 20 3c 20 38 2b  ARG_REGNUM) < 8+
6420: 37 09 09 09 09 09 09 5c 0a 20 20 20 20 20 20 3f  7......\.      ?
6430: 20 2d 31 20 3a 20 28 28 4c 49 53 54 29 2e 72 65   -1 : ((LIST).re
6440: 67 61 72 67 73 5b 28 41 56 5f 41 52 47 5f 52 45  gargs[(AV_ARG_RE
6450: 47 4e 55 4d 29 5d 20 3d 20 28 5f 5f 61 76 77 6f  GNUM)] = (__avwo
6460: 72 64 29 28 56 41 4c 29 2c 20 30 29 29 09 5c 0a  rd)(VAL), 0)).\.
6470: 20 20 20 3a 20 28 2b 2b 28 4c 49 53 54 29 2e 61     : (++(LIST).a
6480: 70 74 72 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28  ptr > __av_eptr(
6490: 4c 49 53 54 29 09 09 09 09 09 5c 0a 20 20 20 20  LIST).....\.    
64a0: 20 20 3f 20 2d 31 20 3a 20 28 28 4c 49 53 54 29    ? -1 : ((LIST)
64b0: 2e 61 70 74 72 5b 2d 31 5d 20 3d 20 28 5f 5f 61  .aptr[-1] = (__a
64c0: 76 77 6f 72 64 29 28 56 41 4c 29 2c 20 30 29 29  vword)(VAL), 0))
64d0: 29 0a 23 65 6e 64 69 66 0a 0a 2f 2a 20 69 6e 74  ).#endif../* int
64e0: 65 67 65 72 20 61 72 67 75 6d 65 6e 74 20 74 79  eger argument ty
64f0: 70 65 73 20 2a 2f 0a 0a 23 69 66 20 64 65 66 69  pes */..#if defi
6500: 6e 65 64 28 5f 5f 78 38 36 5f 36 34 5f 5f 29 0a  ned(__x86_64__).
6510: 2f 2a 20 54 68 65 20 66 69 72 73 74 20 36 20 69  /* The first 6 i
6520: 6e 74 65 67 65 72 20 61 72 67 75 6d 65 6e 74 73  nteger arguments
6530: 20 61 72 65 20 70 61 73 73 65 64 20 69 6e 20 72   are passed in r
6540: 65 67 69 73 74 65 72 73 2e 20 2a 2f 0a 23 64 65  egisters. */.#de
6550: 66 69 6e 65 20 61 76 5f 6c 6f 6e 67 28 4c 49 53  fine av_long(LIS
6560: 54 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a 20 20  T,VAL)......\.  
6570: 28 28 4c 49 53 54 29 2e 69 61 70 74 72 20 3c 20  ((LIST).iaptr < 
6580: 26 28 4c 49 53 54 29 2e 69 61 72 67 73 5b 36 5d  &(LIST).iargs[6]
6590: 09 09 09 09 09 5c 0a 20 20 20 3f 20 28 2a 28 4c  .....\.   ? (*(L
65a0: 49 53 54 29 2e 69 61 70 74 72 2b 2b 20 3d 20 28  IST).iaptr++ = (
65b0: 6c 6f 6e 67 29 28 56 41 4c 29 2c 20 30 29 09 09  long)(VAL), 0)..
65c0: 09 09 09 5c 0a 20 20 20 3a 20 5f 5f 61 76 5f 77  ...\.   : __av_w
65d0: 6f 72 64 28 4c 49 53 54 2c 28 6c 6f 6e 67 29 28  ord(LIST,(long)(
65e0: 56 41 4c 29 29 29 0a 23 65 6c 73 65 0a 23 64 65  VAL))).#else.#de
65f0: 66 69 6e 65 20 61 76 5f 6c 6f 6e 67 28 4c 49 53  fine av_long(LIS
6600: 54 2c 56 41 4c 29 09 5f 5f 61 76 5f 77 6f 72 64  T,VAL).__av_word
6610: 28 4c 49 53 54 2c 28 6c 6f 6e 67 29 28 56 41 4c  (LIST,(long)(VAL
6620: 29 29 0a 23 65 6e 64 69 66 0a 0a 23 69 66 20 64  )).#endif..#if d
6630: 65 66 69 6e 65 64 28 5f 5f 78 38 36 5f 36 34 5f  efined(__x86_64_
6640: 5f 29 0a 2f 2a 20 54 68 65 20 66 69 72 73 74 20  _)./* The first 
6650: 36 20 69 6e 74 65 67 65 72 20 61 72 67 75 6d 65  6 integer argume
6660: 6e 74 73 20 61 72 65 20 70 61 73 73 65 64 20 69  nts are passed i
6670: 6e 20 72 65 67 69 73 74 65 72 73 2e 20 2a 2f 0a  n registers. */.
6680: 23 64 65 66 69 6e 65 20 61 76 5f 75 6c 6f 6e 67  #define av_ulong
6690: 28 4c 49 53 54 2c 56 41 4c 29 09 09 09 09 09 09  (LIST,VAL)......
66a0: 5c 0a 20 20 28 28 4c 49 53 54 29 2e 69 61 70 74  \.  ((LIST).iapt
66b0: 72 20 3c 20 26 28 4c 49 53 54 29 2e 69 61 72 67  r < &(LIST).iarg
66c0: 73 5b 36 5d 09 09 09 09 09 5c 0a 20 20 20 3f 20  s[6].....\.   ? 
66d0: 28 2a 28 4c 49 53 54 29 2e 69 61 70 74 72 2b 2b  (*(LIST).iaptr++
66e0: 20 3d 20 28 75 6e 73 69 67 6e 65 64 20 6c 6f 6e   = (unsigned lon
66f0: 67 29 28 56 41 4c 29 2c 20 30 29 09 09 09 5c 0a  g)(VAL), 0)...\.
6700: 20 20 20 3a 20 5f 5f 61 76 5f 77 6f 72 64 28 4c     : __av_word(L
6710: 49 53 54 2c 28 75 6e 73 69 67 6e 65 64 20 6c 6f  IST,(unsigned lo
6720: 6e 67 29 28 56 41 4c 29 29 29 0a 23 65 6c 73 65  ng)(VAL))).#else
6730: 0a 23 64 65 66 69 6e 65 20 61 76 5f 75 6c 6f 6e  .#define av_ulon
6740: 67 28 4c 49 53 54 2c 56 41 4c 29 09 5f 5f 61 76  g(LIST,VAL).__av
6750: 5f 77 6f 72 64 28 4c 49 53 54 2c 28 75 6e 73 69  _word(LIST,(unsi
6760: 67 6e 65 64 20 6c 6f 6e 67 29 28 56 41 4c 29 29  gned long)(VAL))
6770: 0a 23 65 6e 64 69 66 0a 0a 23 69 66 20 64 65 66  .#endif..#if def
6780: 69 6e 65 64 28 5f 5f 78 38 36 5f 36 34 5f 5f 29  ined(__x86_64__)
6790: 0a 2f 2a 20 54 68 65 20 66 69 72 73 74 20 36 20  ./* The first 6 
67a0: 69 6e 74 65 67 65 72 20 61 72 67 75 6d 65 6e 74  integer argument
67b0: 73 20 61 72 65 20 70 61 73 73 65 64 20 69 6e 20  s are passed in 
67c0: 72 65 67 69 73 74 65 72 73 2e 20 2a 2f 0a 23 64  registers. */.#d
67d0: 65 66 69 6e 65 20 61 76 5f 70 74 72 28 4c 49 53  efine av_ptr(LIS
67e0: 54 2c 54 59 50 45 2c 56 41 4c 29 09 09 09 09 09  T,TYPE,VAL).....
67f0: 09 5c 0a 20 20 28 28 4c 49 53 54 29 2e 69 61 70  .\.  ((LIST).iap
6800: 74 72 20 3c 20 26 28 4c 49 53 54 29 2e 69 61 72  tr < &(LIST).iar
6810: 67 73 5b 36 5d 09 09 09 09 09 5c 0a 20 20 20 3f  gs[6].....\.   ?
6820: 20 28 2a 28 4c 49 53 54 29 2e 69 61 70 74 72 2b   (*(LIST).iaptr+
6830: 2b 20 3d 20 28 5f 5f 61 76 77 6f 72 64 29 28 54  + = (__avword)(T
6840: 59 50 45 29 28 56 41 4c 29 2c 20 30 29 09 09 09  YPE)(VAL), 0)...
6850: 5c 0a 20 20 20 3a 20 5f 5f 61 76 5f 77 6f 72 64  \.   : __av_word
6860: 28 4c 49 53 54 2c 28 54 59 50 45 29 28 56 41 4c  (LIST,(TYPE)(VAL
6870: 29 29 29 0a 23 65 6c 73 65 0a 23 64 65 66 69 6e  ))).#else.#defin
6880: 65 20 61 76 5f 70 74 72 28 4c 49 53 54 2c 54 59  e av_ptr(LIST,TY
6890: 50 45 2c 56 41 4c 29 09 5f 5f 61 76 5f 77 6f 72  PE,VAL).__av_wor
68a0: 64 28 4c 49 53 54 2c 28 54 59 50 45 29 28 56 41  d(LIST,(TYPE)(VA
68b0: 4c 29 29 0a 23 65 6e 64 69 66 0a 0a 23 64 65 66  L)).#endif..#def
68c0: 69 6e 65 20 61 76 5f 63 68 61 72 09 09 09 61 76  ine av_char...av
68d0: 5f 6c 6f 6e 67 0a 23 64 65 66 69 6e 65 20 61 76  _long.#define av
68e0: 5f 73 63 68 61 72 09 09 61 76 5f 6c 6f 6e 67 0a  _schar..av_long.
68f0: 23 64 65 66 69 6e 65 20 61 76 5f 73 68 6f 72 74  #define av_short
6900: 09 09 61 76 5f 6c 6f 6e 67 0a 23 64 65 66 69 6e  ..av_long.#defin
6910: 65 20 61 76 5f 69 6e 74 09 09 09 61 76 5f 6c 6f  e av_int...av_lo
6920: 6e 67 0a 23 64 65 66 69 6e 65 20 61 76 5f 75 63  ng.#define av_uc
6930: 68 61 72 09 09 61 76 5f 75 6c 6f 6e 67 0a 23 64  har..av_ulong.#d
6940: 65 66 69 6e 65 20 61 76 5f 75 73 68 6f 72 74 09  efine av_ushort.
6950: 09 61 76 5f 75 6c 6f 6e 67 0a 23 64 65 66 69 6e  .av_ulong.#defin
6960: 65 20 61 76 5f 75 69 6e 74 09 09 09 61 76 5f 75  e av_uint...av_u
6970: 6c 6f 6e 67 0a 0a 23 69 66 20 64 65 66 69 6e 65  long..#if define
6980: 64 28 5f 5f 6d 69 70 73 36 34 5f 5f 29 20 7c 7c  d(__mips64__) ||
6990: 20 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63   defined(__sparc
69a0: 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  64__) || defined
69b0: 28 5f 5f 61 6c 70 68 61 5f 5f 29 20 7c 7c 20 64  (__alpha__) || d
69c0: 65 66 69 6e 65 64 28 5f 5f 69 61 36 34 5f 5f 29  efined(__ia64__)
69d0: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 78 38   || defined(__x8
69e0: 36 5f 36 34 5f 5f 29 0a 2f 2a 20 60 6c 6f 6e 67  6_64__)./* `long
69f0: 20 6c 6f 6e 67 27 20 61 6e 64 20 60 6c 6f 6e 67   long' and `long
6a00: 27 20 61 72 65 20 69 64 65 6e 74 69 63 61 6c 2e  ' are identical.
6a10: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 61 76 5f 6c   */.#define av_l
6a20: 6f 6e 67 6c 6f 6e 67 09 09 61 76 5f 6c 6f 6e 67  onglong..av_long
6a30: 0a 23 64 65 66 69 6e 65 20 61 76 5f 75 6c 6f 6e  .#define av_ulon
6a40: 67 6c 6f 6e 67 09 09 61 76 5f 75 6c 6f 6e 67 0a  glong..av_ulong.
6a50: 23 65 6c 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  #elif defined(__
6a60: 6d 69 70 73 6e 33 32 5f 5f 29 0a 2f 2a 20 60 6c  mipsn32__)./* `l
6a70: 6f 6e 67 20 6c 6f 6e 67 27 20 66 69 74 73 20 69  ong long' fits i
6a80: 6e 20 5f 5f 61 76 77 6f 72 64 2e 20 2a 2f 0a 23  n __avword. */.#
6a90: 64 65 66 69 6e 65 20 61 76 5f 6c 6f 6e 67 6c 6f  define av_longlo
6aa0: 6e 67 09 09 5f 5f 61 76 5f 77 6f 72 64 0a 23 64  ng..__av_word.#d
6ab0: 65 66 69 6e 65 20 61 76 5f 75 6c 6f 6e 67 6c 6f  efine av_ulonglo
6ac0: 6e 67 28 4c 49 53 54 2c 56 41 4c 29 09 5f 5f 61  ng(LIST,VAL).__a
6ad0: 76 5f 77 6f 72 64 28 4c 49 53 54 2c 28 75 6e 73  v_word(LIST,(uns
6ae0: 69 67 6e 65 64 20 6c 6f 6e 67 20 6c 6f 6e 67 29  igned long long)
6af0: 28 56 41 4c 29 29 0a 23 65 6c 69 66 20 64 65 66  (VAL)).#elif def
6b00: 69 6e 65 64 28 5f 5f 69 33 38 36 5f 5f 29 20 7c  ined(__i386__) |
6b10: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b  | defined(__m68k
6b20: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
6b30: 5f 6d 69 70 73 5f 5f 29 20 7c 7c 20 28 64 65 66  _mips__) || (def
6b40: 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f 5f 29 20  ined(__sparc__) 
6b50: 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 73 70  && !defined(__sp
6b60: 61 72 63 36 34 5f 5f 29 29 20 7c 7c 20 64 65 66  arc64__)) || def
6b70: 69 6e 65 64 28 5f 5f 68 70 70 61 5f 5f 29 20 7c  ined(__hppa__) |
6b80: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 61 72 6d 5f  | defined(__arm_
6b90: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  _) || defined(__
6ba0: 72 73 36 30 30 30 5f 5f 29 20 7c 7c 20 64 65 66  rs6000__) || def
6bb0: 69 6e 65 64 28 5f 5f 6d 38 38 6b 5f 5f 29 20 7c  ined(__m88k__) |
6bc0: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 63 6f 6e 76  | defined(__conv
6bd0: 65 78 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  ex__) || defined
6be0: 28 5f 5f 73 33 39 30 5f 5f 29 0a 2f 2a 20 60 6c  (__s390__)./* `l
6bf0: 6f 6e 67 20 6c 6f 6e 67 27 73 20 61 72 65 20 70  ong long's are p
6c00: 61 73 73 65 64 20 65 6d 62 65 64 64 65 64 20 6f  assed embedded o
6c10: 6e 20 74 68 65 20 61 72 67 20 73 74 61 63 6b 2e  n the arg stack.
6c20: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 61 76 5f 6c   */.#define av_l
6c30: 6f 6e 67 6c 6f 6e 67 28 4c 49 53 54 2c 56 41 4c  onglong(LIST,VAL
6c40: 29 09 5f 5f 61 76 5f 6c 6f 6e 67 6c 6f 6e 67 28  ).__av_longlong(
6c50: 4c 49 53 54 2c 6c 6f 6e 67 20 6c 6f 6e 67 2c 56  LIST,long long,V
6c60: 41 4c 29 0a 23 64 65 66 69 6e 65 20 61 76 5f 75  AL).#define av_u
6c70: 6c 6f 6e 67 6c 6f 6e 67 28 4c 49 53 54 2c 56 41  longlong(LIST,VA
6c80: 4c 29 09 5f 5f 61 76 5f 6c 6f 6e 67 6c 6f 6e 67  L).__av_longlong
6c90: 28 4c 49 53 54 2c 75 6e 73 69 67 6e 65 64 20 6c  (LIST,unsigned l
6ca0: 6f 6e 67 20 6c 6f 6e 67 2c 56 41 4c 29 0a 23 69  ong long,VAL).#i
6cb0: 66 20 64 65 66 69 6e 65 64 28 5f 5f 69 33 38 36  f defined(__i386
6cc0: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
6cd0: 5f 6d 36 38 6b 5f 5f 29 20 7c 7c 20 64 65 66 69  _m68k__) || defi
6ce0: 6e 65 64 28 5f 5f 61 72 6d 5f 5f 29 20 7c 7c 20  ned(__arm__) || 
6cf0: 28 64 65 66 69 6e 65 64 28 5f 5f 72 73 36 30 30  (defined(__rs600
6d00: 30 5f 5f 29 20 26 26 20 28 64 65 66 69 6e 65 64  0__) && (defined
6d10: 28 5f 41 49 58 29 20 7c 7c 20 28 64 65 66 69 6e  (_AIX) || (defin
6d20: 65 64 28 5f 5f 4d 41 43 48 5f 5f 29 20 26 26 20  ed(__MACH__) && 
6d30: 64 65 66 69 6e 65 64 28 5f 5f 41 50 50 4c 45 5f  defined(__APPLE_
6d40: 5f 29 29 29 29 20 7c 7c 20 64 65 66 69 6e 65 64  _)))) || defined
6d50: 28 5f 5f 63 6f 6e 76 65 78 5f 5f 29 0a 2f 2a 20  (__convex__)./* 
6d60: 60 6c 6f 6e 67 20 6c 6f 6e 67 27 73 20 61 72 65  `long long's are
6d70: 20 28 61 74 20 6d 6f 73 74 29 20 77 6f 72 64 2d   (at most) word-
6d80: 61 6c 69 67 6e 65 64 2e 20 2a 2f 0a 23 64 65 66  aligned. */.#def
6d90: 69 6e 65 20 5f 5f 61 76 5f 6c 6f 6e 67 6c 6f 6e  ine __av_longlon
6da0: 67 28 4c 49 53 54 2c 54 59 50 45 2c 56 41 4c 29  g(LIST,TYPE,VAL)
6db0: 09 09 09 09 09 5c 0a 20 20 28 28 28 4c 49 53 54  .....\.  (((LIST
6dc0: 29 2e 61 70 74 72 20 2b 3d 20 73 69 7a 65 6f 66  ).aptr += sizeof
6dd0: 28 54 59 50 45 29 2f 73 69 7a 65 6f 66 28 5f 5f  (TYPE)/sizeof(__
6de0: 61 76 77 6f 72 64 29 29 20 3e 20 5f 5f 61 76 5f  avword)) > __av_
6df0: 65 70 74 72 28 4c 49 53 54 29 09 5c 0a 20 20 20  eptr(LIST).\.   
6e00: 3f 20 2d 31 20 3a 20 28 28 28 54 59 50 45 2a 29  ? -1 : (((TYPE*)
6e10: 28 4c 49 53 54 29 2e 61 70 74 72 29 5b 2d 31 5d  (LIST).aptr)[-1]
6e20: 20 3d 20 28 54 59 50 45 29 28 56 41 4c 29 2c 20   = (TYPE)(VAL), 
6e30: 30 29 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64  0)).#endif.#if d
6e40: 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 5f 5f 29  efined(__mips__)
6e50: 20 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f 73   || (defined(__s
6e60: 70 61 72 63 5f 5f 29 20 26 26 20 21 64 65 66 69  parc__) && !defi
6e70: 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29  ned(__sparc64__)
6e80: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 68  ) || defined(__h
6e90: 70 70 61 5f 5f 29 20 7c 7c 20 28 64 65 66 69 6e  ppa__) || (defin
6ea0: 65 64 28 5f 5f 72 73 36 30 30 30 5f 5f 29 20 26  ed(__rs6000__) &
6eb0: 26 20 21 28 64 65 66 69 6e 65 64 28 5f 41 49 58  & !(defined(_AIX
6ec0: 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f  ) || (defined(__
6ed0: 4d 41 43 48 5f 5f 29 20 26 26 20 64 65 66 69 6e  MACH__) && defin
6ee0: 65 64 28 5f 5f 41 50 50 4c 45 5f 5f 29 29 29 29  ed(__APPLE__))))
6ef0: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 38   || defined(__m8
6f00: 38 6b 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  8k__) || defined
6f10: 28 5f 5f 73 33 39 30 5f 5f 29 0a 2f 2a 20 60 6c  (__s390__)./* `l
6f20: 6f 6e 67 20 6c 6f 6e 67 27 73 20 68 61 76 65 20  ong long's have 
6f30: 61 6c 69 67 6e 6d 65 6e 74 20 38 2e 20 2a 2f 0a  alignment 8. */.
6f40: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69  #if defined(__mi
6f50: 70 73 5f 5f 29 0a 23 64 65 66 69 6e 65 20 5f 5f  ps__).#define __
6f60: 61 76 5f 6c 6f 6e 67 6c 6f 6e 67 28 4c 49 53 54  av_longlong(LIST
6f70: 2c 54 59 50 45 2c 56 41 4c 29 09 09 09 09 09 5c  ,TYPE,VAL).....\
6f80: 0a 20 20 28 28 28 4c 49 53 54 29 2e 61 70 74 72  .  (((LIST).aptr
6f90: 20 3d 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28 28   = (__avword*)((
6fa0: 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29  (__avword)(LIST)
6fb0: 2e 61 70 74 72 2b 73 69 7a 65 6f 66 28 54 59 50  .aptr+sizeof(TYP
6fc0: 45 29 2b 5f 5f 41 56 5f 61 6c 69 67 6e 6f 66 28  E)+__AV_alignof(
6fd0: 54 59 50 45 29 2d 31 29 20 26 20 2d 28 6c 6f 6e  TYPE)-1) & -(lon
6fe0: 67 29 5f 5f 41 56 5f 61 6c 69 67 6e 6f 66 28 54  g)__AV_alignof(T
6ff0: 59 50 45 29 29 29 20 3e 20 5f 5f 61 76 5f 65 70  YPE))) > __av_ep
7000: 74 72 28 4c 49 53 54 29 20 5c 0a 20 20 20 3f 20  tr(LIST) \.   ? 
7010: 2d 31 20 3a 20 28 28 4c 49 53 54 29 2e 61 6e 75  -1 : ((LIST).anu
7020: 6d 2b 2b 2c 20 28 28 54 59 50 45 2a 29 28 4c 49  m++, ((TYPE*)(LI
7030: 53 54 29 2e 61 70 74 72 29 5b 2d 31 5d 20 3d 20  ST).aptr)[-1] = 
7040: 28 54 59 50 45 29 28 56 41 4c 29 2c 20 30 29 29  (TYPE)(VAL), 0))
7050: 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69  .#endif.#if defi
7060: 6e 65 64 28 5f 5f 73 70 61 72 63 5f 5f 29 20 26  ned(__sparc__) &
7070: 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 73 70 61  & !defined(__spa
7080: 72 63 36 34 5f 5f 29 0a 2f 2a 20 57 69 74 68 69  rc64__)./* Withi
7090: 6e 20 74 68 65 20 61 72 67 20 73 74 61 63 6b 2c  n the arg stack,
70a0: 20 74 68 65 20 61 6c 69 67 6e 6d 65 6e 74 20 69   the alignment i
70b0: 73 20 6f 6e 6c 79 20 34 2c 20 6e 6f 74 20 38 2e  s only 4, not 8.
70c0: 20 2a 2f 0a 2f 2a 20 54 68 69 73 20 61 73 73 75   */./* This assu
70d0: 6d 65 73 20 73 69 7a 65 6f 66 28 6c 6f 6e 67 20  mes sizeof(long 
70e0: 6c 6f 6e 67 29 20 3d 3d 20 32 2a 73 69 7a 65 6f  long) == 2*sizeo
70f0: 66 28 5f 5f 61 76 77 6f 72 64 29 2e 20 2a 2f 0a  f(__avword). */.
7100: 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 6c 6f 6e  #define __av_lon
7110: 67 6c 6f 6e 67 28 4c 49 53 54 2c 54 59 50 45 2c  glong(LIST,TYPE,
7120: 56 41 4c 29 09 09 09 09 09 5c 0a 20 20 28 28 28  VAL).....\.  (((
7130: 4c 49 53 54 29 2e 61 70 74 72 20 2b 3d 20 73 69  LIST).aptr += si
7140: 7a 65 6f 66 28 54 59 50 45 29 2f 73 69 7a 65 6f  zeof(TYPE)/sizeo
7150: 66 28 5f 5f 61 76 77 6f 72 64 29 29 20 3e 20 5f  f(__avword)) > _
7160: 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29 09 5c  _av_eptr(LIST).\
7170: 0a 20 20 20 3f 20 2d 31 20 3a 09 09 09 09 09 09  .   ? -1 :......
7180: 09 09 5c 0a 20 20 20 28 28 4c 49 53 54 29 2e 74  ..\.   ((LIST).t
7190: 6d 70 2e 5f 6c 6f 6e 67 6c 6f 6e 67 20 3d 20 28  mp._longlong = (
71a0: 54 59 50 45 29 28 56 41 4c 29 2c 09 09 09 09 09  TYPE)(VAL),.....
71b0: 5c 0a 20 20 20 20 28 4c 49 53 54 29 2e 61 70 74  \.    (LIST).apt
71c0: 72 5b 2d 32 5d 20 3d 20 28 4c 49 53 54 29 2e 74  r[-2] = (LIST).t
71d0: 6d 70 2e 77 6f 72 64 73 5b 30 5d 2c 09 09 09 09  mp.words[0],....
71e0: 5c 0a 20 20 20 20 28 4c 49 53 54 29 2e 61 70 74  \.    (LIST).apt
71f0: 72 5b 2d 31 5d 20 3d 20 28 4c 49 53 54 29 2e 74  r[-1] = (LIST).t
7200: 6d 70 2e 77 6f 72 64 73 5b 31 5d 2c 09 09 09 09  mp.words[1],....
7210: 5c 0a 20 20 20 20 30 29 29 0a 23 65 6e 64 69 66  \.    0)).#endif
7220: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 68  .#if defined(__h
7230: 70 70 61 5f 5f 29 0a 23 64 65 66 69 6e 65 20 5f  ppa__).#define _
7240: 5f 61 76 5f 6c 6f 6e 67 6c 6f 6e 67 28 4c 49 53  _av_longlong(LIS
7250: 54 2c 54 59 50 45 2c 56 41 4c 29 09 09 09 09 09  T,TYPE,VAL).....
7260: 5c 0a 20 20 28 28 28 4c 49 53 54 29 2e 61 70 74  \.  (((LIST).apt
7270: 72 20 3d 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28  r = (__avword*)(
7280: 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54  ((__avword)(LIST
7290: 29 2e 61 70 74 72 20 26 20 2d 28 6c 6f 6e 67 29  ).aptr & -(long)
72a0: 5f 5f 41 56 5f 61 6c 69 67 6e 6f 66 28 54 59 50  __AV_alignof(TYP
72b0: 45 29 29 20 2d 20 73 69 7a 65 6f 66 28 54 59 50  E)) - sizeof(TYP
72c0: 45 29 29 29 20 3c 20 5f 5f 61 76 5f 65 70 74 72  E))) < __av_eptr
72d0: 28 4c 49 53 54 29 20 5c 0a 20 20 20 3f 20 2d 31  (LIST) \.   ? -1
72e0: 20 3a 20 28 2a 28 54 59 50 45 2a 29 28 4c 49 53   : (*(TYPE*)(LIS
72f0: 54 29 2e 61 70 74 72 20 3d 20 28 54 59 50 45 29  T).aptr = (TYPE)
7300: 28 56 41 4c 29 2c 20 30 29 29 0a 23 65 6e 64 69  (VAL), 0)).#endi
7310: 66 0a 23 69 66 20 28 64 65 66 69 6e 65 64 28 5f  f.#if (defined(_
7320: 5f 72 73 36 30 30 30 5f 5f 29 20 26 26 20 21 28  _rs6000__) && !(
7330: 64 65 66 69 6e 65 64 28 5f 41 49 58 29 20 7c 7c  defined(_AIX) ||
7340: 20 28 64 65 66 69 6e 65 64 28 5f 5f 4d 41 43 48   (defined(__MACH
7350: 5f 5f 29 20 26 26 20 64 65 66 69 6e 65 64 28 5f  __) && defined(_
7360: 5f 41 50 50 4c 45 5f 5f 29 29 29 29 20 7c 7c 20  _APPLE__)))) || 
7370: 64 65 66 69 6e 65 64 28 5f 5f 6d 38 38 6b 5f 5f  defined(__m88k__
7380: 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 6c  ).#define __av_l
7390: 6f 6e 67 6c 6f 6e 67 28 4c 49 53 54 2c 54 59 50  onglong(LIST,TYP
73a0: 45 2c 56 41 4c 29 09 09 09 09 09 5c 0a 20 20 28  E,VAL).....\.  (
73b0: 28 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 28  ((LIST).aptr = (
73c0: 5f 5f 61 76 77 6f 72 64 2a 29 28 28 28 5f 5f 61  __avword*)(((__a
73d0: 76 77 6f 72 64 29 28 4c 49 53 54 29 2e 61 70 74  vword)(LIST).apt
73e0: 72 2b 73 69 7a 65 6f 66 28 54 59 50 45 29 2b 5f  r+sizeof(TYPE)+_
73f0: 5f 41 56 5f 61 6c 69 67 6e 6f 66 28 54 59 50 45  _AV_alignof(TYPE
7400: 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 5f 5f  )-1) & -(long)__
7410: 41 56 5f 61 6c 69 67 6e 6f 66 28 54 59 50 45 29  AV_alignof(TYPE)
7420: 29 29 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c  )) > __av_eptr(L
7430: 49 53 54 29 20 5c 0a 20 20 20 3f 20 2d 31 20 3a  IST) \.   ? -1 :
7440: 20 28 28 28 54 59 50 45 2a 29 28 4c 49 53 54 29   (((TYPE*)(LIST)
7450: 2e 61 70 74 72 29 5b 2d 31 5d 20 3d 20 28 54 59  .aptr)[-1] = (TY
7460: 50 45 29 28 56 41 4c 29 2c 20 30 29 29 0a 23 65  PE)(VAL), 0)).#e
7470: 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64  ndif.#if defined
7480: 28 5f 5f 73 33 39 30 5f 5f 29 0a 23 64 65 66 69  (__s390__).#defi
7490: 6e 65 20 5f 5f 61 76 5f 6c 6f 6e 67 6c 6f 6e 67  ne __av_longlong
74a0: 28 4c 49 53 54 2c 54 59 50 45 2c 56 41 4c 29 09  (LIST,TYPE,VAL).
74b0: 09 09 09 09 5c 0a 20 20 28 28 28 4c 49 53 54 29  ....\.  (((LIST)
74c0: 2e 61 70 74 72 20 3d 20 28 5f 5f 61 76 77 6f 72  .aptr = (__avwor
74d0: 64 2a 29 28 28 28 5f 5f 61 76 77 6f 72 64 29 28  d*)(((__avword)(
74e0: 4c 49 53 54 29 2e 61 70 74 72 2b 73 69 7a 65 6f  LIST).aptr+sizeo
74f0: 66 28 54 59 50 45 29 2b 5f 5f 41 56 5f 61 6c 69  f(TYPE)+__AV_ali
7500: 67 6e 6f 66 28 54 59 50 45 29 2d 31 29 20 26 20  gnof(TYPE)-1) & 
7510: 2d 28 6c 6f 6e 67 29 5f 5f 41 56 5f 61 6c 69 67  -(long)__AV_alig
7520: 6e 6f 66 28 54 59 50 45 29 29 29 20 3e 20 5f 5f  nof(TYPE))) > __
7530: 61 76 5f 65 70 74 72 28 4c 49 53 54 29 20 5c 0a  av_eptr(LIST) \.
7540: 20 20 20 3f 20 2d 31 20 3a 09 09 09 09 09 09 5c     ? -1 :......\
7550: 0a 20 20 20 28 28 28 4c 49 53 54 29 2e 61 70 74  .   (((LIST).apt
7560: 72 20 2d 20 28 4c 49 53 54 29 2e 61 72 67 73 20  r - (LIST).args 
7570: 2d 20 28 4c 49 53 54 29 2e 66 61 72 67 77 6f 72  - (LIST).fargwor
7580: 64 73 20 3d 3d 20 34 20 3f 20 2b 2b 28 4c 49 53  ds == 4 ? ++(LIS
7590: 54 29 2e 61 70 74 72 2c 30 20 3a 20 30 29 2c 20  T).aptr,0 : 0), 
75a0: 5c 0a 20 20 20 20 28 28 28 54 59 50 45 2a 29 28  \.    (((TYPE*)(
75b0: 4c 49 53 54 29 2e 61 70 74 72 29 5b 2d 31 5d 20  LIST).aptr)[-1] 
75c0: 3d 20 28 54 59 50 45 29 28 56 41 4c 29 2c 20 30  = (TYPE)(VAL), 0
75d0: 29 29 29 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69  ))).#endif.#endi
75e0: 66 0a 23 65 6e 64 69 66 0a 0a 2f 2a 20 66 6c 6f  f.#endif../* flo
75f0: 61 74 69 6e 67 2d 70 6f 69 6e 74 20 61 72 67 75  ating-point argu
7600: 6d 65 6e 74 20 74 79 70 65 73 20 2a 2f 0a 0a 23  ment types */..#
7610: 64 65 66 69 6e 65 20 61 76 5f 66 6c 6f 61 74 28  define av_float(
7620: 4c 49 53 54 2c 56 41 4c 29 09 09 09 09 09 09 5c  LIST,VAL)......\
7630: 0a 20 20 28 28 4c 49 53 54 29 2e 66 6c 61 67 73  .  ((LIST).flags
7640: 20 26 20 5f 5f 41 56 5f 54 52 41 44 49 54 49 4f   & __AV_TRADITIO
7650: 4e 41 4c 5f 46 4c 4f 41 54 5f 41 52 47 53 09 09  NAL_FLOAT_ARGS..
7660: 09 09 5c 0a 20 20 20 3f 20 61 76 5f 64 6f 75 62  ..\.   ? av_doub
7670: 6c 65 28 4c 49 53 54 2c 28 66 6c 6f 61 74 29 28  le(LIST,(float)(
7680: 56 41 4c 29 29 09 09 09 09 09 5c 0a 20 20 20 3a  VAL)).....\.   :
7690: 20 5f 5f 61 76 5f 66 6c 6f 61 74 28 4c 49 53 54   __av_float(LIST
76a0: 2c 56 41 4c 29 29 0a 0a 23 69 66 20 64 65 66 69  ,VAL))..#if defi
76b0: 6e 65 64 28 5f 5f 69 33 38 36 5f 5f 29 20 7c 7c  ned(__i386__) ||
76c0: 20 64 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f   defined(__m68k_
76d0: 5f 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f  _) || (defined(_
76e0: 5f 73 70 61 72 63 5f 5f 29 20 26 26 20 21 64 65  _sparc__) && !de
76f0: 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f  fined(__sparc64_
7700: 5f 29 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  _)) || defined(_
7710: 5f 61 72 6d 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  _arm__) || defin
7720: 65 64 28 5f 5f 63 6f 6e 76 65 78 5f 5f 29 0a 0a  ed(__convex__)..
7730: 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 66 6c 6f  #define __av_flo
7740: 61 74 28 4c 49 53 54 2c 56 41 4c 29 09 09 09 09  at(LIST,VAL)....
7750: 09 09 5c 0a 20 20 28 2b 2b 28 4c 49 53 54 29 2e  ..\.  (++(LIST).
7760: 61 70 74 72 20 3e 20 5f 5f 61 76 5f 65 70 74 72  aptr > __av_eptr
7770: 28 4c 49 53 54 29 09 09 09 09 09 5c 0a 20 20 20  (LIST).....\.   
7780: 3f 20 2d 31 20 3a 20 28 28 28 66 6c 6f 61 74 2a  ? -1 : (((float*
7790: 29 28 4c 49 53 54 29 2e 61 70 74 72 29 5b 2d 31  )(LIST).aptr)[-1
77a0: 5d 20 3d 20 28 66 6c 6f 61 74 29 28 56 41 4c 29  ] = (float)(VAL)
77b0: 2c 20 30 29 29 0a 0a 2f 2a 20 54 68 69 73 20 61  , 0))../* This a
77c0: 73 73 75 6d 65 73 20 73 69 7a 65 6f 66 28 64 6f  ssumes sizeof(do
77d0: 75 62 6c 65 29 20 3d 3d 20 32 2a 73 69 7a 65 6f  uble) == 2*sizeo
77e0: 66 28 5f 5f 61 76 77 6f 72 64 29 2e 20 2a 2f 0a  f(__avword). */.
77f0: 23 64 65 66 69 6e 65 20 61 76 5f 64 6f 75 62 6c  #define av_doubl
7800: 65 28 4c 49 53 54 2c 56 41 4c 29 09 09 09 09 09  e(LIST,VAL).....
7810: 09 5c 0a 20 20 20 28 28 28 4c 49 53 54 29 2e 61  .\.   (((LIST).a
7820: 70 74 72 20 2b 3d 20 32 29 20 3e 20 5f 5f 61 76  ptr += 2) > __av
7830: 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09 09 5c  _eptr(LIST)....\
7840: 0a 20 20 20 20 3f 20 2d 31 20 3a 09 09 09 09 09  .    ? -1 :.....
7850: 09 09 09 5c 0a 20 20 20 20 28 28 4c 49 53 54 29  ...\.    ((LIST)
7860: 2e 74 6d 70 2e 5f 64 6f 75 62 6c 65 20 3d 20 28  .tmp._double = (
7870: 64 6f 75 62 6c 65 29 28 56 41 4c 29 2c 09 09 09  double)(VAL),...
7880: 09 5c 0a 20 20 20 20 20 28 4c 49 53 54 29 2e 61  .\.     (LIST).a
7890: 70 74 72 5b 2d 32 5d 20 3d 20 28 4c 49 53 54 29  ptr[-2] = (LIST)
78a0: 2e 74 6d 70 2e 77 6f 72 64 73 5b 30 5d 2c 09 09  .tmp.words[0],..
78b0: 09 09 5c 0a 20 20 20 20 20 28 4c 49 53 54 29 2e  ..\.     (LIST).
78c0: 61 70 74 72 5b 2d 31 5d 20 3d 20 28 4c 49 53 54  aptr[-1] = (LIST
78d0: 29 2e 74 6d 70 2e 77 6f 72 64 73 5b 31 5d 2c 09  ).tmp.words[1],.
78e0: 09 09 09 5c 0a 20 20 20 20 20 30 29 29 0a 0a 23  ...\.     0))..#
78f0: 65 6e 64 69 66 0a 0a 23 69 66 20 64 65 66 69 6e  endif..#if defin
7900: 65 64 28 5f 5f 6d 69 70 73 5f 5f 29 20 26 26 20  ed(__mips__) && 
7910: 21 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e  !defined(__mipsn
7920: 33 32 5f 5f 29 0a 0a 2f 2a 20 55 70 20 74 6f 20  32__)../* Up to 
7930: 32 20 6c 65 61 64 69 6e 67 20 66 6c 6f 61 74 20  2 leading float 
7940: 6f 72 20 64 6f 75 62 6c 65 20 6e 6f 6e 2d 76 61  or double non-va
7950: 72 61 72 67 73 20 61 72 67 73 20 63 61 6e 20 62  rargs args can b
7960: 65 20 70 61 73 73 65 64 20 69 6e 0a 20 2a 20 66  e passed in. * f
7970: 6c 6f 61 74 20 72 65 67 69 73 74 65 72 73 2c 20  loat registers, 
7980: 62 75 74 20 77 65 20 61 6c 73 6f 20 70 75 73 68  but we also push
7990: 20 74 68 65 6d 20 69 6e 74 6f 20 74 68 65 20 63   them into the c
79a0: 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 69 6e 74  orresponding int
79b0: 0a 20 2a 20 72 65 67 69 73 74 65 72 73 20 69 6e  . * registers in
79c0: 20 63 61 73 65 20 6f 66 20 76 61 72 61 72 67 73   case of varargs
79d0: 2e 20 46 6f 72 20 64 6f 75 62 6c 65 73 20 77 65  . For doubles we
79e0: 20 6e 65 65 64 20 74 6f 20 61 6c 69 67 6e 20 74   need to align t
79f0: 68 65 20 61 70 74 72 0a 20 2a 20 74 6f 20 61 6e  he aptr. * to an
7a00: 20 65 76 65 6e 20 62 6f 75 6e 64 61 72 79 2e 0a   even boundary..
7a10: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76   */.#define __av
7a20: 5f 66 6c 6f 61 74 28 4c 49 53 54 2c 56 41 4c 29  _float(LIST,VAL)
7a30: 09 09 09 09 09 09 5c 0a 20 20 28 2b 2b 28 4c 49  ......\.  (++(LI
7a40: 53 54 29 2e 61 70 74 72 20 3e 20 5f 5f 61 76 5f  ST).aptr > __av_
7a50: 65 70 74 72 28 4c 49 53 54 29 09 09 09 09 09 5c  eptr(LIST).....\
7a60: 0a 20 20 20 3f 20 2d 31 20 3a 20 28 28 2b 2b 28  .   ? -1 : ((++(
7a70: 4c 49 53 54 29 2e 61 6e 75 6d 20 3d 3d 20 31 09  LIST).anum == 1.
7a80: 09 09 09 09 09 5c 0a 09 20 20 20 20 3f 20 28 28  .....\..    ? ((
7a90: 4c 49 53 54 29 2e 66 6c 61 67 73 20 7c 3d 20 5f  LIST).flags |= _
7aa0: 5f 41 56 5f 46 4c 4f 41 54 5f 31 2c 09 09 09 09  _AV_FLOAT_1,....
7ab0: 5c 0a 09 20 20 20 20 20 20 20 28 28 66 6c 6f 61  \..       ((floa
7ac0: 74 2a 29 28 4c 49 53 54 29 2e 66 6c 6f 61 74 61  t*)(LIST).floata
7ad0: 72 67 29 5b 31 5d 20 3d 20 28 28 66 6c 6f 61 74  rg)[1] = ((float
7ae0: 2a 29 28 4c 49 53 54 29 2e 61 70 74 72 29 5b 2d  *)(LIST).aptr)[-
7af0: 31 5d 20 3d 20 28 66 6c 6f 61 74 29 28 56 41 4c  1] = (float)(VAL
7b00: 29 29 5c 0a 09 20 20 20 20 3a 20 28 4c 49 53 54  ))\..    : (LIST
7b10: 29 2e 61 6e 75 6d 20 3d 3d 20 32 20 26 26 20 28  ).anum == 2 && (
7b20: 28 4c 49 53 54 29 2e 66 6c 61 67 73 20 26 20 5f  (LIST).flags & _
7b30: 5f 41 56 5f 46 4c 4f 41 54 5f 31 29 09 09 5c 0a  _AV_FLOAT_1)..\.
7b40: 09 20 20 20 20 3f 20 28 28 4c 49 53 54 29 2e 66  .    ? ((LIST).f
7b50: 6c 61 67 73 20 7c 3d 20 5f 5f 41 56 5f 46 4c 4f  lags |= __AV_FLO
7b60: 41 54 5f 32 2c 09 09 09 09 5c 0a 09 20 20 20 20  AT_2,....\..    
7b70: 20 20 20 28 28 66 6c 6f 61 74 2a 29 28 4c 49 53     ((float*)(LIS
7b80: 54 29 2e 66 6c 6f 61 74 61 72 67 29 5b 33 5d 20  T).floatarg)[3] 
7b90: 3d 20 28 28 66 6c 6f 61 74 2a 29 28 4c 49 53 54  = ((float*)(LIST
7ba0: 29 2e 61 70 74 72 29 5b 2d 31 5d 20 3d 20 28 66  ).aptr)[-1] = (f
7bb0: 6c 6f 61 74 29 28 56 41 4c 29 29 5c 0a 09 20 20  loat)(VAL))\..  
7bc0: 20 20 3a 20 28 2a 28 66 6c 6f 61 74 2a 29 26 28    : (*(float*)&(
7bd0: 4c 49 53 54 29 2e 61 70 74 72 5b 2d 31 5d 20 3d  LIST).aptr[-1] =
7be0: 20 28 66 6c 6f 61 74 29 28 56 41 4c 29 29 29 2c   (float)(VAL))),
7bf0: 09 09 5c 0a 09 20 20 20 30 29 29 0a 0a 23 64 65  ..\..   0))..#de
7c00: 66 69 6e 65 20 61 76 5f 64 6f 75 62 6c 65 28 4c  fine av_double(L
7c10: 49 53 54 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a  IST,VAL)......\.
7c20: 20 20 28 28 28 4c 49 53 54 29 2e 61 70 74 72 20    (((LIST).aptr 
7c30: 3d 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28 28 28  = (__avword*)(((
7c40: 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e  __avword)(LIST).
7c50: 61 70 74 72 2b 31 35 29 26 2d 38 29 29 09 09 5c  aptr+15)&-8))..\
7c60: 0a 20 20 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28  .   > __av_eptr(
7c70: 4c 49 53 54 29 09 09 09 09 09 09 09 5c 0a 20 20  LIST).......\.  
7c80: 20 3f 20 2d 31 20 3a 20 28 28 2b 2b 28 4c 49 53   ? -1 : ((++(LIS
7c90: 54 29 2e 61 6e 75 6d 20 3d 3d 20 31 09 09 09 09  T).anum == 1....
7ca0: 09 09 5c 0a 09 20 20 20 20 3f 20 28 28 4c 49 53  ..\..    ? ((LIS
7cb0: 54 29 2e 66 6c 61 67 73 20 7c 3d 20 5f 5f 41 56  T).flags |= __AV
7cc0: 5f 46 4c 4f 41 54 5f 31 2c 09 09 09 09 5c 0a 09  _FLOAT_1,....\..
7cd0: 20 20 20 20 20 20 20 28 4c 49 53 54 29 2e 66 6c         (LIST).fl
7ce0: 6f 61 74 61 72 67 5b 30 5d 20 3d 20 28 28 64 6f  oatarg[0] = ((do
7cf0: 75 62 6c 65 2a 29 28 4c 49 53 54 29 2e 61 70 74  uble*)(LIST).apt
7d00: 72 29 5b 2d 31 5d 20 3d 20 28 64 6f 75 62 6c 65  r)[-1] = (double
7d10: 29 28 56 41 4c 29 29 5c 0a 09 20 20 20 20 3a 20  )(VAL))\..    : 
7d20: 28 4c 49 53 54 29 2e 61 6e 75 6d 20 3d 3d 20 32  (LIST).anum == 2
7d30: 20 26 26 20 28 28 4c 49 53 54 29 2e 66 6c 61 67   && ((LIST).flag
7d40: 73 20 26 20 5f 5f 41 56 5f 46 4c 4f 41 54 5f 31  s & __AV_FLOAT_1
7d50: 29 09 09 5c 0a 09 20 20 20 20 3f 20 28 28 4c 49  )..\..    ? ((LI
7d60: 53 54 29 2e 66 6c 61 67 73 20 7c 3d 20 5f 5f 41  ST).flags |= __A
7d70: 56 5f 46 4c 4f 41 54 5f 32 2c 09 09 09 09 5c 0a  V_FLOAT_2,....\.
7d80: 09 20 20 20 20 20 20 20 28 4c 49 53 54 29 2e 66  .       (LIST).f
7d90: 6c 6f 61 74 61 72 67 5b 31 5d 20 3d 20 28 28 64  loatarg[1] = ((d
7da0: 6f 75 62 6c 65 2a 29 28 4c 49 53 54 29 2e 61 70  ouble*)(LIST).ap
7db0: 74 72 29 5b 2d 31 5d 20 3d 20 28 64 6f 75 62 6c  tr)[-1] = (doubl
7dc0: 65 29 28 56 41 4c 29 29 5c 0a 09 20 20 20 20 3a  e)(VAL))\..    :
7dd0: 20 28 28 28 64 6f 75 62 6c 65 2a 29 28 4c 49 53   (((double*)(LIS
7de0: 54 29 2e 61 70 74 72 29 5b 2d 31 5d 20 3d 20 28  T).aptr)[-1] = (
7df0: 64 6f 75 62 6c 65 29 28 56 41 4c 29 29 29 2c 09  double)(VAL))),.
7e00: 09 5c 0a 09 20 20 20 30 29 29 0a 0a 23 65 6e 64  .\..   0))..#end
7e10: 69 66 0a 0a 23 69 66 20 64 65 66 69 6e 65 64 28  if..#if defined(
7e20: 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 7c 7c 20  __mipsn32__) || 
7e30: 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 36 34  defined(__mips64
7e40: 5f 5f 29 0a 0a 2f 2a 20 55 70 20 74 6f 20 38 20  __)../* Up to 8 
7e50: 6c 65 61 64 69 6e 67 20 66 6c 6f 61 74 20 6f 72  leading float or
7e60: 20 64 6f 75 62 6c 65 20 6e 6f 6e 2d 76 61 72 61   double non-vara
7e70: 72 67 73 20 61 72 67 73 20 63 61 6e 20 62 65 20  rgs args can be 
7e80: 70 61 73 73 65 64 20 69 6e 0a 20 2a 20 66 6c 6f  passed in. * flo
7e90: 61 74 20 72 65 67 69 73 74 65 72 73 2c 20 62 75  at registers, bu
7ea0: 74 20 77 65 20 61 6c 73 6f 20 70 75 73 68 20 74  t we also push t
7eb0: 68 65 6d 20 69 6e 74 6f 20 74 68 65 20 63 6f 72  hem into the cor
7ec0: 72 65 73 70 6f 6e 64 69 6e 67 20 69 6e 74 0a 20  responding int. 
7ed0: 2a 20 72 65 67 69 73 74 65 72 73 20 69 6e 20 63  * registers in c
7ee0: 61 73 65 20 6f 66 20 76 61 72 61 72 67 73 2e 0a  ase of varargs..
7ef0: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76   */.#define __av
7f00: 5f 66 6c 6f 61 74 28 4c 49 53 54 2c 56 41 4c 29  _float(LIST,VAL)
7f10: 09 09 09 09 09 09 5c 0a 20 20 28 28 4c 49 53 54  ......\.  ((LIST
7f20: 29 2e 61 70 74 72 20 3e 3d 20 5f 5f 61 76 5f 65  ).aptr >= __av_e
7f30: 70 74 72 28 4c 49 53 54 29 09 09 09 09 09 5c 0a  ptr(LIST).....\.
7f40: 20 20 20 3f 20 2d 31 20 3a 20 28 28 28 4c 49 53     ? -1 : (((LIS
7f50: 54 29 2e 61 6e 75 6d 20 3c 20 38 09 09 09 09 09  T).anum < 8.....
7f60: 09 5c 0a 09 20 20 20 20 3f 20 28 28 4c 49 53 54  .\..    ? ((LIST
7f70: 29 2e 66 61 72 67 5f 6d 61 73 6b 20 7c 3d 20 28  ).farg_mask |= (
7f80: 31 20 3c 3c 20 28 4c 49 53 54 29 2e 61 6e 75 6d  1 << (LIST).anum
7f90: 29 2c 09 09 09 5c 0a 09 20 20 20 20 20 20 20 28  ),...\..       (
7fa0: 4c 49 53 54 29 2e 66 61 72 67 5b 28 4c 49 53 54  LIST).farg[(LIST
7fb0: 29 2e 61 6e 75 6d 5d 20 3d 20 2a 28 66 6c 6f 61  ).anum] = *(floa
7fc0: 74 2a 29 28 4c 49 53 54 29 2e 61 70 74 72 20 3d  t*)(LIST).aptr =
7fd0: 20 28 66 6c 6f 61 74 29 28 56 41 4c 29 29 20 5c   (float)(VAL)) \
7fe0: 0a 09 20 20 20 20 3a 20 28 2a 28 66 6c 6f 61 74  ..    : (*(float
7ff0: 2a 29 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20  *)(LIST).aptr = 
8000: 28 66 6c 6f 61 74 29 28 56 41 4c 29 29 29 2c 09  (float)(VAL))),.
8010: 09 09 5c 0a 09 20 20 20 28 4c 49 53 54 29 2e 61  ..\..   (LIST).a
8020: 6e 75 6d 2b 2b 2c 09 09 09 09 09 09 5c 0a 09 20  num++,......\.. 
8030: 20 20 28 4c 49 53 54 29 2e 61 70 74 72 2b 2b 2c    (LIST).aptr++,
8040: 09 09 09 09 09 09 5c 0a 09 20 20 20 30 29 29 0a  ......\..   0)).
8050: 0a 23 64 65 66 69 6e 65 20 61 76 5f 64 6f 75 62  .#define av_doub
8060: 6c 65 28 4c 49 53 54 2c 56 41 4c 29 09 09 09 09  le(LIST,VAL)....
8070: 09 09 5c 0a 20 20 28 28 4c 49 53 54 29 2e 61 70  ..\.  ((LIST).ap
8080: 74 72 20 3e 3d 20 5f 5f 61 76 5f 65 70 74 72 28  tr >= __av_eptr(
8090: 4c 49 53 54 29 09 09 09 09 09 5c 0a 20 20 20 3f  LIST).....\.   ?
80a0: 20 2d 31 20 3a 20 28 28 28 4c 49 53 54 29 2e 61   -1 : (((LIST).a
80b0: 6e 75 6d 20 3c 20 38 20 26 26 20 28 28 4c 49 53  num < 8 && ((LIS
80c0: 54 29 2e 64 61 72 67 5f 6d 61 73 6b 20 7c 3d 20  T).darg_mask |= 
80d0: 28 31 20 3c 3c 20 28 4c 49 53 54 29 2e 61 6e 75  (1 << (LIST).anu
80e0: 6d 29 29 29 2c 20 5c 0a 09 20 20 20 2a 28 64 6f  m))), \..   *(do
80f0: 75 62 6c 65 2a 29 28 4c 49 53 54 29 2e 61 70 74  uble*)(LIST).apt
8100: 72 20 3d 20 28 64 6f 75 62 6c 65 29 28 56 41 4c  r = (double)(VAL
8110: 29 2c 09 09 09 5c 0a 09 20 20 20 28 4c 49 53 54  ),...\..   (LIST
8120: 29 2e 61 6e 75 6d 2b 2b 2c 09 09 09 09 09 09 5c  ).anum++,......\
8130: 0a 09 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72  ..   (LIST).aptr
8140: 2b 2b 2c 09 09 09 09 09 09 5c 0a 09 20 20 20 30  ++,......\..   0
8150: 29 29 0a 0a 23 65 6e 64 69 66 0a 0a 23 69 66 20  ))..#endif..#if 
8160: 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36  defined(__sparc6
8170: 34 5f 5f 29 0a 0a 2f 2a 20 55 70 20 74 6f 20 31  4__)../* Up to 1
8180: 36 20 6c 65 61 64 69 6e 67 20 66 6c 6f 61 74 20  6 leading float 
8190: 6f 72 20 64 6f 75 62 6c 65 20 6e 6f 6e 2d 76 61  or double non-va
81a0: 72 61 72 67 73 20 61 72 67 73 20 63 61 6e 20 62  rargs args can b
81b0: 65 20 70 61 73 73 65 64 20 69 6e 0a 20 2a 20 66  e passed in. * f
81c0: 6c 6f 61 74 20 72 65 67 69 73 74 65 72 73 2c 20  loat registers, 
81d0: 62 75 74 20 77 65 20 61 6c 73 6f 20 70 75 73 68  but we also push
81e0: 20 74 68 65 6d 20 69 6e 74 6f 20 74 68 65 20 63   them into the c
81f0: 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 69 6e 74  orresponding int
8200: 0a 20 2a 20 72 65 67 69 73 74 65 72 73 20 69 6e  . * registers in
8210: 20 63 61 73 65 20 6f 66 20 76 61 72 61 72 67 73   case of varargs
8220: 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f  .. */.#define __
8230: 61 76 5f 66 6c 6f 61 74 28 4c 49 53 54 2c 56 41  av_float(LIST,VA
8240: 4c 29 09 09 09 09 09 09 5c 0a 20 20 28 28 4c 49  L)......\.  ((LI
8250: 53 54 29 2e 61 70 74 72 20 3e 3d 20 5f 5f 61 76  ST).aptr >= __av
8260: 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09 09 09  _eptr(LIST).....
8270: 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 28 28 28 4c  \.   ? -1 : (((L
8280: 49 53 54 29 2e 61 6e 75 6d 20 3c 20 31 36 20 26  IST).anum < 16 &
8290: 26 20 28 28 4c 49 53 54 29 2e 66 61 72 67 5f 6d  & ((LIST).farg_m
82a0: 61 73 6b 20 7c 3d 20 28 31 20 3c 3c 20 28 4c 49  ask |= (1 << (LI
82b0: 53 54 29 2e 61 6e 75 6d 29 29 29 2c 20 5c 0a 09  ST).anum))), \..
82c0: 20 20 20 28 2a 28 66 6c 6f 61 74 2a 29 28 4c 49     (*(float*)(LI
82d0: 53 54 29 2e 61 70 74 72 20 3d 20 28 66 6c 6f 61  ST).aptr = (floa
82e0: 74 29 28 56 41 4c 29 29 2c 09 09 09 5c 0a 09 20  t)(VAL)),...\.. 
82f0: 20 20 28 4c 49 53 54 29 2e 61 6e 75 6d 2b 2b 2c    (LIST).anum++,
8300: 09 09 09 09 09 09 5c 0a 09 20 20 20 28 4c 49 53  ......\..   (LIS
8310: 54 29 2e 61 70 74 72 2b 2b 2c 09 09 09 09 09 09  T).aptr++,......
8320: 5c 0a 09 20 20 20 30 29 29 0a 0a 23 64 65 66 69  \..   0))..#defi
8330: 6e 65 20 61 76 5f 64 6f 75 62 6c 65 28 4c 49 53  ne av_double(LIS
8340: 54 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a 20 20  T,VAL)......\.  
8350: 28 28 4c 49 53 54 29 2e 61 70 74 72 20 3e 3d 20  ((LIST).aptr >= 
8360: 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29 09  __av_eptr(LIST).
8370: 09 09 09 09 5c 0a 20 20 20 3f 20 2d 31 20 3a 20  ....\.   ? -1 : 
8380: 28 28 28 4c 49 53 54 29 2e 61 6e 75 6d 20 3c 20  (((LIST).anum < 
8390: 31 36 20 26 26 20 28 28 4c 49 53 54 29 2e 64 61  16 && ((LIST).da
83a0: 72 67 5f 6d 61 73 6b 20 7c 3d 20 28 31 20 3c 3c  rg_mask |= (1 <<
83b0: 20 28 4c 49 53 54 29 2e 61 6e 75 6d 29 29 29 2c   (LIST).anum))),
83c0: 20 5c 0a 09 20 20 20 2a 28 64 6f 75 62 6c 65 2a   \..   *(double*
83d0: 29 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 28  )(LIST).aptr = (
83e0: 64 6f 75 62 6c 65 29 28 56 41 4c 29 2c 09 09 09  double)(VAL),...
83f0: 5c 0a 09 20 20 20 28 4c 49 53 54 29 2e 61 6e 75  \..   (LIST).anu
8400: 6d 2b 2b 2c 09 09 09 09 09 09 5c 0a 09 20 20 20  m++,......\..   
8410: 28 4c 49 53 54 29 2e 61 70 74 72 2b 2b 2c 09 09  (LIST).aptr++,..
8420: 09 09 09 09 5c 0a 09 20 20 20 30 29 29 0a 0a 23  ....\..   0))..#
8430: 65 6e 64 69 66 0a 0a 23 69 66 20 64 65 66 69 6e  endif..#if defin
8440: 65 64 28 5f 5f 61 6c 70 68 61 5f 5f 29 0a 0a 23  ed(__alpha__)..#
8450: 64 65 66 69 6e 65 20 61 76 5f 64 6f 75 62 6c 65  define av_double
8460: 28 4c 49 53 54 2c 56 41 4c 29 09 09 09 09 09 09  (LIST,VAL)......
8470: 5c 0a 20 20 28 2b 2b 28 4c 49 53 54 29 2e 61 70  \.  (++(LIST).ap
8480: 74 72 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c  tr > __av_eptr(L
8490: 49 53 54 29 09 09 09 09 09 5c 0a 20 20 20 3f 20  IST).....\.   ? 
84a0: 2d 31 20 3a 20 28 28 28 64 6f 75 62 6c 65 2a 29  -1 : (((double*)
84b0: 28 4c 49 53 54 29 2e 61 70 74 72 29 5b 2d 31 5d  (LIST).aptr)[-1]
84c0: 20 3d 20 28 64 6f 75 62 6c 65 29 28 56 41 4c 29   = (double)(VAL)
84d0: 2c 20 30 29 29 0a 0a 23 64 65 66 69 6e 65 20 5f  , 0))..#define _
84e0: 5f 61 76 5f 66 6c 6f 61 74 28 4c 49 53 54 2c 56  _av_float(LIST,V
84f0: 41 4c 29 09 09 09 09 09 09 5c 0a 20 20 28 2b 2b  AL)......\.  (++
8500: 28 4c 49 53 54 29 2e 61 70 74 72 20 3e 20 5f 5f  (LIST).aptr > __
8510: 61 76 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09  av_eptr(LIST)...
8520: 09 09 5c 0a 20 20 20 3f 20 2d 31 09 09 09 09 09  ..\.   ? -1.....
8530: 09 09 09 09 5c 0a 20 20 20 3a 20 28 28 28 4c 49  ....\.   : (((LI
8540: 53 54 29 2e 61 70 74 72 20 3e 20 26 28 4c 49 53  ST).aptr > &(LIS
8550: 54 29 2e 61 72 67 73 5b 36 5d 09 09 09 09 09 5c  T).args[6].....\
8560: 0a 20 20 20 20 20 20 20 3f 20 2f 2a 20 54 68 65  .       ? /* The
8570: 73 65 20 61 72 67 73 20 77 69 6c 6c 20 62 65 20  se args will be 
8580: 66 65 74 63 68 65 64 20 66 72 6f 6d 20 6d 65 6d  fetched from mem
8590: 6f 72 79 20 75 73 69 6e 67 20 22 6c 64 73 22 20  ory using "lds" 
85a0: 69 6e 73 74 72 75 63 74 69 6f 6e 73 20 2a 2f 20  instructions */ 
85b0: 5c 0a 09 20 2f 2a 20 74 68 65 72 65 66 6f 72 65  \.. /* therefore
85c0: 20 73 74 6f 72 65 20 74 68 65 6d 20 61 73 20 66   store them as f
85d0: 6c 6f 61 74 73 20 2a 2f 09 09 09 09 5c 0a 09 20  loats */....\.. 
85e0: 28 2a 28 66 6c 6f 61 74 2a 29 28 28 4c 49 53 54  (*(float*)((LIST
85f0: 29 2e 61 70 74 72 2d 31 29 20 3d 20 28 66 6c 6f  ).aptr-1) = (flo
8600: 61 74 29 28 56 41 4c 29 29 09 09 09 5c 0a 20 20  at)(VAL))...\.  
8610: 20 20 20 20 20 3a 20 2f 2a 20 54 68 65 20 66 69       : /* The fi
8620: 72 73 74 20 36 20 61 72 67 73 20 77 69 6c 6c 20  rst 6 args will 
8630: 62 65 20 70 75 74 20 69 6e 74 6f 20 72 65 67 69  be put into regi
8640: 73 74 65 72 73 20 62 79 20 22 6c 64 74 22 20 69  sters by "ldt" i
8650: 6e 73 74 72 75 63 74 69 6f 6e 73 20 2a 2f 20 5c  nstructions */ \
8660: 0a 09 20 2f 2a 20 28 73 65 65 20 61 76 63 61 6c  .. /* (see avcal
8670: 6c 2d 61 6c 70 68 61 2e 63 21 29 2e 20 54 68 65  l-alpha.c!). The
8680: 72 65 66 6f 72 65 20 73 74 6f 72 65 20 74 68 65  refore store the
8690: 6d 20 61 73 20 64 6f 75 62 6c 65 73 2e 20 2a 2f  m as doubles. */
86a0: 09 5c 0a 09 20 2f 2a 20 57 68 65 6e 20 76 69 65  .\.. /* When vie
86b0: 77 65 64 20 61 73 20 66 6c 6f 61 74 73 2c 20 74  wed as floats, t
86c0: 68 65 20 76 61 6c 75 65 20 77 69 6c 6c 20 62 65  he value will be
86d0: 20 74 68 65 20 63 6f 72 72 65 63 74 20 6f 6e 65   the correct one
86e0: 2e 20 2a 2f 5c 0a 09 20 28 2a 28 64 6f 75 62 6c  . */\.. (*(doubl
86f0: 65 2a 29 28 28 4c 49 53 54 29 2e 61 70 74 72 2d  e*)((LIST).aptr-
8700: 31 29 20 3d 20 28 64 6f 75 62 6c 65 29 28 66 6c  1) = (double)(fl
8710: 6f 61 74 29 28 56 41 4c 29 29 09 09 5c 0a 20 20  oat)(VAL))..\.  
8720: 20 20 20 29 2c 20 30 29 29 0a 0a 23 65 6e 64 69     ), 0))..#endi
8730: 66 0a 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f  f..#if defined(_
8740: 5f 68 70 70 61 5f 5f 29 0a 0a 23 64 65 66 69 6e  _hppa__)..#defin
8750: 65 20 5f 5f 61 76 5f 66 6c 6f 61 74 28 4c 49 53  e __av_float(LIS
8760: 54 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a 20 20  T,VAL)......\.  
8770: 28 2d 2d 28 4c 49 53 54 29 2e 61 70 74 72 20 3c  (--(LIST).aptr <
8780: 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29   __av_eptr(LIST)
8790: 09 09 09 09 09 5c 0a 20 20 20 3f 20 2d 31 20 3a  .....\.   ? -1 :
87a0: 20 28 2a 28 66 6c 6f 61 74 2a 29 28 4c 49 53 54   (*(float*)(LIST
87b0: 29 2e 61 70 74 72 20 3d 20 28 66 6c 6f 61 74 29  ).aptr = (float)
87c0: 28 56 41 4c 29 2c 20 30 29 29 0a 0a 23 64 65 66  (VAL), 0))..#def
87d0: 69 6e 65 20 61 76 5f 64 6f 75 62 6c 65 28 4c 49  ine av_double(LI
87e0: 53 54 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a 20  ST,VAL)......\. 
87f0: 20 28 28 28 4c 49 53 54 29 2e 61 70 74 72 20 3d   (((LIST).aptr =
8800: 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28 28 28 6c   (__avword*)(((l
8810: 6f 6e 67 29 28 4c 49 53 54 29 2e 61 70 74 72 2d  ong)(LIST).aptr-
8820: 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29 29 20  sizeof(double)) 
8830: 26 20 2d 28 6c 6f 6e 67 29 73 69 7a 65 6f 66 28  & -(long)sizeof(
8840: 64 6f 75 62 6c 65 29 29 29 20 5c 0a 20 20 20 20  double))) \.    
8850: 3c 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54  < __av_eptr(LIST
8860: 29 09 09 09 09 09 09 09 5c 0a 20 20 20 20 3f 20  ).......\.    ? 
8870: 2d 31 20 3a 20 28 2a 28 64 6f 75 62 6c 65 2a 29  -1 : (*(double*)
8880: 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 28 64  (LIST).aptr = (d
8890: 6f 75 62 6c 65 29 28 56 41 4c 29 2c 20 30 29 29  ouble)(VAL), 0))
88a0: 0a 0a 23 65 6e 64 69 66 0a 0a 23 69 66 20 64 65  ..#endif..#if de
88b0: 66 69 6e 65 64 28 5f 5f 72 73 36 30 30 30 5f 5f  fined(__rs6000__
88c0: 29 20 26 26 20 28 64 65 66 69 6e 65 64 28 5f 41  ) && (defined(_A
88d0: 49 58 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28  IX) || (defined(
88e0: 5f 5f 4d 41 43 48 5f 5f 29 20 26 26 20 64 65 66  __MACH__) && def
88f0: 69 6e 65 64 28 5f 5f 41 50 50 4c 45 5f 5f 29 29  ined(__APPLE__))
8900: 29 0a 0a 2f 2a 20 55 70 20 74 6f 20 31 33 20 66  )../* Up to 13 f
8910: 6c 6f 61 74 20 6f 72 20 64 6f 75 62 6c 65 20 6e  loat or double n
8920: 6f 6e 2d 76 61 72 61 72 67 73 20 61 72 67 73 20  on-varargs args 
8930: 63 61 6e 20 62 65 20 70 61 73 73 65 64 20 69 6e  can be passed in
8940: 0a 20 2a 20 66 6c 6f 61 74 20 72 65 67 69 73 74  . * float regist
8950: 65 72 73 2c 20 62 75 74 20 77 65 20 61 6c 73 6f  ers, but we also
8960: 20 70 75 73 68 20 74 68 65 6d 20 69 6e 74 6f 20   push them into 
8970: 74 68 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e  the correspondin
8980: 67 20 69 6e 74 0a 20 2a 20 72 65 67 69 73 74 65  g int. * registe
8990: 72 73 20 69 6e 20 63 61 73 65 20 6f 66 20 76 61  rs in case of va
89a0: 72 61 72 67 73 2e 0a 20 2a 2f 0a 0a 23 64 65 66  rargs.. */..#def
89b0: 69 6e 65 20 5f 5f 61 76 5f 66 6c 6f 61 74 28 4c  ine __av_float(L
89c0: 49 53 54 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a  IST,VAL)......\.
89d0: 20 20 28 2b 2b 28 4c 49 53 54 29 2e 61 70 74 72    (++(LIST).aptr
89e0: 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53   > __av_eptr(LIS
89f0: 54 29 09 09 09 09 09 5c 0a 20 20 20 3f 20 2d 31  T).....\.   ? -1
8a00: 20 3a 20 28 28 28 66 6c 6f 61 74 2a 29 28 4c 49   : (((float*)(LI
8a10: 53 54 29 2e 61 70 74 72 29 5b 2d 31 5d 20 3d 20  ST).aptr)[-1] = 
8a20: 28 66 6c 6f 61 74 29 28 56 41 4c 29 2c 09 09 09  (float)(VAL),...
8a30: 5c 0a 09 20 20 20 28 4c 49 53 54 29 2e 66 61 70  \..   (LIST).fap
8a40: 74 72 20 3c 20 26 28 4c 49 53 54 29 2e 66 61 72  tr < &(LIST).far
8a50: 67 73 5b 31 33 5d 20 26 26 09 09 09 09 5c 0a 09  gs[13] &&....\..
8a60: 09 28 2a 28 4c 49 53 54 29 2e 66 61 70 74 72 2b  .(*(LIST).faptr+
8a70: 2b 20 3d 20 28 64 6f 75 62 6c 65 29 28 66 6c 6f  + = (double)(flo
8a80: 61 74 29 28 56 41 4c 29 29 2c 09 09 5c 0a 09 20  at)(VAL)),..\.. 
8a90: 20 20 30 29 29 0a 0a 23 64 65 66 69 6e 65 20 61    0))..#define a
8aa0: 76 5f 64 6f 75 62 6c 65 28 4c 49 53 54 2c 56 41  v_double(LIST,VA
8ab0: 4c 29 09 09 09 09 09 09 5c 0a 20 20 20 28 28 28  L)......\.   (((
8ac0: 4c 49 53 54 29 2e 61 70 74 72 20 2b 3d 20 32 29  LIST).aptr += 2)
8ad0: 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53   > __av_eptr(LIS
8ae0: 54 29 09 09 09 09 5c 0a 20 20 20 20 3f 20 2d 31  T)....\.    ? -1
8af0: 20 3a 09 09 09 09 09 09 09 09 5c 0a 20 20 20 20   :........\.    
8b00: 28 28 4c 49 53 54 29 2e 74 6d 70 2e 5f 64 6f 75  ((LIST).tmp._dou
8b10: 62 6c 65 20 3d 20 28 64 6f 75 62 6c 65 29 28 56  ble = (double)(V
8b20: 41 4c 29 2c 09 09 09 09 5c 0a 20 20 20 20 20 28  AL),....\.     (
8b30: 4c 49 53 54 29 2e 61 70 74 72 5b 2d 32 5d 20 3d  LIST).aptr[-2] =
8b40: 20 28 4c 49 53 54 29 2e 74 6d 70 2e 77 6f 72 64   (LIST).tmp.word
8b50: 73 5b 30 5d 2c 09 09 09 09 5c 0a 20 20 20 20 20  s[0],....\.     
8b60: 28 4c 49 53 54 29 2e 61 70 74 72 5b 2d 31 5d 20  (LIST).aptr[-1] 
8b70: 3d 20 28 4c 49 53 54 29 2e 74 6d 70 2e 77 6f 72  = (LIST).tmp.wor
8b80: 64 73 5b 31 5d 2c 09 09 09 09 5c 0a 20 20 20 20  ds[1],....\.    
8b90: 20 28 4c 49 53 54 29 2e 66 61 70 74 72 20 3c 20   (LIST).faptr < 
8ba0: 26 28 4c 49 53 54 29 2e 66 61 72 67 73 5b 31 33  &(LIST).fargs[13
8bb0: 5d 20 26 26 09 09 09 09 5c 0a 09 28 2a 28 4c 49  ] &&....\..(*(LI
8bc0: 53 54 29 2e 66 61 70 74 72 2b 2b 20 3d 20 28 4c  ST).faptr++ = (L
8bd0: 49 53 54 29 2e 74 6d 70 2e 5f 64 6f 75 62 6c 65  IST).tmp._double
8be0: 29 2c 09 09 09 09 5c 0a 20 20 20 20 20 30 29 29  ),....\.     0))
8bf0: 0a 0a 23 65 6e 64 69 66 0a 0a 23 69 66 20 64 65  ..#endif..#if de
8c00: 66 69 6e 65 64 28 5f 5f 72 73 36 30 30 30 5f 5f  fined(__rs6000__
8c10: 29 20 26 26 20 21 28 64 65 66 69 6e 65 64 28 5f  ) && !(defined(_
8c20: 41 49 58 29 20 7c 7c 20 28 64 65 66 69 6e 65 64  AIX) || (defined
8c30: 28 5f 5f 4d 41 43 48 5f 5f 29 20 26 26 20 64 65  (__MACH__) && de
8c40: 66 69 6e 65 64 28 5f 5f 41 50 50 4c 45 5f 5f 29  fined(__APPLE__)
8c50: 29 29 0a 0a 2f 2a 20 55 70 20 74 6f 20 38 20 66  ))../* Up to 8 f
8c60: 6c 6f 61 74 20 6f 72 20 64 6f 75 62 6c 65 20 6e  loat or double n
8c70: 6f 6e 2d 76 61 72 61 72 67 73 20 61 72 67 73 20  on-varargs args 
8c80: 63 61 6e 20 62 65 20 70 61 73 73 65 64 20 69 6e  can be passed in
8c90: 0a 20 2a 20 66 6c 6f 61 74 20 72 65 67 69 73 74  . * float regist
8ca0: 65 72 73 2c 20 77 69 74 68 6f 75 74 20 6f 63 63  ers, without occ
8cb0: 75 70 79 69 6e 67 20 73 70 61 63 65 20 69 6e 20  upying space in 
8cc0: 74 68 65 20 67 65 6e 65 72 61 6c 20 72 65 67 69  the general regi
8cd0: 73 74 65 72 73 2e 0a 20 2a 2f 0a 0a 23 64 65 66  sters.. */..#def
8ce0: 69 6e 65 20 5f 5f 61 76 5f 66 6c 6f 61 74 28 4c  ine __av_float(L
8cf0: 49 53 54 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a  IST,VAL)......\.
8d00: 20 20 28 28 4c 49 53 54 29 2e 66 61 70 74 72 20    ((LIST).faptr 
8d10: 3c 20 26 28 4c 49 53 54 29 2e 66 61 72 67 73 5b  < &(LIST).fargs[
8d20: 38 5d 09 09 09 09 09 5c 0a 20 20 20 3f 20 28 28  8].....\.   ? ((
8d30: 2a 28 4c 49 53 54 29 2e 66 61 70 74 72 2b 2b 20  *(LIST).faptr++ 
8d40: 3d 20 28 64 6f 75 62 6c 65 29 28 66 6c 6f 61 74  = (double)(float
8d50: 29 28 56 41 4c 29 29 2c 20 30 29 09 09 09 5c 0a  )(VAL)), 0)...\.
8d60: 20 20 20 3a 20 28 2b 2b 28 4c 49 53 54 29 2e 61     : (++(LIST).a
8d70: 70 74 72 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28  ptr > __av_eptr(
8d80: 4c 49 53 54 29 09 09 09 09 09 5c 0a 20 20 20 20  LIST).....\.    
8d90: 20 20 3f 20 2d 31 20 3a 20 28 28 28 66 6c 6f 61    ? -1 : (((floa
8da0: 74 2a 29 28 4c 49 53 54 29 2e 61 70 74 72 29 5b  t*)(LIST).aptr)[
8db0: 2d 31 5d 20 3d 20 28 66 6c 6f 61 74 29 28 56 41  -1] = (float)(VA
8dc0: 4c 29 2c 20 30 29 29 29 0a 0a 23 64 65 66 69 6e  L), 0)))..#defin
8dd0: 65 20 61 76 5f 64 6f 75 62 6c 65 28 4c 49 53 54  e av_double(LIST
8de0: 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a 20 20 28  ,VAL)......\.  (
8df0: 28 4c 49 53 54 29 2e 66 61 70 74 72 20 3c 20 26  (LIST).faptr < &
8e00: 28 4c 49 53 54 29 2e 66 61 72 67 73 5b 38 5d 09  (LIST).fargs[8].
8e10: 09 09 09 09 5c 0a 20 20 20 3f 20 28 28 2a 28 4c  ....\.   ? ((*(L
8e20: 49 53 54 29 2e 66 61 70 74 72 2b 2b 20 3d 20 28  IST).faptr++ = (
8e30: 64 6f 75 62 6c 65 29 28 56 41 4c 29 29 2c 20 30  double)(VAL)), 0
8e40: 29 09 09 09 09 5c 0a 20 20 20 3a 20 28 28 28 4c  )....\.   : (((L
8e50: 49 53 54 29 2e 61 70 74 72 20 2b 3d 20 32 29 20  IST).aptr += 2) 
8e60: 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54  > __av_eptr(LIST
8e70: 29 09 09 09 09 5c 0a 20 20 20 20 20 20 3f 20 2d  )....\.      ? -
8e80: 31 20 3a 09 09 09 09 09 09 09 09 5c 0a 20 20 20  1 :........\.   
8e90: 20 20 20 28 28 4c 49 53 54 29 2e 74 6d 70 2e 5f     ((LIST).tmp._
8ea0: 64 6f 75 62 6c 65 20 3d 20 28 64 6f 75 62 6c 65  double = (double
8eb0: 29 28 56 41 4c 29 2c 09 09 09 09 5c 0a 20 20 20  )(VAL),....\.   
8ec0: 20 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72 5b      (LIST).aptr[
8ed0: 2d 32 5d 20 3d 20 28 4c 49 53 54 29 2e 74 6d 70  -2] = (LIST).tmp
8ee0: 2e 77 6f 72 64 73 5b 30 5d 2c 09 09 09 09 5c 0a  .words[0],....\.
8ef0: 20 20 20 20 20 20 20 28 4c 49 53 54 29 2e 61 70         (LIST).ap
8f00: 74 72 5b 2d 31 5d 20 3d 20 28 4c 49 53 54 29 2e  tr[-1] = (LIST).
8f10: 74 6d 70 2e 77 6f 72 64 73 5b 31 5d 2c 09 09 09  tmp.words[1],...
8f20: 09 5c 0a 20 20 20 20 20 20 20 30 29 29 29 0a 0a  .\.       0)))..
8f30: 23 65 6e 64 69 66 0a 0a 23 69 66 20 64 65 66 69  #endif..#if defi
8f40: 6e 65 64 28 5f 5f 73 33 39 30 5f 5f 29 0a 0a 2f  ned(__s390__)../
8f50: 2a 20 55 70 20 74 6f 20 32 20 66 6c 6f 61 74 20  * Up to 2 float 
8f60: 6f 72 20 64 6f 75 62 6c 65 20 6e 6f 6e 2d 76 61  or double non-va
8f70: 72 61 72 67 73 20 61 72 67 73 20 63 61 6e 20 62  rargs args can b
8f80: 65 20 70 61 73 73 65 64 20 69 6e 0a 20 2a 20 66  e passed in. * f
8f90: 6c 6f 61 74 20 72 65 67 69 73 74 65 72 73 2c 20  loat registers, 
8fa0: 77 69 74 68 6f 75 74 20 6f 63 63 75 70 79 69 6e  without occupyin
8fb0: 67 20 73 70 61 63 65 20 69 6e 20 74 68 65 20 67  g space in the g
8fc0: 65 6e 65 72 61 6c 20 72 65 67 69 73 74 65 72 73  eneral registers
8fd0: 2e 0a 20 2a 2f 0a 0a 23 64 65 66 69 6e 65 20 5f  .. */..#define _
8fe0: 5f 61 76 5f 66 6c 6f 61 74 28 4c 49 53 54 2c 56  _av_float(LIST,V
8ff0: 41 4c 29 09 09 09 09 09 09 5c 0a 20 20 28 28 4c  AL)......\.  ((L
9000: 49 53 54 29 2e 66 61 70 74 72 20 3c 20 26 28 4c  IST).faptr < &(L
9010: 49 53 54 29 2e 66 61 72 67 73 5b 32 5d 09 09 09  IST).fargs[2]...
9020: 09 09 5c 0a 20 20 20 3f 20 28 4c 49 53 54 29 2e  ..\.   ? (LIST).
9030: 64 61 70 74 72 2b 2b 2c 20 2a 28 4c 49 53 54 29  daptr++, *(LIST)
9040: 2e 66 61 72 67 73 75 73 65 64 70 74 72 2b 2b 20  .fargsusedptr++ 
9050: 3d 20 31 2c 20 2a 28 4c 49 53 54 29 2e 64 61 72  = 1, *(LIST).dar
9060: 67 73 75 73 65 64 70 74 72 2b 2b 20 3d 20 30 2c  gsusedptr++ = 0,
9070: 20 28 28 2a 28 4c 49 53 54 29 2e 66 61 70 74 72   ((*(LIST).faptr
9080: 2b 2b 20 3d 20 28 66 6c 6f 61 74 29 28 56 41 4c  ++ = (float)(VAL
9090: 29 29 2c 20 30 29 09 09 5c 0a 20 20 20 3a 20 28  )), 0)..\.   : (
90a0: 2b 2b 28 4c 49 53 54 29 2e 61 70 74 72 20 3e 20  ++(LIST).aptr > 
90b0: 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29 09  __av_eptr(LIST).
90c0: 09 09 09 09 5c 0a 20 20 20 20 20 20 3f 20 2d 31  ....\.      ? -1
90d0: 20 3a 20 28 28 4c 49 53 54 29 2e 66 61 72 67 77   : ((LIST).fargw
90e0: 6f 72 64 73 2b 2b 2c 20 28 28 66 6c 6f 61 74 2a  ords++, ((float*
90f0: 29 28 4c 49 53 54 29 2e 61 70 74 72 29 5b 2d 31  )(LIST).aptr)[-1
9100: 5d 20 3d 20 28 66 6c 6f 61 74 29 28 56 41 4c 29  ] = (float)(VAL)
9110: 2c 20 30 29 29 29 0a 0a 23 64 65 66 69 6e 65 20  , 0)))..#define 
9120: 61 76 5f 64 6f 75 62 6c 65 28 4c 49 53 54 2c 56  av_double(LIST,V
9130: 41 4c 29 09 09 09 09 09 09 5c 0a 20 20 28 28 4c  AL)......\.  ((L
9140: 49 53 54 29 2e 64 61 70 74 72 20 3c 20 26 28 4c  IST).daptr < &(L
9150: 49 53 54 29 2e 64 61 72 67 73 5b 32 5d 09 09 09  IST).dargs[2]...
9160: 09 09 5c 0a 20 20 20 3f 20 28 4c 49 53 54 29 2e  ..\.   ? (LIST).
9170: 66 61 70 74 72 2b 2b 2c 20 2a 28 4c 49 53 54 29  faptr++, *(LIST)
9180: 2e 64 61 72 67 73 75 73 65 64 70 74 72 2b 2b 20  .dargsusedptr++ 
9190: 3d 20 31 2c 20 2a 28 4c 49 53 54 29 2e 66 61 72  = 1, *(LIST).far
91a0: 67 73 75 73 65 64 70 74 72 2b 2b 20 3d 20 30 2c  gsusedptr++ = 0,
91b0: 20 28 28 2a 28 4c 49 53 54 29 2e 64 61 70 74 72   ((*(LIST).daptr
91c0: 2b 2b 20 3d 20 28 64 6f 75 62 6c 65 29 28 56 41  ++ = (double)(VA
91d0: 4c 29 29 2c 20 30 29 09 09 5c 0a 20 20 20 3a 20  L)), 0)..\.   : 
91e0: 28 28 28 4c 49 53 54 29 2e 61 70 74 72 20 2b 3d  (((LIST).aptr +=
91f0: 20 32 29 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28   2) > __av_eptr(
9200: 4c 49 53 54 29 09 09 09 09 5c 0a 20 20 20 20 20  LIST)....\.     
9210: 20 3f 20 2d 31 20 3a 09 09 09 09 09 09 09 09 5c   ? -1 :........\
9220: 0a 20 20 20 20 20 20 28 28 4c 49 53 54 29 2e 66  .      ((LIST).f
9230: 61 72 67 77 6f 72 64 73 2b 3d 32 2c 20 28 4c 49  argwords+=2, (LI
9240: 53 54 29 2e 74 6d 70 2e 5f 64 6f 75 62 6c 65 20  ST).tmp._double 
9250: 3d 20 28 64 6f 75 62 6c 65 29 28 56 41 4c 29 2c  = (double)(VAL),
9260: 09 09 09 5c 0a 20 20 20 20 20 20 20 28 4c 49 53  ...\.       (LIS
9270: 54 29 2e 61 70 74 72 5b 2d 32 5d 20 3d 20 28 4c  T).aptr[-2] = (L
9280: 49 53 54 29 2e 74 6d 70 2e 77 6f 72 64 73 5b 30  IST).tmp.words[0
9290: 5d 2c 09 09 09 09 5c 0a 20 20 20 20 20 20 20 28  ],....\.       (
92a0: 4c 49 53 54 29 2e 61 70 74 72 5b 2d 31 5d 20 3d  LIST).aptr[-1] =
92b0: 20 28 4c 49 53 54 29 2e 74 6d 70 2e 77 6f 72 64   (LIST).tmp.word
92c0: 73 5b 31 5d 2c 09 09 09 09 5c 0a 20 20 20 20 20  s[1],....\.     
92d0: 20 20 30 29 29 29 0a 0a 23 65 6e 64 69 66 0a 0a    0)))..#endif..
92e0: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 38  #if defined(__m8
92f0: 38 6b 5f 5f 29 0a 0a 23 64 65 66 69 6e 65 20 5f  8k__)..#define _
9300: 5f 61 76 5f 66 6c 6f 61 74 28 4c 49 53 54 2c 56  _av_float(LIST,V
9310: 41 4c 29 09 09 09 09 09 09 5c 0a 20 20 28 2b 2b  AL)......\.  (++
9320: 28 4c 49 53 54 29 2e 61 70 74 72 20 3e 20 5f 5f  (LIST).aptr > __
9330: 61 76 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09  av_eptr(LIST)...
9340: 09 09 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 28 28  ..\.   ? -1 : ((
9350: 28 66 6c 6f 61 74 2a 29 28 4c 49 53 54 29 2e 61  (float*)(LIST).a
9360: 70 74 72 29 5b 2d 31 5d 20 3d 20 28 66 6c 6f 61  ptr)[-1] = (floa
9370: 74 29 28 56 41 4c 29 2c 20 30 29 29 0a 0a 23 64  t)(VAL), 0))..#d
9380: 65 66 69 6e 65 20 61 76 5f 64 6f 75 62 6c 65 28  efine av_double(
9390: 4c 49 53 54 2c 56 41 4c 29 09 09 09 09 09 09 5c  LIST,VAL)......\
93a0: 0a 20 20 20 28 28 28 4c 49 53 54 29 2e 61 70 74  .   (((LIST).apt
93b0: 72 20 3d 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28  r = (__avword*)(
93c0: 28 28 6c 6f 6e 67 29 28 4c 49 53 54 29 2e 61 70  ((long)(LIST).ap
93d0: 74 72 2b 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65  tr+sizeof(double
93e0: 29 2b 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29  )+sizeof(double)
93f0: 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 73 69 7a  -1) & -(long)siz
9400: 65 6f 66 28 64 6f 75 62 6c 65 29 29 29 20 5c 0a  eof(double))) \.
9410: 20 20 20 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28      > __av_eptr(
9420: 4c 49 53 54 29 09 09 09 09 09 09 09 5c 0a 20 20  LIST).......\.  
9430: 20 20 3f 20 2d 31 20 3a 20 28 28 28 64 6f 75 62    ? -1 : (((doub
9440: 6c 65 2a 29 28 4c 49 53 54 29 2e 61 70 74 72 29  le*)(LIST).aptr)
9450: 5b 2d 31 5d 20 3d 20 28 64 6f 75 62 6c 65 29 28  [-1] = (double)(
9460: 56 41 4c 29 2c 20 30 29 29 0a 0a 23 65 6e 64 69  VAL), 0))..#endi
9470: 66 0a 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f  f..#if defined(_
9480: 5f 69 61 36 34 5f 5f 29 0a 0a 2f 2a 20 55 70 20  _ia64__)../* Up 
9490: 74 6f 20 38 20 6c 65 61 64 69 6e 67 20 66 6c 6f  to 8 leading flo
94a0: 61 74 20 6f 72 20 64 6f 75 62 6c 65 20 6e 6f 6e  at or double non
94b0: 2d 76 61 72 61 72 67 73 20 61 72 67 73 20 63 61  -varargs args ca
94c0: 6e 20 62 65 20 70 61 73 73 65 64 20 69 6e 0a 20  n be passed in. 
94d0: 2a 20 66 6c 6f 61 74 20 72 65 67 69 73 74 65 72  * float register
94e0: 73 2c 20 62 75 74 20 77 65 20 61 6c 73 6f 20 70  s, but we also p
94f0: 75 73 68 20 74 68 65 6d 20 69 6e 74 6f 20 74 68  ush them into th
9500: 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20  e corresponding 
9510: 69 6e 74 0a 20 2a 20 72 65 67 69 73 74 65 72 73  int. * registers
9520: 20 69 6e 20 63 61 73 65 20 6f 66 20 76 61 72 61   in case of vara
9530: 72 67 73 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65  rgs.. */.#define
9540: 20 5f 5f 61 76 5f 66 6c 6f 61 74 28 4c 49 53 54   __av_float(LIST
9550: 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a 20 20 28  ,VAL)......\.  (
9560: 28 4c 49 53 54 29 2e 61 70 74 72 20 3e 3d 20 5f  (LIST).aptr >= _
9570: 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29 09 09  _av_eptr(LIST)..
9580: 09 09 09 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 28  ...\.   ? -1 : (
9590: 28 2a 28 66 6c 6f 61 74 2a 29 28 4c 49 53 54 29  (*(float*)(LIST)
95a0: 2e 61 70 74 72 20 3d 20 28 66 6c 6f 61 74 29 28  .aptr = (float)(
95b0: 56 41 4c 29 29 2c 09 09 09 5c 0a 09 20 20 20 28  VAL)),...\..   (
95c0: 28 4c 49 53 54 29 2e 66 61 70 74 72 20 3c 20 26  (LIST).faptr < &
95d0: 28 4c 49 53 54 29 2e 66 61 72 67 73 5b 38 5d 20  (LIST).fargs[8] 
95e0: 26 26 20 28 2a 28 4c 49 53 54 29 2e 66 61 70 74  && (*(LIST).fapt
95f0: 72 20 3d 20 2a 28 66 6c 6f 61 74 2a 29 28 4c 49  r = *(float*)(LI
9600: 53 54 29 2e 61 70 74 72 2c 20 28 4c 49 53 54 29  ST).aptr, (LIST)
9610: 2e 66 61 70 74 72 2b 2b 29 29 2c 20 5c 0a 09 20  .faptr++)), \.. 
9620: 20 20 28 4c 49 53 54 29 2e 61 70 74 72 2b 2b 2c    (LIST).aptr++,
9630: 09 09 09 09 09 09 5c 0a 09 20 20 20 30 29 29 0a  ......\..   0)).
9640: 0a 23 64 65 66 69 6e 65 20 61 76 5f 64 6f 75 62  .#define av_doub
9650: 6c 65 28 4c 49 53 54 2c 56 41 4c 29 09 09 09 09  le(LIST,VAL)....
9660: 09 09 5c 0a 20 20 28 28 4c 49 53 54 29 2e 61 70  ..\.  ((LIST).ap
9670: 74 72 20 3e 3d 20 5f 5f 61 76 5f 65 70 74 72 28  tr >= __av_eptr(
9680: 4c 49 53 54 29 09 09 09 09 09 5c 0a 20 20 20 3f  LIST).....\.   ?
9690: 20 2d 31 20 3a 20 28 2a 28 64 6f 75 62 6c 65 2a   -1 : (*(double*
96a0: 29 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 28  )(LIST).aptr = (
96b0: 64 6f 75 62 6c 65 29 28 56 41 4c 29 2c 09 09 09  double)(VAL),...
96c0: 5c 0a 09 20 20 20 28 28 4c 49 53 54 29 2e 66 61  \..   ((LIST).fa
96d0: 70 74 72 20 3c 20 26 28 4c 49 53 54 29 2e 66 61  ptr < &(LIST).fa
96e0: 72 67 73 5b 38 5d 20 26 26 20 28 2a 28 4c 49 53  rgs[8] && (*(LIS
96f0: 54 29 2e 66 61 70 74 72 20 3d 20 2a 28 64 6f 75  T).faptr = *(dou
9700: 62 6c 65 2a 29 28 4c 49 53 54 29 2e 61 70 74 72  ble*)(LIST).aptr
9710: 2c 20 28 4c 49 53 54 29 2e 66 61 70 74 72 2b 2b  , (LIST).faptr++
9720: 29 29 2c 20 5c 0a 09 20 20 20 28 4c 49 53 54 29  )), \..   (LIST)
9730: 2e 61 70 74 72 2b 2b 2c 09 09 09 09 09 09 5c 0a  .aptr++,......\.
9740: 09 20 20 20 30 29 29 0a 0a 23 65 6e 64 69 66 0a  .   0))..#endif.
9750: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 78  .#if defined(__x
9760: 38 36 5f 36 34 5f 5f 29 0a 0a 2f 2a 20 55 70 20  86_64__)../* Up 
9770: 74 6f 20 38 20 6c 65 61 64 69 6e 67 20 66 6c 6f  to 8 leading flo
9780: 61 74 20 6f 72 20 64 6f 75 62 6c 65 20 61 72 67  at or double arg
9790: 73 20 63 61 6e 20 62 65 20 70 61 73 73 65 64 20  s can be passed 
97a0: 69 6e 20 66 6c 6f 61 74 20 72 65 67 69 73 74 65  in float registe
97b0: 72 73 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20  rs.. */.#define 
97c0: 5f 5f 61 76 5f 66 6c 6f 61 74 28 4c 49 53 54 2c  __av_float(LIST,
97d0: 56 41 4c 29 09 09 09 09 09 09 5c 0a 20 20 28 28  VAL)......\.  ((
97e0: 4c 49 53 54 29 2e 66 61 70 74 72 20 3c 20 26 28  LIST).faptr < &(
97f0: 4c 49 53 54 29 2e 66 61 72 67 73 5b 38 5d 09 09  LIST).fargs[8]..
9800: 09 09 09 5c 0a 20 20 20 3f 20 28 2a 28 4c 49 53  ...\.   ? (*(LIS
9810: 54 29 2e 66 61 70 74 72 20 3d 20 30 2e 30 2c 20  T).faptr = 0.0, 
9820: 2a 28 66 6c 6f 61 74 2a 29 28 4c 49 53 54 29 2e  *(float*)(LIST).
9830: 66 61 70 74 72 20 3d 20 28 66 6c 6f 61 74 29 28  faptr = (float)(
9840: 56 41 4c 29 2c 09 5c 0a 20 20 20 20 20 20 28 4c  VAL),.\.      (L
9850: 49 53 54 29 2e 66 61 70 74 72 2b 2b 2c 09 09 09  IST).faptr++,...
9860: 09 09 09 09 5c 0a 20 20 20 20 20 20 30 29 09 09  ....\.      0)..
9870: 09 09 09 09 09 09 5c 0a 20 20 20 3a 20 28 28 4c  ......\.   : ((L
9880: 49 53 54 29 2e 61 70 74 72 20 3e 3d 20 5f 5f 61  IST).aptr >= __a
9890: 76 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09 09  v_eptr(LIST)....
98a0: 09 5c 0a 20 20 20 20 20 20 3f 20 2d 31 20 3a 20  .\.      ? -1 : 
98b0: 28 28 2a 28 66 6c 6f 61 74 2a 29 28 4c 49 53 54  ((*(float*)(LIST
98c0: 29 2e 61 70 74 72 20 3d 20 28 66 6c 6f 61 74 29  ).aptr = (float)
98d0: 28 56 41 4c 29 29 2c 09 09 09 5c 0a 09 20 20 20  (VAL)),...\..   
98e0: 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72 2b 2b     (LIST).aptr++
98f0: 2c 09 09 09 09 09 09 5c 0a 09 20 20 20 20 20 20  ,......\..      
9900: 30 29 29 29 0a 0a 23 64 65 66 69 6e 65 20 61 76  0)))..#define av
9910: 5f 64 6f 75 62 6c 65 28 4c 49 53 54 2c 56 41 4c  _double(LIST,VAL
9920: 29 09 09 09 09 09 09 5c 0a 20 20 28 28 4c 49 53  )......\.  ((LIS
9930: 54 29 2e 66 61 70 74 72 20 3c 20 26 28 4c 49 53  T).faptr < &(LIS
9940: 54 29 2e 66 61 72 67 73 5b 38 5d 09 09 09 09 09  T).fargs[8].....
9950: 5c 0a 20 20 20 3f 20 28 2a 28 4c 49 53 54 29 2e  \.   ? (*(LIST).
9960: 66 61 70 74 72 20 3d 20 28 64 6f 75 62 6c 65 29  faptr = (double)
9970: 28 56 41 4c 29 2c 09 09 09 09 09 5c 0a 20 20 20  (VAL),.....\.   
9980: 20 20 20 28 4c 49 53 54 29 2e 66 61 70 74 72 2b     (LIST).faptr+
9990: 2b 2c 09 09 09 09 09 09 09 5c 0a 20 20 20 20 20  +,.......\.     
99a0: 20 30 29 09 09 09 09 09 09 09 09 5c 0a 20 20 20   0)........\.   
99b0: 3a 20 28 28 4c 49 53 54 29 2e 61 70 74 72 20 3e  : ((LIST).aptr >
99c0: 3d 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54  = __av_eptr(LIST
99d0: 29 09 09 09 09 09 5c 0a 20 20 20 20 20 20 3f 20  ).....\.      ? 
99e0: 2d 31 20 3a 20 28 28 2a 28 64 6f 75 62 6c 65 2a  -1 : ((*(double*
99f0: 29 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 28  )(LIST).aptr = (
9a00: 64 6f 75 62 6c 65 29 28 56 41 4c 29 29 2c 09 09  double)(VAL)),..
9a10: 09 5c 0a 09 20 20 20 20 20 20 28 4c 49 53 54 29  .\..      (LIST)
9a20: 2e 61 70 74 72 2b 2b 2c 09 09 09 09 09 09 5c 0a  .aptr++,......\.
9a30: 09 20 20 20 20 20 20 30 29 29 29 0a 0a 23 65 6e  .      0)))..#en
9a40: 64 69 66 0a 0a 2f 2a 0a 20 2a 20 73 74 72 75 63  dif../*. * struc
9a50: 74 75 72 65 20 61 72 67 75 6d 65 6e 74 20 74 79  ture argument ty
9a60: 70 65 73 0a 20 2a 2f 0a 0a 23 64 65 66 69 6e 65  pes. */..#define
9a70: 20 61 76 5f 73 74 72 75 63 74 28 4c 49 53 54 2c   av_struct(LIST,
9a80: 54 59 50 45 2c 56 41 4c 29 09 09 09 09 09 5c 0a  TYPE,VAL).....\.
9a90: 20 20 5f 5f 61 76 5f 73 74 72 75 63 74 28 4c 49    __av_struct(LI
9aa0: 53 54 2c 54 59 50 45 2c 73 69 7a 65 6f 66 28 54  ST,TYPE,sizeof(T
9ab0: 59 50 45 29 2c 5f 5f 41 56 5f 61 6c 69 67 6e 6f  YPE),__AV_aligno
9ac0: 66 28 54 59 50 45 29 2c 5f 5f 61 76 5f 73 74 72  f(TYPE),__av_str
9ad0: 75 63 74 5f 61 73 73 69 67 6e 2c 56 41 4c 29 0a  uct_assign,VAL).
9ae0: 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 72  #define __av_str
9af0: 75 63 74 5f 61 73 73 69 67 6e 28 54 59 50 45 2c  uct_assign(TYPE,
9b00: 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41  TYPE_SIZE,TYPE_A
9b10: 4c 49 47 4e 2c 50 4c 41 43 45 2c 56 41 4c 29 09  LIGN,PLACE,VAL).
9b20: 09 5c 0a 20 20 2a 28 54 59 50 45 2a 29 28 50 4c  .\.  *(TYPE*)(PL
9b30: 41 43 45 29 20 3d 20 28 56 41 4c 29 0a 2f 2a 20  ACE) = (VAL)./* 
9b40: 5f 61 76 5f 73 74 72 75 63 74 28 29 20 69 73 20  _av_struct() is 
9b50: 6c 69 6b 65 20 61 76 5f 73 74 72 75 63 74 28 29  like av_struct()
9b60: 2c 20 65 78 63 65 70 74 20 74 68 61 74 20 79 6f  , except that yo
9b70: 75 20 70 61 73 73 20 74 68 65 20 74 79 70 65 27  u pass the type'
9b80: 73 20 73 69 7a 65 20 61 6e 64 20 61 6c 69 67 6e  s size and align
9b90: 6d 65 6e 74 0a 20 2a 20 61 6e 64 20 74 68 65 20  ment. * and the 
9ba0: 76 61 6c 75 65 27 73 20 61 64 64 72 65 73 73 20  value's address 
9bb0: 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 74  instead of the t
9bc0: 79 70 65 20 61 6e 64 20 74 68 65 20 76 61 6c 75  ype and the valu
9bd0: 65 20 74 68 65 6d 73 65 6c 76 65 73 2e 0a 20 2a  e themselves.. *
9be0: 2f 0a 23 64 65 66 69 6e 65 20 5f 61 76 5f 73 74  /.#define _av_st
9bf0: 72 75 63 74 28 4c 49 53 54 2c 54 59 50 45 5f 53  ruct(LIST,TYPE_S
9c00: 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 56  IZE,TYPE_ALIGN,V
9c10: 41 4c 5f 41 44 44 52 29 09 09 09 5c 0a 20 20 5f  AL_ADDR)...\.  _
9c20: 5f 61 76 5f 73 74 72 75 63 74 28 4c 49 53 54 2c  _av_struct(LIST,
9c30: 75 6e 6b 6e 6f 77 6e 2c 54 59 50 45 5f 53 49 5a  unknown,TYPE_SIZ
9c40: 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 5f 5f 61  E,TYPE_ALIGN,__a
9c50: 76 5f 73 74 72 75 63 74 5f 63 6f 70 79 2c 56 41  v_struct_copy,VA
9c60: 4c 5f 41 44 44 52 29 0a 23 64 65 66 69 6e 65 20  L_ADDR).#define 
9c70: 5f 5f 61 76 5f 73 74 72 75 63 74 5f 63 6f 70 79  __av_struct_copy
9c80: 28 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c  (TYPE,TYPE_SIZE,
9c90: 54 59 50 45 5f 41 4c 49 47 4e 2c 50 4c 41 43 45  TYPE_ALIGN,PLACE
9ca0: 2c 56 41 4c 5f 41 44 44 52 29 09 5c 0a 20 20 5f  ,VAL_ADDR).\.  _
9cb0: 5f 73 74 72 75 63 74 63 70 79 28 50 4c 41 43 45  _structcpy(PLACE
9cc0: 2c 56 41 4c 5f 41 44 44 52 2c 54 59 50 45 5f 53  ,VAL_ADDR,TYPE_S
9cd0: 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29 0a  IZE,TYPE_ALIGN).
9ce0: 2f 2a 20 53 74 72 75 63 74 75 72 65 20 61 72 67  /* Structure arg
9cf0: 75 6d 65 6e 74 20 61 6c 69 67 6e 6d 65 6e 74 2e  ument alignment.
9d00: 20 2a 2f 0a 23 69 66 20 64 65 66 69 6e 65 64 28   */.#if defined(
9d10: 5f 5f 69 33 38 36 5f 5f 29 20 26 26 20 64 65 66  __i386__) && def
9d20: 69 6e 65 64 28 5f 4d 53 43 5f 56 45 52 29 0a 2f  ined(_MSC_VER)./
9d30: 2a 20 49 6e 20 4d 53 56 43 2c 20 64 6f 75 62 6c  * In MSVC, doubl
9d40: 65 73 20 69 6e 73 69 64 65 20 73 74 72 75 63 74  es inside struct
9d50: 75 72 65 73 20 68 61 76 65 20 61 6c 69 67 6e 6d  ures have alignm
9d60: 65 6e 74 20 38 2c 20 69 2e 65 2e 0a 20 2a 20 5f  ent 8, i.e.. * _
9d70: 5f 41 56 5f 61 6c 69 67 6e 6f 66 28 64 6f 75 62  _AV_alignof(doub
9d80: 6c 65 29 20 3d 20 38 2c 20 62 75 74 20 64 6f 75  le) = 8, but dou
9d90: 62 6c 65 73 20 28 61 6e 64 20 61 6c 73 6f 20 73  bles (and also s
9da0: 74 72 75 63 74 75 72 65 73 20 63 6f 6e 74 61 69  tructures contai
9db0: 6e 69 6e 67 0a 20 2a 20 64 6f 75 62 6c 65 73 29  ning. * doubles)
9dc0: 20 61 72 65 20 70 61 73 73 65 64 20 6f 6e 20 74   are passed on t
9dd0: 68 65 20 73 74 61 63 6b 20 77 69 74 68 20 61 6c  he stack with al
9de0: 69 67 6e 6d 65 6e 74 20 34 2e 20 4c 6f 6f 6b 73  ignment 4. Looks
9df0: 20 72 65 61 6c 6c 79 20 77 65 69 72 64 2e 0a 20   really weird.. 
9e00: 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f  */.#define __av_
9e10: 73 74 72 75 63 74 5f 61 6c 69 67 6e 6d 65 6e 74  struct_alignment
9e20: 28 54 59 50 45 5f 41 4c 49 47 4e 29 20 20 5c 0a  (TYPE_ALIGN)  \.
9e30: 20 20 28 28 54 59 50 45 5f 41 4c 49 47 4e 29 20    ((TYPE_ALIGN) 
9e40: 3c 3d 20 34 20 3f 20 28 54 59 50 45 5f 41 4c 49  <= 4 ? (TYPE_ALI
9e50: 47 4e 29 20 3a 20 34 29 0a 23 65 6c 73 65 0a 23  GN) : 4).#else.#
9e60: 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 72 75  define __av_stru
9e70: 63 74 5f 61 6c 69 67 6e 6d 65 6e 74 28 54 59 50  ct_alignment(TYP
9e80: 45 5f 41 4c 49 47 4e 29 20 20 5c 0a 20 20 28 54  E_ALIGN)  \.  (T
9e90: 59 50 45 5f 41 4c 49 47 4e 29 0a 23 65 6e 64 69  YPE_ALIGN).#endi
9ea0: 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  f.#if defined(__
9eb0: 69 33 38 36 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  i386__) || defin
9ec0: 65 64 28 5f 5f 6d 69 70 73 5f 5f 29 20 7c 7c 20  ed(__mips__) || 
9ed0: 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33  defined(__mipsn3
9ee0: 32 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  2__) || defined(
9ef0: 5f 5f 6d 69 70 73 36 34 5f 5f 29 20 7c 7c 20 64  __mips64__) || d
9f00: 65 66 69 6e 65 64 28 5f 5f 61 6c 70 68 61 5f 5f  efined(__alpha__
9f10: 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f  ) || (defined(__
9f20: 72 73 36 30 30 30 5f 5f 29 20 26 26 20 28 64 65  rs6000__) && (de
9f30: 66 69 6e 65 64 28 5f 41 49 58 29 20 7c 7c 20 28  fined(_AIX) || (
9f40: 64 65 66 69 6e 65 64 28 5f 5f 4d 41 43 48 5f 5f  defined(__MACH__
9f50: 29 20 26 26 20 64 65 66 69 6e 65 64 28 5f 5f 41  ) && defined(__A
9f60: 50 50 4c 45 5f 5f 29 29 29 29 20 7c 7c 20 64 65  PPLE__)))) || de
9f70: 66 69 6e 65 64 28 5f 5f 6d 38 38 6b 5f 5f 29 20  fined(__m88k__) 
9f80: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 69 61 36  || defined(__ia6
9f90: 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  4__) || defined(
9fa0: 5f 5f 73 33 39 30 5f 5f 29 0a 2f 2a 20 53 74 72  __s390__)./* Str
9fb0: 75 63 74 75 72 65 73 20 61 72 65 20 70 61 73 73  uctures are pass
9fc0: 65 64 20 61 73 20 66 75 6c 6c 79 20 61 6c 69 67  ed as fully alig
9fd0: 6e 65 64 20 73 74 72 75 63 74 75 72 65 73 20 6f  ned structures o
9fe0: 6e 20 74 68 65 20 61 72 67 20 73 74 61 63 6b 2e  n the arg stack.
9ff0: 0a 20 2a 20 57 65 20 61 6c 69 67 6e 20 74 68 65  . * We align the
a000: 20 61 70 74 72 2c 20 73 74 6f 72 65 20 74 68 65   aptr, store the
a010: 20 73 74 72 75 63 74 75 72 65 2c 20 74 68 65 6e   structure, then
a020: 20 66 69 6c 6c 20 74 6f 20 77 6f 72 64 20 61 6c   fill to word al
a030: 69 67 6e 6d 65 6e 74 2e 0a 20 2a 20 53 69 6e 67  ignment.. * Sing
a040: 6c 65 2d 73 6d 61 6c 6c 2d 69 6e 74 65 67 65 72  le-small-integer
a050: 20 73 74 72 75 63 74 75 72 65 73 20 61 72 65 20   structures are 
a060: 4e 4f 54 20 70 72 6f 6d 6f 74 65 64 20 74 6f 20  NOT promoted to 
a070: 69 6e 74 65 67 65 72 73 20 61 6e 64 20 68 61 76  integers and hav
a080: 65 0a 20 2a 20 64 69 66 66 65 72 65 6e 74 20 61  e. * different a
a090: 6c 69 67 6e 6d 65 6e 74 2e 0a 20 2a 2f 0a 2f 2a  lignment.. */./*
a0a0: 20 6c 69 74 74 6c 65 20 65 6e 64 69 61 6e 20 2d   little endian -
a0b0: 3e 20 73 6d 61 6c 6c 20 73 74 72 75 63 74 75 72  > small structur
a0c0: 65 73 20 3c 20 31 20 77 6f 72 64 20 61 72 65 20  es < 1 word are 
a0d0: 61 64 6a 75 73 74 65 64 20 74 6f 20 74 68 65 20  adjusted to the 
a0e0: 6c 65 66 74 20 2a 2f 0a 23 69 66 20 64 65 66 69  left */.#if defi
a0f0: 6e 65 64 28 5f 5f 69 33 38 36 5f 5f 29 20 7c 7c  ned(__i386__) ||
a100: 20 64 65 66 69 6e 65 64 28 5f 5f 61 6c 70 68 61   defined(__alpha
a110: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
a120: 5f 78 38 36 5f 36 34 5f 5f 29 0a 23 64 65 66 69  _x86_64__).#defi
a130: 6e 65 20 5f 5f 61 76 5f 73 74 72 75 63 74 28 4c  ne __av_struct(L
a140: 49 53 54 2c 54 59 50 45 2c 54 59 50 45 5f 53 49  IST,TYPE,TYPE_SI
a150: 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53  ZE,TYPE_ALIGN,AS
a160: 53 49 47 4e 2c 56 41 4c 29 09 09 5c 0a 20 20 28  SIGN,VAL)..\.  (
a170: 28 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 09 09  ((LIST).aptr =..
a180: 09 09 09 09 09 5c 0a 20 20 20 20 28 5f 5f 61 76  .....\.    (__av
a190: 77 6f 72 64 2a 29 28 28 28 5f 5f 61 76 77 6f 72  word*)(((__avwor
a1a0: 64 29 28 4c 49 53 54 29 2e 61 70 74 72 2b 28 54  d)(LIST).aptr+(T
a1b0: 59 50 45 5f 53 49 5a 45 29 2b 5f 5f 61 76 5f 73  YPE_SIZE)+__av_s
a1c0: 74 72 75 63 74 5f 61 6c 69 67 6e 6d 65 6e 74 28  truct_alignment(
a1d0: 54 59 50 45 5f 41 4c 49 47 4e 29 2d 31 29 20 26  TYPE_ALIGN)-1) &
a1e0: 20 2d 28 6c 6f 6e 67 29 5f 5f 61 76 5f 73 74 72   -(long)__av_str
a1f0: 75 63 74 5f 61 6c 69 67 6e 6d 65 6e 74 28 54 59  uct_alignment(TY
a200: 50 45 5f 41 4c 49 47 4e 29 29 29 5c 0a 20 20 20  PE_ALIGN)))\.   
a210: 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54  > __av_eptr(LIST
a220: 29 09 09 09 09 09 09 09 5c 0a 20 20 20 3f 20 2d  ).......\.   ? -
a230: 31 20 3a 20 28 41 53 53 49 47 4e 28 54 59 50 45  1 : (ASSIGN(TYPE
a240: 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f  ,TYPE_SIZE,TYPE_
a250: 41 4c 49 47 4e 2c 28 76 6f 69 64 2a 29 28 28 5f  ALIGN,(void*)((_
a260: 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e 61  _avword)(LIST).a
a270: 70 74 72 2d 28 54 59 50 45 5f 53 49 5a 45 29 29  ptr-(TYPE_SIZE))
a280: 2c 56 41 4c 29 2c 5c 0a 09 20 20 20 28 4c 49 53  ,VAL),\..   (LIS
a290: 54 29 2e 61 70 74 72 20 3d 20 28 5f 5f 61 76 77  T).aptr = (__avw
a2a0: 6f 72 64 2a 29 28 28 28 5f 5f 61 76 77 6f 72 64  ord*)(((__avword
a2b0: 29 28 4c 49 53 54 29 2e 61 70 74 72 2b 73 69 7a  )(LIST).aptr+siz
a2c0: 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 2d 31 29  eof(__avword)-1)
a2d0: 20 26 20 2d 28 6c 6f 6e 67 29 73 69 7a 65 6f 66   & -(long)sizeof
a2e0: 28 5f 5f 61 76 77 6f 72 64 29 29 2c 5c 0a 09 20  (__avword)),\.. 
a2f0: 20 20 30 29 29 0a 23 65 6e 64 69 66 0a 23 69 66    0)).#endif.#if
a300: 20 64 65 66 69 6e 65 64 28 5f 5f 69 61 36 34 5f   defined(__ia64_
a310: 5f 29 0a 2f 2a 20 54 79 70 65 73 20 6c 61 72 67  _)./* Types larg
a320: 65 72 20 74 68 61 6e 20 61 20 77 6f 72 64 20 68  er than a word h
a330: 61 76 65 20 32 2d 77 6f 72 64 20 61 6c 69 67 6e  ave 2-word align
a340: 6d 65 6e 74 2e 20 2a 2f 0a 23 64 65 66 69 6e 65  ment. */.#define
a350: 20 5f 5f 61 76 5f 73 74 72 75 63 74 28 4c 49 53   __av_struct(LIS
a360: 54 2c 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45  T,TYPE,TYPE_SIZE
a370: 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49  ,TYPE_ALIGN,ASSI
a380: 47 4e 2c 56 41 4c 29 09 09 5c 0a 20 20 28 28 4c  GN,VAL)..\.  ((L
a390: 49 53 54 29 2e 61 70 74 72 20 3d 20 28 5f 5f 61  IST).aptr = (__a
a3a0: 76 77 6f 72 64 2a 29 28 28 28 5f 5f 61 76 77 6f  vword*)(((__avwo
a3b0: 72 64 29 28 4c 49 53 54 29 2e 61 70 74 72 2b 28  rd)(LIST).aptr+(
a3c0: 54 59 50 45 5f 53 49 5a 45 29 2b 5f 5f 61 76 5f  TYPE_SIZE)+__av_
a3d0: 73 74 72 75 63 74 5f 61 6c 69 67 6e 6d 65 6e 74  struct_alignment
a3e0: 28 54 59 50 45 5f 41 4c 49 47 4e 29 2d 31 29 20  (TYPE_ALIGN)-1) 
a3f0: 26 20 2d 28 6c 6f 6e 67 29 5f 5f 61 76 5f 73 74  & -(long)__av_st
a400: 72 75 63 74 5f 61 6c 69 67 6e 6d 65 6e 74 28 54  ruct_alignment(T
a410: 59 50 45 5f 41 4c 49 47 4e 29 29 2c 20 5c 0a 20  YPE_ALIGN)), \. 
a420: 20 20 28 28 54 59 50 45 5f 53 49 5a 45 29 20 3e    ((TYPE_SIZE) >
a430: 20 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64   sizeof(__avword
a440: 29 20 26 26 20 28 28 28 4c 49 53 54 29 2e 61 70  ) && (((LIST).ap
a450: 74 72 20 2d 20 26 28 4c 49 53 54 29 2e 61 72 67  tr - &(LIST).arg
a460: 73 5b 30 5d 29 20 26 20 31 29 20 3f 20 2b 2b 28  s[0]) & 1) ? ++(
a470: 4c 49 53 54 29 2e 61 70 74 72 20 3a 20 30 29 2c  LIST).aptr : 0),
a480: 20 5c 0a 20 20 20 28 28 4c 49 53 54 29 2e 61 70   \.   ((LIST).ap
a490: 74 72 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c  tr > __av_eptr(L
a4a0: 49 53 54 29 09 09 09 09 09 5c 0a 20 20 20 20 3f  IST).....\.    ?
a4b0: 20 2d 31 20 3a 20 28 41 53 53 49 47 4e 28 54 59   -1 : (ASSIGN(TY
a4c0: 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50  PE,TYPE_SIZE,TYP
a4d0: 45 5f 41 4c 49 47 4e 2c 28 76 6f 69 64 2a 29 28  E_ALIGN,(void*)(
a4e0: 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29  (__avword)(LIST)
a4f0: 2e 61 70 74 72 2d 28 54 59 50 45 5f 53 49 5a 45  .aptr-(TYPE_SIZE
a500: 29 29 2c 56 41 4c 29 2c 5c 0a 09 20 20 20 20 28  )),VAL),\..    (
a510: 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 28 5f 5f  LIST).aptr = (__
a520: 61 76 77 6f 72 64 2a 29 28 28 28 5f 5f 61 76 77  avword*)(((__avw
a530: 6f 72 64 29 28 4c 49 53 54 29 2e 61 70 74 72 2b  ord)(LIST).aptr+
a540: 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29  sizeof(__avword)
a550: 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 73 69 7a  -1) & -(long)siz
a560: 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 29 2c 5c  eof(__avword)),\
a570: 0a 09 20 20 20 20 30 29 29 29 0a 23 65 6e 64 69  ..    0))).#endi
a580: 66 0a 2f 2a 20 73 6d 61 6c 6c 20 73 74 72 75 63  f./* small struc
a590: 74 75 72 65 73 20 3c 20 31 20 77 6f 72 64 20 61  tures < 1 word a
a5a0: 72 65 20 61 64 6a 75 73 74 65 64 20 64 65 70 65  re adjusted depe
a5b0: 6e 64 69 6e 67 20 6f 6e 20 63 6f 6d 70 69 6c 65  nding on compile
a5c0: 72 20 2a 2f 0a 23 69 66 20 64 65 66 69 6e 65 64  r */.#if defined
a5d0: 28 5f 5f 6d 69 70 73 5f 5f 29 20 26 26 20 21 64  (__mips__) && !d
a5e0: 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32  efined(__mipsn32
a5f0: 5f 5f 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76  __).#define __av
a600: 5f 73 74 72 75 63 74 5f 6c 65 66 74 61 64 6a 75  _struct_leftadju
a610: 73 74 65 64 28 4c 49 53 54 2c 54 59 50 45 2c 54  sted(LIST,TYPE,T
a620: 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c  YPE_SIZE,TYPE_AL
a630: 49 47 4e 2c 41 53 53 49 47 4e 2c 56 41 4c 29 20  IGN,ASSIGN,VAL) 
a640: 5c 0a 20 20 28 28 28 4c 49 53 54 29 2e 61 70 74  \.  (((LIST).apt
a650: 72 20 3d 09 09 09 09 09 09 09 5c 0a 20 20 20 20  r =.......\.    
a660: 28 5f 5f 61 76 77 6f 72 64 2a 29 28 28 28 5f 5f  (__avword*)(((__
a670: 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e 61 70  avword)(LIST).ap
a680: 74 72 2b 28 54 59 50 45 5f 53 49 5a 45 29 2b 28  tr+(TYPE_SIZE)+(
a690: 54 59 50 45 5f 41 4c 49 47 4e 29 2d 31 29 20 26  TYPE_ALIGN)-1) &
a6a0: 20 2d 28 6c 6f 6e 67 29 28 54 59 50 45 5f 41 4c   -(long)(TYPE_AL
a6b0: 49 47 4e 29 29 29 5c 0a 20 20 20 3e 20 5f 5f 61  IGN)))\.   > __a
a6c0: 76 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09 09  v_eptr(LIST)....
a6d0: 09 09 09 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 28  ...\.   ? -1 : (
a6e0: 2b 2b 28 4c 49 53 54 29 2e 61 6e 75 6d 2c 09 09  ++(LIST).anum,..
a6f0: 09 09 09 09 5c 0a 09 20 20 20 41 53 53 49 47 4e  ....\..   ASSIGN
a700: 28 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c  (TYPE,TYPE_SIZE,
a710: 54 59 50 45 5f 41 4c 49 47 4e 2c 28 76 6f 69 64  TYPE_ALIGN,(void
a720: 2a 29 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49  *)((__avword)(LI
a730: 53 54 29 2e 61 70 74 72 2d 28 54 59 50 45 5f 53  ST).aptr-(TYPE_S
a740: 49 5a 45 29 29 2c 56 41 4c 29 2c 5c 0a 09 20 20  IZE)),VAL),\..  
a750: 20 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 28   (LIST).aptr = (
a760: 5f 5f 61 76 77 6f 72 64 2a 29 28 28 28 5f 5f 61  __avword*)(((__a
a770: 76 77 6f 72 64 29 28 4c 49 53 54 29 2e 61 70 74  vword)(LIST).apt
a780: 72 2b 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72  r+sizeof(__avwor
a790: 64 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 73  d)-1) & -(long)s
a7a0: 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 29  izeof(__avword))
a7b0: 2c 5c 0a 09 20 20 20 30 29 29 0a 23 64 65 66 69  ,\..   0)).#defi
a7c0: 6e 65 20 5f 5f 61 76 5f 73 74 72 75 63 74 5f 72  ne __av_struct_r
a7d0: 69 67 68 74 61 64 6a 75 73 74 65 64 28 4c 49 53  ightadjusted(LIS
a7e0: 54 2c 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45  T,TYPE,TYPE_SIZE
a7f0: 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49  ,TYPE_ALIGN,ASSI
a800: 47 4e 2c 56 41 4c 29 20 5c 0a 20 20 28 28 28 4c  GN,VAL) \.  (((L
a810: 49 53 54 29 2e 61 70 74 72 20 3d 09 09 09 09 09  IST).aptr =.....
a820: 09 09 5c 0a 20 20 20 20 28 5f 5f 61 76 77 6f 72  ..\.    (__avwor
a830: 64 2a 29 28 28 28 28 28 5f 5f 61 76 77 6f 72 64  d*)(((((__avword
a840: 29 28 4c 49 53 54 29 2e 61 70 74 72 2b 28 54 59  )(LIST).aptr+(TY
a850: 50 45 5f 53 49 5a 45 29 2b 28 54 59 50 45 5f 41  PE_SIZE)+(TYPE_A
a860: 4c 49 47 4e 29 2d 31 29 20 26 20 2d 28 6c 6f 6e  LIGN)-1) & -(lon
a870: 67 29 28 54 59 50 45 5f 41 4c 49 47 4e 29 29 5c  g)(TYPE_ALIGN))\
a880: 0a 09 09 20 2b 73 69 7a 65 6f 66 28 5f 5f 61 76  ... +sizeof(__av
a890: 77 6f 72 64 29 2d 31 29 20 26 20 2d 28 6c 6f 6e  word)-1) & -(lon
a8a0: 67 29 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72  g)sizeof(__avwor
a8b0: 64 29 29 29 09 5c 0a 20 20 20 3e 20 5f 5f 61 76  d))).\.   > __av
a8c0: 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09 09 09  _eptr(LIST).....
a8d0: 09 09 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 28 2b  ..\.   ? -1 : (+
a8e0: 2b 28 4c 49 53 54 29 2e 61 6e 75 6d 2c 09 09 09  +(LIST).anum,...
a8f0: 09 09 09 5c 0a 09 20 20 20 41 53 53 49 47 4e 28  ...\..   ASSIGN(
a900: 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54  TYPE,TYPE_SIZE,T
a910: 59 50 45 5f 41 4c 49 47 4e 2c 28 76 6f 69 64 2a  YPE_ALIGN,(void*
a920: 29 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53  )((__avword)(LIS
a930: 54 29 2e 61 70 74 72 2d 28 54 59 50 45 5f 53 49  T).aptr-(TYPE_SI
a940: 5a 45 29 29 2c 56 41 4c 29 2c 5c 0a 09 20 20 20  ZE)),VAL),\..   
a950: 30 29 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76  0)).#define __av
a960: 5f 73 74 72 75 63 74 28 4c 49 53 54 2c 54 59 50  _struct(LIST,TYP
a970: 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45  E,TYPE_SIZE,TYPE
a980: 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e 2c 56 41  _ALIGN,ASSIGN,VA
a990: 4c 29 09 09 5c 0a 20 20 28 28 4c 49 53 54 29 2e  L)..\.  ((LIST).
a9a0: 66 6c 61 67 73 20 26 20 5f 5f 41 56 5f 53 47 49  flags & __AV_SGI
a9b0: 43 43 5f 53 54 52 55 43 54 5f 41 52 47 53 09 09  CC_STRUCT_ARGS..
a9c0: 09 09 5c 0a 20 20 20 3f 20 2f 2a 20 53 47 49 20  ..\.   ? /* SGI 
a9d0: 4d 49 50 53 20 63 63 20 70 61 73 73 65 73 20 73  MIPS cc passes s
a9e0: 6d 61 6c 6c 20 73 74 72 75 63 74 75 72 65 73 20  mall structures 
a9f0: 6c 65 66 74 2d 61 64 6a 75 73 74 65 64 2c 20 61  left-adjusted, a
aa00: 6c 74 68 6f 75 67 68 20 62 69 67 2d 65 6e 64 69  lthough big-endi
aa10: 61 6e 21 20 2a 2f 5c 0a 20 20 20 20 20 5f 5f 61  an! */\.     __a
aa20: 76 5f 73 74 72 75 63 74 5f 6c 65 66 74 61 64 6a  v_struct_leftadj
aa30: 75 73 74 65 64 28 4c 49 53 54 2c 54 59 50 45 2c  usted(LIST,TYPE,
aa40: 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41  TYPE_SIZE,TYPE_A
aa50: 4c 49 47 4e 2c 41 53 53 49 47 4e 2c 56 41 4c 29  LIGN,ASSIGN,VAL)
aa60: 20 5c 0a 20 20 20 3a 20 2f 2a 20 53 47 49 20 4d   \.   : /* SGI M
aa70: 49 50 53 20 67 63 63 20 70 61 73 73 65 73 20 73  IPS gcc passes s
aa80: 6d 61 6c 6c 20 73 74 72 75 63 74 75 72 65 73 20  mall structures 
aa90: 77 69 74 68 69 6e 20 74 68 65 20 66 69 72 73 74  within the first
aaa0: 20 66 6f 75 72 20 77 6f 72 64 73 20 6c 65 66 74   four words left
aab0: 2d 09 20 20 5c 0a 20 20 20 20 20 20 2a 20 61 64  -.  \.      * ad
aac0: 6a 75 73 74 65 64 2c 20 66 6f 72 20 63 6f 6d 70  justed, for comp
aad0: 61 74 69 62 69 6c 69 74 79 20 77 69 74 68 20 63  atibility with c
aae0: 63 2e 20 42 75 74 20 73 74 72 75 63 74 75 72 65  c. But structure
aaf0: 73 20 69 6e 20 6d 65 6d 6f 72 79 20 61 72 65 20  s in memory are 
ab00: 70 61 73 73 65 64 20 20 5c 0a 20 20 20 20 20 20  passed  \.      
ab10: 2a 20 72 69 67 68 74 2d 61 64 6a 75 73 74 65 64  * right-adjusted
ab20: 21 21 20 53 65 65 20 67 63 63 2d 32 2e 36 2e 33  !! See gcc-2.6.3
ab30: 2f 63 6f 6e 66 69 67 2f 6d 69 70 73 2f 6d 69 70  /config/mips/mip
ab40: 73 2e 63 3a 66 75 6e 63 74 69 6f 6e 5f 61 72 67  s.c:function_arg
ab50: 28 29 2e 09 20 20 5c 0a 20 20 20 20 20 20 2a 2f  ()..  \.      */
ab60: 09 09 09 09 09 09 09 09 09 20 20 5c 0a 20 20 20  .........  \.   
ab70: 20 20 28 28 4c 49 53 54 29 2e 61 70 74 72 20 3c    ((LIST).aptr <
ab80: 20 26 28 4c 49 53 54 29 2e 61 72 67 73 5b 34 5d   &(LIST).args[4]
ab90: 09 09 09 09 09 09 5c 0a 20 20 20 20 20 20 3f 20  ......\.      ? 
aba0: 5f 5f 61 76 5f 73 74 72 75 63 74 5f 6c 65 66 74  __av_struct_left
abb0: 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c 54 59  adjusted(LIST,TY
abc0: 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50  PE,TYPE_SIZE,TYP
abd0: 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e 2c 56  E_ALIGN,ASSIGN,V
abe0: 41 4c 29 09 5c 0a 20 20 20 20 20 20 3a 20 5f 5f  AL).\.      : __
abf0: 61 76 5f 73 74 72 75 63 74 5f 72 69 67 68 74 61  av_struct_righta
ac00: 64 6a 75 73 74 65 64 28 4c 49 53 54 2c 54 59 50  djusted(LIST,TYP
ac10: 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45  E,TYPE_SIZE,TYPE
ac20: 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e 2c 56 41  _ALIGN,ASSIGN,VA
ac30: 4c 29 29 29 0a 23 65 6e 64 69 66 0a 23 69 66 20  L))).#endif.#if 
ac40: 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33  defined(__mipsn3
ac50: 32 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  2__) || defined(
ac60: 5f 5f 6d 69 70 73 36 34 5f 5f 29 0a 2f 2a 20 57  __mips64__)./* W
ac70: 68 65 6e 20 61 20 73 74 72 75 63 74 75 72 65 20  hen a structure 
ac80: 69 73 20 70 61 73 73 65 64 20 28 70 61 72 74 69  is passed (parti
ac90: 61 6c 6c 79 29 20 69 6e 20 72 65 67 69 73 74 65  ally) in registe
aca0: 72 73 2c 20 69 74 20 69 73 20 70 61 73 73 65 64  rs, it is passed
acb0: 20 69 6e 20 74 68 65 0a 20 2a 20 69 6e 74 65 67   in the. * integ
acc0: 65 72 20 72 65 67 69 73 74 65 72 73 2c 20 65 78  er registers, ex
acd0: 63 65 70 74 20 74 68 61 74 20 64 6f 75 62 6c 65  cept that double
ace0: 73 20 77 69 74 68 69 6e 20 74 68 65 20 73 74 72  s within the str
acf0: 75 63 74 75 72 65 20 61 72 65 20 70 61 73 73 65  ucture are passe
ad00: 64 20 69 6e 0a 20 2a 20 74 68 65 20 66 6c 6f 61  d in. * the floa
ad10: 74 69 6e 67 20 70 6f 69 6e 74 20 72 65 67 69 73  ting point regis
ad20: 74 65 72 73 2e 20 49 6e 73 74 65 61 64 20 6f 66  ters. Instead of
ad30: 20 64 69 73 74 69 6e 67 75 69 73 68 69 6e 67 20   distinguishing 
ad40: 74 68 65 73 65 20 63 61 73 65 73 2c 20 77 65 0a  these cases, we.
ad50: 20 2a 20 61 6c 77 61 79 73 20 70 61 73 73 20 74   * always pass t
ad60: 68 65 20 73 74 72 75 63 74 75 72 65 20 69 6e 20  he structure in 
ad70: 62 6f 74 68 20 74 68 65 20 69 6e 74 65 67 65 72  both the integer
ad80: 20 61 6e 64 20 74 68 65 20 66 6c 6f 61 74 69 6e   and the floatin
ad90: 67 20 70 6f 69 6e 74 0a 20 2a 20 72 65 67 69 73  g point. * regis
ada0: 74 65 72 73 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e  ters.. */.#defin
adb0: 65 20 5f 5f 61 76 5f 73 74 72 75 63 74 5f 6c 65  e __av_struct_le
adc0: 66 74 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c  ftadjusted(LIST,
add0: 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54  TYPE,TYPE_SIZE,T
ade0: 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e  YPE_ALIGN,ASSIGN
adf0: 2c 56 41 4c 29 20 5c 0a 20 20 28 28 28 4c 49 53  ,VAL) \.  (((LIS
ae00: 54 29 2e 61 70 74 72 20 3d 09 09 09 09 09 09 09  T).aptr =.......
ae10: 5c 0a 20 20 20 20 28 5f 5f 61 76 77 6f 72 64 2a  \.    (__avword*
ae20: 29 28 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49  )(((__avword)(LI
ae30: 53 54 29 2e 61 70 74 72 2b 28 54 59 50 45 5f 53  ST).aptr+(TYPE_S
ae40: 49 5a 45 29 2b 28 54 59 50 45 5f 41 4c 49 47 4e  IZE)+(TYPE_ALIGN
ae50: 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 28 54  )-1) & -(long)(T
ae60: 59 50 45 5f 41 4c 49 47 4e 29 29 29 5c 0a 20 20  YPE_ALIGN)))\.  
ae70: 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53   > __av_eptr(LIS
ae80: 54 29 09 09 09 09 09 09 09 5c 0a 20 20 20 3f 20  T).......\.   ? 
ae90: 2d 31 20 3a 20 28 41 53 53 49 47 4e 28 54 59 50  -1 : (ASSIGN(TYP
aea0: 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45  E,TYPE_SIZE,TYPE
aeb0: 5f 41 4c 49 47 4e 2c 28 76 6f 69 64 2a 29 28 28  _ALIGN,(void*)((
aec0: 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e  __avword)(LIST).
aed0: 61 70 74 72 2d 28 54 59 50 45 5f 53 49 5a 45 29  aptr-(TYPE_SIZE)
aee0: 29 2c 56 41 4c 29 2c 5c 0a 09 20 20 20 28 4c 49  ),VAL),\..   (LI
aef0: 53 54 29 2e 61 70 74 72 20 3d 20 28 5f 5f 61 76  ST).aptr = (__av
af00: 77 6f 72 64 2a 29 28 28 28 5f 5f 61 76 77 6f 72  word*)(((__avwor
af10: 64 29 28 4c 49 53 54 29 2e 61 70 74 72 2b 73 69  d)(LIST).aptr+si
af20: 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 2d 31  zeof(__avword)-1
af30: 29 20 26 20 2d 28 6c 6f 6e 67 29 73 69 7a 65 6f  ) & -(long)sizeo
af40: 66 28 5f 5f 61 76 77 6f 72 64 29 29 2c 5c 0a 09  f(__avword)),\..
af50: 20 20 20 28 28 4c 49 53 54 29 2e 61 6e 75 6d 20     ((LIST).anum 
af60: 3c 20 38 20 26 26 20 28 28 4c 49 53 54 29 2e 64  < 8 && ((LIST).d
af70: 61 72 67 5f 6d 61 73 6b 20 7c 3d 20 28 2d 31 20  arg_mask |= (-1 
af80: 3c 3c 20 28 4c 49 53 54 29 2e 61 6e 75 6d 29 29  << (LIST).anum))
af90: 29 2c 20 5c 0a 09 20 20 20 28 4c 49 53 54 29 2e  ), \..   (LIST).
afa0: 61 6e 75 6d 20 2b 3d 20 28 28 28 28 28 54 59 50  anum += (((((TYP
afb0: 45 5f 53 49 5a 45 29 2b 28 54 59 50 45 5f 41 4c  E_SIZE)+(TYPE_AL
afc0: 49 47 4e 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67  IGN)-1) & -(long
afd0: 29 28 54 59 50 45 5f 41 4c 49 47 4e 29 29 20 2b  )(TYPE_ALIGN)) +
afe0: 20 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64   sizeof(__avword
aff0: 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 73 69  )-1) & -(long)si
b000: 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 29 2f  zeof(__avword))/
b010: 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29  sizeof(__avword)
b020: 2c 5c 0a 09 20 20 20 28 4c 49 53 54 29 2e 64 61  ,\..   (LIST).da
b030: 72 67 5f 6d 61 73 6b 20 26 3d 20 28 31 20 3c 3c  rg_mask &= (1 <<
b040: 20 28 28 4c 49 53 54 29 2e 61 6e 75 6d 20 3c 20   ((LIST).anum < 
b050: 38 20 3f 20 28 4c 49 53 54 29 2e 61 6e 75 6d 20  8 ? (LIST).anum 
b060: 3a 20 38 29 29 20 2d 20 31 2c 20 5c 0a 09 20 20  : 8)) - 1, \..  
b070: 20 30 29 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61   0)).#define __a
b080: 76 5f 73 74 72 75 63 74 5f 72 69 67 68 74 61 64  v_struct_rightad
b090: 6a 75 73 74 65 64 28 4c 49 53 54 2c 54 59 50 45  justed(LIST,TYPE
b0a0: 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f  ,TYPE_SIZE,TYPE_
b0b0: 41 4c 49 47 4e 2c 41 53 53 49 47 4e 2c 56 41 4c  ALIGN,ASSIGN,VAL
b0c0: 29 20 5c 0a 20 20 28 28 28 4c 49 53 54 29 2e 61  ) \.  (((LIST).a
b0d0: 70 74 72 20 3d 09 09 09 09 09 09 09 5c 0a 20 20  ptr =.......\.  
b0e0: 20 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28 28 28    (__avword*)(((
b0f0: 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54  ((__avword)(LIST
b100: 29 2e 61 70 74 72 2b 28 54 59 50 45 5f 53 49 5a  ).aptr+(TYPE_SIZ
b110: 45 29 2b 28 54 59 50 45 5f 41 4c 49 47 4e 29 2d  E)+(TYPE_ALIGN)-
b120: 31 29 20 26 20 2d 28 6c 6f 6e 67 29 28 54 59 50  1) & -(long)(TYP
b130: 45 5f 41 4c 49 47 4e 29 29 5c 0a 09 09 20 2b 73  E_ALIGN))\... +s
b140: 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 2d  izeof(__avword)-
b150: 31 29 20 26 20 2d 28 6c 6f 6e 67 29 73 69 7a 65  1) & -(long)size
b160: 6f 66 28 5f 5f 61 76 77 6f 72 64 29 29 29 09 5c  of(__avword))).\
b170: 0a 20 20 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28  .   > __av_eptr(
b180: 4c 49 53 54 29 09 09 09 09 09 09 09 5c 0a 20 20  LIST).......\.  
b190: 20 3f 20 2d 31 20 3a 20 28 41 53 53 49 47 4e 28   ? -1 : (ASSIGN(
b1a0: 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54  TYPE,TYPE_SIZE,T
b1b0: 59 50 45 5f 41 4c 49 47 4e 2c 28 76 6f 69 64 2a  YPE_ALIGN,(void*
b1c0: 29 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53  )((__avword)(LIS
b1d0: 54 29 2e 61 70 74 72 2d 28 54 59 50 45 5f 53 49  T).aptr-(TYPE_SI
b1e0: 5a 45 29 29 2c 56 41 4c 29 2c 5c 0a 09 20 20 20  ZE)),VAL),\..   
b1f0: 28 28 4c 49 53 54 29 2e 61 6e 75 6d 20 3c 20 38  ((LIST).anum < 8
b200: 20 26 26 20 28 28 4c 49 53 54 29 2e 64 61 72 67   && ((LIST).darg
b210: 5f 6d 61 73 6b 20 7c 3d 20 28 2d 31 20 3c 3c 20  _mask |= (-1 << 
b220: 28 4c 49 53 54 29 2e 61 6e 75 6d 29 29 29 2c 20  (LIST).anum))), 
b230: 5c 0a 09 20 20 20 28 4c 49 53 54 29 2e 61 6e 75  \..   (LIST).anu
b240: 6d 20 2b 3d 20 28 28 28 28 28 54 59 50 45 5f 53  m += (((((TYPE_S
b250: 49 5a 45 29 2b 28 54 59 50 45 5f 41 4c 49 47 4e  IZE)+(TYPE_ALIGN
b260: 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 28 54  )-1) & -(long)(T
b270: 59 50 45 5f 41 4c 49 47 4e 29 29 20 2b 20 73 69  YPE_ALIGN)) + si
b280: 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 2d 31  zeof(__avword)-1
b290: 29 20 26 20 2d 28 6c 6f 6e 67 29 73 69 7a 65 6f  ) & -(long)sizeo
b2a0: 66 28 5f 5f 61 76 77 6f 72 64 29 29 2f 73 69 7a  f(__avword))/siz
b2b0: 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 2c 5c 0a  eof(__avword),\.
b2c0: 09 20 20 20 28 4c 49 53 54 29 2e 64 61 72 67 5f  .   (LIST).darg_
b2d0: 6d 61 73 6b 20 26 3d 20 28 31 20 3c 3c 20 28 28  mask &= (1 << ((
b2e0: 4c 49 53 54 29 2e 61 6e 75 6d 20 3c 20 38 20 3f  LIST).anum < 8 ?
b2f0: 20 28 4c 49 53 54 29 2e 61 6e 75 6d 20 3a 20 38   (LIST).anum : 8
b300: 29 29 20 2d 20 31 2c 20 5c 0a 09 20 20 20 30 29  )) - 1, \..   0)
b310: 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73  ).#define __av_s
b320: 74 72 75 63 74 28 4c 49 53 54 2c 54 59 50 45 2c  truct(LIST,TYPE,
b330: 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41  TYPE_SIZE,TYPE_A
b340: 4c 49 47 4e 2c 41 53 53 49 47 4e 2c 56 41 4c 29  LIGN,ASSIGN,VAL)
b350: 09 09 5c 0a 20 20 28 28 4c 49 53 54 29 2e 66 6c  ..\.  ((LIST).fl
b360: 61 67 73 20 26 20 5f 5f 41 56 5f 53 47 49 43 43  ags & __AV_SGICC
b370: 5f 53 54 52 55 43 54 5f 41 52 47 53 09 09 09 09  _STRUCT_ARGS....
b380: 5c 0a 20 20 20 3f 20 2f 2a 20 53 47 49 20 4d 49  \.   ? /* SGI MI
b390: 50 53 20 63 63 20 70 61 73 73 65 73 20 73 6d 61  PS cc passes sma
b3a0: 6c 6c 20 73 74 72 75 63 74 75 72 65 73 20 6c 65  ll structures le
b3b0: 66 74 2d 61 64 6a 75 73 74 65 64 2c 20 61 6c 74  ft-adjusted, alt
b3c0: 68 6f 75 67 68 20 62 69 67 2d 65 6e 64 69 61 6e  hough big-endian
b3d0: 21 20 2a 2f 5c 0a 20 20 20 20 20 5f 5f 61 76 5f  ! */\.     __av_
b3e0: 73 74 72 75 63 74 5f 6c 65 66 74 61 64 6a 75 73  struct_leftadjus
b3f0: 74 65 64 28 4c 49 53 54 2c 54 59 50 45 2c 54 59  ted(LIST,TYPE,TY
b400: 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49  PE_SIZE,TYPE_ALI
b410: 47 4e 2c 41 53 53 49 47 4e 2c 56 41 4c 29 20 5c  GN,ASSIGN,VAL) \
b420: 0a 20 20 20 3a 20 2f 2a 20 53 47 49 20 4d 49 50  .   : /* SGI MIP
b430: 53 20 67 63 63 20 70 61 73 73 65 73 20 73 6d 61  S gcc passes sma
b440: 6c 6c 20 73 74 72 75 63 74 75 72 65 73 20 72 69  ll structures ri
b450: 67 68 74 2d 61 64 6a 75 73 74 65 64 2e 20 2a 2f  ght-adjusted. */
b460: 09 09 5c 0a 20 20 20 20 20 5f 5f 61 76 5f 73 74  ..\.     __av_st
b470: 72 75 63 74 5f 72 69 67 68 74 61 64 6a 75 73 74  ruct_rightadjust
b480: 65 64 28 4c 49 53 54 2c 54 59 50 45 2c 54 59 50  ed(LIST,TYPE,TYP
b490: 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47  E_SIZE,TYPE_ALIG
b4a0: 4e 2c 41 53 53 49 47 4e 2c 56 41 4c 29 29 0a 23  N,ASSIGN,VAL)).#
b4b0: 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65  endif.#if define
b4c0: 64 28 5f 5f 72 73 36 30 30 30 5f 5f 29 0a 23 64  d(__rs6000__).#d
b4d0: 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 72 75 63  efine __av_struc
b4e0: 74 5f 6c 65 66 74 61 64 6a 75 73 74 65 64 28 4c  t_leftadjusted(L
b4f0: 49 53 54 2c 54 59 50 45 2c 54 59 50 45 5f 53 49  IST,TYPE,TYPE_SI
b500: 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53  ZE,TYPE_ALIGN,AS
b510: 53 49 47 4e 2c 56 41 4c 29 5c 0a 20 20 28 28 28  SIGN,VAL)\.  (((
b520: 4c 49 53 54 29 2e 61 70 74 72 20 3d 09 09 09 09  LIST).aptr =....
b530: 09 09 09 5c 0a 20 20 20 20 28 5f 5f 61 76 77 6f  ...\.    (__avwo
b540: 72 64 2a 29 28 28 28 5f 5f 61 76 77 6f 72 64 29  rd*)(((__avword)
b550: 28 4c 49 53 54 29 2e 61 70 74 72 2b 28 54 59 50  (LIST).aptr+(TYP
b560: 45 5f 53 49 5a 45 29 2b 28 54 59 50 45 5f 41 4c  E_SIZE)+(TYPE_AL
b570: 49 47 4e 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67  IGN)-1) & -(long
b580: 29 28 54 59 50 45 5f 41 4c 49 47 4e 29 29 29 5c  )(TYPE_ALIGN)))\
b590: 0a 20 20 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28  .   > __av_eptr(
b5a0: 4c 49 53 54 29 09 09 09 09 09 09 09 5c 0a 20 20  LIST).......\.  
b5b0: 20 3f 20 2d 31 20 3a 20 28 41 53 53 49 47 4e 28   ? -1 : (ASSIGN(
b5c0: 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54  TYPE,TYPE_SIZE,T
b5d0: 59 50 45 5f 41 4c 49 47 4e 2c 28 76 6f 69 64 2a  YPE_ALIGN,(void*
b5e0: 29 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53  )((__avword)(LIS
b5f0: 54 29 2e 61 70 74 72 2d 28 54 59 50 45 5f 53 49  T).aptr-(TYPE_SI
b600: 5a 45 29 29 2c 56 41 4c 29 2c 5c 0a 09 20 20 20  ZE)),VAL),\..   
b610: 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 28 5f  (LIST).aptr = (_
b620: 5f 61 76 77 6f 72 64 2a 29 28 28 28 5f 5f 61 76  _avword*)(((__av
b630: 77 6f 72 64 29 28 4c 49 53 54 29 2e 61 70 74 72  word)(LIST).aptr
b640: 2b 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64  +sizeof(__avword
b650: 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 73 69  )-1) & -(long)si
b660: 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 29 2c  zeof(__avword)),
b670: 5c 0a 09 20 20 20 30 29 29 0a 23 64 65 66 69 6e  \..   0)).#defin
b680: 65 20 5f 5f 61 76 5f 73 74 72 75 63 74 5f 72 69  e __av_struct_ri
b690: 67 68 74 61 64 6a 75 73 74 65 64 28 4c 49 53 54  ghtadjusted(LIST
b6a0: 2c 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c  ,TYPE,TYPE_SIZE,
b6b0: 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47  TYPE_ALIGN,ASSIG
b6c0: 4e 2c 56 41 4c 29 5c 0a 20 20 28 28 28 4c 49 53  N,VAL)\.  (((LIS
b6d0: 54 29 2e 61 70 74 72 20 3d 09 09 09 09 09 09 09  T).aptr =.......
b6e0: 5c 0a 20 20 20 20 28 5f 5f 61 76 77 6f 72 64 2a  \.    (__avword*
b6f0: 29 28 28 28 28 28 5f 5f 61 76 77 6f 72 64 29 28  )(((((__avword)(
b700: 4c 49 53 54 29 2e 61 70 74 72 2b 28 54 59 50 45  LIST).aptr+(TYPE
b710: 5f 53 49 5a 45 29 2b 28 54 59 50 45 5f 41 4c 49  _SIZE)+(TYPE_ALI
b720: 47 4e 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29  GN)-1) & -(long)
b730: 28 54 59 50 45 5f 41 4c 49 47 4e 29 29 5c 0a 09  (TYPE_ALIGN))\..
b740: 09 20 2b 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f  . +sizeof(__avwo
b750: 72 64 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29  rd)-1) & -(long)
b760: 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29  sizeof(__avword)
b770: 29 29 09 5c 0a 20 20 20 3e 20 5f 5f 61 76 5f 65  )).\.   > __av_e
b780: 70 74 72 28 4c 49 53 54 29 09 09 09 09 09 09 09  ptr(LIST).......
b790: 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 28 41 53 53  \.   ? -1 : (ASS
b7a0: 49 47 4e 28 54 59 50 45 2c 54 59 50 45 5f 53 49  IGN(TYPE,TYPE_SI
b7b0: 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 28 76  ZE,TYPE_ALIGN,(v
b7c0: 6f 69 64 2a 29 28 28 5f 5f 61 76 77 6f 72 64 29  oid*)((__avword)
b7d0: 28 4c 49 53 54 29 2e 61 70 74 72 2d 28 54 59 50  (LIST).aptr-(TYP
b7e0: 45 5f 53 49 5a 45 29 29 2c 56 41 4c 29 2c 5c 0a  E_SIZE)),VAL),\.
b7f0: 09 20 20 20 30 29 29 0a 23 64 65 66 69 6e 65 20  .   0)).#define 
b800: 5f 5f 61 76 5f 73 74 72 75 63 74 28 4c 49 53 54  __av_struct(LIST
b810: 2c 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c  ,TYPE,TYPE_SIZE,
b820: 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47  TYPE_ALIGN,ASSIG
b830: 4e 2c 56 41 4c 29 09 09 5c 0a 20 20 28 28 4c 49  N,VAL)..\.  ((LI
b840: 53 54 29 2e 66 6c 61 67 73 20 26 20 5f 5f 41 56  ST).flags & __AV
b850: 5f 41 49 58 43 43 5f 53 54 52 55 43 54 5f 41 52  _AIXCC_STRUCT_AR
b860: 47 53 09 09 09 09 5c 0a 20 20 20 3f 20 2f 2a 20  GS....\.   ? /* 
b870: 41 49 58 20 63 63 20 61 6e 64 20 78 6c 63 20 70  AIX cc and xlc p
b880: 61 73 73 20 73 6d 61 6c 6c 20 73 74 72 75 63 74  ass small struct
b890: 75 72 65 73 20 6c 65 66 74 2d 61 64 6a 75 73 74  ures left-adjust
b8a0: 65 64 2c 20 61 6c 74 68 6f 75 67 68 20 62 69 67  ed, although big
b8b0: 2d 65 6e 64 69 61 6e 21 20 2a 2f 5c 0a 20 20 20  -endian! */\.   
b8c0: 20 20 5f 5f 61 76 5f 73 74 72 75 63 74 5f 6c 65    __av_struct_le
b8d0: 66 74 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c  ftadjusted(LIST,
b8e0: 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54  TYPE,TYPE_SIZE,T
b8f0: 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e  YPE_ALIGN,ASSIGN
b900: 2c 56 41 4c 29 20 5c 0a 20 20 20 3a 20 2f 2a 20  ,VAL) \.   : /* 
b910: 67 63 63 20 70 61 73 73 65 73 20 73 6d 61 6c 6c  gcc passes small
b920: 20 73 74 72 75 63 74 75 72 65 73 20 72 69 67 68   structures righ
b930: 74 2d 61 64 6a 75 73 74 65 64 2e 20 2a 2f 09 09  t-adjusted. */..
b940: 09 5c 0a 20 20 20 20 20 5f 5f 61 76 5f 73 74 72  .\.     __av_str
b950: 75 63 74 5f 72 69 67 68 74 61 64 6a 75 73 74 65  uct_rightadjuste
b960: 64 28 4c 49 53 54 2c 54 59 50 45 2c 54 59 50 45  d(LIST,TYPE,TYPE
b970: 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e  _SIZE,TYPE_ALIGN
b980: 2c 41 53 53 49 47 4e 2c 56 41 4c 29 29 0a 23 65  ,ASSIGN,VAL)).#e
b990: 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64  ndif.#if defined
b9a0: 28 5f 5f 73 33 39 30 5f 5f 29 0a 23 64 65 66 69  (__s390__).#defi
b9b0: 6e 65 20 5f 5f 61 76 5f 73 74 72 75 63 74 5f 72  ne __av_struct_r
b9c0: 69 67 68 74 61 64 6a 75 73 74 65 64 28 4c 49 53  ightadjusted(LIS
b9d0: 54 2c 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45  T,TYPE,TYPE_SIZE
b9e0: 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49  ,TYPE_ALIGN,ASSI
b9f0: 47 4e 2c 56 41 4c 29 5c 0a 20 20 28 28 28 4c 49  GN,VAL)\.  (((LI
ba00: 53 54 29 2e 61 70 74 72 20 3d 09 09 09 09 09 09  ST).aptr =......
ba10: 09 5c 0a 20 20 20 20 28 5f 5f 61 76 77 6f 72 64  .\.    (__avword
ba20: 2a 29 28 28 28 28 28 5f 5f 61 76 77 6f 72 64 29  *)(((((__avword)
ba30: 28 4c 49 53 54 29 2e 61 70 74 72 2b 28 54 59 50  (LIST).aptr+(TYP
ba40: 45 5f 53 49 5a 45 29 2b 28 54 59 50 45 5f 41 4c  E_SIZE)+(TYPE_AL
ba50: 49 47 4e 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67  IGN)-1) & -(long
ba60: 29 28 54 59 50 45 5f 41 4c 49 47 4e 29 29 5c 0a  )(TYPE_ALIGN))\.
ba70: 09 09 20 2b 73 69 7a 65 6f 66 28 5f 5f 61 76 77  .. +sizeof(__avw
ba80: 6f 72 64 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67  ord)-1) & -(long
ba90: 29 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64  )sizeof(__avword
baa0: 29 29 29 09 5c 0a 20 20 20 3e 20 5f 5f 61 76 5f  ))).\.   > __av_
bab0: 65 70 74 72 28 4c 49 53 54 29 09 09 09 09 09 09  eptr(LIST)......
bac0: 09 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 28 41 53  .\.   ? -1 : (AS
bad0: 53 49 47 4e 28 54 59 50 45 2c 54 59 50 45 5f 53  SIGN(TYPE,TYPE_S
bae0: 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 28  IZE,TYPE_ALIGN,(
baf0: 76 6f 69 64 2a 29 28 28 5f 5f 61 76 77 6f 72 64  void*)((__avword
bb00: 29 28 4c 49 53 54 29 2e 61 70 74 72 2d 28 54 59  )(LIST).aptr-(TY
bb10: 50 45 5f 53 49 5a 45 29 29 2c 56 41 4c 29 2c 5c  PE_SIZE)),VAL),\
bb20: 0a 09 20 20 20 30 29 29 0a 23 64 65 66 69 6e 65  ..   0)).#define
bb30: 20 5f 5f 61 76 5f 73 74 72 75 63 74 28 4c 49 53   __av_struct(LIS
bb40: 54 2c 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45  T,TYPE,TYPE_SIZE
bb50: 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49  ,TYPE_ALIGN,ASSI
bb60: 47 4e 2c 56 41 4c 29 09 09 5c 0a 28 28 54 59 50  GN,VAL)..\.((TYP
bb70: 45 5f 53 49 5a 45 29 20 21 3d 20 31 20 26 26 20  E_SIZE) != 1 && 
bb80: 28 54 59 50 45 5f 53 49 5a 45 29 20 21 3d 20 32  (TYPE_SIZE) != 2
bb90: 20 26 26 20 28 54 59 50 45 5f 53 49 5a 45 29 20   && (TYPE_SIZE) 
bba0: 21 3d 20 34 20 26 26 20 28 54 59 50 45 5f 53 49  != 4 && (TYPE_SI
bbb0: 5a 45 29 20 21 3d 20 38 20 5c 0a 20 3f 20 28 2b  ZE) != 8 \. ? (+
bbc0: 2b 28 4c 49 53 54 29 2e 61 70 74 72 09 09 09 09  +(LIST).aptr....
bbd0: 09 09 09 5c 0a 20 20 20 20 3e 20 28 28 4c 49 53  ...\.    > ((LIS
bbe0: 54 29 2e 65 70 74 72 20 3d 20 28 5f 5f 61 76 77  T).eptr = (__avw
bbf0: 6f 72 64 2a 29 28 28 6c 6f 6e 67 29 28 4c 49 53  ord*)((long)(LIS
bc00: 54 29 2e 65 70 74 72 20 2d 20 28 28 28 54 59 50  T).eptr - (((TYP
bc10: 45 5f 53 49 5a 45 29 2b 37 29 26 2d 38 29 29 29  E_SIZE)+7)&-8)))
bc20: 5c 0a 20 20 20 20 3f 20 2d 31 20 3a 09 09 09 09  \.    ? -1 :....
bc30: 09 09 09 09 5c 0a 20 20 20 20 28 41 53 53 49 47  ....\.    (ASSIG
bc40: 4e 28 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45  N(TYPE,TYPE_SIZE
bc50: 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 28 76 6f 69  ,TYPE_ALIGN,(voi
bc60: 64 2a 29 28 4c 49 53 54 29 2e 65 70 74 72 2c 56  d*)(LIST).eptr,V
bc70: 41 4c 29 2c 09 09 5c 0a 20 20 20 20 20 28 4c 49  AL),..\.     (LI
bc80: 53 54 29 2e 61 70 74 72 5b 2d 31 5d 20 3d 20 28  ST).aptr[-1] = (
bc90: 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e  __avword)(LIST).
bca0: 65 70 74 72 2c 09 09 09 09 5c 0a 20 20 20 20 20  eptr,....\.     
bcb0: 30 29 29 09 09 09 09 09 09 09 09 5c 0a 20 3a 20  0))........\. : 
bcc0: 28 28 28 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d  (((TYPE_SIZE) ==
bcd0: 20 38 20 26 26 20 28 4c 49 53 54 29 2e 61 70 74   8 && (LIST).apt
bce0: 72 20 2d 20 28 4c 49 53 54 29 2e 61 72 67 73 20  r - (LIST).args 
bcf0: 2d 20 28 4c 49 53 54 29 2e 66 61 72 67 77 6f 72  - (LIST).fargwor
bd00: 64 73 20 3d 3d 20 34 20 3f 20 2b 2b 28 4c 49 53  ds == 4 ? ++(LIS
bd10: 54 29 2e 61 70 74 72 2c 30 20 3a 20 30 29 2c 20  T).aptr,0 : 0), 
bd20: 5c 0a 20 20 20 20 5f 5f 61 76 5f 73 74 72 75 63  \.    __av_struc
bd30: 74 5f 72 69 67 68 74 61 64 6a 75 73 74 65 64 28  t_rightadjusted(
bd40: 4c 49 53 54 2c 54 59 50 45 2c 54 59 50 45 5f 53  LIST,TYPE,TYPE_S
bd50: 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 41  IZE,TYPE_ALIGN,A
bd60: 53 53 49 47 4e 2c 56 41 4c 29 29 29 0a 23 65 6e  SSIGN,VAL))).#en
bd70: 64 69 66 0a 2f 2a 20 62 69 67 20 65 6e 64 69 61  dif./* big endia
bd80: 6e 20 2d 3e 20 73 6d 61 6c 6c 20 73 74 72 75 63  n -> small struc
bd90: 74 75 72 65 73 20 3c 20 31 20 77 6f 72 64 20 61  tures < 1 word a
bda0: 72 65 20 61 64 6a 75 73 74 65 64 20 74 6f 20 74  re adjusted to t
bdb0: 68 65 20 72 69 67 68 74 20 2a 2f 0a 23 69 66 20  he right */.#if 
bdc0: 64 65 66 69 6e 65 64 28 5f 5f 6d 38 38 6b 5f 5f  defined(__m88k__
bdd0: 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73  ).#define __av_s
bde0: 74 72 75 63 74 28 4c 49 53 54 2c 54 59 50 45 2c  truct(LIST,TYPE,
bdf0: 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41  TYPE_SIZE,TYPE_A
be00: 4c 49 47 4e 2c 41 53 53 49 47 4e 2c 56 41 4c 29  LIGN,ASSIGN,VAL)
be10: 09 09 5c 0a 20 20 28 28 28 4c 49 53 54 29 2e 61  ..\.  (((LIST).a
be20: 70 74 72 20 3d 09 09 09 09 09 09 09 5c 0a 20 20  ptr =.......\.  
be30: 20 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28 28 28    (__avword*)(((
be40: 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54  ((__avword)(LIST
be50: 29 2e 61 70 74 72 2b 28 54 59 50 45 5f 53 49 5a  ).aptr+(TYPE_SIZ
be60: 45 29 2b 28 54 59 50 45 5f 41 4c 49 47 4e 29 2d  E)+(TYPE_ALIGN)-
be70: 31 29 20 26 20 2d 28 6c 6f 6e 67 29 28 54 59 50  1) & -(long)(TYP
be80: 45 5f 41 4c 49 47 4e 29 29 5c 0a 09 09 20 2b 73  E_ALIGN))\... +s
be90: 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 2d  izeof(__avword)-
bea0: 31 29 20 26 20 2d 28 6c 6f 6e 67 29 73 69 7a 65  1) & -(long)size
beb0: 6f 66 28 5f 5f 61 76 77 6f 72 64 29 29 29 09 5c  of(__avword))).\
bec0: 0a 20 20 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28  .   > __av_eptr(
bed0: 4c 49 53 54 29 09 09 09 09 09 09 09 5c 0a 20 20  LIST).......\.  
bee0: 20 3f 20 2d 31 20 3a 20 28 41 53 53 49 47 4e 28   ? -1 : (ASSIGN(
bef0: 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54  TYPE,TYPE_SIZE,T
bf00: 59 50 45 5f 41 4c 49 47 4e 2c 28 76 6f 69 64 2a  YPE_ALIGN,(void*
bf10: 29 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53  )((__avword)(LIS
bf20: 54 29 2e 61 70 74 72 2d 28 54 59 50 45 5f 53 49  T).aptr-(TYPE_SI
bf30: 5a 45 29 29 2c 56 41 4c 29 2c 5c 0a 09 20 20 20  ZE)),VAL),\..   
bf40: 30 29 29 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69  0)).#endif.#endi
bf50: 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  f.#if defined(__
bf60: 6d 36 38 6b 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  m68k__) || defin
bf70: 65 64 28 5f 5f 61 72 6d 5f 5f 29 20 7c 7c 20 64  ed(__arm__) || d
bf80: 65 66 69 6e 65 64 28 5f 5f 63 6f 6e 76 65 78 5f  efined(__convex_
bf90: 5f 29 0a 2f 2a 20 53 74 72 75 63 74 75 72 65 73  _)./* Structures
bfa0: 20 61 72 65 20 70 61 73 73 65 64 20 61 73 20 65   are passed as e
bfb0: 6d 62 65 64 64 65 64 20 63 6f 70 69 65 73 20 6f  mbedded copies o
bfc0: 6e 20 74 68 65 20 61 72 67 20 73 74 61 63 6b 2e  n the arg stack.
bfd0: 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 61  . */.#define __a
bfe0: 76 5f 73 74 72 75 63 74 28 4c 49 53 54 2c 54 59  v_struct(LIST,TY
bff0: 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50  PE,TYPE_SIZE,TYP
c000: 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e 2c 56  E_ALIGN,ASSIGN,V
c010: 41 4c 29 09 09 5c 0a 20 20 28 28 28 4c 49 53 54  AL)..\.  (((LIST
c020: 29 2e 61 70 74 72 20 3d 20 28 5f 5f 61 76 77 6f  ).aptr = (__avwo
c030: 72 64 2a 29 28 28 28 6c 6f 6e 67 29 28 4c 49 53  rd*)(((long)(LIS
c040: 54 29 2e 61 70 74 72 2b 28 54 59 50 45 5f 53 49  T).aptr+(TYPE_SI
c050: 5a 45 29 2b 73 69 7a 65 6f 66 28 5f 5f 61 76 77  ZE)+sizeof(__avw
c060: 6f 72 64 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67  ord)-1) & -(long
c070: 29 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64  )sizeof(__avword
c080: 29 29 29 20 5c 0a 20 20 20 20 3e 20 5f 5f 61 76  ))) \.    > __av
c090: 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09 09 09  _eptr(LIST).....
c0a0: 09 09 5c 0a 20 20 20 20 3f 20 2d 31 20 3a 20 28  ..\.    ? -1 : (
c0b0: 41 53 53 49 47 4e 28 54 59 50 45 2c 54 59 50 45  ASSIGN(TYPE,TYPE
c0c0: 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e  _SIZE,TYPE_ALIGN
c0d0: 2c 28 76 6f 69 64 2a 29 28 28 5f 5f 61 76 77 6f  ,(void*)((__avwo
c0e0: 72 64 29 28 4c 49 53 54 29 2e 61 70 74 72 2d 28  rd)(LIST).aptr-(
c0f0: 54 59 50 45 5f 53 49 5a 45 29 29 2c 56 41 4c 29  TYPE_SIZE)),VAL)
c100: 2c 5c 0a 09 20 20 20 20 30 29 29 0a 23 65 6e 64  ,\..    0)).#end
c110: 69 66 0a 23 69 66 20 28 64 65 66 69 6e 65 64 28  if.#if (defined(
c120: 5f 5f 73 70 61 72 63 5f 5f 29 20 26 26 20 21 64  __sparc__) && !d
c130: 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34  efined(__sparc64
c140: 5f 5f 29 29 20 7c 7c 20 28 64 65 66 69 6e 65 64  __)) || (defined
c150: 28 5f 5f 72 73 36 30 30 30 5f 5f 29 20 26 26 20  (__rs6000__) && 
c160: 21 28 64 65 66 69 6e 65 64 28 5f 41 49 58 29 20  !(defined(_AIX) 
c170: 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f 4d 41  || (defined(__MA
c180: 43 48 5f 5f 29 20 26 26 20 64 65 66 69 6e 65 64  CH__) && defined
c190: 28 5f 5f 41 50 50 4c 45 5f 5f 29 29 29 29 0a 2f  (__APPLE__))))./
c1a0: 2a 20 53 74 72 75 63 74 75 72 65 73 20 61 72 65  * Structures are
c1b0: 20 70 61 73 73 65 64 20 61 73 20 70 6f 69 6e 74   passed as point
c1c0: 65 72 73 20 74 6f 20 63 61 6c 6c 65 72 2d 6d 61  ers to caller-ma
c1d0: 64 65 20 6c 6f 63 61 6c 20 63 6f 70 69 65 73 2e  de local copies.
c1e0: 20 57 65 0a 20 2a 20 67 72 61 62 20 73 70 61 63   We. * grab spac
c1f0: 65 20 66 6f 72 20 74 68 65 20 63 6f 70 69 65 73  e for the copies
c200: 20 66 72 6f 6d 20 74 68 65 20 65 6e 64 20 6f 66   from the end of
c210: 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20 6c 69   the argument li
c220: 73 74 20 73 70 61 63 65 0a 20 2a 20 61 6e 64 20  st space. * and 
c230: 61 6c 77 61 79 73 20 75 73 65 20 6d 61 78 69 6d  always use maxim
c240: 61 6c 20 28 64 6f 75 62 6c 65 29 20 61 6c 69 67  al (double) alig
c250: 6e 6d 65 6e 74 2e 0a 20 2a 2f 0a 23 64 65 66 69  nment.. */.#defi
c260: 6e 65 20 5f 5f 61 76 5f 73 74 72 75 63 74 28 4c  ne __av_struct(L
c270: 49 53 54 2c 54 59 50 45 2c 54 59 50 45 5f 53 49  IST,TYPE,TYPE_SI
c280: 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53  ZE,TYPE_ALIGN,AS
c290: 53 49 47 4e 2c 56 41 4c 29 09 09 5c 0a 20 20 20  SIGN,VAL)..\.   
c2a0: 28 2b 2b 28 4c 49 53 54 29 2e 61 70 74 72 09 09  (++(LIST).aptr..
c2b0: 09 09 09 09 09 5c 0a 20 20 20 20 3e 20 28 28 4c  .....\.    > ((L
c2c0: 49 53 54 29 2e 65 70 74 72 20 3d 20 28 5f 5f 61  IST).eptr = (__a
c2d0: 76 77 6f 72 64 2a 29 28 28 6c 6f 6e 67 29 28 4c  vword*)((long)(L
c2e0: 49 53 54 29 2e 65 70 74 72 20 2d 20 28 28 28 54  IST).eptr - (((T
c2f0: 59 50 45 5f 53 49 5a 45 29 2b 37 29 26 2d 38 29  YPE_SIZE)+7)&-8)
c300: 29 29 5c 0a 20 20 20 20 3f 20 2d 31 20 3a 09 09  ))\.    ? -1 :..
c310: 09 09 09 09 09 09 5c 0a 20 20 20 20 28 41 53 53  ......\.    (ASS
c320: 49 47 4e 28 54 59 50 45 2c 54 59 50 45 5f 53 49  IGN(TYPE,TYPE_SI
c330: 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 28 76  ZE,TYPE_ALIGN,(v
c340: 6f 69 64 2a 29 28 4c 49 53 54 29 2e 65 70 74 72  oid*)(LIST).eptr
c350: 2c 56 41 4c 29 2c 09 09 5c 0a 20 20 20 20 20 28  ,VAL),..\.     (
c360: 4c 49 53 54 29 2e 61 70 74 72 5b 2d 31 5d 20 3d  LIST).aptr[-1] =
c370: 20 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54   (__avword)(LIST
c380: 29 2e 65 70 74 72 2c 09 09 09 09 5c 0a 20 20 20  ).eptr,....\.   
c390: 20 20 30 29 29 0a 23 65 6e 64 69 66 0a 23 69 66    0)).#endif.#if
c3a0: 20 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63   defined(__sparc
c3b0: 36 34 5f 5f 29 0a 2f 2a 20 53 74 72 75 63 74 75  64__)./* Structu
c3c0: 72 65 73 20 3c 3d 20 31 36 20 62 79 74 65 73 20  res <= 16 bytes 
c3d0: 61 72 65 20 70 61 73 73 65 64 20 61 73 20 65 6d  are passed as em
c3e0: 62 65 64 64 65 64 20 63 6f 70 69 65 73 20 6f 6e  bedded copies on
c3f0: 20 74 68 65 20 61 72 67 20 73 74 61 63 6b 2c 0a   the arg stack,.
c400: 20 2a 20 6c 65 66 74 2d 61 64 6a 75 73 74 65 64   * left-adjusted
c410: 20 28 61 6c 74 68 6f 75 67 68 20 62 69 67 2d 65   (although big-e
c420: 6e 64 69 61 6e 21 29 2e 0a 20 2a 20 57 68 65 6e  ndian!).. * When
c430: 20 61 20 73 74 72 75 63 74 75 72 65 20 69 73 20   a structure is 
c440: 70 61 73 73 65 64 20 28 70 61 72 74 69 61 6c 6c  passed (partiall
c450: 79 29 20 69 6e 20 72 65 67 69 73 74 65 72 73 2c  y) in registers,
c460: 20 69 74 20 69 73 20 70 61 73 73 65 64 20 69 6e   it is passed in
c470: 20 74 68 65 0a 20 2a 20 69 6e 74 65 67 65 72 20   the. * integer 
c480: 72 65 67 69 73 74 65 72 73 2c 20 65 78 63 65 70  registers, excep
c490: 74 20 74 68 61 74 20 66 6c 6f 61 74 73 20 61 6e  t that floats an
c4a0: 64 20 64 6f 75 62 6c 65 73 20 77 69 74 68 69 6e  d doubles within
c4b0: 20 74 68 65 20 73 74 72 75 63 74 75 72 65 0a 20   the structure. 
c4c0: 2a 20 61 72 65 20 70 61 73 73 65 64 20 69 6e 20  * are passed in 
c4d0: 74 68 65 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69  the floating poi
c4e0: 6e 74 20 72 65 67 69 73 74 65 72 73 2e 20 49 6e  nt registers. In
c4f0: 73 74 65 61 64 20 6f 66 20 64 69 73 74 69 6e 67  stead of disting
c500: 75 69 73 68 69 6e 67 0a 20 2a 20 74 68 65 73 65  uishing. * these
c510: 20 63 61 73 65 73 2c 20 77 65 20 61 6c 77 61 79   cases, we alway
c520: 73 20 70 61 73 73 20 74 68 65 20 73 74 72 75 63  s pass the struc
c530: 74 75 72 65 20 69 6e 20 62 6f 74 68 20 74 68 65  ture in both the
c540: 20 69 6e 74 65 67 65 72 20 61 6e 64 20 74 68 65   integer and the
c550: 0a 20 2a 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69  . * floating poi
c560: 6e 74 20 72 65 67 69 73 74 65 72 73 2e 0a 20 2a  nt registers.. *
c570: 20 42 69 67 20 73 74 72 75 63 74 75 72 65 73 20   Big structures 
c580: 61 72 65 20 70 61 73 73 65 64 20 61 73 20 70 6f  are passed as po
c590: 69 6e 74 65 72 73 20 74 6f 20 63 61 6c 6c 65 72  inters to caller
c5a0: 2d 6d 61 64 65 20 6c 6f 63 61 6c 20 63 6f 70 69  -made local copi
c5b0: 65 73 2e 0a 20 2a 20 46 49 58 4d 45 3a 20 53 68  es.. * FIXME: Sh
c5c0: 6f 75 6c 64 6e 27 74 20 28 4c 49 53 54 29 2e 61  ouldn't (LIST).a
c5d0: 6e 75 6d 20 62 65 20 69 6e 63 72 65 6d 65 6e 74  num be increment
c5e0: 65 64 20 69 6e 20 73 79 6e 63 20 77 69 74 68 20  ed in sync with 
c5f0: 28 4c 49 53 54 29 2e 61 70 74 72 20 3f 0a 20 2a  (LIST).aptr ?. *
c600: 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73  /.#define __av_s
c610: 74 72 75 63 74 28 4c 49 53 54 2c 54 59 50 45 2c  truct(LIST,TYPE,
c620: 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41  TYPE_SIZE,TYPE_A
c630: 4c 49 47 4e 2c 41 53 53 49 47 4e 2c 56 41 4c 29  LIGN,ASSIGN,VAL)
c640: 09 09 5c 0a 20 20 28 28 54 59 50 45 5f 53 49 5a  ..\.  ((TYPE_SIZ
c650: 45 29 20 3e 20 31 36 09 09 09 09 09 09 09 5c 0a  E) > 16.......\.
c660: 20 20 20 3f 20 28 2b 2b 28 4c 49 53 54 29 2e 61     ? (++(LIST).a
c670: 70 74 72 09 09 09 09 09 09 09 5c 0a 20 20 20 20  ptr.......\.    
c680: 20 20 3e 20 28 28 4c 49 53 54 29 2e 65 70 74 72    > ((LIST).eptr
c690: 20 3d 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28 28   = (__avword*)((
c6a0: 6c 6f 6e 67 29 28 4c 49 53 54 29 2e 65 70 74 72  long)(LIST).eptr
c6b0: 20 2d 20 28 28 28 54 59 50 45 5f 53 49 5a 45 29   - (((TYPE_SIZE)
c6c0: 2b 37 29 26 2d 38 29 29 29 5c 0a 20 20 20 20 20  +7)&-8)))\.     
c6d0: 20 3f 20 2d 31 20 3a 09 09 09 09 09 09 09 09 5c   ? -1 :........\
c6e0: 0a 20 20 20 20 20 20 28 41 53 53 49 47 4e 28 54  .      (ASSIGN(T
c6f0: 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59  YPE,TYPE_SIZE,TY
c700: 50 45 5f 41 4c 49 47 4e 2c 28 76 6f 69 64 2a 29  PE_ALIGN,(void*)
c710: 28 4c 49 53 54 29 2e 65 70 74 72 2c 56 41 4c 29  (LIST).eptr,VAL)
c720: 2c 09 5c 0a 20 20 20 20 20 20 20 28 4c 49 53 54  ,.\.       (LIST
c730: 29 2e 61 70 74 72 5b 2d 31 5d 20 3d 20 28 5f 5f  ).aptr[-1] = (__
c740: 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e 65 70  avword)(LIST).ep
c750: 74 72 2c 09 09 09 09 5c 0a 20 20 20 20 20 20 20  tr,....\.       
c760: 30 29 29 09 09 09 09 09 09 09 09 5c 0a 20 20 20  0))........\.   
c770: 3a 20 28 28 28 4c 49 53 54 29 2e 61 70 74 72 20  : (((LIST).aptr 
c780: 3d 09 09 09 09 09 09 09 5c 0a 20 20 20 20 20 20  =.......\.      
c790: 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28 28 28 5f   (__avword*)(((_
c7a0: 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e 61  _avword)(LIST).a
c7b0: 70 74 72 2b 28 54 59 50 45 5f 53 49 5a 45 29 2b  ptr+(TYPE_SIZE)+
c7c0: 28 54 59 50 45 5f 41 4c 49 47 4e 29 2d 31 29 20  (TYPE_ALIGN)-1) 
c7d0: 26 20 2d 28 6c 6f 6e 67 29 28 54 59 50 45 5f 41  & -(long)(TYPE_A
c7e0: 4c 49 47 4e 29 29 29 5c 0a 20 20 20 20 20 20 3e  LIGN)))\.      >
c7f0: 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29   __av_eptr(LIST)
c800: 09 09 09 09 09 09 09 5c 0a 20 20 20 20 20 20 3f  .......\.      ?
c810: 20 2d 31 20 3a 20 28 41 53 53 49 47 4e 28 54 59   -1 : (ASSIGN(TY
c820: 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50  PE,TYPE_SIZE,TYP
c830: 45 5f 41 4c 49 47 4e 2c 28 76 6f 69 64 2a 29 28  E_ALIGN,(void*)(
c840: 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29  (__avword)(LIST)
c850: 2e 61 70 74 72 2d 28 54 59 50 45 5f 53 49 5a 45  .aptr-(TYPE_SIZE
c860: 29 29 2c 56 41 4c 29 2c 5c 0a 09 20 20 20 20 20  )),VAL),\..     
c870: 20 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 28   (LIST).aptr = (
c880: 5f 5f 61 76 77 6f 72 64 2a 29 28 28 28 5f 5f 61  __avword*)(((__a
c890: 76 77 6f 72 64 29 28 4c 49 53 54 29 2e 61 70 74  vword)(LIST).apt
c8a0: 72 2b 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72  r+sizeof(__avwor
c8b0: 64 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 73  d)-1) & -(long)s
c8c0: 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 29  izeof(__avword))
c8d0: 2c 5c 0a 09 20 20 20 20 20 20 28 28 4c 49 53 54  ,\..      ((LIST
c8e0: 29 2e 61 6e 75 6d 20 3c 20 31 36 09 09 09 09 09  ).anum < 16.....
c8f0: 09 5c 0a 09 09 26 26 20 28 28 4c 49 53 54 29 2e  .\...&& ((LIST).
c900: 66 61 72 67 5f 6d 61 73 6b 20 7c 3d 20 28 2d 31  farg_mask |= (-1
c910: 20 3c 3c 20 28 4c 49 53 54 29 2e 61 6e 75 6d 29   << (LIST).anum)
c920: 2c 09 09 5c 0a 09 09 20 20 20 20 28 4c 49 53 54  ,..\...    (LIST
c930: 29 2e 64 61 72 67 5f 6d 61 73 6b 20 7c 3d 20 28  ).darg_mask |= (
c940: 2d 31 20 3c 3c 20 28 4c 49 53 54 29 2e 61 6e 75  -1 << (LIST).anu
c950: 6d 29 29 29 2c 09 09 5c 0a 09 20 20 20 20 20 20  m))),..\..      
c960: 28 4c 49 53 54 29 2e 61 6e 75 6d 20 2b 3d 20 28  (LIST).anum += (
c970: 28 28 28 28 54 59 50 45 5f 53 49 5a 45 29 2b 28  ((((TYPE_SIZE)+(
c980: 54 59 50 45 5f 41 4c 49 47 4e 29 2d 31 29 20 26  TYPE_ALIGN)-1) &
c990: 20 2d 28 6c 6f 6e 67 29 28 54 59 50 45 5f 41 4c   -(long)(TYPE_AL
c9a0: 49 47 4e 29 29 20 2b 20 73 69 7a 65 6f 66 28 5f  IGN)) + sizeof(_
c9b0: 5f 61 76 77 6f 72 64 29 2d 31 29 20 26 20 2d 28  _avword)-1) & -(
c9c0: 6c 6f 6e 67 29 73 69 7a 65 6f 66 28 5f 5f 61 76  long)sizeof(__av
c9d0: 77 6f 72 64 29 29 2f 73 69 7a 65 6f 66 28 5f 5f  word))/sizeof(__
c9e0: 61 76 77 6f 72 64 29 2c 5c 0a 09 20 20 20 20 20  avword),\..     
c9f0: 20 28 4c 49 53 54 29 2e 66 61 72 67 5f 6d 61 73   (LIST).farg_mas
ca00: 6b 20 26 3d 20 28 31 20 3c 3c 20 28 28 4c 49 53  k &= (1 << ((LIS
ca10: 54 29 2e 61 6e 75 6d 20 3c 20 31 36 20 3f 20 28  T).anum < 16 ? (
ca20: 4c 49 53 54 29 2e 61 6e 75 6d 20 3a 20 31 36 29  LIST).anum : 16)
ca30: 29 20 2d 20 31 2c 20 5c 0a 09 20 20 20 20 20 20  ) - 1, \..      
ca40: 28 4c 49 53 54 29 2e 64 61 72 67 5f 6d 61 73 6b  (LIST).darg_mask
ca50: 20 26 3d 20 28 31 20 3c 3c 20 28 28 4c 49 53 54   &= (1 << ((LIST
ca60: 29 2e 61 6e 75 6d 20 3c 20 31 36 20 3f 20 28 4c  ).anum < 16 ? (L
ca70: 49 53 54 29 2e 61 6e 75 6d 20 3a 20 31 36 29 29  IST).anum : 16))
ca80: 20 2d 20 31 2c 20 5c 0a 09 20 20 20 20 20 20 30   - 1, \..      0
ca90: 29 29 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64  ))).#endif.#if d
caa0: 65 66 69 6e 65 64 28 5f 5f 68 70 70 61 5f 5f 29  efined(__hppa__)
cab0: 0a 2f 2a 20 53 74 72 75 63 74 75 72 65 73 20 3c  ./* Structures <
cac0: 3d 20 38 20 62 79 74 65 73 20 61 72 65 20 70 61  = 8 bytes are pa
cad0: 73 73 65 64 20 61 73 20 65 6d 62 65 64 64 65 64  ssed as embedded
cae0: 20 63 6f 70 69 65 73 20 6f 6e 20 74 68 65 20 61   copies on the a
caf0: 72 67 20 73 74 61 63 6b 2e 0a 20 2a 20 42 69 67  rg stack.. * Big
cb00: 20 73 74 72 75 63 74 75 72 65 73 20 61 72 65 20   structures are 
cb10: 70 61 73 73 65 64 20 61 73 20 70 6f 69 6e 74 65  passed as pointe
cb20: 72 73 20 74 6f 20 63 61 6c 6c 65 72 2d 6d 61 64  rs to caller-mad
cb30: 65 20 6c 6f 63 61 6c 20 63 6f 70 69 65 73 2e 0a  e local copies..
cb40: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76   */.#define __av
cb50: 5f 73 74 72 75 63 74 28 4c 49 53 54 2c 54 59 50  _struct(LIST,TYP
cb60: 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45  E,TYPE_SIZE,TYPE
cb70: 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e 2c 56 41  _ALIGN,ASSIGN,VA
cb80: 4c 29 09 09 09 5c 0a 20 20 28 28 54 59 50 45 5f  L)...\.  ((TYPE_
cb90: 53 49 5a 45 29 20 3e 20 38 09 09 09 09 09 09 09  SIZE) > 8.......
cba0: 09 5c 0a 20 20 20 3f 20 28 2d 2d 28 4c 49 53 54  .\.   ? (--(LIST
cbb0: 29 2e 61 70 74 72 09 09 09 09 09 09 09 09 5c 0a  ).aptr........\.
cbc0: 20 20 20 20 20 20 3c 20 28 28 4c 49 53 54 29 2e        < ((LIST).
cbd0: 65 70 74 72 20 3d 20 28 5f 5f 61 76 77 6f 72 64  eptr = (__avword
cbe0: 2a 29 28 28 6c 6f 6e 67 29 28 4c 49 53 54 29 2e  *)((long)(LIST).
cbf0: 65 70 74 72 20 2b 20 28 28 28 54 59 50 45 5f 53  eptr + (((TYPE_S
cc00: 49 5a 45 29 20 2b 20 37 29 20 26 20 2d 38 29 29  IZE) + 7) & -8))
cc10: 29 20 5c 0a 20 20 20 20 20 20 3f 20 2d 31 09 09  ) \.      ? -1..
cc20: 09 09 09 09 09 09 09 5c 0a 20 20 20 20 20 20 3a  .......\.      :
cc30: 20 28 41 53 53 49 47 4e 28 54 59 50 45 2c 54 59   (ASSIGN(TYPE,TY
cc40: 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49  PE_SIZE,TYPE_ALI
cc50: 47 4e 2c 28 76 6f 69 64 2a 29 28 28 6c 6f 6e 67  GN,(void*)((long
cc60: 29 28 4c 49 53 54 29 2e 65 70 74 72 20 2d 20 28  )(LIST).eptr - (
cc70: 28 28 54 59 50 45 5f 53 49 5a 45 29 20 2b 20 37  ((TYPE_SIZE) + 7
cc80: 29 20 26 20 2d 38 29 29 2c 20 56 41 4c 29 2c 20  ) & -8)), VAL), 
cc90: 5c 0a 09 20 2a 28 4c 49 53 54 29 2e 61 70 74 72  \.. *(LIST).aptr
cca0: 20 3d 20 28 5f 5f 61 76 77 6f 72 64 29 28 28 6c   = (__avword)((l
ccb0: 6f 6e 67 29 28 4c 49 53 54 29 2e 65 70 74 72 20  ong)(LIST).eptr 
ccc0: 2d 20 28 28 28 54 59 50 45 5f 53 49 5a 45 29 20  - (((TYPE_SIZE) 
ccd0: 2b 20 37 29 20 26 20 2d 38 29 29 2c 20 5c 0a 09  + 7) & -8)), \..
cce0: 20 30 29 29 09 09 09 09 09 09 09 09 09 5c 0a 20   0)).........\. 
ccf0: 20 20 3a 20 28 28 54 59 50 45 5f 53 49 5a 45 29    : ((TYPE_SIZE)
cd00: 20 3e 20 34 09 09 09 09 09 09 09 09 5c 0a 20 20   > 4........\.  
cd10: 20 20 20 20 3f 20 28 28 28 4c 49 53 54 29 2e 61      ? (((LIST).a
cd20: 70 74 72 20 3d 20 28 5f 5f 61 76 77 6f 72 64 2a  ptr = (__avword*
cd30: 29 28 28 28 28 6c 6f 6e 67 29 28 4c 49 53 54 29  )((((long)(LIST)
cd40: 2e 61 70 74 72 20 26 20 2d 38 29 20 2d 20 28 6c  .aptr & -8) - (l
cd50: 6f 6e 67 29 28 54 59 50 45 5f 53 49 5a 45 29 29  ong)(TYPE_SIZE))
cd60: 20 26 20 2d 38 29 29 20 5c 0a 09 20 20 3c 20 26   & -8)) \..  < &
cd70: 28 4c 49 53 54 29 2e 61 72 67 73 5b 30 5d 09 09  (LIST).args[0]..
cd80: 09 09 09 09 09 5c 0a 09 20 20 3f 20 2d 31 20 3a  .....\..  ? -1 :
cd90: 20 28 41 53 53 49 47 4e 28 54 59 50 45 2c 54 59   (ASSIGN(TYPE,TY
cda0: 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49  PE_SIZE,TYPE_ALI
cdb0: 47 4e 2c 28 76 6f 69 64 2a 29 28 4c 49 53 54 29  GN,(void*)(LIST)
cdc0: 2e 61 70 74 72 2c 56 41 4c 29 2c 20 30 29 29 09  .aptr,VAL), 0)).
cdd0: 5c 0a 20 20 20 20 20 20 3a 20 2f 2a 20 46 49 58  \.      : /* FIX
cde0: 4d 45 3a 20 67 63 63 2d 32 2e 36 2e 33 20 70 61  ME: gcc-2.6.3 pa
cdf0: 73 73 65 73 20 73 74 72 75 63 74 75 72 65 73 20  sses structures 
ce00: 3c 3d 20 34 20 62 79 74 65 73 20 69 6e 20 6d 65  <= 4 bytes in me
ce10: 6d 6f 72 79 20 6c 65 66 74 2d 61 64 6a 75 73 74  mory left-adjust
ce20: 65 64 21 20 3f 3f 20 2a 2f 5c 0a 20 20 20 20 20  ed! ?? */\.     
ce30: 20 20 20 28 28 28 4c 49 53 54 29 2e 61 70 74 72     (((LIST).aptr
ce40: 20 3d 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28 28   = (__avword*)((
ce50: 28 6c 6f 6e 67 29 28 4c 49 53 54 29 2e 61 70 74  (long)(LIST).apt
ce60: 72 20 26 20 2d 34 29 20 2d 20 28 6c 6f 6e 67 29  r & -4) - (long)
ce70: 28 54 59 50 45 5f 53 49 5a 45 29 29 29 20 5c 0a  (TYPE_SIZE))) \.
ce80: 09 20 20 3c 20 26 28 4c 49 53 54 29 2e 61 72 67  .  < &(LIST).arg
ce90: 73 5b 30 5d 09 09 09 09 09 09 09 5c 0a 09 20 20  s[0].......\..  
cea0: 3f 20 2d 31 20 3a 20 28 41 53 53 49 47 4e 28 54  ? -1 : (ASSIGN(T
ceb0: 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59  YPE,TYPE_SIZE,TY
cec0: 50 45 5f 41 4c 49 47 4e 2c 28 76 6f 69 64 2a 29  PE_ALIGN,(void*)
ced0: 28 4c 49 53 54 29 2e 61 70 74 72 2c 56 41 4c 29  (LIST).aptr,VAL)
cee0: 2c 09 5c 0a 09 09 20 20 28 4c 49 53 54 29 2e 61  ,.\...  (LIST).a
cef0: 70 74 72 20 3d 20 28 5f 5f 61 76 77 6f 72 64 2a  ptr = (__avword*
cf00: 29 28 28 6c 6f 6e 67 29 28 4c 49 53 54 29 2e 61  )((long)(LIST).a
cf10: 70 74 72 20 26 20 2d 34 29 2c 09 09 5c 0a 09 09  ptr & -4),..\...
cf20: 20 20 30 29 29 29 29 0a 23 65 6e 64 69 66 0a 23    0)))).#endif.#
cf30: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 78 38 36  if defined(__x86
cf40: 5f 36 34 5f 5f 29 0a 2f 2a 20 53 74 72 75 63 74  _64__)./* Struct
cf50: 75 72 65 73 20 3c 3d 20 31 36 20 62 79 74 65 73  ures <= 16 bytes
cf60: 20 63 61 6e 20 62 65 20 70 61 73 73 65 64 20 69   can be passed i
cf70: 6e 20 69 6e 74 65 67 65 72 20 6f 72 20 66 6c 6f  n integer or flo
cf80: 61 74 69 6e 67 2d 70 6f 69 6e 74 20 72 65 67 69  ating-point regi
cf90: 73 74 65 72 73 0a 20 20 20 69 66 20 74 68 65 72  sters.   if ther
cfa0: 65 20 69 73 20 65 6e 6f 75 67 68 20 72 6f 6f 6d  e is enough room
cfb0: 20 66 6f 72 20 74 68 65 20 77 68 6f 6c 65 20 6e   for the whole n
cfc0: 75 6d 62 65 72 20 6f 66 20 77 6f 72 64 73 20 6e  umber of words n
cfd0: 65 65 64 65 64 20 62 79 20 74 68 65 20 73 74 72  eeded by the str
cfe0: 75 63 74 75 72 65 0a 20 20 20 69 6e 20 74 68 65  ucture.   in the
cff0: 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 69   corresponding i
d000: 61 72 67 73 2f 66 61 72 67 73 20 62 6c 6f 63 6b  args/fargs block
d010: 2e 20 57 65 20 63 61 6e 27 74 20 64 69 73 74 69  . We can't disti
d020: 6e 67 75 69 73 68 20 74 68 65 20 74 77 6f 20 63  nguish the two c
d030: 61 73 65 73 0a 20 20 20 61 6e 64 20 73 75 70 70  ases.   and supp
d040: 6f 72 74 20 6f 6e 6c 79 20 70 61 73 73 69 6e 67  ort only passing
d050: 20 69 6e 20 69 6e 74 65 67 65 72 20 72 65 67 69   in integer regi
d060: 73 74 65 72 73 2e 20 4f 74 68 65 72 20 73 74 72  sters. Other str
d070: 75 63 74 75 72 65 73 20 61 72 65 20 70 61 73 73  uctures are pass
d080: 65 64 0a 20 20 20 6f 6e 20 74 68 65 20 61 72 67  ed.   on the arg
d090: 20 73 74 61 63 6b 2e 20 2a 2f 0a 23 64 65 66 69   stack. */.#defi
d0a0: 6e 65 20 5f 5f 61 76 5f 73 74 72 75 63 74 28 4c  ne __av_struct(L
d0b0: 49 53 54 2c 54 59 50 45 2c 54 59 50 45 5f 53 49  IST,TYPE,TYPE_SI
d0c0: 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53  ZE,TYPE_ALIGN,AS
d0d0: 53 49 47 4e 2c 56 41 4c 29 09 09 09 5c 0a 20 20  SIGN,VAL)...\.  
d0e0: 28 28 4c 49 53 54 29 2e 69 61 70 74 72 20 2b 20  ((LIST).iaptr + 
d0f0: 28 28 54 59 50 45 5f 53 49 5a 45 29 20 2b 20 73  ((TYPE_SIZE) + s
d100: 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 2d  izeof(__avword)-
d110: 31 29 20 2f 20 73 69 7a 65 6f 66 28 5f 5f 61 76  1) / sizeof(__av
d120: 77 6f 72 64 29 20 3c 3d 20 26 28 4c 49 53 54 29  word) <= &(LIST)
d130: 2e 69 61 72 67 73 5b 36 5d 20 5c 0a 20 20 20 3f  .iargs[6] \.   ?
d140: 20 28 41 53 53 49 47 4e 28 54 59 50 45 2c 54 59   (ASSIGN(TYPE,TY
d150: 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49  PE_SIZE,TYPE_ALI
d160: 47 4e 2c 28 76 6f 69 64 2a 29 28 4c 49 53 54 29  GN,(void*)(LIST)
d170: 2e 69 61 70 74 72 2c 56 41 4c 29 2c 09 09 5c 0a  .iaptr,VAL),..\.
d180: 20 20 20 20 20 20 28 4c 49 53 54 29 2e 69 61 70        (LIST).iap
d190: 74 72 20 2b 3d 20 28 28 54 59 50 45 5f 53 49 5a  tr += ((TYPE_SIZ
d1a0: 45 29 20 2b 20 73 69 7a 65 6f 66 28 5f 5f 61 76  E) + sizeof(__av
d1b0: 77 6f 72 64 29 2d 31 29 20 2f 20 73 69 7a 65 6f  word)-1) / sizeo
d1c0: 66 28 5f 5f 61 76 77 6f 72 64 29 2c 09 5c 0a 20  f(__avword),.\. 
d1d0: 20 20 20 20 20 30 29 09 09 09 09 09 09 09 09 09       0).........
d1e0: 5c 0a 20 20 20 3a 20 28 28 4c 49 53 54 29 2e 61  \.   : ((LIST).a
d1f0: 70 74 72 20 3d 20 28 5f 5f 61 76 77 6f 72 64 2a  ptr = (__avword*
d200: 29 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53  )((__avword)(LIS
d210: 54 29 2e 61 70 74 72 20 2b 20 28 28 28 54 59 50  T).aptr + (((TYP
d220: 45 5f 53 49 5a 45 29 2b 5f 5f 61 76 5f 73 74 72  E_SIZE)+__av_str
d230: 75 63 74 5f 61 6c 69 67 6e 6d 65 6e 74 28 54 59  uct_alignment(TY
d240: 50 45 5f 41 4c 49 47 4e 29 2d 31 29 20 26 20 2d  PE_ALIGN)-1) & -
d250: 28 6c 6f 6e 67 29 5f 5f 61 76 5f 73 74 72 75 63  (long)__av_struc
d260: 74 5f 61 6c 69 67 6e 6d 65 6e 74 28 54 59 50 45  t_alignment(TYPE
d270: 5f 41 4c 49 47 4e 29 29 29 2c 20 5c 0a 20 20 20  _ALIGN))), \.   
d280: 20 20 20 28 28 4c 49 53 54 29 2e 61 70 74 72 20     ((LIST).aptr 
d290: 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54  > __av_eptr(LIST
d2a0: 29 09 09 09 09 09 09 5c 0a 20 20 20 20 20 20 20  )......\.       
d2b0: 3f 20 2d 31 20 3a 20 28 41 53 53 49 47 4e 28 54  ? -1 : (ASSIGN(T
d2c0: 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59  YPE,TYPE_SIZE,TY
d2d0: 50 45 5f 41 4c 49 47 4e 2c 28 76 6f 69 64 2a 29  PE_ALIGN,(void*)
d2e0: 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54  ((__avword)(LIST
d2f0: 29 2e 61 70 74 72 20 2d 20 28 28 28 54 59 50 45  ).aptr - (((TYPE
d300: 5f 53 49 5a 45 29 2b 5f 5f 61 76 5f 73 74 72 75  _SIZE)+__av_stru
d310: 63 74 5f 61 6c 69 67 6e 6d 65 6e 74 28 54 59 50  ct_alignment(TYP
d320: 45 5f 41 4c 49 47 4e 29 2d 31 29 20 26 20 2d 28  E_ALIGN)-1) & -(
d330: 6c 6f 6e 67 29 5f 5f 61 76 5f 73 74 72 75 63 74  long)__av_struct
d340: 5f 61 6c 69 67 6e 6d 65 6e 74 28 54 59 50 45 5f  _alignment(TYPE_
d350: 41 4c 49 47 4e 29 29 29 2c 56 41 4c 29 2c 5c 0a  ALIGN))),VAL),\.
d360: 09 20 20 20 20 20 20 20 30 29 29 29 29 0a 23 65  .       0)))).#e
d370: 6e 64 69 66 0a 0a 2f 2a 0a 20 2a 20 63 61 6c 6c  ndif../*. * call
d380: 69 6e 67 20 74 68 65 20 66 75 6e 63 74 69 6f 6e  ing the function
d390: 0a 20 2a 2f 0a 0a 23 64 65 66 69 6e 65 20 61 76  . */..#define av
d3a0: 5f 63 61 6c 6c 28 4c 49 53 54 29 20 5f 5f 62 75  _call(LIST) __bu
d3b0: 69 6c 74 69 6e 5f 61 76 63 61 6c 6c 28 26 28 4c  iltin_avcall(&(L
d3c0: 49 53 54 29 29 0a 0a 2f 2a 20 44 65 74 65 72 6d  IST))../* Determ
d3d0: 69 6e 65 20 77 68 65 74 68 65 72 20 61 20 73 74  ine whether a st
d3e0: 72 75 63 74 20 74 79 70 65 20 69 73 20 77 6f 72  ruct type is wor
d3f0: 64 2d 73 70 6c 69 74 74 61 62 6c 65 2c 20 69 2e  d-splittable, i.
d400: 65 2e 20 77 68 65 74 68 65 72 20 65 61 63 68 20  e. whether each 
d410: 6f 66 0a 20 2a 20 69 74 73 20 63 6f 6d 70 6f 6e  of. * its compon
d420: 65 6e 74 73 20 66 69 74 20 69 6e 74 6f 20 61 20  ents fit into a 
d430: 72 65 67 69 73 74 65 72 2e 0a 20 2a 20 54 68 65  register.. * The
d440: 20 65 6e 74 69 72 65 20 63 6f 6d 70 75 74 61 74   entire computat
d450: 69 6f 6e 20 69 73 20 64 6f 6e 65 20 61 74 20 63  ion is done at c
d460: 6f 6d 70 69 6c 65 20 74 69 6d 65 2e 0a 20 2a 2f  ompile time.. */
d470: 0a 23 64 65 66 69 6e 65 20 61 76 5f 77 6f 72 64  .#define av_word
d480: 5f 73 70 6c 69 74 74 61 62 6c 65 5f 31 28 73 6c  _splittable_1(sl
d490: 6f 74 31 29 20 20 5c 0a 20 20 28 5f 5f 61 76 5f  ot1)  \.  (__av_
d4a0: 6f 66 66 73 65 74 31 28 73 6c 6f 74 31 29 2f 73  offset1(slot1)/s
d4b0: 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 20  izeof(__avword) 
d4c0: 3d 3d 20 28 5f 5f 61 76 5f 6f 66 66 73 65 74 31  == (__av_offset1
d4d0: 28 73 6c 6f 74 31 29 2b 73 69 7a 65 6f 66 28 73  (slot1)+sizeof(s
d4e0: 6c 6f 74 31 29 2d 31 29 2f 73 69 7a 65 6f 66 28  lot1)-1)/sizeof(
d4f0: 5f 5f 61 76 77 6f 72 64 29 29 0a 23 64 65 66 69  __avword)).#defi
d500: 6e 65 20 61 76 5f 77 6f 72 64 5f 73 70 6c 69 74  ne av_word_split
d510: 74 61 62 6c 65 5f 32 28 73 6c 6f 74 31 2c 73 6c  table_2(slot1,sl
d520: 6f 74 32 29 20 20 5c 0a 20 20 28 28 5f 5f 61 76  ot2)  \.  ((__av
d530: 5f 6f 66 66 73 65 74 31 28 73 6c 6f 74 31 29 2f  _offset1(slot1)/
d540: 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29  sizeof(__avword)
d550: 20 3d 3d 20 28 5f 5f 61 76 5f 6f 66 66 73 65 74   == (__av_offset
d560: 31 28 73 6c 6f 74 31 29 2b 73 69 7a 65 6f 66 28  1(slot1)+sizeof(
d570: 73 6c 6f 74 31 29 2d 31 29 2f 73 69 7a 65 6f 66  slot1)-1)/sizeof
d580: 28 5f 5f 61 76 77 6f 72 64 29 29 20 5c 0a 20 20  (__avword)) \.  
d590: 20 26 26 20 28 5f 5f 61 76 5f 6f 66 66 73 65 74   && (__av_offset
d5a0: 32 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 29 2f 73  2(slot1,slot2)/s
d5b0: 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 20  izeof(__avword) 
d5c0: 3d 3d 20 28 5f 5f 61 76 5f 6f 66 66 73 65 74 32  == (__av_offset2
d5d0: 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 29 2b 73 69  (slot1,slot2)+si
d5e0: 7a 65 6f 66 28 73 6c 6f 74 32 29 2d 31 29 2f 73  zeof(slot2)-1)/s
d5f0: 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 29  izeof(__avword))
d600: 20 5c 0a 20 20 29 0a 23 64 65 66 69 6e 65 20 61   \.  ).#define a
d610: 76 5f 77 6f 72 64 5f 73 70 6c 69 74 74 61 62 6c  v_word_splittabl
d620: 65 5f 33 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 2c  e_3(slot1,slot2,
d630: 73 6c 6f 74 33 29 20 20 5c 0a 20 20 28 28 5f 5f  slot3)  \.  ((__
d640: 61 76 5f 6f 66 66 73 65 74 31 28 73 6c 6f 74 31  av_offset1(slot1
d650: 29 2f 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72  )/sizeof(__avwor
d660: 64 29 20 3d 3d 20 28 5f 5f 61 76 5f 6f 66 66 73  d) == (__av_offs
d670: 65 74 31 28 73 6c 6f 74 31 29 2b 73 69 7a 65 6f  et1(slot1)+sizeo
d680: 66 28 73 6c 6f 74 31 29 2d 31 29 2f 73 69 7a 65  f(slot1)-1)/size
d690: 6f 66 28 5f 5f 61 76 77 6f 72 64 29 29 20 5c 0a  of(__avword)) \.
d6a0: 20 20 20 26 26 20 28 5f 5f 61 76 5f 6f 66 66 73     && (__av_offs
d6b0: 65 74 32 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 29  et2(slot1,slot2)
d6c0: 2f 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64  /sizeof(__avword
d6d0: 29 20 3d 3d 20 28 5f 5f 61 76 5f 6f 66 66 73 65  ) == (__av_offse
d6e0: 74 32 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 29 2b  t2(slot1,slot2)+
d6f0: 73 69 7a 65 6f 66 28 73 6c 6f 74 32 29 2d 31 29  sizeof(slot2)-1)
d700: 2f 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64  /sizeof(__avword
d710: 29 29 20 5c 0a 20 20 20 26 26 20 28 5f 5f 61 76  )) \.   && (__av
d720: 5f 6f 66 66 73 65 74 33 28 73 6c 6f 74 31 2c 73  _offset3(slot1,s
d730: 6c 6f 74 32 2c 73 6c 6f 74 33 29 2f 73 69 7a 65  lot2,slot3)/size
d740: 6f 66 28 5f 5f 61 76 77 6f 72 64 29 20 3d 3d 20  of(__avword) == 
d750: 28 5f 5f 61 76 5f 6f 66 66 73 65 74 33 28 73 6c  (__av_offset3(sl
d760: 6f 74 31 2c 73 6c 6f 74 32 2c 73 6c 6f 74 33 29  ot1,slot2,slot3)
d770: 2b 73 69 7a 65 6f 66 28 73 6c 6f 74 33 29 2d 31  +sizeof(slot3)-1
d780: 29 2f 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72  )/sizeof(__avwor
d790: 64 29 29 20 5c 0a 20 20 29 0a 23 64 65 66 69 6e  d)) \.  ).#defin
d7a0: 65 20 61 76 5f 77 6f 72 64 5f 73 70 6c 69 74 74  e av_word_splitt
d7b0: 61 62 6c 65 5f 34 28 73 6c 6f 74 31 2c 73 6c 6f  able_4(slot1,slo
d7c0: 74 32 2c 73 6c 6f 74 33 2c 73 6c 6f 74 34 29 20  t2,slot3,slot4) 
d7d0: 20 5c 0a 20 20 28 28 5f 5f 61 76 5f 6f 66 66 73   \.  ((__av_offs
d7e0: 65 74 31 28 73 6c 6f 74 31 29 2f 73 69 7a 65 6f  et1(slot1)/sizeo
d7f0: 66 28 5f 5f 61 76 77 6f 72 64 29 20 3d 3d 20 28  f(__avword) == (
d800: 5f 5f 61 76 5f 6f 66 66 73 65 74 31 28 73 6c 6f  __av_offset1(slo
d810: 74 31 29 2b 73 69 7a 65 6f 66 28 73 6c 6f 74 31  t1)+sizeof(slot1
d820: 29 2d 31 29 2f 73 69 7a 65 6f 66 28 5f 5f 61 76  )-1)/sizeof(__av
d830: 77 6f 72 64 29 29 20 5c 0a 20 20 20 26 26 20 28  word)) \.   && (
d840: 5f 5f 61 76 5f 6f 66 66 73 65 74 32 28 73 6c 6f  __av_offset2(slo
d850: 74 31 2c 73 6c 6f 74 32 29 2f 73 69 7a 65 6f 66  t1,slot2)/sizeof
d860: 28 5f 5f 61 76 77 6f 72 64 29 20 3d 3d 20 28 5f  (__avword) == (_
d870: 5f 61 76 5f 6f 66 66 73 65 74 32 28 73 6c 6f 74  _av_offset2(slot
d880: 31 2c 73 6c 6f 74 32 29 2b 73 69 7a 65 6f 66 28  1,slot2)+sizeof(
d890: 73 6c 6f 74 32 29 2d 31 29 2f 73 69 7a 65 6f 66  slot2)-1)/sizeof
d8a0: 28 5f 5f 61 76 77 6f 72 64 29 29 20 5c 0a 20 20  (__avword)) \.  
d8b0: 20 26 26 20 28 5f 5f 61 76 5f 6f 66 66 73 65 74   && (__av_offset
d8c0: 33 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 2c 73 6c  3(slot1,slot2,sl
d8d0: 6f 74 33 29 2f 73 69 7a 65 6f 66 28 5f 5f 61 76  ot3)/sizeof(__av
d8e0: 77 6f 72 64 29 20 3d 3d 20 28 5f 5f 61 76 5f 6f  word) == (__av_o
d8f0: 66 66 73 65 74 33 28 73 6c 6f 74 31 2c 73 6c 6f  ffset3(slot1,slo
d900: 74 32 2c 73 6c 6f 74 33 29 2b 73 69 7a 65 6f 66  t2,slot3)+sizeof
d910: 28 73 6c 6f 74 33 29 2d 31 29 2f 73 69 7a 65 6f  (slot3)-1)/sizeo
d920: 66 28 5f 5f 61 76 77 6f 72 64 29 29 20 5c 0a 20  f(__avword)) \. 
d930: 20 20 26 26 20 28 5f 5f 61 76 5f 6f 66 66 73 65    && (__av_offse
d940: 74 34 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 2c 73  t4(slot1,slot2,s
d950: 6c 6f 74 33 2c 73 6c 6f 74 34 29 2f 73 69 7a 65  lot3,slot4)/size
d960: 6f 66 28 5f 5f 61 76 77 6f 72 64 29 20 3d 3d 20  of(__avword) == 
d970: 28 5f 5f 61 76 5f 6f 66 66 73 65 74 34 28 73 6c  (__av_offset4(sl
d980: 6f 74 31 2c 73 6c 6f 74 32 2c 73 6c 6f 74 33 2c  ot1,slot2,slot3,
d990: 73 6c 6f 74 34 29 2b 73 69 7a 65 6f 66 28 73 6c  slot4)+sizeof(sl
d9a0: 6f 74 34 29 2d 31 29 2f 73 69 7a 65 6f 66 28 5f  ot4)-1)/sizeof(_
d9b0: 5f 61 76 77 6f 72 64 29 29 20 5c 0a 20 20 29 0a  _avword)) \.  ).
d9c0: 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 6f 66 66  #define __av_off
d9d0: 73 65 74 31 28 73 6c 6f 74 31 29 20 20 5c 0a 20  set1(slot1)  \. 
d9e0: 20 30 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f   0.#define __av_
d9f0: 6f 66 66 73 65 74 32 28 73 6c 6f 74 31 2c 73 6c  offset2(slot1,sl
da00: 6f 74 32 29 20 20 5c 0a 20 20 28 28 5f 5f 61 76  ot2)  \.  ((__av
da10: 5f 6f 66 66 73 65 74 31 28 73 6c 6f 74 31 29 2b  _offset1(slot1)+
da20: 73 69 7a 65 6f 66 28 73 6c 6f 74 31 29 2b 5f 5f  sizeof(slot1)+__
da30: 41 56 5f 61 6c 69 67 6e 6f 66 28 73 6c 6f 74 32  AV_alignof(slot2
da40: 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 5f 5f  )-1) & -(long)__
da50: 41 56 5f 61 6c 69 67 6e 6f 66 28 73 6c 6f 74 32  AV_alignof(slot2
da60: 29 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f  )).#define __av_
da70: 6f 66 66 73 65 74 33 28 73 6c 6f 74 31 2c 73 6c  offset3(slot1,sl
da80: 6f 74 32 2c 73 6c 6f 74 33 29 20 20 5c 0a 20 20  ot2,slot3)  \.  
da90: 28 28 5f 5f 61 76 5f 6f 66 66 73 65 74 32 28 73  ((__av_offset2(s
daa0: 6c 6f 74 31 2c 73 6c 6f 74 32 29 2b 73 69 7a 65  lot1,slot2)+size
dab0: 6f 66 28 73 6c 6f 74 32 29 2b 5f 5f 41 56 5f 61  of(slot2)+__AV_a
dac0: 6c 69 67 6e 6f 66 28 73 6c 6f 74 33 29 2d 31 29  lignof(slot3)-1)
dad0: 20 26 20 2d 28 6c 6f 6e 67 29 5f 5f 41 56 5f 61   & -(long)__AV_a
dae0: 6c 69 67 6e 6f 66 28 73 6c 6f 74 33 29 29 0a 23  lignof(slot3)).#
daf0: 64 65 66 69 6e 65 20 5f 5f 61 76 5f 6f 66 66 73  define __av_offs
db00: 65 74 34 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 2c  et4(slot1,slot2,
db10: 73 6c 6f 74 33 2c 73 6c 6f 74 34 29 20 20 5c 0a  slot3,slot4)  \.
db20: 20 20 28 28 5f 5f 61 76 5f 6f 66 66 73 65 74 33    ((__av_offset3
db30: 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 2c 73 6c 6f  (slot1,slot2,slo
db40: 74 33 29 2b 73 69 7a 65 6f 66 28 73 6c 6f 74 33  t3)+sizeof(slot3
db50: 29 2b 5f 5f 41 56 5f 61 6c 69 67 6e 6f 66 28 73  )+__AV_alignof(s
db60: 6c 6f 74 34 29 2d 31 29 20 26 20 2d 28 6c 6f 6e  lot4)-1) & -(lon
db70: 67 29 5f 5f 41 56 5f 61 6c 69 67 6e 6f 66 28 73  g)__AV_alignof(s
db80: 6c 6f 74 34 29 29 0a 0a 2f 2a 0a 20 2a 20 4d 69  lot4))../*. * Mi
db90: 73 63 65 6c 6c 61 6e 65 6f 75 73 20 64 65 63 6c  scellaneous decl
dba0: 61 72 61 74 69 6f 6e 73 2e 0a 20 2a 2f 0a 0a 23  arations.. */..#
dbb0: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 53 54 44  if defined(__STD
dbc0: 43 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  C__) || defined(
dbd0: 5f 5f 47 4e 55 43 5f 5f 29 20 7c 7c 20 64 65 66  __GNUC__) || def
dbe0: 69 6e 65 64 28 5f 5f 63 70 6c 75 73 70 6c 75 73  ined(__cplusplus
dbf0: 29 0a 65 78 74 65 72 6e 20 69 6e 74 20 5f 5f 62  ).extern int __b
dc00: 75 69 6c 74 69 6e 5f 61 76 63 61 6c 6c 20 28 61  uiltin_avcall (a
dc10: 76 5f 61 6c 69 73 74 2a 20 6c 29 3b 0a 65 78 74  v_alist* l);.ext
dc20: 65 72 6e 20 76 6f 69 64 20 5f 5f 73 74 72 75 63  ern void __struc
dc30: 74 63 70 79 20 28 76 6f 69 64 2a 20 64 65 73 74  tcpy (void* dest
dc40: 2c 20 76 6f 69 64 2a 20 73 72 63 2c 20 75 6e 73  , void* src, uns
dc50: 69 67 6e 65 64 20 6c 6f 6e 67 20 73 69 7a 65 2c  igned long size,
dc60: 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 61   unsigned long a
dc70: 6c 69 67 6e 6d 65 6e 74 29 3b 0a 23 65 6c 73 65  lignment);.#else
dc80: 0a 65 78 74 65 72 6e 20 69 6e 74 20 5f 5f 62 75  .extern int __bu
dc90: 69 6c 74 69 6e 5f 61 76 63 61 6c 6c 20 28 29 3b  iltin_avcall ();
dca0: 0a 65 78 74 65 72 6e 20 76 6f 69 64 20 5f 5f 73  .extern void __s
dcb0: 74 72 75 63 74 63 70 79 20 28 29 3b 0a 23 65 6e  tructcpy ();.#en
dcc0: 64 69 66 0a 0a 23 65 6e 64 69 66 20 2f 2a 5f 61  dif..#endif /*_a
dcd0: 76 63 61 6c 6c 5f 68 20 2a 2f 0a                 vcall_h */.