Artifact 5bba68f53c22946584821bb01f065ef5a2aa2b92:


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 36 20 42 72 75 6e 6f 20 48  995-2006 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 23  -----------*/..#
02c0: 69 66 20 21 64 65 66 69 6e 65 64 28 4c 49 42 46  if !defined(LIBF
02d0: 46 43 41 4c 4c 5f 56 45 52 53 49 4f 4e 29 0a 23  FCALL_VERSION).#
02e0: 20 64 65 66 69 6e 65 20 4c 49 42 46 46 43 41 4c   define LIBFFCAL
02f0: 4c 5f 56 45 52 53 49 4f 4e 20 40 4c 49 42 46 46  L_VERSION @LIBFF
0300: 43 41 4c 4c 5f 56 45 52 53 49 4f 4e 40 0a 23 65  CALL_VERSION@.#e
0310: 6e 64 69 66 0a 0a 2f 2a 20 54 68 65 73 65 20 64  ndif../* These d
0320: 65 66 69 6e 69 74 69 6f 6e 73 20 61 72 65 20 61  efinitions are a
0330: 64 6a 75 73 74 65 64 20 62 79 20 60 63 6f 6e 66  djusted by `conf
0340: 69 67 75 72 65 27 20 61 75 74 6f 6d 61 74 69 63  igure' automatic
0350: 61 6c 6c 79 2e 20 2a 2f 0a 0a 2f 2a 20 43 50 55  ally. */../* CPU
0360: 20 2a 2f 0a 23 69 66 6e 64 65 66 20 5f 5f 69 33   */.#ifndef __i3
0370: 38 36 5f 5f 0a 23 75 6e 64 65 66 20 5f 5f 69 33  86__.#undef __i3
0380: 38 36 5f 5f 0a 23 65 6e 64 69 66 0a 23 69 66 6e  86__.#endif.#ifn
0390: 64 65 66 20 5f 5f 6d 36 38 6b 5f 5f 0a 23 75 6e  def __m68k__.#un
03a0: 64 65 66 20 5f 5f 6d 36 38 6b 5f 5f 0a 23 65 6e  def __m68k__.#en
03b0: 64 69 66 0a 23 69 66 6e 64 65 66 20 5f 5f 6d 69  dif.#ifndef __mi
03c0: 70 73 5f 5f 0a 23 75 6e 64 65 66 20 5f 5f 6d 69  ps__.#undef __mi
03d0: 70 73 5f 5f 0a 23 65 6e 64 69 66 0a 23 69 66 6e  ps__.#endif.#ifn
03e0: 64 65 66 20 5f 5f 6d 69 70 73 6e 33 32 5f 5f 0a  def __mipsn32__.
03f0: 23 75 6e 64 65 66 20 5f 5f 6d 69 70 73 6e 33 32  #undef __mipsn32
0400: 5f 5f 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64 65  __.#endif.#ifnde
0410: 66 20 5f 5f 6d 69 70 73 36 34 5f 5f 0a 23 75 6e  f __mips64__.#un
0420: 64 65 66 20 5f 5f 6d 69 70 73 36 34 5f 5f 0a 23  def __mips64__.#
0430: 65 6e 64 69 66 0a 23 69 66 6e 64 65 66 20 5f 5f  endif.#ifndef __
0440: 73 70 61 72 63 5f 5f 0a 23 75 6e 64 65 66 20 5f  sparc__.#undef _
0450: 5f 73 70 61 72 63 5f 5f 0a 23 65 6e 64 69 66 0a  _sparc__.#endif.
0460: 23 69 66 6e 64 65 66 20 5f 5f 73 70 61 72 63 36  #ifndef __sparc6
0470: 34 5f 5f 0a 23 75 6e 64 65 66 20 5f 5f 73 70 61  4__.#undef __spa
0480: 72 63 36 34 5f 5f 0a 23 65 6e 64 69 66 0a 23 69  rc64__.#endif.#i
0490: 66 6e 64 65 66 20 5f 5f 61 6c 70 68 61 5f 5f 0a  fndef __alpha__.
04a0: 23 75 6e 64 65 66 20 5f 5f 61 6c 70 68 61 5f 5f  #undef __alpha__
04b0: 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64 65 66 20  .#endif.#ifndef 
04c0: 5f 5f 68 70 70 61 5f 5f 0a 23 75 6e 64 65 66 20  __hppa__.#undef 
04d0: 5f 5f 68 70 70 61 5f 5f 0a 23 65 6e 64 69 66 0a  __hppa__.#endif.
04e0: 23 69 66 6e 64 65 66 20 5f 5f 61 72 6d 5f 5f 0a  #ifndef __arm__.
04f0: 23 75 6e 64 65 66 20 5f 5f 61 72 6d 5f 5f 0a 23  #undef __arm__.#
0500: 65 6e 64 69 66 0a 23 69 66 6e 64 65 66 20 5f 5f  endif.#ifndef __
0510: 70 6f 77 65 72 70 63 5f 5f 0a 23 75 6e 64 65 66  powerpc__.#undef
0520: 20 5f 5f 70 6f 77 65 72 70 63 5f 5f 0a 23 65 6e   __powerpc__.#en
0530: 64 69 66 0a 23 69 66 6e 64 65 66 20 5f 5f 70 6f  dif.#ifndef __po
0540: 77 65 72 70 63 36 34 5f 5f 0a 23 75 6e 64 65 66  werpc64__.#undef
0550: 20 5f 5f 70 6f 77 65 72 70 63 36 34 5f 5f 0a 23   __powerpc64__.#
0560: 65 6e 64 69 66 0a 23 69 66 6e 64 65 66 20 5f 5f  endif.#ifndef __
0570: 73 33 39 30 5f 5f 0a 23 75 6e 64 65 66 20 5f 5f  s390__.#undef __
0580: 73 33 39 30 5f 5f 0a 23 65 6e 64 69 66 0a 23 69  s390__.#endif.#i
0590: 66 6e 64 65 66 20 5f 5f 6d 38 38 6b 5f 5f 0a 23  fndef __m88k__.#
05a0: 75 6e 64 65 66 20 5f 5f 6d 38 38 6b 5f 5f 0a 23  undef __m88k__.#
05b0: 65 6e 64 69 66 0a 23 69 66 6e 64 65 66 20 5f 5f  endif.#ifndef __
05c0: 63 6f 6e 76 65 78 5f 5f 0a 23 75 6e 64 65 66 20  convex__.#undef 
05d0: 5f 5f 63 6f 6e 76 65 78 5f 5f 0a 23 65 6e 64 69  __convex__.#endi
05e0: 66 0a 23 69 66 6e 64 65 66 20 5f 5f 69 61 36 34  f.#ifndef __ia64
05f0: 5f 5f 0a 23 75 6e 64 65 66 20 5f 5f 69 61 36 34  __.#undef __ia64
0600: 5f 5f 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64 65  __.#endif.#ifnde
0610: 66 20 5f 5f 78 38 36 5f 36 34 5f 5f 0a 23 75 6e  f __x86_64__.#un
0620: 64 65 66 20 5f 5f 78 38 36 5f 36 34 5f 5f 0a 23  def __x86_64__.#
0630: 65 6e 64 69 66 0a 0a 2f 2a 20 43 61 6c 6c 69 6e  endif../* Callin
0640: 67 20 63 6f 6e 76 65 6e 74 69 6f 6e 20 2a 2f 0a  g convention */.
0650: 2f 2a 20 44 65 66 69 6e 65 20 69 66 20 75 73 69  /* Define if usi
0660: 6e 67 20 70 63 63 20 6e 6f 6e 2d 72 65 65 6e 74  ng pcc non-reent
0670: 72 61 6e 74 20 73 74 72 75 63 74 20 72 65 74 75  rant struct retu
0680: 72 6e 20 63 6f 6e 76 65 6e 74 69 6f 6e 20 2a 2f  rn convention */
0690: 0a 23 75 6e 64 65 66 20 5f 5f 50 43 43 5f 53 54  .#undef __PCC_ST
06a0: 52 55 43 54 5f 52 45 54 55 52 4e 5f 5f 0a 2f 2a  RUCT_RETURN__./*
06b0: 20 44 65 66 69 6e 65 20 69 66 20 73 6d 61 6c 6c   Define if small
06c0: 20 73 74 72 75 63 74 73 20 61 72 65 20 72 65 74   structs are ret
06d0: 75 72 6e 65 64 20 69 6e 20 72 65 67 69 73 74 65  urned in registe
06e0: 72 73 20 2a 2f 0a 23 75 6e 64 65 66 20 5f 5f 53  rs */.#undef __S
06f0: 4d 41 4c 4c 5f 53 54 52 55 43 54 5f 52 45 54 55  MALL_STRUCT_RETU
0700: 52 4e 5f 5f 0a 2f 2a 20 44 65 66 69 6e 65 20 69  RN__./* Define i
0710: 66 20 66 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e 74  f floating-point
0720: 20 72 65 73 75 6c 74 73 20 61 72 65 20 72 65 74   results are ret
0730: 75 72 6e 65 64 20 69 6e 20 74 68 65 20 69 6e 74  urned in the int
0740: 65 67 65 72 20 72 65 67 69 73 74 65 72 73 20 2a  eger registers *
0750: 2f 0a 23 75 6e 64 65 66 20 5f 5f 49 52 45 47 5f  /.#undef __IREG_
0760: 46 4c 4f 41 54 5f 52 45 54 55 52 4e 5f 5f 0a 0a  FLOAT_RETURN__..
0770: 2f 2a 20 41 43 5f 54 59 50 45 5f 4c 4f 4e 47 5f  /* AC_TYPE_LONG_
0780: 4c 4f 4e 47 20 2a 2f 0a 2f 2a 20 44 65 66 69 6e  LONG */./* Defin
0790: 65 20 69 66 20 79 6f 75 72 20 63 6f 6d 70 69 6c  e if your compil
07a0: 65 72 20 73 75 70 70 6f 72 74 73 20 74 68 65 20  er supports the 
07b0: 27 6c 6f 6e 67 20 6c 6f 6e 67 27 20 74 79 70 65  'long long' type
07c0: 2e 20 2a 2f 0a 23 75 6e 64 65 66 20 48 41 56 45  . */.#undef HAVE
07d0: 5f 4c 4f 4e 47 5f 4c 4f 4e 47 5f 49 4e 54 0a 0a  _LONG_LONG_INT..
07e0: 2f 2a 20 45 6e 64 20 6f 66 20 64 65 66 69 6e 69  /* End of defini
07f0: 74 69 6f 6e 73 20 61 64 6a 75 73 74 65 64 20 62  tions adjusted b
0800: 79 20 60 63 6f 6e 66 69 67 75 72 65 27 2e 20 2a  y `configure'. *
0810: 2f 0a 0a 0a 2f 2a 20 4d 61 78 20 23 20 77 6f 72  /.../* Max # wor
0820: 64 73 20 69 6e 20 61 72 67 75 6d 65 6e 74 2d 6c  ds in argument-l
0830: 69 73 74 20 61 6e 64 20 74 65 6d 70 6f 72 61 72  ist and temporar
0840: 79 20 73 74 72 75 63 74 75 72 65 20 73 74 6f 72  y structure stor
0850: 61 67 65 2e 0a 20 2a 2f 0a 23 69 66 6e 64 65 66  age.. */.#ifndef
0860: 20 5f 5f 41 56 5f 41 4c 49 53 54 5f 57 4f 52 44   __AV_ALIST_WORD
0870: 53 0a 23 64 65 66 69 6e 65 20 5f 5f 41 56 5f 41  S.#define __AV_A
0880: 4c 49 53 54 5f 57 4f 52 44 53 20 20 32 35 36 0a  LIST_WORDS  256.
0890: 23 65 6e 64 69 66 0a 0a 2f 2a 20 44 65 74 65 72  #endif../* Deter
08a0: 6d 69 6e 65 20 74 68 65 20 61 6c 69 67 6e 6d 65  mine the alignme
08b0: 6e 74 20 6f 66 20 61 20 74 79 70 65 20 61 74 20  nt of a type at 
08c0: 63 6f 6d 70 69 6c 65 20 74 69 6d 65 2e 0a 20 2a  compile time.. *
08d0: 2f 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  /.#if defined(__
08e0: 47 4e 55 43 5f 5f 29 0a 23 64 65 66 69 6e 65 20  GNUC__).#define 
08f0: 5f 5f 41 56 5f 61 6c 69 67 6e 6f 66 20 5f 5f 61  __AV_alignof __a
0900: 6c 69 67 6e 6f 66 5f 5f 0a 23 65 6c 73 65 0a 23  lignof__.#else.#
0910: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70  if defined(__mip
0920: 73 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  s__) || defined(
0930: 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 7c 7c 20  __mipsn32__) || 
0940: 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 36 34  defined(__mips64
0950: 5f 5f 29 20 2f 2a 20 53 47 49 20 63 6f 6d 70 69  __) /* SGI compi
0960: 6c 65 72 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f  ler */.#define _
0970: 5f 41 56 5f 61 6c 69 67 6e 6f 66 20 5f 5f 62 75  _AV_alignof __bu
0980: 69 6c 74 69 6e 5f 61 6c 69 67 6e 6f 66 0a 23 65  iltin_alignof.#e
0990: 6c 73 65 0a 23 64 65 66 69 6e 65 20 5f 5f 41 56  lse.#define __AV
09a0: 5f 6f 66 66 73 65 74 6f 66 28 74 79 70 65 2c 69  _offsetof(type,i
09b0: 64 65 6e 74 29 20 20 28 28 75 6e 73 69 67 6e 65  dent)  ((unsigne
09c0: 64 20 6c 6f 6e 67 29 26 28 28 28 74 79 70 65 2a  d long)&(((type*
09d0: 29 30 29 2d 3e 69 64 65 6e 74 29 29 0a 23 64 65  )0)->ident)).#de
09e0: 66 69 6e 65 20 5f 5f 41 56 5f 61 6c 69 67 6e 6f  fine __AV_aligno
09f0: 66 28 74 79 70 65 29 20 20 5f 5f 41 56 5f 6f 66  f(type)  __AV_of
0a00: 66 73 65 74 6f 66 28 73 74 72 75 63 74 20 7b 20  fsetof(struct { 
0a10: 63 68 61 72 20 5f 5f 73 6c 6f 74 31 3b 20 74 79  char __slot1; ty
0a20: 70 65 20 5f 5f 73 6c 6f 74 32 3b 20 7d 2c 20 5f  pe __slot2; }, _
0a30: 5f 73 6c 6f 74 32 29 0a 23 65 6e 64 69 66 0a 23  _slot2).#endif.#
0a40: 65 6e 64 69 66 0a 0a 2f 2a 20 43 20 62 75 69 6c  endif../* C buil
0a50: 74 69 6e 20 74 79 70 65 73 2e 0a 20 2a 2f 0a 23  tin types.. */.#
0a60: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70  if defined(__mip
0a70: 73 6e 33 32 5f 5f 29 0a 74 79 70 65 64 65 66 20  sn32__).typedef 
0a80: 6c 6f 6e 67 20 6c 6f 6e 67 20 5f 5f 61 76 77 6f  long long __avwo
0a90: 72 64 3b 0a 23 65 6c 73 65 0a 74 79 70 65 64 65  rd;.#else.typede
0aa0: 66 20 6c 6f 6e 67 20 5f 5f 61 76 77 6f 72 64 3b  f long __avword;
0ab0: 0a 23 65 6e 64 69 66 0a 0a 65 6e 75 6d 20 5f 5f  .#endif..enum __
0ac0: 41 56 74 79 70 65 0a 7b 0a 20 20 5f 5f 41 56 77  AVtype.{.  __AVw
0ad0: 6f 72 64 2c 0a 20 20 5f 5f 41 56 76 6f 69 64 2c  ord,.  __AVvoid,
0ae0: 0a 20 20 5f 5f 41 56 63 68 61 72 2c 0a 20 20 5f  .  __AVchar,.  _
0af0: 5f 41 56 73 63 68 61 72 2c 0a 20 20 5f 5f 41 56  _AVschar,.  __AV
0b00: 75 63 68 61 72 2c 0a 20 20 5f 5f 41 56 73 68 6f  uchar,.  __AVsho
0b10: 72 74 2c 0a 20 20 5f 5f 41 56 75 73 68 6f 72 74  rt,.  __AVushort
0b20: 2c 0a 20 20 5f 5f 41 56 69 6e 74 2c 0a 20 20 5f  ,.  __AVint,.  _
0b30: 5f 41 56 75 69 6e 74 2c 0a 20 20 5f 5f 41 56 6c  _AVuint,.  __AVl
0b40: 6f 6e 67 2c 0a 20 20 5f 5f 41 56 75 6c 6f 6e 67  ong,.  __AVulong
0b50: 2c 0a 20 20 5f 5f 41 56 6c 6f 6e 67 6c 6f 6e 67  ,.  __AVlonglong
0b60: 2c 0a 20 20 5f 5f 41 56 75 6c 6f 6e 67 6c 6f 6e  ,.  __AVulonglon
0b70: 67 2c 0a 20 20 5f 5f 41 56 66 6c 6f 61 74 2c 0a  g,.  __AVfloat,.
0b80: 20 20 5f 5f 41 56 64 6f 75 62 6c 65 2c 0a 20 20    __AVdouble,.  
0b90: 5f 5f 41 56 76 6f 69 64 70 2c 0a 20 20 5f 5f 41  __AVvoidp,.  __A
0ba0: 56 73 74 72 75 63 74 0a 7d 3b 0a 0a 65 6e 75 6d  Vstruct.};..enum
0bb0: 20 5f 5f 41 56 5f 61 6c 69 73 74 5f 66 6c 61 67   __AV_alist_flag
0bc0: 73 0a 7b 0a 0a 20 20 2f 2a 20 68 6f 77 20 74 6f  s.{..  /* how to
0bd0: 20 72 65 74 75 72 6e 20 73 74 72 75 63 74 73 20   return structs 
0be0: 2a 2f 0a 20 20 2f 2a 20 54 68 65 72 65 20 61 72  */.  /* There ar
0bf0: 65 20 62 61 73 69 63 61 6c 6c 79 20 33 20 77 61  e basically 3 wa
0c00: 79 73 20 74 6f 20 72 65 74 75 72 6e 20 73 74 72  ys to return str
0c10: 75 63 74 73 3a 0a 20 20 20 2a 20 61 2e 20 54 68  ucts:.   * a. Th
0c20: 65 20 63 61 6c 6c 65 64 20 66 75 6e 63 74 69 6f  e called functio
0c30: 6e 20 72 65 74 75 72 6e 73 20 61 20 70 6f 69 6e  n returns a poin
0c40: 74 65 72 20 74 6f 20 73 74 61 74 69 63 20 64 61  ter to static da
0c50: 74 61 2e 20 4e 6f 74 20 72 65 65 6e 74 72 61 6e  ta. Not reentran
0c60: 74 2e 0a 20 20 20 2a 20 62 2e 20 54 68 65 20 63  t..   * b. The c
0c70: 61 6c 6c 65 72 20 70 61 73 73 65 73 20 74 68 65  aller passes the
0c80: 20 72 65 74 75 72 6e 20 73 74 72 75 63 74 75 72   return structur
0c90: 65 20 61 64 64 72 65 73 73 20 69 6e 20 61 20 64  e address in a d
0ca0: 65 64 69 63 61 74 65 64 20 72 65 67 69 73 74 65  edicated registe
0cb0: 72 0a 20 20 20 2a 20 20 20 20 6f 72 20 61 73 20  r.   *    or as 
0cc0: 61 20 66 69 72 73 74 20 28 6f 72 20 6c 61 73 74  a first (or last
0cd0: 29 2c 20 69 6e 76 69 73 69 62 6c 65 20 61 72 67  ), invisible arg
0ce0: 75 6d 65 6e 74 2e 20 54 68 65 20 63 61 6c 6c 65  ument. The calle
0cf0: 64 20 66 75 6e 63 74 69 6f 6e 20 73 74 6f 72 65  d function store
0d00: 73 0a 20 20 20 2a 20 20 20 20 69 74 73 20 72 65  s.   *    its re
0d10: 73 75 6c 74 20 74 68 65 72 65 2e 0a 20 20 20 2a  sult there..   *
0d20: 20 63 2e 20 4c 69 6b 65 20 62 2c 20 61 6e 64 20   c. Like b, and 
0d30: 74 68 65 20 63 61 6c 6c 65 64 20 66 75 6e 63 74  the called funct
0d40: 69 6f 6e 20 61 6c 73 6f 20 72 65 74 75 72 6e 73  ion also returns
0d50: 20 74 68 65 20 72 65 74 75 72 6e 20 73 74 72 75   the return stru
0d60: 63 74 75 72 65 0a 20 20 20 2a 20 20 20 20 61 64  cture.   *    ad
0d70: 64 72 65 73 73 20 69 6e 20 74 68 65 20 72 65 74  dress in the ret
0d80: 75 72 6e 20 76 61 6c 75 65 20 72 65 67 69 73 74  urn value regist
0d90: 65 72 2e 20 28 54 68 69 73 20 69 73 20 6e 6f 74  er. (This is not
0da0: 20 76 65 72 79 20 64 69 73 74 69 6e 67 75 69 73   very distinguis
0db0: 68 61 62 6c 65 0a 20 20 20 2a 20 20 20 20 66 72  hable.   *    fr
0dc0: 6f 6d 20 62 2e 29 0a 20 20 20 2a 20 49 6e 64 65  om b.).   * Inde
0dd0: 70 65 6e 64 65 6e 74 6c 79 20 6f 66 20 74 68 69  pendently of thi
0de0: 73 2c 0a 20 20 20 2a 20 72 2e 20 73 6d 61 6c 6c  s,.   * r. small
0df0: 20 73 74 72 75 63 74 75 72 65 73 20 28 3c 3d 20   structures (<= 
0e00: 34 20 6f 72 20 3c 3d 20 38 20 62 79 74 65 73 29  4 or <= 8 bytes)
0e10: 20 6d 61 79 20 62 65 20 72 65 74 75 72 6e 65 64   may be returned
0e20: 20 69 6e 20 74 68 65 20 72 65 74 75 72 6e 0a 20   in the return. 
0e30: 20 20 2a 20 20 20 20 76 61 6c 75 65 20 72 65 67    *    value reg
0e40: 69 73 74 65 72 28 73 29 2c 20 6f 72 0a 20 20 20  ister(s), or.   
0e50: 2a 20 6d 2e 20 65 76 65 6e 20 73 6d 61 6c 6c 20  * m. even small 
0e60: 73 74 72 75 63 74 75 72 65 73 20 61 72 65 20 70  structures are p
0e70: 61 73 73 65 64 20 69 6e 20 6d 65 6d 6f 72 79 2e  assed in memory.
0e80: 0a 20 20 20 2a 2f 0a 20 20 2f 2a 20 67 63 63 2d  .   */.  /* gcc-
0e90: 32 2e 36 2e 33 20 65 6d 70 6c 6f 79 73 20 74 68  2.6.3 employs th
0ea0: 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 73 74 72 61  e following stra
0eb0: 74 65 67 79 3a 0a 20 20 20 2a 20 20 20 2d 20 49  tegy:.   *   - I
0ec0: 66 20 50 43 43 5f 53 54 41 54 49 43 5f 53 54 52  f PCC_STATIC_STR
0ed0: 55 43 54 5f 52 45 54 55 52 4e 20 69 73 20 64 65  UCT_RETURN is de
0ee0: 66 69 6e 65 64 20 69 6e 20 74 68 65 20 6d 61 63  fined in the mac
0ef0: 68 69 6e 65 20 64 65 73 63 72 69 70 74 69 6f 6e  hine description
0f00: 0a 20 20 20 2a 20 20 20 20 20 69 74 20 75 73 65  .   *     it use
0f10: 73 20 6d 65 74 68 6f 64 20 61 2c 20 65 6c 73 65  s method a, else
0f20: 20 6d 65 74 68 6f 64 20 63 2e 0a 20 20 20 2a 20   method c..   * 
0f30: 20 20 2d 20 49 66 20 66 6c 61 67 5f 70 63 63 5f    - If flag_pcc_
0f40: 73 74 72 75 63 74 5f 72 65 74 75 72 6e 20 69 73  struct_return is
0f50: 20 73 65 74 20 28 65 69 74 68 65 72 20 62 79 20   set (either by 
0f60: 2d 66 70 63 63 2d 73 74 72 75 63 74 2d 72 65 74  -fpcc-struct-ret
0f70: 75 72 6e 20 6f 72 20 69 66 0a 20 20 20 2a 20 20  urn or if.   *  
0f80: 20 20 20 44 45 46 41 55 4c 54 5f 50 43 43 5f 53     DEFAULT_PCC_S
0f90: 54 52 55 43 54 5f 52 45 54 55 52 4e 20 69 73 20  TRUCT_RETURN is 
0fa0: 64 65 66 69 6e 65 64 20 74 6f 20 31 20 69 6e 20  defined to 1 in 
0fb0: 74 68 65 20 6d 61 63 68 69 6e 65 20 64 65 73 63  the machine desc
0fc0: 72 69 70 74 69 6f 6e 29 0a 20 20 20 2a 20 20 20  ription).   *   
0fd0: 20 20 69 74 20 75 73 65 73 20 6d 65 74 68 6f 64    it uses method
0fe0: 20 6d 2c 20 65 6c 73 65 20 28 65 69 74 68 65 72   m, else (either
0ff0: 20 62 79 20 2d 66 72 65 67 2d 73 74 72 75 63 74   by -freg-struct
1000: 2d 72 65 74 75 72 6e 20 6f 72 20 69 66 0a 20 20  -return or if.  
1010: 20 2a 20 20 20 20 20 44 45 46 41 55 4c 54 5f 50   *     DEFAULT_P
1020: 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e  CC_STRUCT_RETURN
1030: 20 69 73 20 64 65 66 69 6e 65 64 20 74 6f 20 30   is defined to 0
1040: 20 69 6e 20 74 68 65 20 6d 61 63 68 69 6e 65 20   in the machine 
1050: 64 65 73 63 72 69 70 74 69 6f 6e 29 0a 20 20 20  description).   
1060: 2a 20 20 20 20 20 6d 65 74 68 6f 64 20 72 2e 0a  *     method r..
1070: 20 20 20 2a 2f 0a 20 20 5f 5f 41 56 5f 50 43 43     */.  __AV_PCC
1080: 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 09 3d  _STRUCT_RETURN.=
1090: 20 31 3c 3c 30 2c 09 2f 2a 20 61 3a 20 6e 65 65   1<<0,./* a: nee
10a0: 64 20 74 6f 20 63 6f 70 79 20 74 68 65 20 73 74  d to copy the st
10b0: 72 75 63 74 20 2a 2f 0a 20 20 5f 5f 41 56 5f 53  ruct */.  __AV_S
10c0: 4d 41 4c 4c 5f 53 54 52 55 43 54 5f 52 45 54 55  MALL_STRUCT_RETU
10d0: 52 4e 09 3d 20 31 3c 3c 31 2c 09 2f 2a 20 72 3a  RN.= 1<<1,./* r:
10e0: 20 73 70 65 63 69 61 6c 20 63 61 73 65 20 66 6f   special case fo
10f0: 72 20 73 6d 61 6c 6c 20 73 74 72 75 63 74 73 20  r small structs 
1100: 2a 2f 0a 20 20 5f 5f 41 56 5f 47 43 43 5f 53 54  */.  __AV_GCC_ST
1110: 52 55 43 54 5f 52 45 54 55 52 4e 09 3d 20 31 3c  RUCT_RETURN.= 1<
1120: 3c 32 2c 09 2f 2a 20 63 6f 6e 73 69 64 65 72 20  <2,./* consider 
1130: 38 20 62 79 74 65 20 73 74 72 75 63 74 73 20 61  8 byte structs a
1140: 73 20 73 6d 61 6c 6c 20 2a 2f 0a 23 69 66 20 64  s small */.#if d
1150: 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f 5f  efined(__sparc__
1160: 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f  ) && !defined(__
1170: 73 70 61 72 63 36 34 5f 5f 29 0a 20 20 5f 5f 41  sparc64__).  __A
1180: 56 5f 53 55 4e 43 43 5f 53 54 52 55 43 54 5f 52  V_SUNCC_STRUCT_R
1190: 45 54 55 52 4e 09 3d 20 31 3c 3c 33 2c 0a 20 20  ETURN.= 1<<3,.  
11a0: 5f 5f 41 56 5f 53 55 4e 50 52 4f 43 43 5f 53 54  __AV_SUNPROCC_ST
11b0: 52 55 43 54 5f 52 45 54 55 52 4e 09 3d 20 31 3c  RUCT_RETURN.= 1<
11c0: 3c 34 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 64  <4,.#endif.#if d
11d0: 65 66 69 6e 65 64 28 5f 5f 69 33 38 36 5f 5f 29  efined(__i386__)
11e0: 0a 20 20 5f 5f 41 56 5f 4e 45 58 54 47 43 43 5f  .  __AV_NEXTGCC_
11f0: 53 54 52 55 43 54 5f 52 45 54 55 52 4e 09 3d 20  STRUCT_RETURN.= 
1200: 31 3c 3c 33 2c 0a 20 20 5f 5f 41 56 5f 4d 53 56  1<<3,.  __AV_MSV
1210: 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 09  C_STRUCT_RETURN.
1220: 3d 20 31 3c 3c 34 2c 0a 23 65 6e 64 69 66 0a 23  = 1<<4,.#endif.#
1230: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 68 70 70  if defined(__hpp
1240: 61 5f 5f 29 0a 20 20 5f 5f 41 56 5f 4f 4c 44 47  a__).  __AV_OLDG
1250: 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e  CC_STRUCT_RETURN
1260: 09 3d 20 31 3c 3c 33 2c 0a 23 65 6e 64 69 66 0a  .= 1<<3,.#endif.
1270: 20 20 2f 2a 20 74 68 65 20 64 65 66 61 75 6c 74    /* the default
1280: 20 77 61 79 20 74 6f 20 72 65 74 75 72 6e 20 73   way to return s
1290: 74 72 75 63 74 73 20 2a 2f 0a 20 20 2f 2a 20 54  tructs */.  /* T
12a0: 68 69 73 20 63 68 6f 69 63 65 20 68 65 72 65 20  his choice here 
12b0: 69 73 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20  is based on the 
12c0: 61 73 73 75 6d 70 74 69 6f 6e 20 74 68 61 74 20  assumption that 
12d0: 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 79 6f 75  the function you
12e0: 20 61 72 65 0a 20 20 20 2a 20 67 6f 69 6e 67 20   are.   * going 
12f0: 74 6f 20 63 61 6c 6c 20 68 61 73 20 62 65 65 6e  to call has been
1300: 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 74   compiled with t
1310: 68 65 20 73 61 6d 65 20 63 6f 6d 70 69 6c 65 72  he same compiler
1320: 20 79 6f 75 20 61 72 65 20 75 73 69 6e 67 20 74   you are using t
1330: 6f 0a 20 20 20 2a 20 69 6e 63 6c 75 64 65 20 74  o.   * include t
1340: 68 69 73 20 66 69 6c 65 2e 0a 20 20 20 2a 20 49  his file..   * I
1350: 66 20 79 6f 75 20 77 61 6e 74 20 74 6f 20 63 61  f you want to ca
1360: 6c 6c 20 66 75 6e 63 74 69 6f 6e 73 20 77 69 74  ll functions wit
1370: 68 20 61 6e 6f 74 68 65 72 20 73 74 72 75 63 74  h another struct
1380: 20 72 65 74 75 72 6e 69 6e 67 20 63 6f 6e 76 65   returning conve
1390: 6e 74 69 6f 6e 2c 0a 20 20 20 2a 20 6a 75 73 74  ntion,.   * just
13a0: 20 20 23 64 65 66 69 6e 65 20 5f 5f 41 56 5f 53    #define __AV_S
13b0: 54 52 55 43 54 5f 52 45 54 55 52 4e 20 2e 2e 2e  TRUCT_RETURN ...
13c0: 0a 20 20 20 2a 20 62 65 66 6f 72 65 20 6f 72 20  .   * before or 
13d0: 61 66 74 65 72 20 23 69 6e 63 6c 75 64 69 6e 67  after #including
13e0: 20 3c 61 76 63 61 6c 6c 2e 68 3e 2e 0a 20 20 20   <avcall.h>..   
13f0: 2a 2f 0a 23 69 66 6e 64 65 66 20 5f 5f 41 56 5f  */.#ifndef __AV_
1400: 53 54 52 55 43 54 5f 52 45 54 55 52 4e 0a 20 20  STRUCT_RETURN.  
1410: 5f 5f 41 56 5f 53 54 52 55 43 54 5f 52 45 54 55  __AV_STRUCT_RETU
1420: 52 4e 09 09 3d 0a 23 69 66 20 64 65 66 69 6e 65  RN..=.#if define
1430: 64 28 5f 5f 73 70 61 72 63 5f 5f 29 20 26 26 20  d(__sparc__) && 
1440: 21 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63  !defined(__sparc
1450: 36 34 5f 5f 29 20 26 26 20 64 65 66 69 6e 65 64  64__) && defined
1460: 28 73 75 6e 29 20 26 26 20 64 65 66 69 6e 65 64  (sun) && defined
1470: 28 5f 5f 53 55 4e 50 52 4f 5f 43 29 20 2f 2a 20  (__SUNPRO_C) /* 
1480: 53 55 4e 57 73 70 72 6f 20 63 63 20 2a 2f 0a 09  SUNWspro cc */..
1490: 09 09 09 20 20 5f 5f 41 56 5f 53 55 4e 50 52 4f  ...  __AV_SUNPRO
14a0: 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e  CC_STRUCT_RETURN
14b0: 2c 0a 23 65 6c 73 65 0a 23 69 66 20 64 65 66 69  ,.#else.#if defi
14c0: 6e 65 64 28 5f 5f 50 43 43 5f 53 54 52 55 43 54  ned(__PCC_STRUCT
14d0: 5f 52 45 54 55 52 4e 5f 5f 29 20 2f 2a 20 64 65  _RETURN__) /* de
14e0: 66 69 6e 65 64 20 74 68 72 6f 75 67 68 20 63 6f  fined through co
14f0: 6e 66 69 67 75 72 65 2c 20 73 65 65 20 61 62 6f  nfigure, see abo
1500: 76 65 20 2a 2f 0a 09 09 09 09 20 20 5f 5f 41 56  ve */.....  __AV
1510: 5f 50 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55  _PCC_STRUCT_RETU
1520: 52 4e 2c 0a 23 65 6c 73 65 0a 23 69 66 20 64 65  RN,.#else.#if de
1530: 66 69 6e 65 64 28 5f 5f 53 4d 41 4c 4c 5f 53 54  fined(__SMALL_ST
1540: 52 55 43 54 5f 52 45 54 55 52 4e 5f 5f 29 20 7c  RUCT_RETURN__) |
1550: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73  | defined(__mips
1560: 6e 33 32 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65  n32__) || define
1570: 64 28 5f 5f 6d 69 70 73 36 34 5f 5f 29 20 7c 7c  d(__mips64__) ||
1580: 20 64 65 66 69 6e 65 64 28 5f 5f 41 52 4d 45 4c   defined(__ARMEL
1590: 5f 5f 29 20 2f 2a 20 64 65 66 69 6e 65 64 20 74  __) /* defined t
15a0: 68 72 6f 75 67 68 20 63 6f 6e 66 69 67 75 72 65  hrough configure
15b0: 2c 20 73 65 65 20 61 62 6f 76 65 20 2a 2f 0a 09  , see above */..
15c0: 09 09 09 20 20 5f 5f 41 56 5f 53 4d 41 4c 4c 5f  ...  __AV_SMALL_
15d0: 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20 7c 0a  STRUCT_RETURN |.
15e0: 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e  #endif.#if defin
15f0: 65 64 28 5f 5f 47 4e 55 43 5f 5f 29 0a 09 09 09  ed(__GNUC__)....
1600: 09 20 20 5f 5f 41 56 5f 47 43 43 5f 53 54 52 55  .  __AV_GCC_STRU
1610: 43 54 5f 52 45 54 55 52 4e 20 7c 0a 23 65 6e 64  CT_RETURN |.#end
1620: 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f  if.#if defined(_
1630: 5f 69 33 38 36 5f 5f 29 20 26 26 20 64 65 66 69  _i386__) && defi
1640: 6e 65 64 28 4e 65 58 54 29 20 26 26 20 64 65 66  ned(NeXT) && def
1650: 69 6e 65 64 28 5f 5f 47 4e 55 43 5f 5f 29 20 2f  ined(__GNUC__) /
1660: 2a 20 4e 65 58 54 20 67 63 63 2d 32 2e 35 2e 38  * NeXT gcc-2.5.8
1670: 20 2a 2f 0a 09 09 09 09 20 20 5f 5f 41 56 5f 4e   */.....  __AV_N
1680: 45 58 54 47 43 43 5f 53 54 52 55 43 54 5f 52 45  EXTGCC_STRUCT_RE
1690: 54 55 52 4e 20 7c 0a 23 65 6e 64 69 66 0a 23 69  TURN |.#endif.#i
16a0: 66 20 64 65 66 69 6e 65 64 28 5f 5f 69 33 38 36  f defined(__i386
16b0: 5f 5f 29 20 26 26 20 64 65 66 69 6e 65 64 28 5f  __) && defined(_
16c0: 4d 53 43 5f 56 45 52 29 20 2f 2a 20 4d 53 56 43  MSC_VER) /* MSVC
16d0: 20 34 2e 30 20 2a 2f 0a 09 09 09 09 20 20 5f 5f   4.0 */.....  __
16e0: 41 56 5f 4d 53 56 43 5f 53 54 52 55 43 54 5f 52  AV_MSVC_STRUCT_R
16f0: 45 54 55 52 4e 20 7c 0a 23 65 6e 64 69 66 0a 23  ETURN |.#endif.#
1700: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 68 70 70  if defined(__hpp
1710: 61 5f 5f 29 20 26 26 20 64 65 66 69 6e 65 64 28  a__) && defined(
1720: 5f 5f 47 4e 55 43 5f 5f 29 20 26 26 20 28 5f 5f  __GNUC__) && (__
1730: 47 4e 55 43 5f 5f 20 3c 20 33 29 20 26 26 20 28  GNUC__ < 3) && (
1740: 5f 5f 47 4e 55 43 5f 4d 49 4e 4f 52 5f 5f 20 3c  __GNUC_MINOR__ <
1750: 20 37 29 0a 09 09 09 09 20 20 5f 5f 41 56 5f 4f   7).....  __AV_O
1760: 4c 44 47 43 43 5f 53 54 52 55 43 54 5f 52 45 54  LDGCC_STRUCT_RET
1770: 55 52 4e 20 7c 0a 23 65 6e 64 69 66 0a 20 20 09  URN |.#endif.  .
1780: 09 09 09 20 20 30 2c 0a 23 65 6e 64 69 66 0a 23  ...  0,.#endif.#
1790: 65 6e 64 69 66 0a 23 65 6e 64 69 66 0a 0a 20 20  endif.#endif..  
17a0: 2f 2a 20 68 6f 77 20 74 6f 20 72 65 74 75 72 6e  /* how to return
17b0: 20 66 6c 6f 61 74 73 20 2a 2f 0a 23 69 66 20 64   floats */.#if d
17c0: 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f 5f 29  efined(__m68k__)
17d0: 20 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f 73   || (defined(__s
17e0: 70 61 72 63 5f 5f 29 20 26 26 20 21 64 65 66 69  parc__) && !defi
17f0: 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29  ned(__sparc64__)
1800: 29 0a 20 20 5f 5f 41 56 5f 53 55 4e 43 43 5f 46  ).  __AV_SUNCC_F
1810: 4c 4f 41 54 5f 52 45 54 55 52 4e 09 3d 20 31 3c  LOAT_RETURN.= 1<
1820: 3c 35 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 64  <5,.#endif.#if d
1830: 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f 5f 29  efined(__m68k__)
1840: 0a 20 20 5f 5f 41 56 5f 46 52 45 47 5f 46 4c 4f  .  __AV_FREG_FLO
1850: 41 54 5f 52 45 54 55 52 4e 09 3d 20 31 3c 3c 36  AT_RETURN.= 1<<6
1860: 2c 0a 23 65 6e 64 69 66 0a 20 20 2f 2a 20 74 68  ,.#endif.  /* th
1870: 65 20 64 65 66 61 75 6c 74 20 77 61 79 20 74 6f  e default way to
1880: 20 72 65 74 75 72 6e 20 66 6c 6f 61 74 73 20 2a   return floats *
1890: 2f 0a 20 20 2f 2a 20 54 68 69 73 20 63 68 6f 69  /.  /* This choi
18a0: 63 65 20 68 65 72 65 20 69 73 20 62 61 73 65 64  ce here is based
18b0: 20 6f 6e 20 74 68 65 20 61 73 73 75 6d 70 74 69   on the assumpti
18c0: 6f 6e 20 74 68 61 74 20 74 68 65 20 66 75 6e 63  on that the func
18d0: 74 69 6f 6e 20 79 6f 75 20 61 72 65 0a 20 20 20  tion you are.   
18e0: 2a 20 67 6f 69 6e 67 20 74 6f 20 63 61 6c 6c 20  * going to call 
18f0: 68 61 73 20 62 65 65 6e 20 63 6f 6d 70 69 6c 65  has been compile
1900: 64 20 77 69 74 68 20 74 68 65 20 73 61 6d 65 20  d with the same 
1910: 63 6f 6d 70 69 6c 65 72 20 79 6f 75 20 61 72 65  compiler you are
1920: 20 75 73 69 6e 67 20 74 6f 0a 20 20 20 2a 20 69   using to.   * i
1930: 6e 63 6c 75 64 65 20 74 68 69 73 20 66 69 6c 65  nclude this file
1940: 2e 0a 20 20 20 2a 20 49 66 20 79 6f 75 20 77 61  ..   * If you wa
1950: 6e 74 20 74 6f 20 63 61 6c 6c 20 66 75 6e 63 74  nt to call funct
1960: 69 6f 6e 73 20 77 69 74 68 20 61 6e 6f 74 68 65  ions with anothe
1970: 72 20 66 6c 6f 61 74 20 72 65 74 75 72 6e 69 6e  r float returnin
1980: 67 20 63 6f 6e 76 65 6e 74 69 6f 6e 2c 0a 20 20  g convention,.  
1990: 20 2a 20 6a 75 73 74 20 20 23 64 65 66 69 6e 65   * just  #define
19a0: 20 5f 5f 41 56 5f 46 4c 4f 41 54 5f 52 45 54 55   __AV_FLOAT_RETU
19b0: 52 4e 20 2e 2e 2e 0a 20 20 20 2a 20 62 65 66 6f  RN ....   * befo
19c0: 72 65 20 6f 72 20 61 66 74 65 72 20 23 69 6e 63  re or after #inc
19d0: 6c 75 64 69 6e 67 20 3c 61 76 63 61 6c 6c 2e 68  luding <avcall.h
19e0: 3e 2e 0a 20 20 20 2a 2f 0a 23 69 66 6e 64 65 66  >..   */.#ifndef
19f0: 20 5f 5f 41 56 5f 46 4c 4f 41 54 5f 52 45 54 55   __AV_FLOAT_RETU
1a00: 52 4e 0a 23 69 66 20 28 64 65 66 69 6e 65 64 28  RN.#if (defined(
1a10: 5f 5f 6d 36 38 6b 5f 5f 29 20 7c 7c 20 28 64 65  __m68k__) || (de
1a20: 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f 5f 29  fined(__sparc__)
1a30: 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 73   && !defined(__s
1a40: 70 61 72 63 36 34 5f 5f 29 29 29 20 26 26 20 21  parc64__))) && !
1a50: 64 65 66 69 6e 65 64 28 5f 5f 47 4e 55 43 5f 5f  defined(__GNUC__
1a60: 29 20 26 26 20 64 65 66 69 6e 65 64 28 73 75 6e  ) && defined(sun
1a70: 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f  ) && !defined(__
1a80: 53 55 4e 50 52 4f 5f 43 29 20 20 2f 2a 20 73 75  SUNPRO_C)  /* su
1a90: 6e 20 63 63 20 2a 2f 0a 20 20 5f 5f 41 56 5f 46  n cc */.  __AV_F
1aa0: 4c 4f 41 54 5f 52 45 54 55 52 4e 09 09 3d 20 5f  LOAT_RETURN..= _
1ab0: 5f 41 56 5f 53 55 4e 43 43 5f 46 4c 4f 41 54 5f  _AV_SUNCC_FLOAT_
1ac0: 52 45 54 55 52 4e 2c 0a 23 65 6c 69 66 20 28 64  RETURN,.#elif (d
1ad0: 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f 5f 29  efined(__m68k__)
1ae0: 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 49   && !defined(__I
1af0: 52 45 47 5f 46 4c 4f 41 54 5f 52 45 54 55 52 4e  REG_FLOAT_RETURN
1b00: 5f 5f 29 29 0a 20 20 5f 5f 41 56 5f 46 4c 4f 41  __)).  __AV_FLOA
1b10: 54 5f 52 45 54 55 52 4e 09 09 3d 20 5f 5f 41 56  T_RETURN..= __AV
1b20: 5f 46 52 45 47 5f 46 4c 4f 41 54 5f 52 45 54 55  _FREG_FLOAT_RETU
1b30: 52 4e 2c 0a 23 65 6c 73 65 0a 20 20 5f 5f 41 56  RN,.#else.  __AV
1b40: 5f 46 4c 4f 41 54 5f 52 45 54 55 52 4e 09 09 3d  _FLOAT_RETURN..=
1b50: 20 30 2c 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69   0,.#endif.#endi
1b60: 66 0a 0a 20 20 2f 2a 20 68 6f 77 20 74 6f 20 70  f..  /* how to p
1b70: 61 73 73 20 73 74 72 75 63 74 73 20 2a 2f 0a 23  ass structs */.#
1b80: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70  if defined(__mip
1b90: 73 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  s__) || defined(
1ba0: 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 7c 7c 20  __mipsn32__) || 
1bb0: 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 36 34  defined(__mips64
1bc0: 5f 5f 29 0a 20 20 5f 5f 41 56 5f 53 47 49 43 43  __).  __AV_SGICC
1bd0: 5f 53 54 52 55 43 54 5f 41 52 47 53 09 3d 20 31  _STRUCT_ARGS.= 1
1be0: 3c 3c 37 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  <<7,.#endif.#if 
1bf0: 64 65 66 69 6e 65 64 28 5f 5f 70 6f 77 65 72 70  defined(__powerp
1c00: 63 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64  c__) && !defined
1c10: 28 5f 5f 70 6f 77 65 72 70 63 36 34 5f 5f 29 0a  (__powerpc64__).
1c20: 20 20 5f 5f 41 56 5f 41 49 58 43 43 5f 53 54 52    __AV_AIXCC_STR
1c30: 55 43 54 5f 41 52 47 53 09 3d 20 31 3c 3c 37 2c  UCT_ARGS.= 1<<7,
1c40: 0a 23 65 6e 64 69 66 0a 20 20 2f 2a 20 74 68 65  .#endif.  /* the
1c50: 20 64 65 66 61 75 6c 74 20 77 61 79 20 74 6f 20   default way to 
1c60: 70 61 73 73 20 66 6c 6f 61 74 73 20 2a 2f 0a 20  pass floats */. 
1c70: 20 2f 2a 20 54 68 69 73 20 63 68 6f 69 63 65 20   /* This choice 
1c80: 68 65 72 65 20 69 73 20 62 61 73 65 64 20 6f 6e  here is based on
1c90: 20 74 68 65 20 61 73 73 75 6d 70 74 69 6f 6e 20   the assumption 
1ca0: 74 68 61 74 20 74 68 65 20 66 75 6e 63 74 69 6f  that the functio
1cb0: 6e 20 79 6f 75 20 61 72 65 0a 20 20 20 2a 20 67  n you are.   * g
1cc0: 6f 69 6e 67 20 74 6f 20 63 61 6c 6c 20 68 61 73  oing to call has
1cd0: 20 62 65 65 6e 20 63 6f 6d 70 69 6c 65 64 20 77   been compiled w
1ce0: 69 74 68 20 74 68 65 20 73 61 6d 65 20 63 6f 6d  ith the same com
1cf0: 70 69 6c 65 72 20 79 6f 75 20 61 72 65 20 75 73  piler you are us
1d00: 69 6e 67 20 74 6f 0a 20 20 20 2a 20 69 6e 63 6c  ing to.   * incl
1d10: 75 64 65 20 74 68 69 73 20 66 69 6c 65 2e 0a 20  ude this file.. 
1d20: 20 20 2a 20 49 66 20 79 6f 75 20 77 61 6e 74 20    * If you want 
1d30: 74 6f 20 63 61 6c 6c 20 66 75 6e 63 74 69 6f 6e  to call function
1d40: 73 20 77 69 74 68 20 61 6e 6f 74 68 65 72 20 66  s with another f
1d50: 6c 6f 61 74 20 70 61 73 73 69 6e 67 20 63 6f 6e  loat passing con
1d60: 76 65 6e 74 69 6f 6e 2c 0a 20 20 20 2a 20 6a 75  vention,.   * ju
1d70: 73 74 20 20 23 64 65 66 69 6e 65 20 5f 5f 41 56  st  #define __AV
1d80: 5f 53 54 52 55 43 54 5f 41 52 47 53 20 2e 2e 2e  _STRUCT_ARGS ...
1d90: 0a 20 20 20 2a 20 62 65 66 6f 72 65 20 6f 72 20  .   * before or 
1da0: 61 66 74 65 72 20 23 69 6e 63 6c 75 64 69 6e 67  after #including
1db0: 20 3c 61 76 63 61 6c 6c 2e 68 3e 2e 0a 20 20 20   <avcall.h>..   
1dc0: 2a 2f 0a 23 69 66 6e 64 65 66 20 5f 5f 41 56 5f  */.#ifndef __AV_
1dd0: 53 54 52 55 43 54 5f 41 52 47 53 0a 23 69 66 20  STRUCT_ARGS.#if 
1de0: 28 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 5f  (defined(__mips_
1df0: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  _) || defined(__
1e00: 6d 69 70 73 6e 33 32 5f 5f 29 20 7c 7c 20 64 65  mipsn32__) || de
1e10: 66 69 6e 65 64 28 5f 5f 6d 69 70 73 36 34 5f 5f  fined(__mips64__
1e20: 29 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f  )) && !defined(_
1e30: 5f 47 4e 55 43 5f 5f 29 20 2f 2a 20 53 47 49 20  _GNUC__) /* SGI 
1e40: 6d 69 70 73 20 63 63 20 2a 2f 0a 20 20 5f 5f 41  mips cc */.  __A
1e50: 56 5f 53 54 52 55 43 54 5f 41 52 47 53 09 09 3d  V_STRUCT_ARGS..=
1e60: 20 5f 5f 41 56 5f 53 47 49 43 43 5f 53 54 52 55   __AV_SGICC_STRU
1e70: 43 54 5f 41 52 47 53 2c 0a 23 65 6c 73 65 0a 23  CT_ARGS,.#else.#
1e80: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 70 6f 77  if defined(__pow
1e90: 65 72 70 63 5f 5f 29 20 26 26 20 21 64 65 66 69  erpc__) && !defi
1ea0: 6e 65 64 28 5f 5f 70 6f 77 65 72 70 63 36 34 5f  ned(__powerpc64_
1eb0: 5f 29 20 26 26 20 64 65 66 69 6e 65 64 28 5f 41  _) && defined(_A
1ec0: 49 58 29 20 26 26 20 21 64 65 66 69 6e 65 64 28  IX) && !defined(
1ed0: 5f 5f 47 4e 55 43 5f 5f 29 20 2f 2a 20 41 49 58  __GNUC__) /* AIX
1ee0: 20 63 63 2c 20 78 6c 63 20 2a 2f 0a 20 20 5f 5f   cc, xlc */.  __
1ef0: 41 56 5f 53 54 52 55 43 54 5f 41 52 47 53 09 09  AV_STRUCT_ARGS..
1f00: 3d 20 5f 5f 41 56 5f 41 49 58 43 43 5f 53 54 52  = __AV_AIXCC_STR
1f10: 55 43 54 5f 41 52 47 53 2c 0a 23 65 6c 73 65 0a  UCT_ARGS,.#else.
1f20: 20 20 5f 5f 41 56 5f 53 54 52 55 43 54 5f 41 52    __AV_STRUCT_AR
1f30: 47 53 09 09 3d 20 30 2c 0a 23 65 6e 64 69 66 0a  GS..= 0,.#endif.
1f40: 23 65 6e 64 69 66 0a 23 65 6e 64 69 66 0a 0a 20  #endif.#endif.. 
1f50: 20 2f 2a 20 68 6f 77 20 74 6f 20 70 61 73 73 20   /* how to pass 
1f60: 66 6c 6f 61 74 73 20 2a 2f 0a 20 20 2f 2a 20 41  floats */.  /* A
1f70: 4e 53 49 20 43 20 63 6f 6d 70 69 6c 65 72 73 20  NSI C compilers 
1f80: 61 6e 64 20 47 4e 55 20 67 63 63 20 70 61 73 73  and GNU gcc pass
1f90: 20 66 6c 6f 61 74 73 20 61 73 20 66 6c 6f 61 74   floats as float
1fa0: 73 2e 0a 20 20 20 2a 20 4b 26 52 20 43 20 63 6f  s..   * K&R C co
1fb0: 6d 70 69 6c 65 72 73 20 70 61 73 73 20 66 6c 6f  mpilers pass flo
1fc0: 61 74 73 20 61 73 20 64 6f 75 62 6c 65 73 2e 20  ats as doubles. 
1fd0: 57 65 20 64 6f 6e 27 74 20 73 75 70 70 6f 72 74  We don't support
1fe0: 20 74 68 65 6d 20 61 6e 79 20 6d 6f 72 65 2e 0a   them any more..
1ff0: 20 20 20 2a 2f 0a 0a 20 20 2f 2a 20 68 6f 77 20     */..  /* how 
2000: 74 6f 20 70 61 73 73 20 61 6e 64 20 72 65 74 75  to pass and retu
2010: 72 6e 20 73 6d 61 6c 6c 20 69 6e 74 65 67 65 72  rn small integer
2020: 20 61 72 67 75 6d 65 6e 74 73 20 2a 2f 0a 20 20   arguments */.  
2030: 5f 5f 41 56 5f 41 4e 53 49 5f 49 4e 54 45 47 45  __AV_ANSI_INTEGE
2040: 52 53 09 09 3d 20 30 2c 20 2f 2a 20 6e 6f 20 70  RS..= 0, /* no p
2050: 72 6f 6d 6f 74 69 6f 6e 73 20 2a 2f 0a 20 20 5f  romotions */.  _
2060: 5f 41 56 5f 54 52 41 44 49 54 49 4f 4e 41 4c 5f  _AV_TRADITIONAL_
2070: 49 4e 54 45 47 45 52 53 09 3d 20 30 2c 20 2f 2a  INTEGERS.= 0, /*
2080: 20 70 72 6f 6d 6f 74 65 20 5b 75 5d 63 68 61 72   promote [u]char
2090: 2c 20 5b 75 5d 73 68 6f 72 74 20 74 6f 20 5b 75  , [u]short to [u
20a0: 5d 69 6e 74 20 2a 2f 0a 20 20 2f 2a 20 46 6f 72  ]int */.  /* For
20b0: 74 75 6e 61 74 65 6c 79 20 74 68 65 73 65 20 74  tunately these t
20c0: 77 6f 20 6d 65 74 68 6f 64 73 20 61 72 65 20 63  wo methods are c
20d0: 6f 6d 70 61 74 69 62 6c 65 2e 20 4f 75 72 20 6d  ompatible. Our m
20e0: 61 63 72 6f 73 20 77 6f 72 6b 20 77 69 74 68 20  acros work with 
20f0: 62 6f 74 68 2e 20 2a 2f 0a 0a 20 20 2f 2a 20 73  both. */..  /* s
2100: 74 61 63 6b 20 63 6c 65 61 6e 75 70 20 70 6f 6c  tack cleanup pol
2110: 69 63 79 20 2a 2f 0a 20 20 5f 5f 41 56 5f 43 44  icy */.  __AV_CD
2120: 45 43 4c 5f 43 4c 45 41 4e 55 50 09 09 3d 20 30  ECL_CLEANUP..= 0
2130: 2c 20 2f 2a 20 63 61 6c 6c 65 72 20 70 6f 70 73  , /* caller pops
2140: 20 61 72 67 73 20 61 66 74 65 72 20 72 65 74 75   args after retu
2150: 72 6e 20 2a 2f 0a 20 20 5f 5f 41 56 5f 53 54 44  rn */.  __AV_STD
2160: 43 41 4c 4c 5f 43 4c 45 41 4e 55 50 09 09 3d 20  CALL_CLEANUP..= 
2170: 30 2c 20 2f 2a 20 63 61 6c 6c 65 65 20 70 6f 70  0, /* callee pop
2180: 73 20 61 72 67 73 20 62 65 66 6f 72 65 20 72 65  s args before re
2190: 74 75 72 6e 20 2a 2f 0a 09 09 09 09 20 20 20 20  turn */.....    
21a0: 20 2f 2a 20 63 75 72 72 65 6e 74 6c 79 20 6f 6e   /* currently on
21b0: 6c 79 20 73 75 70 70 6f 72 74 65 64 20 6f 6e 20  ly supported on 
21c0: 5f 5f 69 33 38 36 5f 5f 20 2a 2f 0a 23 69 66 6e  __i386__ */.#ifn
21d0: 64 65 66 20 5f 5f 41 56 5f 43 4c 45 41 4e 55 50  def __AV_CLEANUP
21e0: 0a 20 20 5f 5f 41 56 5f 43 4c 45 41 4e 55 50 09  .  __AV_CLEANUP.
21f0: 09 09 3d 20 5f 5f 41 56 5f 43 44 45 43 4c 5f 43  ..= __AV_CDECL_C
2200: 4c 45 41 4e 55 50 2c 0a 23 65 6e 64 69 66 0a 0a  LEANUP,.#endif..
2210: 20 20 2f 2a 20 54 68 65 73 65 20 61 72 65 20 66    /* These are f
2220: 6f 72 20 69 6e 74 65 72 6e 61 6c 20 75 73 65 20  or internal use 
2230: 6f 6e 6c 79 20 2a 2f 0a 23 69 66 20 64 65 66 69  only */.#if defi
2240: 6e 65 64 28 5f 5f 69 33 38 36 5f 5f 29 20 7c 7c  ned(__i386__) ||
2250: 20 64 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f   defined(__m68k_
2260: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  _) || defined(__
2270: 6d 69 70 73 6e 33 32 5f 5f 29 20 7c 7c 20 64 65  mipsn32__) || de
2280: 66 69 6e 65 64 28 5f 5f 6d 69 70 73 36 34 5f 5f  fined(__mips64__
2290: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 73  ) || defined(__s
22a0: 70 61 72 63 36 34 5f 5f 29 20 7c 7c 20 64 65 66  parc64__) || def
22b0: 69 6e 65 64 28 5f 5f 61 6c 70 68 61 5f 5f 29 20  ined(__alpha__) 
22c0: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 61 72 6d  || defined(__arm
22d0: 5f 5f 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28  __) || (defined(
22e0: 5f 5f 70 6f 77 65 72 70 63 5f 5f 29 20 26 26 20  __powerpc__) && 
22f0: 21 64 65 66 69 6e 65 64 28 5f 5f 70 6f 77 65 72  !defined(__power
2300: 70 63 36 34 5f 5f 29 29 20 7c 7c 20 64 65 66 69  pc64__)) || defi
2310: 6e 65 64 28 5f 5f 63 6f 6e 76 65 78 5f 5f 29 20  ned(__convex__) 
2320: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 69 61 36  || defined(__ia6
2330: 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  4__) || defined(
2340: 5f 5f 78 38 36 5f 36 34 5f 5f 29 20 7c 7c 20 64  __x86_64__) || d
2350: 65 66 69 6e 65 64 28 5f 5f 73 33 39 30 5f 5f 29  efined(__s390__)
2360: 0a 20 20 5f 5f 41 56 5f 52 45 47 49 53 54 45 52  .  __AV_REGISTER
2370: 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 09 3d  _STRUCT_RETURN.=
2380: 20 31 3c 3c 39 2c 0a 23 65 6e 64 69 66 0a 23 69   1<<9,.#endif.#i
2390: 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73  f defined(__mips
23a0: 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 28  __) && !defined(
23b0: 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 26 26 20  __mipsn32__) && 
23c0: 21 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 36  !defined(__mips6
23d0: 34 5f 5f 29 0a 20 20 5f 5f 41 56 5f 46 4c 4f 41  4__).  __AV_FLOA
23e0: 54 5f 31 09 09 09 3d 20 31 3c 3c 31 30 2c 0a 20  T_1...= 1<<10,. 
23f0: 20 5f 5f 41 56 5f 46 4c 4f 41 54 5f 32 09 09 09   __AV_FLOAT_2...
2400: 3d 20 31 3c 3c 31 31 2c 0a 20 20 5f 5f 41 56 5f  = 1<<11,.  __AV_
2410: 44 4f 55 42 4c 45 5f 31 09 09 09 3d 20 31 3c 3c  DOUBLE_1...= 1<<
2420: 31 32 2c 0a 20 20 5f 5f 41 56 5f 44 4f 55 42 4c  12,.  __AV_DOUBL
2430: 45 5f 32 09 09 09 3d 20 31 3c 3c 31 33 2c 0a 23  E_2...= 1<<13,.#
2440: 65 6e 64 69 66 0a 0a 20 20 5f 5f 41 56 5f 66 6c  endif..  __AV_fl
2450: 61 67 5f 66 6f 72 5f 62 72 6f 6b 65 6e 5f 63 6f  ag_for_broken_co
2460: 6d 70 69 6c 65 72 73 5f 74 68 61 74 5f 64 6f 6e  mpilers_that_don
2470: 74 5f 6c 69 6b 65 5f 74 72 61 69 6c 69 6e 67 5f  t_like_trailing_
2480: 63 6f 6d 6d 61 73 0a 7d 3b 0a 0a 74 79 70 65 64  commas.};..typed
2490: 65 66 20 73 74 72 75 63 74 0a 7b 0a 20 20 2f 2a  ef struct.{.  /*
24a0: 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 62 65 20   function to be 
24b0: 63 61 6c 6c 65 64 20 2a 2f 0a 20 20 5f 5f 61 76  called */.  __av
24c0: 77 6f 72 64 09 09 28 2a 66 75 6e 63 29 28 29 3b  word..(*func)();
24d0: 0a 20 20 2f 2a 20 73 6f 6d 65 20 61 76 5f 2e 2e  .  /* some av_..
24e0: 2e 20 6d 61 63 72 6f 73 20 6e 65 65 64 20 74 68  . macros need th
24f0: 65 73 65 20 66 6c 61 67 73 20 2a 2f 0a 20 20 69  ese flags */.  i
2500: 6e 74 09 09 09 66 6c 61 67 73 3b 0a 20 20 2f 2a  nt...flags;.  /*
2510: 20 72 65 74 75 72 6e 20 74 79 70 65 2c 20 61 64   return type, ad
2520: 64 72 65 73 73 20 66 6f 72 20 74 68 65 20 72 65  dress for the re
2530: 73 75 6c 74 20 2a 2f 0a 20 20 76 6f 69 64 2a 09  sult */.  void*.
2540: 09 09 72 61 64 64 72 3b 0a 20 20 65 6e 75 6d 20  ..raddr;.  enum 
2550: 5f 5f 41 56 74 79 70 65 09 09 72 74 79 70 65 3b  __AVtype..rtype;
2560: 0a 20 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67  .  unsigned long
2570: 09 09 72 73 69 7a 65 3b 0a 20 20 2f 2a 20 63 75  ..rsize;.  /* cu
2580: 72 72 65 6e 74 20 70 6f 69 6e 74 65 72 20 69 6e  rrent pointer in
2590: 74 6f 20 74 68 65 20 61 72 67 73 5b 5d 20 61 72  to the args[] ar
25a0: 72 61 79 20 2a 2f 0a 20 20 5f 5f 61 76 77 6f 72  ray */.  __avwor
25b0: 64 2a 09 09 61 70 74 72 3b 0a 23 69 66 20 64 65  d*..aptr;.#if de
25c0: 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f 5f 29  fined(__sparc__)
25d0: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 73 70   || defined(__sp
25e0: 61 72 63 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69  arc64__) || defi
25f0: 6e 65 64 28 5f 5f 68 70 70 61 5f 5f 29 20 7c 7c  ned(__hppa__) ||
2600: 20 28 64 65 66 69 6e 65 64 28 5f 5f 70 6f 77 65   (defined(__powe
2610: 72 70 63 5f 5f 29 20 26 26 20 21 64 65 66 69 6e  rpc__) && !defin
2620: 65 64 28 5f 5f 70 6f 77 65 72 70 63 36 34 5f 5f  ed(__powerpc64__
2630: 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 41  ) && !defined(_A
2640: 49 58 29 20 26 26 20 21 28 64 65 66 69 6e 65 64  IX) && !(defined
2650: 28 5f 5f 4d 41 43 48 5f 5f 29 20 26 26 20 64 65  (__MACH__) && de
2660: 66 69 6e 65 64 28 5f 5f 41 50 50 4c 45 5f 5f 29  fined(__APPLE__)
2670: 29 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  )) || defined(__
2680: 73 33 39 30 5f 5f 29 0a 20 20 2f 2a 20 6c 69 6d  s390__).  /* lim
2690: 69 74 20 70 6f 69 6e 74 65 72 20 69 6e 74 6f 20  it pointer into 
26a0: 74 68 65 20 61 72 67 73 5b 5d 20 61 72 72 61 79  the args[] array
26b0: 20 2a 2f 0a 20 20 5f 5f 61 76 77 6f 72 64 2a 09   */.  __avword*.
26c0: 09 65 70 74 72 3b 0a 23 65 6e 64 69 66 0a 23 69  .eptr;.#endif.#i
26d0: 66 20 64 65 66 69 6e 65 64 28 5f 5f 69 33 38 36  f defined(__i386
26e0: 5f 5f 29 20 26 26 20 30 0a 20 20 2f 2a 20 46 69  __) && 0.  /* Fi
26f0: 6c 6c 65 72 20 77 6f 72 64 2c 20 6e 65 65 64 65  ller word, neede
2700: 64 20 69 66 20 74 68 65 20 6e 75 6d 62 65 72 73  d if the numbers
2710: 20 6f 66 20 77 6f 72 64 73 20 75 70 20 74 6f 20   of words up to 
2720: 6e 6f 77 20 69 6e 20 74 68 69 73 20 73 74 72 75  now in this stru
2730: 63 74 75 72 65 20 2a 2f 0a 20 20 2f 2a 20 69 73  cture */.  /* is
2740: 20 6f 64 64 20 28 62 65 63 61 75 73 65 20 6f 6e   odd (because on
2750: 20 4d 53 56 43 2c 20 61 6c 69 67 6e 6f 66 28 64   MSVC, alignof(d
2760: 6f 75 62 6c 65 29 20 3d 20 38 2c 20 6e 6f 72 6d  ouble) = 8, norm
2770: 61 6c 6c 79 20 3d 20 34 29 2e 20 20 20 20 20 20  ally = 4).      
2780: 20 20 20 20 20 20 2a 2f 0a 20 20 5f 5f 61 76 77        */.  __avw
2790: 6f 72 64 09 09 66 69 6c 6c 65 72 31 3b 0a 23 65  ord..filler1;.#e
27a0: 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64  ndif.#if defined
27b0: 28 5f 5f 69 33 38 36 5f 5f 29 20 7c 7c 20 64 65  (__i386__) || de
27c0: 66 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f 5f 29 20  fined(__m68k__) 
27d0: 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f 73 70  || (defined(__sp
27e0: 61 72 63 5f 5f 29 20 26 26 20 21 64 65 66 69 6e  arc__) && !defin
27f0: 65 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29 29  ed(__sparc64__))
2800: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 68 70   || defined(__hp
2810: 70 61 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  pa__) || defined
2820: 28 5f 5f 61 72 6d 5f 5f 29 20 7c 7c 20 28 64 65  (__arm__) || (de
2830: 66 69 6e 65 64 28 5f 5f 70 6f 77 65 72 70 63 5f  fined(__powerpc_
2840: 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f  _) && !defined(_
2850: 5f 70 6f 77 65 72 70 63 36 34 5f 5f 29 29 20 7c  _powerpc64__)) |
2860: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 63 6f 6e 76  | defined(__conv
2870: 65 78 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  ex__) || defined
2880: 28 5f 5f 73 33 39 30 5f 5f 29 0a 20 20 2f 2a 20  (__s390__).  /* 
2890: 74 65 6d 70 6f 72 61 72 79 20 73 74 6f 72 61 67  temporary storag
28a0: 65 2c 20 75 73 65 64 20 74 6f 20 73 70 6c 69 74  e, used to split
28b0: 20 64 6f 75 62 6c 65 73 20 69 6e 74 6f 20 74 77   doubles into tw
28c0: 6f 20 77 6f 72 64 73 20 2a 2f 0a 20 20 75 6e 69  o words */.  uni
28d0: 6f 6e 20 7b 0a 20 20 20 20 64 6f 75 62 6c 65 09  on {.    double.
28e0: 5f 64 6f 75 62 6c 65 3b 0a 23 69 66 20 64 65 66  _double;.#if def
28f0: 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f 5f 29 20  ined(__sparc__) 
2900: 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 73 70  && !defined(__sp
2910: 61 72 63 36 34 5f 5f 29 20 26 26 20 64 65 66 69  arc64__) && defi
2920: 6e 65 64 28 48 41 56 45 5f 4c 4f 4e 47 5f 4c 4f  ned(HAVE_LONG_LO
2930: 4e 47 5f 49 4e 54 29 0a 20 20 20 20 6c 6f 6e 67  NG_INT).    long
2940: 20 6c 6f 6e 67 09 5f 6c 6f 6e 67 6c 6f 6e 67 3b   long._longlong;
2950: 0a 23 65 6e 64 69 66 0a 20 20 20 20 5f 5f 61 76  .#endif.    __av
2960: 77 6f 72 64 09 77 6f 72 64 73 5b 32 5d 3b 0a 20  word.words[2];. 
2970: 20 7d 09 09 09 74 6d 70 3b 0a 23 65 6e 64 69 66   }...tmp;.#endif
2980: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 78  .#if defined(__x
2990: 38 36 5f 36 34 5f 5f 29 0a 20 20 2f 2a 20 73 74  86_64__).  /* st
29a0: 6f 72 65 20 74 68 65 20 69 6e 74 65 67 65 72 20  ore the integer 
29b0: 61 72 67 75 6d 65 6e 74 73 20 69 6e 20 61 6e 20  arguments in an 
29c0: 65 78 74 72 61 20 61 72 72 61 79 20 2a 2f 0a 20  extra array */. 
29d0: 20 5f 5f 61 76 77 6f 72 64 2a 09 09 69 61 70 74   __avword*..iapt
29e0: 72 3b 0a 20 20 5f 5f 61 76 77 6f 72 64 09 09 69  r;.  __avword..i
29f0: 61 72 67 73 5b 36 5d 3b 0a 23 65 6e 64 69 66 0a  args[6];.#endif.
2a00: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69  #if defined(__mi
2a10: 70 73 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65  ps__) && !define
2a20: 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 26  d(__mipsn32__) &
2a30: 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70  & !defined(__mip
2a40: 73 36 34 5f 5f 29 0a 20 20 2f 2a 20 73 74 6f 72  s64__).  /* stor
2a50: 65 20 74 68 65 20 66 6c 6f 61 74 69 6e 67 2d 70  e the floating-p
2a60: 6f 69 6e 74 20 61 72 67 75 6d 65 6e 74 73 20 69  oint arguments i
2a70: 6e 20 61 6e 20 65 78 74 72 61 20 61 72 72 61 79  n an extra array
2a80: 20 2a 2f 0a 20 20 69 6e 74 09 09 09 61 6e 75 6d   */.  int...anum
2a90: 3b 0a 20 20 66 6c 6f 61 74 09 09 09 66 6c 6f 61  ;.  float...floa
2aa0: 74 61 72 67 5b 32 5d 3b 0a 20 20 64 6f 75 62 6c  targ[2];.  doubl
2ab0: 65 09 09 64 6f 75 62 6c 65 61 72 67 5b 32 5d 3b  e..doublearg[2];
2ac0: 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69  .#endif.#if defi
2ad0: 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29  ned(__mipsn32__)
2ae0: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69   || defined(__mi
2af0: 70 73 36 34 5f 5f 29 0a 20 20 2f 2a 20 73 74 6f  ps64__).  /* sto
2b00: 72 65 20 74 68 65 20 66 6c 6f 61 74 69 6e 67 2d  re the floating-
2b10: 70 6f 69 6e 74 20 61 72 67 75 6d 65 6e 74 73 20  point arguments 
2b20: 69 6e 20 61 6e 20 65 78 74 72 61 20 61 72 72 61  in an extra arra
2b30: 79 20 2a 2f 0a 20 20 69 6e 74 09 09 09 61 6e 75  y */.  int...anu
2b40: 6d 3b 09 09 2f 2a 20 72 65 64 75 6e 64 61 6e 74  m;../* redundant
2b50: 3a 20 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20  : (LIST).aptr = 
2b60: 26 28 4c 49 53 54 29 2e 61 72 67 73 5b 28 4c 49  &(LIST).args[(LI
2b70: 53 54 29 2e 61 6e 75 6d 5d 20 2a 2f 0a 20 20 75  ST).anum] */.  u
2b80: 6e 73 69 67 6e 65 64 20 69 6e 74 09 09 66 61 72  nsigned int..far
2b90: 67 5f 6d 61 73 6b 3b 09 2f 2a 20 62 69 74 6d 61  g_mask;./* bitma
2ba0: 73 6b 20 6f 66 20 74 68 6f 73 65 20 65 6e 74 72  sk of those entr
2bb0: 69 65 73 20 69 6e 20 66 61 72 67 5b 5d 20 77 68  ies in farg[] wh
2bc0: 69 63 68 20 68 61 76 65 20 61 20 76 61 6c 75 65  ich have a value
2bd0: 20 2a 2f 0a 20 20 75 6e 73 69 67 6e 65 64 20 69   */.  unsigned i
2be0: 6e 74 09 09 64 61 72 67 5f 6d 61 73 6b 3b 09 2f  nt..darg_mask;./
2bf0: 2a 20 62 69 74 6d 61 73 6b 20 6f 66 20 74 68 6f  * bitmask of tho
2c00: 73 65 20 65 6e 74 72 69 65 73 20 69 6e 20 61 72  se entries in ar
2c10: 67 73 5b 5d 20 77 68 69 63 68 20 68 61 76 65 20  gs[] which have 
2c20: 61 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 20 2a  a double value *
2c30: 2f 0a 20 20 66 6c 6f 61 74 09 09 09 66 61 72 67  /.  float...farg
2c40: 5b 38 5d 3b 0a 23 65 6e 64 69 66 0a 23 69 66 20  [8];.#endif.#if 
2c50: 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36  defined(__sparc6
2c60: 34 5f 5f 29 0a 20 20 2f 2a 20 73 74 6f 72 65 20  4__).  /* store 
2c70: 74 68 65 20 66 6c 6f 61 74 69 6e 67 2d 70 6f 69  the floating-poi
2c80: 6e 74 20 61 72 67 75 6d 65 6e 74 73 20 69 6e 20  nt arguments in 
2c90: 61 6e 20 65 78 74 72 61 20 61 72 72 61 79 20 2a  an extra array *
2ca0: 2f 0a 20 20 69 6e 74 09 09 09 61 6e 75 6d 3b 09  /.  int...anum;.
2cb0: 09 2f 2a 20 72 65 64 75 6e 64 61 6e 74 3a 20 28  ./* redundant: (
2cc0: 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 26 28 4c  LIST).aptr = &(L
2cd0: 49 53 54 29 2e 61 72 67 73 5b 28 4c 49 53 54 29  IST).args[(LIST)
2ce0: 2e 61 6e 75 6d 5d 20 2a 2f 0a 20 20 75 6e 73 69  .anum] */.  unsi
2cf0: 67 6e 65 64 20 69 6e 74 09 09 64 61 72 67 5f 6d  gned int..darg_m
2d00: 61 73 6b 3b 09 2f 2a 20 62 69 74 6d 61 73 6b 20  ask;./* bitmask 
2d10: 6f 66 20 74 68 6f 73 65 20 65 6e 74 72 69 65 73  of those entries
2d20: 20 69 6e 20 61 72 67 73 5b 5d 20 77 68 69 63 68   in args[] which
2d30: 20 68 61 76 65 20 61 20 66 6c 6f 61 74 20 6f 72   have a float or
2d40: 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 20 2a 2f   double value */
2d50: 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69  .#endif.#if defi
2d60: 6e 65 64 28 5f 5f 69 61 36 34 5f 5f 29 20 7c 7c  ned(__ia64__) ||
2d70: 20 64 65 66 69 6e 65 64 28 5f 5f 78 38 36 5f 36   defined(__x86_6
2d80: 34 5f 5f 29 0a 20 20 2f 2a 20 73 74 6f 72 65 20  4__).  /* store 
2d90: 74 68 65 20 66 6c 6f 61 74 69 6e 67 2d 70 6f 69  the floating-poi
2da0: 6e 74 20 61 72 67 75 6d 65 6e 74 73 20 69 6e 20  nt arguments in 
2db0: 61 6e 20 65 78 74 72 61 20 61 72 72 61 79 20 2a  an extra array *
2dc0: 2f 0a 20 20 64 6f 75 62 6c 65 2a 09 09 66 61 70  /.  double*..fap
2dd0: 74 72 3b 0a 20 20 64 6f 75 62 6c 65 09 09 66 61  tr;.  double..fa
2de0: 72 67 73 5b 38 5d 3b 0a 23 65 6e 64 69 66 0a 20  rgs[8];.#endif. 
2df0: 20 5f 5f 61 76 77 6f 72 64 09 09 61 72 67 73 5b   __avword..args[
2e00: 5f 5f 41 56 5f 41 4c 49 53 54 5f 57 4f 52 44 53  __AV_ALIST_WORDS
2e10: 5d 3b 20 2f 2a 20 73 69 7a 65 6f 66 28 64 6f 75  ]; /* sizeof(dou
2e20: 62 6c 65 29 2d 61 6c 69 67 6e 65 64 20 2a 2f 0a  ble)-aligned */.
2e30: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 70 6f  #if defined(__po
2e40: 77 65 72 70 63 5f 5f 29 20 7c 7c 20 64 65 66 69  werpc__) || defi
2e50: 6e 65 64 28 5f 5f 70 6f 77 65 72 70 63 36 34 5f  ned(__powerpc64_
2e60: 5f 29 0a 20 20 2f 2a 20 73 74 6f 72 65 20 74 68  _).  /* store th
2e70: 65 20 66 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e 74  e floating-point
2e80: 20 61 72 67 75 6d 65 6e 74 73 20 69 6e 20 61 6e   arguments in an
2e90: 20 65 78 74 72 61 20 61 72 72 61 79 20 2a 2f 0a   extra array */.
2ea0: 20 20 64 6f 75 62 6c 65 2a 09 09 66 61 70 74 72    double*..faptr
2eb0: 3b 0a 20 20 64 6f 75 62 6c 65 09 09 66 61 72 67  ;.  double..farg
2ec0: 73 5b 31 33 5d 3b 0a 23 65 6e 64 69 66 0a 23 69  s[13];.#endif.#i
2ed0: 66 20 64 65 66 69 6e 65 64 28 5f 5f 73 33 39 30  f defined(__s390
2ee0: 5f 5f 29 0a 20 20 2f 2a 20 73 74 6f 72 65 20 74  __).  /* store t
2ef0: 68 65 20 66 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e  he floating-poin
2f00: 74 20 61 72 67 75 6d 65 6e 74 73 20 69 6e 20 61  t arguments in a
2f10: 6e 20 65 78 74 72 61 20 61 72 72 61 79 20 2a 2f  n extra array */
2f20: 0a 20 20 69 6e 74 20 20 20 09 09 66 61 72 67 77  .  int   ..fargw
2f30: 6f 72 64 73 3b 0a 20 20 66 6c 6f 61 74 2a 09 09  ords;.  float*..
2f40: 66 61 70 74 72 3b 0a 20 20 66 6c 6f 61 74 20 09  faptr;.  float .
2f50: 09 66 61 72 67 73 5b 32 5d 3b 0a 20 20 69 6e 74  .fargs[2];.  int
2f60: 2a 09 09 09 66 61 72 67 73 75 73 65 64 70 74 72  *...fargsusedptr
2f70: 3b 0a 20 20 69 6e 74 09 09 09 66 61 72 67 73 75  ;.  int...fargsu
2f80: 73 65 64 5b 32 5d 3b 0a 20 20 64 6f 75 62 6c 65  sed[2];.  double
2f90: 2a 09 09 64 61 70 74 72 3b 0a 20 20 64 6f 75 62  *..daptr;.  doub
2fa0: 6c 65 09 09 64 61 72 67 73 5b 32 5d 3b 0a 20 20  le..dargs[2];.  
2fb0: 69 6e 74 2a 09 09 09 64 61 72 67 73 75 73 65 64  int*...dargsused
2fc0: 70 74 72 3b 0a 20 20 69 6e 74 09 09 09 64 61 72  ptr;.  int...dar
2fd0: 67 73 75 73 65 64 5b 32 5d 3b 0a 23 65 6e 64 69  gsused[2];.#endi
2fe0: 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 41 4d  f.#if defined(AM
2ff0: 49 47 41 29 0a 20 20 2f 2a 20 73 74 6f 72 65 20  IGA).  /* store 
3000: 74 68 65 20 61 72 67 75 6d 65 6e 74 73 20 70 61  the arguments pa
3010: 73 73 65 64 20 69 6e 20 72 65 67 69 73 74 65 72  ssed in register
3020: 73 20 69 6e 20 61 6e 20 65 78 74 72 61 20 61 72  s in an extra ar
3030: 72 61 79 20 2a 2f 0a 20 20 5f 5f 61 76 77 6f 72  ray */.  __avwor
3040: 64 09 09 72 65 67 61 72 67 73 5b 38 2b 37 5d 3b  d..regargs[8+7];
3050: 0a 23 65 6e 64 69 66 0a 7d 20 61 76 5f 61 6c 69  .#endif.} av_ali
3060: 73 74 3b 0a 0a 2f 2a 20 54 68 65 20 6c 69 6d 69  st;../* The limi
3070: 74 20 66 6f 72 20 74 68 65 20 70 6f 69 6e 74 65  t for the pointe
3080: 72 20 69 6e 74 6f 20 74 68 65 20 61 72 67 73 5b  r into the args[
3090: 5d 20 61 72 72 61 79 2e 20 2a 2f 0a 23 69 66 20  ] array. */.#if 
30a0: 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f  defined(__sparc_
30b0: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  _) || defined(__
30c0: 73 70 61 72 63 36 34 5f 5f 29 20 7c 7c 20 64 65  sparc64__) || de
30d0: 66 69 6e 65 64 28 5f 5f 68 70 70 61 5f 5f 29 20  fined(__hppa__) 
30e0: 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f 70 6f  || (defined(__po
30f0: 77 65 72 70 63 5f 5f 29 20 26 26 20 21 64 65 66  werpc__) && !def
3100: 69 6e 65 64 28 5f 5f 70 6f 77 65 72 70 63 36 34  ined(__powerpc64
3110: 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 28  __) && !defined(
3120: 5f 41 49 58 29 20 26 26 20 21 28 64 65 66 69 6e  _AIX) && !(defin
3130: 65 64 28 5f 5f 4d 41 43 48 5f 5f 29 20 26 26 20  ed(__MACH__) && 
3140: 64 65 66 69 6e 65 64 28 5f 5f 41 50 50 4c 45 5f  defined(__APPLE_
3150: 5f 29 29 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  _))) || defined(
3160: 5f 5f 73 33 39 30 29 0a 23 64 65 66 69 6e 65 20  __s390).#define 
3170: 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29 09  __av_eptr(LIST).
3180: 28 28 4c 49 53 54 29 2e 65 70 74 72 29 0a 23 65  ((LIST).eptr).#e
3190: 6c 73 65 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76  lse.#define __av
31a0: 5f 65 70 74 72 28 4c 49 53 54 29 09 28 26 28 4c  _eptr(LIST).(&(L
31b0: 49 53 54 29 2e 61 72 67 73 5b 5f 5f 41 56 5f 41  IST).args[__AV_A
31c0: 4c 49 53 54 5f 57 4f 52 44 53 5d 29 0a 23 65 6e  LIST_WORDS]).#en
31d0: 64 69 66 0a 0a 2f 2a 20 44 65 6c 61 79 65 64 20  dif../* Delayed 
31e0: 6f 76 65 72 66 6c 6f 77 20 64 65 74 65 63 74 69  overflow detecti
31f0: 6f 6e 20 2a 2f 0a 23 69 66 20 64 65 66 69 6e 65  on */.#if define
3200: 64 28 5f 5f 68 70 70 61 5f 5f 29 0a 23 64 65 66  d(__hppa__).#def
3210: 69 6e 65 20 61 76 5f 6f 76 65 72 66 6c 6f 77 6e  ine av_overflown
3220: 28 4c 49 53 54 29 20 28 28 4c 49 53 54 29 2e 61  (LIST) ((LIST).a
3230: 70 74 72 20 3c 20 5f 5f 61 76 5f 65 70 74 72 28  ptr < __av_eptr(
3240: 4c 49 53 54 29 29 0a 23 65 6c 73 65 0a 23 64 65  LIST)).#else.#de
3250: 66 69 6e 65 20 61 76 5f 6f 76 65 72 66 6c 6f 77  fine av_overflow
3260: 6e 28 4c 49 53 54 29 20 28 28 4c 49 53 54 29 2e  n(LIST) ((LIST).
3270: 61 70 74 72 20 3e 20 5f 5f 61 76 5f 65 70 74 72  aptr > __av_eptr
3280: 28 4c 49 53 54 29 29 0a 23 65 6e 64 69 66 0a 0a  (LIST)).#endif..
3290: 0a 2f 2a 0a 20 2a 20 20 61 76 5f 73 74 61 72 74  ./*. *  av_start
32a0: 5f 3c 74 79 70 65 3e 20 6d 61 63 72 6f 73 20 77  _<type> macros w
32b0: 68 69 63 68 20 73 70 65 63 69 66 79 20 74 68 65  hich specify the
32c0: 20 72 65 74 75 72 6e 20 74 79 70 65 0a 20 2a 2f   return type. */
32d0: 0a 0a 23 64 65 66 69 6e 65 20 5f 5f 41 56 5f 53  ..#define __AV_S
32e0: 54 41 52 54 5f 46 4c 41 47 53 20 20 5c 0a 20 20  TART_FLAGS  \.  
32f0: 5f 5f 41 56 5f 53 54 52 55 43 54 5f 52 45 54 55  __AV_STRUCT_RETU
3300: 52 4e 20 7c 20 5f 5f 41 56 5f 46 4c 4f 41 54 5f  RN | __AV_FLOAT_
3310: 52 45 54 55 52 4e 20 7c 20 5f 5f 41 56 5f 53 54  RETURN | __AV_ST
3320: 52 55 43 54 5f 41 52 47 53 20 7c 20 5f 5f 41 56  RUCT_ARGS | __AV
3330: 5f 43 4c 45 41 4e 55 50 0a 0a 23 64 65 66 69 6e  _CLEANUP..#defin
3340: 65 20 5f 5f 61 76 5f 73 74 61 72 74 28 4c 49 53  e __av_start(LIS
3350: 54 2c 46 55 4e 43 2c 52 41 44 44 52 2c 52 45 54  T,FUNC,RADDR,RET
3360: 54 59 50 45 29 09 09 09 09 5c 0a 20 20 28 28 4c  TYPE)....\.  ((L
3370: 49 53 54 29 2e 66 75 6e 63 20 3d 20 28 5f 5f 61  IST).func = (__a
3380: 76 77 6f 72 64 28 2a 29 28 29 29 28 46 55 4e 43  vword(*)())(FUNC
3390: 29 2c 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 53  ),.....\.   (LIS
33a0: 54 29 2e 72 61 64 64 72 20 3d 20 28 76 6f 69 64  T).raddr = (void
33b0: 2a 29 28 52 41 44 44 52 29 2c 09 09 09 09 09 5c  *)(RADDR),.....\
33c0: 0a 20 20 20 28 4c 49 53 54 29 2e 72 74 79 70 65  .   (LIST).rtype
33d0: 20 3d 20 28 52 45 54 54 59 50 45 29 2c 09 09 09   = (RETTYPE),...
33e0: 09 09 09 5c 0a 20 20 20 5f 5f 61 76 5f 73 74 61  ...\.   __av_sta
33f0: 72 74 31 28 4c 49 53 54 29 09 09 09 09 09 09 09  rt1(LIST).......
3400: 5c 0a 20 20 20 28 4c 49 53 54 29 2e 66 6c 61 67  \.   (LIST).flag
3410: 73 20 3d 20 5f 5f 41 56 5f 53 54 41 52 54 5f 46  s = __AV_START_F
3420: 4c 41 47 53 29 0a 0a 23 69 66 20 64 65 66 69 6e  LAGS)..#if defin
3430: 65 64 28 5f 5f 69 33 38 36 5f 5f 29 20 7c 7c 20  ed(__i386__) || 
3440: 64 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f 5f  defined(__m68k__
3450: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 61  ) || defined(__a
3460: 6c 70 68 61 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  lpha__) || defin
3470: 65 64 28 5f 5f 61 72 6d 5f 5f 29 20 7c 7c 20 64  ed(__arm__) || d
3480: 65 66 69 6e 65 64 28 5f 5f 6d 38 38 6b 5f 5f 29  efined(__m88k__)
3490: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 63 6f   || defined(__co
34a0: 6e 76 65 78 5f 5f 29 0a 23 64 65 66 69 6e 65 20  nvex__).#define 
34b0: 5f 5f 61 76 5f 73 74 61 72 74 31 28 4c 49 53 54  __av_start1(LIST
34c0: 29 09 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 53  )......\.   (LIS
34d0: 54 29 2e 61 70 74 72 20 3d 20 26 28 4c 49 53 54  T).aptr = &(LIST
34e0: 29 2e 61 72 67 73 5b 30 5d 2c 0a 23 65 6e 64 69  ).args[0],.#endi
34f0: 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  f.#if defined(__
3500: 6d 69 70 73 5f 5f 29 20 26 26 20 21 64 65 66 69  mips__) && !defi
3510: 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29  ned(__mipsn32__)
3520: 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 6d   && !defined(__m
3530: 69 70 73 36 34 5f 5f 29 0a 23 64 65 66 69 6e 65  ips64__).#define
3540: 20 5f 5f 61 76 5f 73 74 61 72 74 31 28 4c 49 53   __av_start1(LIS
3550: 54 29 09 09 09 09 09 09 5c 0a 20 20 20 28 4c 49  T)......\.   (LI
3560: 53 54 29 2e 61 6e 75 6d 20 3d 20 30 2c 09 09 09  ST).anum = 0,...
3570: 09 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2e  ....\.   (LIST).
3580: 61 70 74 72 20 3d 20 26 28 4c 49 53 54 29 2e 61  aptr = &(LIST).a
3590: 72 67 73 5b 30 5d 2c 0a 23 65 6e 64 69 66 0a 23  rgs[0],.#endif.#
35a0: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70  if defined(__mip
35b0: 73 6e 33 32 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  sn32__) || defin
35c0: 65 64 28 5f 5f 6d 69 70 73 36 34 5f 5f 29 0a 23  ed(__mips64__).#
35d0: 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72  define __av_star
35e0: 74 31 28 4c 49 53 54 29 09 09 09 09 09 09 5c 0a  t1(LIST)......\.
35f0: 20 20 20 28 4c 49 53 54 29 2e 61 6e 75 6d 20 3d     (LIST).anum =
3600: 20 30 2c 09 09 09 09 09 09 09 5c 0a 20 20 20 28   0,.......\.   (
3610: 4c 49 53 54 29 2e 66 61 72 67 5f 6d 61 73 6b 20  LIST).farg_mask 
3620: 3d 20 30 2c 09 09 09 09 09 09 5c 0a 20 20 20 28  = 0,......\.   (
3630: 4c 49 53 54 29 2e 64 61 72 67 5f 6d 61 73 6b 20  LIST).darg_mask 
3640: 3d 20 30 2c 09 09 09 09 09 09 5c 0a 20 20 20 28  = 0,......\.   (
3650: 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 26 28 4c  LIST).aptr = &(L
3660: 49 53 54 29 2e 61 72 67 73 5b 30 5d 2c 0a 23 65  IST).args[0],.#e
3670: 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64  ndif.#if defined
3680: 28 5f 5f 73 70 61 72 63 5f 5f 29 20 26 26 20 21  (__sparc__) && !
3690: 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36  defined(__sparc6
36a0: 34 5f 5f 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61  4__).#define __a
36b0: 76 5f 73 74 61 72 74 31 28 4c 49 53 54 29 09 09  v_start1(LIST)..
36c0: 09 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2e  ....\.   (LIST).
36d0: 61 70 74 72 20 3d 20 26 28 4c 49 53 54 29 2e 61  aptr = &(LIST).a
36e0: 72 67 73 5b 30 5d 2c 09 09 09 09 09 5c 0a 20 20  rgs[0],.....\.  
36f0: 20 28 4c 49 53 54 29 2e 65 70 74 72 20 3d 20 26   (LIST).eptr = &
3700: 28 4c 49 53 54 29 2e 61 72 67 73 5b 5f 5f 41 56  (LIST).args[__AV
3710: 5f 41 4c 49 53 54 5f 57 4f 52 44 53 5d 2c 0a 23  _ALIST_WORDS],.#
3720: 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65  endif.#if define
3730: 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29 0a 23  d(__sparc64__).#
3740: 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72  define __av_star
3750: 74 31 28 4c 49 53 54 29 09 09 09 09 09 09 5c 0a  t1(LIST)......\.
3760: 20 20 20 28 4c 49 53 54 29 2e 61 6e 75 6d 20 3d     (LIST).anum =
3770: 20 30 2c 09 09 09 09 09 09 09 5c 0a 20 20 20 28   0,.......\.   (
3780: 4c 49 53 54 29 2e 64 61 72 67 5f 6d 61 73 6b 20  LIST).darg_mask 
3790: 3d 20 30 2c 09 09 09 09 09 09 5c 0a 20 20 20 28  = 0,......\.   (
37a0: 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 26 28 4c  LIST).aptr = &(L
37b0: 49 53 54 29 2e 61 72 67 73 5b 30 5d 2c 09 09 09  IST).args[0],...
37c0: 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2e 65 70  ..\.   (LIST).ep
37d0: 74 72 20 3d 20 26 28 4c 49 53 54 29 2e 61 72 67  tr = &(LIST).arg
37e0: 73 5b 5f 5f 41 56 5f 41 4c 49 53 54 5f 57 4f 52  s[__AV_ALIST_WOR
37f0: 44 53 5d 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  DS],.#endif.#if 
3800: 64 65 66 69 6e 65 64 28 5f 5f 68 70 70 61 5f 5f  defined(__hppa__
3810: 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73  ).#define __av_s
3820: 74 61 72 74 31 28 4c 49 53 54 29 09 09 09 09 09  tart1(LIST).....
3830: 09 5c 0a 20 20 20 28 4c 49 53 54 29 2e 61 70 74  .\.   (LIST).apt
3840: 72 20 3d 20 26 28 4c 49 53 54 29 2e 61 72 67 73  r = &(LIST).args
3850: 5b 5f 5f 41 56 5f 41 4c 49 53 54 5f 57 4f 52 44  [__AV_ALIST_WORD
3860: 53 5d 2c 09 09 09 5c 0a 20 20 20 28 4c 49 53 54  S],...\.   (LIST
3870: 29 2e 65 70 74 72 20 3d 20 26 28 4c 49 53 54 29  ).eptr = &(LIST)
3880: 2e 61 72 67 73 5b 30 5d 2c 0a 23 65 6e 64 69 66  .args[0],.#endif
3890: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 70  .#if defined(__p
38a0: 6f 77 65 72 70 63 5f 5f 29 20 7c 7c 20 64 65 66  owerpc__) || def
38b0: 69 6e 65 64 28 5f 5f 70 6f 77 65 72 70 63 36 34  ined(__powerpc64
38c0: 5f 5f 29 0a 23 69 66 20 64 65 66 69 6e 65 64 28  __).#if defined(
38d0: 5f 5f 70 6f 77 65 72 70 63 36 34 5f 5f 29 20 7c  __powerpc64__) |
38e0: 7c 20 64 65 66 69 6e 65 64 28 5f 41 49 58 29 20  | defined(_AIX) 
38f0: 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f 4d 41  || (defined(__MA
3900: 43 48 5f 5f 29 20 26 26 20 64 65 66 69 6e 65 64  CH__) && defined
3910: 28 5f 5f 41 50 50 4c 45 5f 5f 29 29 0a 23 64 65  (__APPLE__)).#de
3920: 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72 74 31  fine __av_start1
3930: 28 4c 49 53 54 29 09 09 09 09 09 09 5c 0a 20 20  (LIST)......\.  
3940: 20 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 26   (LIST).aptr = &
3950: 28 4c 49 53 54 29 2e 61 72 67 73 5b 30 5d 2c 09  (LIST).args[0],.
3960: 09 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2e  ....\.   (LIST).
3970: 66 61 70 74 72 20 3d 20 26 28 4c 49 53 54 29 2e  faptr = &(LIST).
3980: 66 61 72 67 73 5b 30 5d 2c 0a 23 65 6c 73 65 0a  fargs[0],.#else.
3990: 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61  #define __av_sta
39a0: 72 74 31 28 4c 49 53 54 29 09 09 09 09 09 09 5c  rt1(LIST)......\
39b0: 0a 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72 20  .   (LIST).aptr 
39c0: 3d 20 26 28 4c 49 53 54 29 2e 61 72 67 73 5b 30  = &(LIST).args[0
39d0: 5d 2c 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 53  ],.....\.   (LIS
39e0: 54 29 2e 66 61 70 74 72 20 3d 20 26 28 4c 49 53  T).faptr = &(LIS
39f0: 54 29 2e 66 61 72 67 73 5b 30 5d 2c 20 20 20 20  T).fargs[0],    
3a00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3a10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3a20: 20 5c 0a 20 20 20 28 4c 49 53 54 29 2e 65 70 74   \.   (LIST).ept
3a30: 72 20 3d 20 26 28 4c 49 53 54 29 2e 61 72 67 73  r = &(LIST).args
3a40: 5b 5f 5f 41 56 5f 41 4c 49 53 54 5f 57 4f 52 44  [__AV_ALIST_WORD
3a50: 53 5d 2c 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69  S],.#endif.#endi
3a60: 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  f.#if defined(__
3a70: 73 33 39 30 5f 5f 29 0a 23 64 65 66 69 6e 65 20  s390__).#define 
3a80: 5f 5f 61 76 5f 73 74 61 72 74 31 28 4c 49 53 54  __av_start1(LIST
3a90: 29 09 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 53  )......\.   (LIS
3aa0: 54 29 2e 61 70 74 72 20 3d 20 26 28 4c 49 53 54  T).aptr = &(LIST
3ab0: 29 2e 61 72 67 73 5b 30 5d 2c 09 09 09 09 09 5c  ).args[0],.....\
3ac0: 0a 20 20 20 28 4c 49 53 54 29 2e 66 61 72 67 77  .   (LIST).fargw
3ad0: 6f 72 64 73 20 3d 20 30 2c 09 09 09 09 09 09 5c  ords = 0,......\
3ae0: 0a 20 20 20 28 4c 49 53 54 29 2e 66 61 70 74 72  .   (LIST).faptr
3af0: 20 3d 20 26 28 4c 49 53 54 29 2e 66 61 72 67 73   = &(LIST).fargs
3b00: 5b 30 5d 2c 20 20 20 20 20 20 20 20 20 20 20 20  [0],            
3b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3b20: 20 20 20 20 20 20 20 20 20 5c 0a 20 20 20 28 4c           \.   (L
3b30: 49 53 54 29 2e 64 61 70 74 72 20 3d 20 26 28 4c  IST).daptr = &(L
3b40: 49 53 54 29 2e 64 61 72 67 73 5b 30 5d 2c 20 20  IST).dargs[0],  
3b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3b60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3b70: 20 20 20 5c 0a 20 20 20 28 4c 49 53 54 29 2e 66     \.   (LIST).f
3b80: 61 72 67 73 75 73 65 64 70 74 72 20 3d 20 26 28  argsusedptr = &(
3b90: 4c 49 53 54 29 2e 66 61 72 67 73 75 73 65 64 5b  LIST).fargsused[
3ba0: 30 5d 2c 20 20 20 20 20 20 20 20 20 20 20 20 20  0],             
3bb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 0a 20               \. 
3bc0: 20 20 28 4c 49 53 54 29 2e 64 61 72 67 73 75 73    (LIST).dargsus
3bd0: 65 64 70 74 72 20 3d 20 26 28 4c 49 53 54 29 2e  edptr = &(LIST).
3be0: 64 61 72 67 73 75 73 65 64 5b 30 5d 2c 20 20 20  dargsused[0],   
3bf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3c00: 20 20 20 20 20 20 20 5c 0a 20 20 20 28 4c 49 53         \.   (LIS
3c10: 54 29 2e 65 70 74 72 20 3d 20 26 28 4c 49 53 54  T).eptr = &(LIST
3c20: 29 2e 61 72 67 73 5b 5f 5f 41 56 5f 41 4c 49 53  ).args[__AV_ALIS
3c30: 54 5f 57 4f 52 44 53 5d 2c 0a 23 65 6e 64 69 66  T_WORDS],.#endif
3c40: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 69  .#if defined(__i
3c50: 61 36 34 5f 5f 29 0a 23 64 65 66 69 6e 65 20 5f  a64__).#define _
3c60: 5f 61 76 5f 73 74 61 72 74 31 28 4c 49 53 54 29  _av_start1(LIST)
3c70: 09 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 53 54  ......\.   (LIST
3c80: 29 2e 61 70 74 72 20 3d 20 26 28 4c 49 53 54 29  ).aptr = &(LIST)
3c90: 2e 61 72 67 73 5b 30 5d 2c 09 09 09 09 09 5c 0a  .args[0],.....\.
3ca0: 20 20 20 28 4c 49 53 54 29 2e 66 61 70 74 72 20     (LIST).faptr 
3cb0: 3d 20 26 28 4c 49 53 54 29 2e 66 61 72 67 73 5b  = &(LIST).fargs[
3cc0: 30 5d 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 64  0],.#endif.#if d
3cd0: 65 66 69 6e 65 64 28 5f 5f 78 38 36 5f 36 34 5f  efined(__x86_64_
3ce0: 5f 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f  _).#define __av_
3cf0: 73 74 61 72 74 31 28 4c 49 53 54 29 09 09 09 09  start1(LIST)....
3d00: 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2e 61 70  ..\.   (LIST).ap
3d10: 74 72 20 3d 20 26 28 4c 49 53 54 29 2e 61 72 67  tr = &(LIST).arg
3d20: 73 5b 30 5d 2c 09 09 09 09 09 5c 0a 20 20 20 28  s[0],.....\.   (
3d30: 4c 49 53 54 29 2e 69 61 70 74 72 20 3d 20 26 28  LIST).iaptr = &(
3d40: 4c 49 53 54 29 2e 69 61 72 67 73 5b 30 5d 2c 09  LIST).iargs[0],.
3d50: 09 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2e  ....\.   (LIST).
3d60: 66 61 70 74 72 20 3d 20 26 28 4c 49 53 54 29 2e  faptr = &(LIST).
3d70: 66 61 72 67 73 5b 30 5d 2c 0a 23 65 6e 64 69 66  fargs[0],.#endif
3d80: 0a 0a 23 64 65 66 69 6e 65 20 61 76 5f 73 74 61  ..#define av_sta
3d90: 72 74 5f 76 6f 69 64 28 4c 49 53 54 2c 46 55 4e  rt_void(LIST,FUN
3da0: 43 29 09 09 5f 5f 61 76 5f 73 74 61 72 74 28 4c  C)..__av_start(L
3db0: 49 53 54 2c 46 55 4e 43 2c 30 2c 20 20 20 20 5f  IST,FUNC,0,    _
3dc0: 5f 41 56 76 6f 69 64 29 0a 23 64 65 66 69 6e 65  _AVvoid).#define
3dd0: 20 61 76 5f 73 74 61 72 74 5f 63 68 61 72 28 4c   av_start_char(L
3de0: 49 53 54 2c 46 55 4e 43 2c 52 41 44 44 52 29 09  IST,FUNC,RADDR).
3df0: 09 5f 5f 61 76 5f 73 74 61 72 74 28 4c 49 53 54  .__av_start(LIST
3e00: 2c 46 55 4e 43 2c 52 41 44 44 52 2c 5f 5f 41 56  ,FUNC,RADDR,__AV
3e10: 63 68 61 72 29 0a 23 64 65 66 69 6e 65 20 61 76  char).#define av
3e20: 5f 73 74 61 72 74 5f 73 63 68 61 72 28 4c 49 53  _start_schar(LIS
3e30: 54 2c 46 55 4e 43 2c 52 41 44 44 52 29 09 09 5f  T,FUNC,RADDR).._
3e40: 5f 61 76 5f 73 74 61 72 74 28 4c 49 53 54 2c 46  _av_start(LIST,F
3e50: 55 4e 43 2c 52 41 44 44 52 2c 5f 5f 41 56 73 63  UNC,RADDR,__AVsc
3e60: 68 61 72 29 0a 23 64 65 66 69 6e 65 20 61 76 5f  har).#define av_
3e70: 73 74 61 72 74 5f 75 63 68 61 72 28 4c 49 53 54  start_uchar(LIST
3e80: 2c 46 55 4e 43 2c 52 41 44 44 52 29 09 09 5f 5f  ,FUNC,RADDR)..__
3e90: 61 76 5f 73 74 61 72 74 28 4c 49 53 54 2c 46 55  av_start(LIST,FU
3ea0: 4e 43 2c 52 41 44 44 52 2c 5f 5f 41 56 75 63 68  NC,RADDR,__AVuch
3eb0: 61 72 29 0a 23 64 65 66 69 6e 65 20 61 76 5f 73  ar).#define av_s
3ec0: 74 61 72 74 5f 73 68 6f 72 74 28 4c 49 53 54 2c  tart_short(LIST,
3ed0: 46 55 4e 43 2c 52 41 44 44 52 29 09 09 5f 5f 61  FUNC,RADDR)..__a
3ee0: 76 5f 73 74 61 72 74 28 4c 49 53 54 2c 46 55 4e  v_start(LIST,FUN
3ef0: 43 2c 52 41 44 44 52 2c 5f 5f 41 56 73 68 6f 72  C,RADDR,__AVshor
3f00: 74 29 0a 23 64 65 66 69 6e 65 20 61 76 5f 73 74  t).#define av_st
3f10: 61 72 74 5f 75 73 68 6f 72 74 28 4c 49 53 54 2c  art_ushort(LIST,
3f20: 46 55 4e 43 2c 52 41 44 44 52 29 09 5f 5f 61 76  FUNC,RADDR).__av
3f30: 5f 73 74 61 72 74 28 4c 49 53 54 2c 46 55 4e 43  _start(LIST,FUNC
3f40: 2c 52 41 44 44 52 2c 5f 5f 41 56 75 73 68 6f 72  ,RADDR,__AVushor
3f50: 74 29 0a 23 64 65 66 69 6e 65 20 61 76 5f 73 74  t).#define av_st
3f60: 61 72 74 5f 69 6e 74 28 4c 49 53 54 2c 46 55 4e  art_int(LIST,FUN
3f70: 43 2c 52 41 44 44 52 29 09 09 5f 5f 61 76 5f 73  C,RADDR)..__av_s
3f80: 74 61 72 74 28 4c 49 53 54 2c 46 55 4e 43 2c 52  tart(LIST,FUNC,R
3f90: 41 44 44 52 2c 5f 5f 41 56 69 6e 74 29 0a 23 64  ADDR,__AVint).#d
3fa0: 65 66 69 6e 65 20 61 76 5f 73 74 61 72 74 5f 75  efine av_start_u
3fb0: 69 6e 74 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41  int(LIST,FUNC,RA
3fc0: 44 44 52 29 09 09 5f 5f 61 76 5f 73 74 61 72 74  DDR)..__av_start
3fd0: 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44 44 52  (LIST,FUNC,RADDR
3fe0: 2c 5f 5f 41 56 75 69 6e 74 29 0a 23 64 65 66 69  ,__AVuint).#defi
3ff0: 6e 65 20 61 76 5f 73 74 61 72 74 5f 6c 6f 6e 67  ne av_start_long
4000: 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44 44 52  (LIST,FUNC,RADDR
4010: 29 09 09 5f 5f 61 76 5f 73 74 61 72 74 28 4c 49  )..__av_start(LI
4020: 53 54 2c 46 55 4e 43 2c 52 41 44 44 52 2c 5f 5f  ST,FUNC,RADDR,__
4030: 41 56 6c 6f 6e 67 29 0a 23 64 65 66 69 6e 65 20  AVlong).#define 
4040: 61 76 5f 73 74 61 72 74 5f 75 6c 6f 6e 67 28 4c  av_start_ulong(L
4050: 49 53 54 2c 46 55 4e 43 2c 52 41 44 44 52 29 09  IST,FUNC,RADDR).
4060: 09 5f 5f 61 76 5f 73 74 61 72 74 28 4c 49 53 54  .__av_start(LIST
4070: 2c 46 55 4e 43 2c 52 41 44 44 52 2c 5f 5f 41 56  ,FUNC,RADDR,__AV
4080: 75 6c 6f 6e 67 29 0a 23 64 65 66 69 6e 65 20 61  ulong).#define a
4090: 76 5f 73 74 61 72 74 5f 6c 6f 6e 67 6c 6f 6e 67  v_start_longlong
40a0: 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44 44 52  (LIST,FUNC,RADDR
40b0: 29 09 5f 5f 61 76 5f 73 74 61 72 74 28 4c 49 53  ).__av_start(LIS
40c0: 54 2c 46 55 4e 43 2c 52 41 44 44 52 2c 5f 5f 41  T,FUNC,RADDR,__A
40d0: 56 6c 6f 6e 67 6c 6f 6e 67 29 0a 23 64 65 66 69  Vlonglong).#defi
40e0: 6e 65 20 61 76 5f 73 74 61 72 74 5f 75 6c 6f 6e  ne av_start_ulon
40f0: 67 6c 6f 6e 67 28 4c 49 53 54 2c 46 55 4e 43 2c  glong(LIST,FUNC,
4100: 52 41 44 44 52 29 09 5f 5f 61 76 5f 73 74 61 72  RADDR).__av_star
4110: 74 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44 44  t(LIST,FUNC,RADD
4120: 52 2c 5f 5f 41 56 75 6c 6f 6e 67 6c 6f 6e 67 29  R,__AVulonglong)
4130: 0a 23 64 65 66 69 6e 65 20 61 76 5f 73 74 61 72  .#define av_star
4140: 74 5f 66 6c 6f 61 74 28 4c 49 53 54 2c 46 55 4e  t_float(LIST,FUN
4150: 43 2c 52 41 44 44 52 29 09 09 5f 5f 61 76 5f 73  C,RADDR)..__av_s
4160: 74 61 72 74 28 4c 49 53 54 2c 46 55 4e 43 2c 52  tart(LIST,FUNC,R
4170: 41 44 44 52 2c 5f 5f 41 56 66 6c 6f 61 74 29 0a  ADDR,__AVfloat).
4180: 23 64 65 66 69 6e 65 20 61 76 5f 73 74 61 72 74  #define av_start
4190: 5f 64 6f 75 62 6c 65 28 4c 49 53 54 2c 46 55 4e  _double(LIST,FUN
41a0: 43 2c 52 41 44 44 52 29 09 5f 5f 61 76 5f 73 74  C,RADDR).__av_st
41b0: 61 72 74 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41  art(LIST,FUNC,RA
41c0: 44 44 52 2c 5f 5f 41 56 64 6f 75 62 6c 65 29 0a  DDR,__AVdouble).
41d0: 23 64 65 66 69 6e 65 20 61 76 5f 73 74 61 72 74  #define av_start
41e0: 5f 70 74 72 28 4c 49 53 54 2c 46 55 4e 43 2c 54  _ptr(LIST,FUNC,T
41f0: 59 50 45 2c 52 41 44 44 52 29 09 5f 5f 61 76 5f  YPE,RADDR).__av_
4200: 73 74 61 72 74 28 4c 49 53 54 2c 46 55 4e 43 2c  start(LIST,FUNC,
4210: 52 41 44 44 52 2c 5f 5f 41 56 76 6f 69 64 70 29  RADDR,__AVvoidp)
4220: 0a 0a 23 64 65 66 69 6e 65 20 61 76 5f 73 74 61  ..#define av_sta
4230: 72 74 5f 73 74 72 75 63 74 28 4c 49 53 54 2c 46  rt_struct(LIST,F
4240: 55 4e 43 2c 54 59 50 45 2c 54 59 50 45 5f 53 50  UNC,TYPE,TYPE_SP
4250: 4c 49 54 54 41 42 4c 45 2c 52 41 44 44 52 29 09  LITTABLE,RADDR).
4260: 09 5c 0a 20 20 5f 61 76 5f 73 74 61 72 74 5f 73  .\.  _av_start_s
4270: 74 72 75 63 74 28 4c 49 53 54 2c 46 55 4e 43 2c  truct(LIST,FUNC,
4280: 73 69 7a 65 6f 66 28 54 59 50 45 29 2c 54 59 50  sizeof(TYPE),TYP
4290: 45 5f 53 50 4c 49 54 54 41 42 4c 45 2c 52 41 44  E_SPLITTABLE,RAD
42a0: 44 52 29 0a 23 64 65 66 69 6e 65 20 5f 61 76 5f  DR).#define _av_
42b0: 73 74 61 72 74 5f 73 74 72 75 63 74 28 4c 49 53  start_struct(LIS
42c0: 54 2c 46 55 4e 43 2c 54 59 50 45 5f 53 49 5a 45  T,FUNC,TYPE_SIZE
42d0: 2c 54 59 50 45 5f 53 50 4c 49 54 54 41 42 4c 45  ,TYPE_SPLITTABLE
42e0: 2c 52 41 44 44 52 29 09 5c 0a 20 20 28 5f 5f 61  ,RADDR).\.  (__a
42f0: 76 5f 73 74 61 72 74 28 4c 49 53 54 2c 46 55 4e  v_start(LIST,FUN
4300: 43 2c 52 41 44 44 52 2c 5f 5f 41 56 73 74 72 75  C,RADDR,__AVstru
4310: 63 74 29 2c 09 09 09 09 5c 0a 20 20 20 28 4c 49  ct),....\.   (LI
4320: 53 54 29 2e 72 73 69 7a 65 20 3d 20 54 59 50 45  ST).rsize = TYPE
4330: 5f 53 49 5a 45 2c 09 09 09 09 09 09 5c 0a 20 20  _SIZE,......\.  
4340: 20 5f 5f 61 76 5f 73 74 61 72 74 5f 73 74 72 75   __av_start_stru
4350: 63 74 31 28 4c 49 53 54 2c 54 59 50 45 5f 53 49  ct1(LIST,TYPE_SI
4360: 5a 45 2c 54 59 50 45 5f 53 50 4c 49 54 54 41 42  ZE,TYPE_SPLITTAB
4370: 4c 45 29 2c 09 09 09 5c 0a 20 20 20 30 29 0a 0a  LE),...\.   0)..
4380: 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61  #define __av_sta
4390: 72 74 5f 73 74 72 75 63 74 31 28 4c 49 53 54 2c  rt_struct1(LIST,
43a0: 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 53  TYPE_SIZE,TYPE_S
43b0: 50 4c 49 54 54 41 42 4c 45 29 20 20 5c 0a 20 20  PLITTABLE)  \.  
43c0: 28 28 4c 49 53 54 29 2e 66 6c 61 67 73 20 26 20  ((LIST).flags & 
43d0: 5f 5f 41 56 5f 50 43 43 5f 53 54 52 55 43 54 5f  __AV_PCC_STRUCT_
43e0: 52 45 54 55 52 4e 09 09 09 09 5c 0a 20 20 20 3f  RETURN....\.   ?
43f0: 20 2f 2a 20 70 63 63 20 73 74 72 75 63 74 20 72   /* pcc struct r
4400: 65 74 75 72 6e 20 63 6f 6e 76 65 6e 74 69 6f 6e  eturn convention
4410: 3a 09 09 09 09 09 5c 0a 20 20 20 20 20 20 2a 20  :.....\.      * 
4420: 63 61 6c 6c 65 64 20 66 75 6e 63 74 69 6f 6e 20  called function 
4430: 72 65 74 75 72 6e 73 20 70 6f 69 6e 74 65 72 20  returns pointer 
4440: 74 6f 20 76 61 6c 75 65 2c 20 77 65 27 6c 6c 20  to value, we'll 
4450: 63 6f 70 79 20 69 74 73 20 63 6f 6e 74 65 6e 74  copy its content
4460: 73 20 61 66 74 65 72 77 61 72 64 73 2e 20 5c 0a  s afterwards. \.
4470: 20 20 20 20 20 20 2a 2f 09 09 09 09 09 09 09 09        */........
4480: 5c 0a 20 20 20 20 20 30 09 09 09 09 09 09 09 09  \.     0........
4490: 09 5c 0a 20 20 20 3a 20 5f 5f 61 76 5f 73 74 61  .\.   : __av_sta
44a0: 72 74 5f 73 74 72 75 63 74 32 28 4c 49 53 54 2c  rt_struct2(LIST,
44b0: 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 53  TYPE_SIZE,TYPE_S
44c0: 50 4c 49 54 54 41 42 4c 45 29 09 09 09 5c 0a 20  PLITTABLE)...\. 
44d0: 20 29 0a 23 69 66 20 28 64 65 66 69 6e 65 64 28   ).#if (defined(
44e0: 5f 5f 73 70 61 72 63 5f 5f 29 20 26 26 20 21 64  __sparc__) && !d
44f0: 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34  efined(__sparc64
4500: 5f 5f 29 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  __)) || defined(
4510: 5f 5f 6d 38 38 6b 5f 5f 29 0a 2f 2a 20 52 65 74  __m88k__)./* Ret
4520: 75 72 6e 20 73 74 72 75 63 74 75 72 65 20 70 6f  urn structure po
4530: 69 6e 74 65 72 20 69 73 20 70 61 73 73 65 64 20  inter is passed 
4540: 69 6e 20 61 20 73 70 65 63 69 61 6c 20 72 65 67  in a special reg
4550: 69 73 74 65 72 2e 0a 20 2a 2f 0a 23 64 65 66 69  ister.. */.#defi
4560: 6e 65 20 5f 5f 61 76 5f 73 74 61 72 74 5f 73 74  ne __av_start_st
4570: 72 75 63 74 32 28 4c 49 53 54 2c 54 59 50 45 5f  ruct2(LIST,TYPE_
4580: 53 49 5a 45 2c 54 59 50 45 5f 53 50 4c 49 54 54  SIZE,TYPE_SPLITT
4590: 41 42 4c 45 29 20 20 30 0a 23 65 6c 73 65 0a 23  ABLE)  0.#else.#
45a0: 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72  define __av_star
45b0: 74 5f 73 74 72 75 63 74 32 28 4c 49 53 54 2c 54  t_struct2(LIST,T
45c0: 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 53 50  YPE_SIZE,TYPE_SP
45d0: 4c 49 54 54 41 42 4c 45 29 20 20 5c 0a 20 20 28  LITTABLE)  \.  (
45e0: 28 28 4c 49 53 54 29 2e 66 6c 61 67 73 20 26 20  ((LIST).flags & 
45f0: 5f 5f 41 56 5f 53 4d 41 4c 4c 5f 53 54 52 55 43  __AV_SMALL_STRUC
4600: 54 5f 52 45 54 55 52 4e 29 09 09 09 09 5c 0a 20  T_RETURN)....\. 
4610: 20 20 26 26 20 5f 5f 61 76 5f 72 65 67 5f 73 74    && __av_reg_st
4620: 72 75 63 74 5f 72 65 74 75 72 6e 28 4c 49 53 54  ruct_return(LIST
4630: 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f  ,TYPE_SIZE,TYPE_
4640: 53 50 4c 49 54 54 41 42 4c 45 29 09 09 5c 0a 20  SPLITTABLE)..\. 
4650: 20 20 3f 20 2f 2a 20 3c 3d 20 57 6f 72 64 2d 73    ? /* <= Word-s
4660: 69 7a 65 64 20 73 74 72 75 63 74 75 72 65 73 20  ized structures 
4670: 61 72 65 20 72 65 74 75 72 6e 65 64 20 69 6e 20  are returned in 
4680: 61 20 72 65 67 69 73 74 65 72 2e 20 2a 2f 09 09  a register. */..
4690: 5c 0a 20 20 20 20 20 5f 5f 61 76 5f 73 74 61 72  \.     __av_star
46a0: 74 5f 73 74 72 75 63 74 33 28 4c 49 53 54 29 09  t_struct3(LIST).
46b0: 09 09 09 09 09 5c 0a 20 20 20 3a 20 5f 5f 61 76  .....\.   : __av
46c0: 5f 73 74 61 72 74 5f 73 74 72 75 63 74 34 28 4c  _start_struct4(L
46d0: 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 29 09 09  IST,TYPE_SIZE)..
46e0: 09 09 09 5c 0a 20 20 29 0a 2f 2a 20 44 65 74 65  ...\.  )./* Dete
46f0: 72 6d 69 6e 65 73 20 77 68 65 74 68 65 72 20 61  rmines whether a
4700: 20 73 74 72 75 63 74 75 72 65 20 69 73 20 72 65   structure is re
4710: 74 75 72 6e 65 64 20 69 6e 20 72 65 67 69 73 74  turned in regist
4720: 65 72 73 2c 0a 20 2a 20 64 65 70 65 6e 64 69 6e  ers,. * dependin
4730: 67 20 6f 6e 20 69 74 73 20 73 69 7a 65 20 61 6e  g on its size an
4740: 64 20 69 74 73 20 77 6f 72 64 2d 73 70 6c 69 74  d its word-split
4750: 74 61 62 6c 65 20 66 6c 61 67 2e 0a 20 2a 2f 0a  table flag.. */.
4760: 23 69 66 20 28 64 65 66 69 6e 65 64 28 5f 5f 69  #if (defined(__i
4770: 33 38 36 5f 5f 29 20 26 26 20 64 65 66 69 6e 65  386__) && define
4780: 64 28 5f 57 49 4e 33 32 29 29 0a 23 64 65 66 69  d(_WIN32)).#defi
4790: 6e 65 20 5f 5f 61 76 5f 72 65 67 5f 73 74 72 75  ne __av_reg_stru
47a0: 63 74 5f 72 65 74 75 72 6e 28 4c 49 53 54 2c 54  ct_return(LIST,T
47b0: 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 53 50  YPE_SIZE,TYPE_SP
47c0: 4c 49 54 54 41 42 4c 45 29 20 20 5c 0a 20 20 28  LITTABLE)  \.  (
47d0: 28 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 31  (TYPE_SIZE) == 1
47e0: 20 7c 7c 20 28 54 59 50 45 5f 53 49 5a 45 29 20   || (TYPE_SIZE) 
47f0: 3d 3d 20 32 20 7c 7c 20 28 54 59 50 45 5f 53 49  == 2 || (TYPE_SI
4800: 5a 45 29 20 3d 3d 20 34 09 09 5c 0a 20 20 20 7c  ZE) == 4..\.   |
4810: 7c 20 28 28 54 59 50 45 5f 53 49 5a 45 29 20 3d  | ((TYPE_SIZE) =
4820: 3d 20 38 09 09 09 09 09 09 09 5c 0a 20 20 20 20  = 8.......\.    
4830: 20 20 20 26 26 20 28 28 28 4c 49 53 54 29 2e 66     && (((LIST).f
4840: 6c 61 67 73 20 26 20 5f 5f 41 56 5f 4d 53 56 43  lags & __AV_MSVC
4850: 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 29 09  _STRUCT_RETURN).
4860: 09 09 5c 0a 20 20 20 20 20 20 20 20 20 20 20 7c  ..\.           |
4870: 7c 20 28 28 54 59 50 45 5f 53 50 4c 49 54 54 41  | ((TYPE_SPLITTA
4880: 42 4c 45 29 09 09 09 09 09 5c 0a 20 20 20 20 20  BLE).....\.     
4890: 20 20 20 20 20 20 20 20 20 20 26 26 20 28 28 4c            && ((L
48a0: 49 53 54 29 2e 66 6c 61 67 73 20 26 20 5f 5f 41  IST).flags & __A
48b0: 56 5f 47 43 43 5f 53 54 52 55 43 54 5f 52 45 54  V_GCC_STRUCT_RET
48c0: 55 52 4e 29 09 09 5c 0a 20 20 29 20 20 20 29 20  URN)..\.  )   ) 
48d0: 20 20 29 20 20 20 29 0a 2f 2a 20 54 75 72 6e 20    )   )./* Turn 
48e0: 6f 6e 20 5f 5f 41 56 5f 52 45 47 49 53 54 45 52  on __AV_REGISTER
48f0: 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20 69  _STRUCT_RETURN i
4900: 66 20 5f 5f 41 56 5f 53 4d 41 4c 4c 5f 53 54 52  f __AV_SMALL_STR
4910: 55 43 54 5f 52 45 54 55 52 4e 20 77 61 73 20 73  UCT_RETURN was s
4920: 65 74 0a 20 2a 20 61 6e 64 20 74 68 65 20 73 74  et. * and the st
4930: 72 75 63 74 20 77 69 6c 6c 20 61 63 74 75 61 6c  ruct will actual
4940: 6c 79 20 62 65 20 72 65 74 75 72 6e 65 64 20 69  ly be returned i
4950: 6e 20 72 65 67 69 73 74 65 72 73 2e 0a 20 2a 2f  n registers.. */
4960: 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74  .#define __av_st
4970: 61 72 74 5f 73 74 72 75 63 74 33 28 4c 49 53 54  art_struct3(LIST
4980: 29 20 20 5c 0a 20 20 28 28 4c 49 53 54 29 2e 66  )  \.  ((LIST).f
4990: 6c 61 67 73 20 7c 3d 20 5f 5f 41 56 5f 52 45 47  lags |= __AV_REG
49a0: 49 53 54 45 52 5f 53 54 52 55 43 54 5f 52 45 54  ISTER_STRUCT_RET
49b0: 55 52 4e 2c 20 30 29 0a 23 65 6e 64 69 66 0a 23  URN, 0).#endif.#
49c0: 69 66 20 28 64 65 66 69 6e 65 64 28 5f 5f 69 33  if (defined(__i3
49d0: 38 36 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65  86__) && !define
49e0: 64 28 5f 57 49 4e 33 32 29 29 20 7c 7c 20 64 65  d(_WIN32)) || de
49f0: 66 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f 5f 29 20  fined(__m68k__) 
4a00: 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f 61 72  || (defined(__ar
4a10: 6d 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64  m__) && !defined
4a20: 28 5f 5f 41 52 4d 45 4c 5f 5f 29 29 20 7c 7c 20  (__ARMEL__)) || 
4a30: 28 64 65 66 69 6e 65 64 28 5f 5f 70 6f 77 65 72  (defined(__power
4a40: 70 63 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65  pc__) && !define
4a50: 64 28 5f 5f 70 6f 77 65 72 70 63 36 34 5f 5f 29  d(__powerpc64__)
4a60: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 63  ) || defined(__c
4a70: 6f 6e 76 65 78 5f 5f 29 20 7c 7c 20 64 65 66 69  onvex__) || defi
4a80: 6e 65 64 28 5f 5f 73 33 39 30 5f 5f 29 0a 23 64  ned(__s390__).#d
4a90: 65 66 69 6e 65 20 5f 5f 61 76 5f 72 65 67 5f 73  efine __av_reg_s
4aa0: 74 72 75 63 74 5f 72 65 74 75 72 6e 28 4c 49 53  truct_return(LIS
4ab0: 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45  T,TYPE_SIZE,TYPE
4ac0: 5f 53 50 4c 49 54 54 41 42 4c 45 29 20 20 5c 0a  _SPLITTABLE)  \.
4ad0: 20 20 28 28 54 59 50 45 5f 53 49 5a 45 29 20 3d    ((TYPE_SIZE) =
4ae0: 3d 20 31 20 7c 7c 20 28 54 59 50 45 5f 53 49 5a  = 1 || (TYPE_SIZ
4af0: 45 29 20 3d 3d 20 32 20 7c 7c 20 28 54 59 50 45  E) == 2 || (TYPE
4b00: 5f 53 49 5a 45 29 20 3d 3d 20 34 09 09 5c 0a 20  _SIZE) == 4..\. 
4b10: 20 20 7c 7c 20 28 28 54 59 50 45 5f 53 49 5a 45    || ((TYPE_SIZE
4b20: 29 20 3d 3d 20 38 20 26 26 20 28 54 59 50 45 5f  ) == 8 && (TYPE_
4b30: 53 50 4c 49 54 54 41 42 4c 45 29 09 09 09 09 5c  SPLITTABLE)....\
4b40: 0a 20 20 20 20 20 20 20 26 26 20 28 28 4c 49 53  .       && ((LIS
4b50: 54 29 2e 66 6c 61 67 73 20 26 20 5f 5f 41 56 5f  T).flags & __AV_
4b60: 47 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52  GCC_STRUCT_RETUR
4b70: 4e 29 09 09 09 5c 0a 20 20 29 20 20 20 29 0a 2f  N)...\.  )   )./
4b80: 2a 20 54 75 72 6e 20 6f 6e 20 5f 5f 41 56 5f 52  * Turn on __AV_R
4b90: 45 47 49 53 54 45 52 5f 53 54 52 55 43 54 5f 52  EGISTER_STRUCT_R
4ba0: 45 54 55 52 4e 20 69 66 20 5f 5f 41 56 5f 53 4d  ETURN if __AV_SM
4bb0: 41 4c 4c 5f 53 54 52 55 43 54 5f 52 45 54 55 52  ALL_STRUCT_RETUR
4bc0: 4e 20 77 61 73 20 73 65 74 0a 20 2a 20 61 6e 64  N was set. * and
4bd0: 20 74 68 65 20 73 74 72 75 63 74 20 77 69 6c 6c   the struct will
4be0: 20 61 63 74 75 61 6c 6c 79 20 62 65 20 72 65 74   actually be ret
4bf0: 75 72 6e 65 64 20 69 6e 20 72 65 67 69 73 74 65  urned in registe
4c00: 72 73 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20  rs.. */.#define 
4c10: 5f 5f 61 76 5f 73 74 61 72 74 5f 73 74 72 75 63  __av_start_struc
4c20: 74 33 28 4c 49 53 54 29 20 20 5c 0a 20 20 28 28  t3(LIST)  \.  ((
4c30: 4c 49 53 54 29 2e 66 6c 61 67 73 20 7c 3d 20 5f  LIST).flags |= _
4c40: 5f 41 56 5f 52 45 47 49 53 54 45 52 5f 53 54 52  _AV_REGISTER_STR
4c50: 55 43 54 5f 52 45 54 55 52 4e 2c 20 30 29 0a 23  UCT_RETURN, 0).#
4c60: 65 6e 64 69 66 0a 0a 23 69 66 20 64 65 66 69 6e  endif..#if defin
4c70: 65 64 28 5f 5f 41 52 4d 45 4c 5f 5f 29 0a 23 64  ed(__ARMEL__).#d
4c80: 65 66 69 6e 65 20 5f 5f 61 76 5f 72 65 67 5f 73  efine __av_reg_s
4c90: 74 72 75 63 74 5f 72 65 74 75 72 6e 28 4c 49 53  truct_return(LIS
4ca0: 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45  T,TYPE_SIZE,TYPE
4cb0: 5f 53 50 4c 49 54 54 41 42 4c 45 29 20 20 5c 0a  _SPLITTABLE)  \.
4cc0: 20 20 20 20 28 28 54 59 50 45 5f 53 49 5a 45 29      ((TYPE_SIZE)
4cd0: 20 3c 3d 20 34 29 0a 23 64 65 66 69 6e 65 20 5f   <= 4).#define _
4ce0: 5f 61 76 5f 73 74 61 72 74 5f 73 74 72 75 63 74  _av_start_struct
4cf0: 33 28 4c 49 53 54 29 20 20 5c 0a 20 20 28 28 4c  3(LIST)  \.  ((L
4d00: 49 53 54 29 2e 66 6c 61 67 73 20 7c 3d 20 5f 5f  IST).flags |= __
4d10: 41 56 5f 52 45 47 49 53 54 45 52 5f 53 54 52 55  AV_REGISTER_STRU
4d20: 43 54 5f 52 45 54 55 52 4e 2c 20 30 29 0a 23 65  CT_RETURN, 0).#e
4d30: 6e 64 69 66 0a 0a 23 69 66 20 64 65 66 69 6e 65  ndif..#if define
4d40: 64 28 5f 5f 61 6c 70 68 61 5f 5f 29 0a 23 64 65  d(__alpha__).#de
4d50: 66 69 6e 65 20 5f 5f 61 76 5f 72 65 67 5f 73 74  fine __av_reg_st
4d60: 72 75 63 74 5f 72 65 74 75 72 6e 28 4c 49 53 54  ruct_return(LIST
4d70: 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f  ,TYPE_SIZE,TYPE_
4d80: 53 50 4c 49 54 54 41 42 4c 45 29 20 20 5c 0a 20  SPLITTABLE)  \. 
4d90: 20 28 28 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d   ((TYPE_SIZE) ==
4da0: 20 31 20 7c 7c 20 28 54 59 50 45 5f 53 49 5a 45   1 || (TYPE_SIZE
4db0: 29 20 3d 3d 20 32 20 7c 7c 20 28 54 59 50 45 5f  ) == 2 || (TYPE_
4dc0: 53 49 5a 45 29 20 3d 3d 20 34 20 7c 7c 20 28 54  SIZE) == 4 || (T
4dd0: 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 38 09 5c  YPE_SIZE) == 8.\
4de0: 0a 20 20 20 7c 7c 20 28 28 54 59 50 45 5f 53 49  .   || ((TYPE_SI
4df0: 5a 45 29 20 3d 3d 20 31 36 20 26 26 20 28 54 59  ZE) == 16 && (TY
4e00: 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 09 09  PE_SPLITTABLE)..
4e10: 09 09 5c 0a 20 20 20 20 20 20 20 26 26 20 28 28  ..\.       && ((
4e20: 4c 49 53 54 29 2e 66 6c 61 67 73 20 26 20 5f 5f  LIST).flags & __
4e30: 41 56 5f 47 43 43 5f 53 54 52 55 43 54 5f 52 45  AV_GCC_STRUCT_RE
4e40: 54 55 52 4e 29 09 09 09 5c 0a 20 20 29 20 20 20  TURN)...\.  )   
4e50: 29 0a 2f 2a 20 54 75 72 6e 20 6f 6e 20 5f 5f 41  )./* Turn on __A
4e60: 56 5f 52 45 47 49 53 54 45 52 5f 53 54 52 55 43  V_REGISTER_STRUC
4e70: 54 5f 52 45 54 55 52 4e 20 69 66 20 5f 5f 41 56  T_RETURN if __AV
4e80: 5f 53 4d 41 4c 4c 5f 53 54 52 55 43 54 5f 52 45  _SMALL_STRUCT_RE
4e90: 54 55 52 4e 20 77 61 73 20 73 65 74 0a 20 2a 20  TURN was set. * 
4ea0: 61 6e 64 20 74 68 65 20 73 74 72 75 63 74 20 77  and the struct w
4eb0: 69 6c 6c 20 61 63 74 75 61 6c 6c 79 20 62 65 20  ill actually be 
4ec0: 72 65 74 75 72 6e 65 64 20 69 6e 20 72 65 67 69  returned in regi
4ed0: 73 74 65 72 73 2e 0a 20 2a 2f 0a 23 64 65 66 69  sters.. */.#defi
4ee0: 6e 65 20 5f 5f 61 76 5f 73 74 61 72 74 5f 73 74  ne __av_start_st
4ef0: 72 75 63 74 33 28 4c 49 53 54 29 20 20 5c 0a 20  ruct3(LIST)  \. 
4f00: 20 28 28 4c 49 53 54 29 2e 66 6c 61 67 73 20 7c   ((LIST).flags |
4f10: 3d 20 5f 5f 41 56 5f 52 45 47 49 53 54 45 52 5f  = __AV_REGISTER_
4f20: 53 54 52 55 43 54 5f 52 45 54 55 52 4e 2c 20 30  STRUCT_RETURN, 0
4f30: 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66  ).#endif.#if def
4f40: 69 6e 65 64 28 5f 5f 68 70 70 61 5f 5f 29 0a 23  ined(__hppa__).#
4f50: 64 65 66 69 6e 65 20 5f 5f 61 76 5f 72 65 67 5f  define __av_reg_
4f60: 73 74 72 75 63 74 5f 72 65 74 75 72 6e 28 4c 49  struct_return(LI
4f70: 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50  ST,TYPE_SIZE,TYP
4f80: 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 20 20 5c  E_SPLITTABLE)  \
4f90: 0a 20 20 28 28 4c 49 53 54 29 2e 66 6c 61 67 73  .  ((LIST).flags
4fa0: 20 26 20 5f 5f 41 56 5f 4f 4c 44 47 43 43 5f 53   & __AV_OLDGCC_S
4fb0: 54 52 55 43 54 5f 52 45 54 55 52 4e 09 09 09 09  TRUCT_RETURN....
4fc0: 5c 0a 20 20 20 3f 20 28 28 54 59 50 45 5f 53 49  \.   ? ((TYPE_SI
4fd0: 5a 45 29 20 3d 3d 20 31 20 7c 7c 20 28 54 59 50  ZE) == 1 || (TYP
4fe0: 45 5f 53 49 5a 45 29 20 3d 3d 20 32 20 7c 7c 20  E_SIZE) == 2 || 
4ff0: 28 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 34  (TYPE_SIZE) == 4
5000: 29 09 09 5c 0a 20 20 20 3a 20 28 28 54 59 50 45  )..\.   : ((TYPE
5010: 5f 53 49 5a 45 29 20 3c 3d 20 38 29 09 09 09 09  _SIZE) <= 8)....
5020: 09 09 09 5c 0a 20 20 29 0a 2f 2a 20 54 65 73 74  ...\.  )./* Test
5030: 20 62 6f 74 68 20 5f 5f 41 56 5f 4f 4c 44 47 43   both __AV_OLDGC
5040: 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20  C_STRUCT_RETURN 
5050: 61 6e 64 20 5f 5f 41 56 5f 53 4d 41 4c 4c 5f 53  and __AV_SMALL_S
5060: 54 52 55 43 54 5f 52 45 54 55 52 4e 20 61 74 20  TRUCT_RETURN at 
5070: 72 75 6e 20 74 69 6d 65 2e 20 2a 2f 0a 23 64 65  run time. */.#de
5080: 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72 74 5f  fine __av_start_
5090: 73 74 72 75 63 74 33 28 4c 49 53 54 29 20 20 5c  struct3(LIST)  \
50a0: 0a 20 20 30 0a 23 65 6e 64 69 66 0a 23 69 66 20  .  0.#endif.#if 
50b0: 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 5f 5f  defined(__mips__
50c0: 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f  ) && !defined(__
50d0: 6d 69 70 73 6e 33 32 5f 5f 29 20 26 26 20 21 64  mipsn32__) && !d
50e0: 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 36 34 5f  efined(__mips64_
50f0: 5f 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f  _).#define __av_
5100: 72 65 67 5f 73 74 72 75 63 74 5f 72 65 74 75 72  reg_struct_retur
5110: 6e 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45  n(LIST,TYPE_SIZE
5120: 2c 54 59 50 45 5f 53 50 4c 49 54 54 41 42 4c 45  ,TYPE_SPLITTABLE
5130: 29 20 20 5c 0a 20 20 28 28 54 59 50 45 5f 53 49  )  \.  ((TYPE_SI
5140: 5a 45 29 20 3d 3d 20 31 20 7c 7c 20 28 54 59 50  ZE) == 1 || (TYP
5150: 45 5f 53 49 5a 45 29 20 3d 3d 20 32 20 7c 7c 20  E_SIZE) == 2 || 
5160: 28 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 34  (TYPE_SIZE) == 4
5170: 29 0a 2f 2a 20 54 65 73 74 20 5f 5f 41 56 5f 53  )./* Test __AV_S
5180: 4d 41 4c 4c 5f 53 54 52 55 43 54 5f 52 45 54 55  MALL_STRUCT_RETU
5190: 52 4e 20 69 6e 73 74 65 61 64 20 6f 66 20 5f 5f  RN instead of __
51a0: 41 56 5f 52 45 47 49 53 54 45 52 5f 53 54 52 55  AV_REGISTER_STRU
51b0: 43 54 5f 52 45 54 55 52 4e 2e 20 2a 2f 0a 23 64  CT_RETURN. */.#d
51c0: 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72 74  efine __av_start
51d0: 5f 73 74 72 75 63 74 33 28 4c 49 53 54 29 20 20  _struct3(LIST)  
51e0: 5c 0a 20 20 30 0a 23 65 6e 64 69 66 0a 23 69 66  \.  0.#endif.#if
51f0: 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e   defined(__mipsn
5200: 33 32 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  32__) || defined
5210: 28 5f 5f 6d 69 70 73 36 34 5f 5f 29 0a 23 64 65  (__mips64__).#de
5220: 66 69 6e 65 20 5f 5f 61 76 5f 72 65 67 5f 73 74  fine __av_reg_st
5230: 72 75 63 74 5f 72 65 74 75 72 6e 28 4c 49 53 54  ruct_return(LIST
5240: 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f  ,TYPE_SIZE,TYPE_
5250: 53 50 4c 49 54 54 41 42 4c 45 29 20 20 5c 0a 20  SPLITTABLE)  \. 
5260: 20 28 28 4c 49 53 54 29 2e 66 6c 61 67 73 20 26   ((LIST).flags &
5270: 20 5f 5f 41 56 5f 47 43 43 5f 53 54 52 55 43 54   __AV_GCC_STRUCT
5280: 5f 52 45 54 55 52 4e 09 09 09 09 5c 0a 20 20 20  _RETURN....\.   
5290: 3f 20 28 28 54 59 50 45 5f 53 49 5a 45 29 20 3d  ? ((TYPE_SIZE) =
52a0: 3d 20 31 20 7c 7c 20 28 54 59 50 45 5f 53 49 5a  = 1 || (TYPE_SIZ
52b0: 45 29 20 3d 3d 20 32 20 7c 7c 20 28 54 59 50 45  E) == 2 || (TYPE
52c0: 5f 53 49 5a 45 29 20 3d 3d 20 34 20 7c 7c 20 28  _SIZE) == 4 || (
52d0: 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 38 29  TYPE_SIZE) == 8)
52e0: 20 5c 0a 20 20 20 3a 20 28 28 54 59 50 45 5f 53   \.   : ((TYPE_S
52f0: 49 5a 45 29 20 3c 3d 20 31 36 29 09 09 09 09 09  IZE) <= 16).....
5300: 09 5c 0a 20 20 29 0a 2f 2a 20 54 75 72 6e 20 6f  .\.  )./* Turn o
5310: 6e 20 5f 5f 41 56 5f 52 45 47 49 53 54 45 52 5f  n __AV_REGISTER_
5320: 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20 69 66  STRUCT_RETURN if
5330: 20 5f 5f 41 56 5f 53 4d 41 4c 4c 5f 53 54 52 55   __AV_SMALL_STRU
5340: 43 54 5f 52 45 54 55 52 4e 20 77 61 73 20 73 65  CT_RETURN was se
5350: 74 0a 20 2a 20 61 6e 64 20 74 68 65 20 73 74 72  t. * and the str
5360: 75 63 74 20 77 69 6c 6c 20 61 63 74 75 61 6c 6c  uct will actuall
5370: 79 20 62 65 20 72 65 74 75 72 6e 65 64 20 69 6e  y be returned in
5380: 20 72 65 67 69 73 74 65 72 73 2e 0a 20 2a 2f 0a   registers.. */.
5390: 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61  #define __av_sta
53a0: 72 74 5f 73 74 72 75 63 74 33 28 4c 49 53 54 29  rt_struct3(LIST)
53b0: 20 20 5c 0a 20 20 28 28 4c 49 53 54 29 2e 66 6c    \.  ((LIST).fl
53c0: 61 67 73 20 7c 3d 20 5f 5f 41 56 5f 52 45 47 49  ags |= __AV_REGI
53d0: 53 54 45 52 5f 53 54 52 55 43 54 5f 52 45 54 55  STER_STRUCT_RETU
53e0: 52 4e 2c 20 30 29 0a 23 65 6e 64 69 66 0a 23 69  RN, 0).#endif.#i
53f0: 66 20 64 65 66 69 6e 65 64 28 5f 5f 70 6f 77 65  f defined(__powe
5400: 72 70 63 36 34 5f 5f 29 0a 23 64 65 66 69 6e 65  rpc64__).#define
5410: 20 5f 5f 61 76 5f 72 65 67 5f 73 74 72 75 63 74   __av_reg_struct
5420: 5f 72 65 74 75 72 6e 28 4c 49 53 54 2c 54 59 50  _return(LIST,TYP
5430: 45 5f 53 49 5a 45 2c 54 59 50 45 5f 53 50 4c 49  E_SIZE,TYPE_SPLI
5440: 54 54 41 42 4c 45 29 20 20 5c 0a 20 20 30 0a 23  TTABLE)  \.  0.#
5450: 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72  define __av_star
5460: 74 5f 73 74 72 75 63 74 33 28 4c 49 53 54 29 20  t_struct3(LIST) 
5470: 20 5c 0a 20 20 30 0a 23 65 6e 64 69 66 0a 23 69   \.  0.#endif.#i
5480: 66 20 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72  f defined(__spar
5490: 63 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65  c64__) || define
54a0: 64 28 5f 5f 69 61 36 34 5f 5f 29 0a 23 64 65 66  d(__ia64__).#def
54b0: 69 6e 65 20 5f 5f 61 76 5f 72 65 67 5f 73 74 72  ine __av_reg_str
54c0: 75 63 74 5f 72 65 74 75 72 6e 28 4c 49 53 54 2c  uct_return(LIST,
54d0: 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 53  TYPE_SIZE,TYPE_S
54e0: 50 4c 49 54 54 41 42 4c 45 29 20 20 5c 0a 20 20  PLITTABLE)  \.  
54f0: 28 28 54 59 50 45 5f 53 49 5a 45 29 20 3c 3d 20  ((TYPE_SIZE) <= 
5500: 33 32 29 0a 2f 2a 20 54 75 72 6e 20 6f 6e 20 5f  32)./* Turn on _
5510: 5f 41 56 5f 52 45 47 49 53 54 45 52 5f 53 54 52  _AV_REGISTER_STR
5520: 55 43 54 5f 52 45 54 55 52 4e 20 69 66 20 5f 5f  UCT_RETURN if __
5530: 41 56 5f 53 4d 41 4c 4c 5f 53 54 52 55 43 54 5f  AV_SMALL_STRUCT_
5540: 52 45 54 55 52 4e 20 77 61 73 20 73 65 74 0a 20  RETURN was set. 
5550: 2a 20 61 6e 64 20 74 68 65 20 73 74 72 75 63 74  * and the struct
5560: 20 77 69 6c 6c 20 61 63 74 75 61 6c 6c 79 20 62   will actually b
5570: 65 20 72 65 74 75 72 6e 65 64 20 69 6e 20 72 65  e returned in re
5580: 67 69 73 74 65 72 73 2e 0a 20 2a 2f 0a 23 64 65  gisters.. */.#de
5590: 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72 74 5f  fine __av_start_
55a0: 73 74 72 75 63 74 33 28 4c 49 53 54 29 20 20 5c  struct3(LIST)  \
55b0: 0a 20 20 28 28 4c 49 53 54 29 2e 66 6c 61 67 73  .  ((LIST).flags
55c0: 20 7c 3d 20 5f 5f 41 56 5f 52 45 47 49 53 54 45   |= __AV_REGISTE
55d0: 52 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 2c  R_STRUCT_RETURN,
55e0: 20 30 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64   0).#endif.#if d
55f0: 65 66 69 6e 65 64 28 5f 5f 78 38 36 5f 36 34 5f  efined(__x86_64_
5600: 5f 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f  _).#define __av_
5610: 72 65 67 5f 73 74 72 75 63 74 5f 72 65 74 75 72  reg_struct_retur
5620: 6e 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45  n(LIST,TYPE_SIZE
5630: 2c 54 59 50 45 5f 53 50 4c 49 54 54 41 42 4c 45  ,TYPE_SPLITTABLE
5640: 29 20 20 5c 0a 20 20 28 28 54 59 50 45 5f 53 49  )  \.  ((TYPE_SI
5650: 5a 45 29 20 3c 3d 20 31 36 29 0a 2f 2a 20 54 75  ZE) <= 16)./* Tu
5660: 72 6e 20 6f 6e 20 5f 5f 41 56 5f 52 45 47 49 53  rn on __AV_REGIS
5670: 54 45 52 5f 53 54 52 55 43 54 5f 52 45 54 55 52  TER_STRUCT_RETUR
5680: 4e 20 69 66 20 5f 5f 41 56 5f 53 4d 41 4c 4c 5f  N if __AV_SMALL_
5690: 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20 77 61  STRUCT_RETURN wa
56a0: 73 20 73 65 74 0a 20 2a 20 61 6e 64 20 74 68 65  s set. * and the
56b0: 20 73 74 72 75 63 74 20 77 69 6c 6c 20 61 63 74   struct will act
56c0: 75 61 6c 6c 79 20 62 65 20 72 65 74 75 72 6e 65  ually be returne
56d0: 64 20 69 6e 20 72 65 67 69 73 74 65 72 73 2e 0a  d in registers..
56e0: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76   */.#define __av
56f0: 5f 73 74 61 72 74 5f 73 74 72 75 63 74 33 28 4c  _start_struct3(L
5700: 49 53 54 29 20 20 5c 0a 20 20 28 28 4c 49 53 54  IST)  \.  ((LIST
5710: 29 2e 66 6c 61 67 73 20 7c 3d 20 5f 5f 41 56 5f  ).flags |= __AV_
5720: 52 45 47 49 53 54 45 52 5f 53 54 52 55 43 54 5f  REGISTER_STRUCT_
5730: 52 45 54 55 52 4e 2c 20 30 29 0a 23 65 6e 64 69  RETURN, 0).#endi
5740: 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  f.#if defined(__
5750: 69 33 38 36 5f 5f 29 0a 2f 2a 20 52 65 74 75 72  i386__)./* Retur
5760: 6e 20 73 74 72 75 63 74 75 72 65 20 70 6f 69 6e  n structure poin
5770: 74 65 72 20 69 73 20 70 61 73 73 65 64 20 69 6e  ter is passed in
5780: 20 61 20 73 70 65 63 69 61 6c 20 72 65 67 69 73   a special regis
5790: 74 65 72 20 6f 72 20 61 73 20 66 69 72 73 74 20  ter or as first 
57a0: 61 72 67 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 20  arg. */.#define 
57b0: 5f 5f 61 76 5f 73 74 61 72 74 5f 73 74 72 75 63  __av_start_struc
57c0: 74 34 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a  t4(LIST,TYPE_SIZ
57d0: 45 29 09 09 09 09 5c 0a 20 20 28 28 4c 49 53 54  E)....\.  ((LIST
57e0: 29 2e 66 6c 61 67 73 20 26 20 5f 5f 41 56 5f 4e  ).flags & __AV_N
57f0: 45 58 54 47 43 43 5f 53 54 52 55 43 54 5f 52 45  EXTGCC_STRUCT_RE
5800: 54 55 52 4e 09 09 09 09 5c 0a 20 20 20 3f 20 30  TURN....\.   ? 0
5810: 09 09 09 09 09 09 20 2f 2a 20 73 70 65 63 69 61  ...... /* specia
5820: 6c 20 72 65 67 69 73 74 65 72 20 2a 2f 09 5c 0a  l register */.\.
5830: 20 20 20 3a 20 28 2a 28 4c 49 53 54 29 2e 61 70     : (*(LIST).ap
5840: 74 72 2b 2b 20 3d 20 28 5f 5f 61 76 77 6f 72 64  tr++ = (__avword
5850: 29 28 28 4c 49 53 54 29 2e 72 61 64 64 72 29 2c  )((LIST).raddr),
5860: 20 30 29 09 2f 2a 20 66 69 72 73 74 20 61 72 67   0)./* first arg
5870: 20 2a 2f 09 5c 0a 20 20 29 0a 23 65 6e 64 69 66   */.\.  ).#endif
5880: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d  .#if defined(__m
5890: 36 38 6b 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65  68k__) || define
58a0: 64 28 5f 5f 68 70 70 61 5f 5f 29 20 7c 7c 20 64  d(__hppa__) || d
58b0: 65 66 69 6e 65 64 28 5f 5f 69 61 36 34 5f 5f 29  efined(__ia64__)
58c0: 0a 2f 2a 20 52 65 74 75 72 6e 20 73 74 72 75 63  ./* Return struc
58d0: 74 75 72 65 20 70 6f 69 6e 74 65 72 20 69 73 20  ture pointer is 
58e0: 70 61 73 73 65 64 20 69 6e 20 61 20 73 70 65 63  passed in a spec
58f0: 69 61 6c 20 72 65 67 69 73 74 65 72 2e 0a 20 2a  ial register.. *
5900: 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73  /.#define __av_s
5910: 74 61 72 74 5f 73 74 72 75 63 74 34 28 4c 49 53  tart_struct4(LIS
5920: 54 2c 54 59 50 45 5f 53 49 5a 45 29 20 20 30 0a  T,TYPE_SIZE)  0.
5930: 23 65 6e 64 69 66 0a 2f 2a 20 52 65 74 75 72 6e  #endif./* Return
5940: 20 73 74 72 75 63 74 75 72 65 20 70 6f 69 6e 74   structure point
5950: 65 72 20 69 73 20 70 61 73 73 65 64 20 61 73 20  er is passed as 
5960: 66 69 72 73 74 20 61 72 67 2e 0a 20 2a 2f 0a 23  first arg.. */.#
5970: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 61 6c 70  if defined(__alp
5980: 68 61 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  ha__) || defined
5990: 28 5f 5f 61 72 6d 5f 5f 29 20 7c 7c 20 64 65 66  (__arm__) || def
59a0: 69 6e 65 64 28 5f 5f 70 6f 77 65 72 70 63 5f 5f  ined(__powerpc__
59b0: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 70  ) || defined(__p
59c0: 6f 77 65 72 70 63 36 34 5f 5f 29 20 7c 7c 20 64  owerpc64__) || d
59d0: 65 66 69 6e 65 64 28 5f 5f 63 6f 6e 76 65 78 5f  efined(__convex_
59e0: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  _) || defined(__
59f0: 73 33 39 30 5f 5f 29 0a 23 64 65 66 69 6e 65 20  s390__).#define 
5a00: 5f 5f 61 76 5f 73 74 61 72 74 5f 73 74 72 75 63  __av_start_struc
5a10: 74 34 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a  t4(LIST,TYPE_SIZ
5a20: 45 29 09 09 09 09 5c 0a 20 20 20 28 2a 28 4c 49  E)....\.   (*(LI
5a30: 53 54 29 2e 61 70 74 72 2b 2b 20 3d 20 28 5f 5f  ST).aptr++ = (__
5a40: 61 76 77 6f 72 64 29 28 28 4c 49 53 54 29 2e 72  avword)((LIST).r
5a50: 61 64 64 72 29 2c 20 30 29 0a 23 65 6e 64 69 66  addr), 0).#endif
5a60: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d  .#if defined(__m
5a70: 69 70 73 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65  ips__) || define
5a80: 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 7c  d(__mipsn32__) |
5a90: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73  | defined(__mips
5aa0: 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  64__) || defined
5ab0: 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29 0a 23 64  (__sparc64__).#d
5ac0: 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72 74  efine __av_start
5ad0: 5f 73 74 72 75 63 74 34 28 4c 49 53 54 2c 54 59  _struct4(LIST,TY
5ae0: 50 45 5f 53 49 5a 45 29 09 09 09 09 5c 0a 20 20  PE_SIZE)....\.  
5af0: 20 28 2a 28 4c 49 53 54 29 2e 61 70 74 72 2b 2b   (*(LIST).aptr++
5b00: 20 3d 20 28 5f 5f 61 76 77 6f 72 64 29 28 28 4c   = (__avword)((L
5b10: 49 53 54 29 2e 72 61 64 64 72 29 2c 09 09 09 09  IST).raddr),....
5b20: 5c 0a 20 20 20 20 28 4c 49 53 54 29 2e 61 6e 75  \.    (LIST).anu
5b30: 6d 2b 2b 2c 09 09 09 09 09 09 09 5c 0a 20 20 20  m++,.......\.   
5b40: 20 30 09 09 09 09 09 09 09 09 09 5c 0a 20 20 20   0.........\.   
5b50: 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66  ).#endif.#if def
5b60: 69 6e 65 64 28 5f 5f 78 38 36 5f 36 34 5f 5f 29  ined(__x86_64__)
5b70: 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74  .#define __av_st
5b80: 61 72 74 5f 73 74 72 75 63 74 34 28 4c 49 53 54  art_struct4(LIST
5b90: 2c 54 59 50 45 5f 53 49 5a 45 29 09 09 09 09 5c  ,TYPE_SIZE)....\
5ba0: 0a 20 20 20 28 2a 28 4c 49 53 54 29 2e 69 61 70  .   (*(LIST).iap
5bb0: 74 72 2b 2b 20 3d 20 28 5f 5f 61 76 77 6f 72 64  tr++ = (__avword
5bc0: 29 28 28 4c 49 53 54 29 2e 72 61 64 64 72 29 2c  )((LIST).raddr),
5bd0: 20 30 29 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69   0).#endif.#endi
5be0: 66 0a 0a 0a 2f 2a 0a 20 2a 20 61 76 5f 3c 74 79  f.../*. * av_<ty
5bf0: 70 65 3e 20 6d 61 63 72 6f 73 20 77 68 69 63 68  pe> macros which
5c00: 20 73 70 65 63 69 66 79 20 74 68 65 20 61 72 67   specify the arg
5c10: 75 6d 65 6e 74 20 61 6e 64 20 69 74 73 20 74 79  ument and its ty
5c20: 70 65 0a 20 2a 2f 0a 0a 2f 2a 0a 20 2a 20 73 63  pe. */../*. * sc
5c30: 61 6c 61 72 20 61 72 67 75 6d 65 6e 74 20 74 79  alar argument ty
5c40: 70 65 73 0a 20 2a 2f 0a 0a 23 69 66 20 64 65 66  pes. */..#if def
5c50: 69 6e 65 64 28 5f 5f 69 33 38 36 5f 5f 29 20 7c  ined(__i386__) |
5c60: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b  | defined(__m68k
5c70: 5f 5f 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28  __) || (defined(
5c80: 5f 5f 73 70 61 72 63 5f 5f 29 20 26 26 20 21 64  __sparc__) && !d
5c90: 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34  efined(__sparc64
5ca0: 5f 5f 29 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  __)) || defined(
5cb0: 5f 5f 61 6c 70 68 61 5f 5f 29 20 7c 7c 20 64 65  __alpha__) || de
5cc0: 66 69 6e 65 64 28 5f 5f 61 72 6d 5f 5f 29 20 7c  fined(__arm__) |
5cd0: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 70 6f 77 65  | defined(__powe
5ce0: 72 70 63 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65  rpc__) || define
5cf0: 64 28 5f 5f 70 6f 77 65 72 70 63 36 34 5f 5f 29  d(__powerpc64__)
5d00: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 38   || defined(__m8
5d10: 38 6b 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  8k__) || defined
5d20: 28 5f 5f 63 6f 6e 76 65 78 5f 5f 29 20 7c 7c 20  (__convex__) || 
5d30: 64 65 66 69 6e 65 64 28 5f 5f 69 61 36 34 5f 5f  defined(__ia64__
5d40: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 78  ) || defined(__x
5d50: 38 36 5f 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69  86_64__) || defi
5d60: 6e 65 64 28 5f 5f 73 33 39 30 5f 5f 29 0a 2f 2a  ned(__s390__)./*
5d70: 20 46 6c 6f 61 74 73 20 61 6e 64 20 61 6c 6c 20   Floats and all 
5d80: 69 6e 74 65 67 65 72 20 74 79 70 65 73 20 61 72  integer types ar
5d90: 65 20 70 61 73 73 65 64 20 61 73 20 77 6f 72 64  e passed as word
5da0: 73 2c 0a 20 2a 20 64 6f 75 62 6c 65 73 20 61 73  s,. * doubles as
5db0: 20 74 77 6f 20 77 6f 72 64 73 2e 0a 20 2a 2f 0a   two words.. */.
5dc0: 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 77 6f 72  #define __av_wor
5dd0: 64 28 4c 49 53 54 2c 56 41 4c 29 09 09 09 09 09  d(LIST,VAL).....
5de0: 09 5c 0a 20 20 28 2b 2b 28 4c 49 53 54 29 2e 61  .\.  (++(LIST).a
5df0: 70 74 72 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28  ptr > __av_eptr(
5e00: 4c 49 53 54 29 09 09 09 09 09 5c 0a 20 20 20 3f  LIST).....\.   ?
5e10: 20 2d 31 20 3a 20 28 28 4c 49 53 54 29 2e 61 70   -1 : ((LIST).ap
5e20: 74 72 5b 2d 31 5d 20 3d 20 28 5f 5f 61 76 77 6f  tr[-1] = (__avwo
5e30: 72 64 29 28 56 41 4c 29 2c 20 30 29 29 0a 23 65  rd)(VAL), 0)).#e
5e40: 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64  ndif.#if defined
5e50: 28 5f 5f 6d 69 70 73 5f 5f 29 20 7c 7c 20 64 65  (__mips__) || de
5e60: 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f  fined(__mipsn32_
5e70: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  _) || defined(__
5e80: 6d 69 70 73 36 34 5f 5f 29 20 7c 7c 20 64 65 66  mips64__) || def
5e90: 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f  ined(__sparc64__
5ea0: 29 0a 2f 2a 20 4d 6f 73 74 20 74 68 69 6e 67 73  )./* Most things
5eb0: 20 61 72 65 20 70 61 73 73 65 64 20 61 73 20 69   are passed as i
5ec0: 6e 74 65 67 65 72 73 3a 0a 20 2a 2f 0a 23 64 65  ntegers:. */.#de
5ed0: 66 69 6e 65 20 5f 5f 61 76 5f 77 6f 72 64 28 4c  fine __av_word(L
5ee0: 49 53 54 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a  IST,VAL)......\.
5ef0: 20 20 28 2b 2b 28 4c 49 53 54 29 2e 61 70 74 72    (++(LIST).aptr
5f00: 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53   > __av_eptr(LIS
5f10: 54 29 09 09 09 09 09 5c 0a 20 20 20 3f 20 2d 31  T).....\.   ? -1
5f20: 20 3a 20 28 28 4c 49 53 54 29 2e 61 6e 75 6d 2b   : ((LIST).anum+
5f30: 2b 2c 20 28 4c 49 53 54 29 2e 61 70 74 72 5b 2d  +, (LIST).aptr[-
5f40: 31 5d 20 3d 20 28 5f 5f 61 76 77 6f 72 64 29 28  1] = (__avword)(
5f50: 56 41 4c 29 2c 20 30 29 29 0a 23 65 6e 64 69 66  VAL), 0)).#endif
5f60: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 68  .#if defined(__h
5f70: 70 70 61 5f 5f 29 0a 2f 2a 20 46 6c 6f 61 74 73  ppa__)./* Floats
5f80: 20 61 6e 64 20 61 6c 6c 20 69 6e 74 65 67 65 72   and all integer
5f90: 20 74 79 70 65 73 20 61 72 65 20 70 61 73 73 65   types are passe
5fa0: 64 20 61 73 20 77 6f 72 64 73 2c 0a 20 2a 20 64  d as words,. * d
5fb0: 6f 75 62 6c 65 73 20 61 73 20 74 77 6f 20 77 6f  oubles as two wo
5fc0: 72 64 73 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65  rds.. */.#define
5fd0: 20 5f 5f 61 76 5f 77 6f 72 64 28 4c 49 53 54 2c   __av_word(LIST,
5fe0: 56 41 4c 29 09 09 09 09 09 09 5c 0a 20 20 28 2d  VAL)......\.  (-
5ff0: 2d 28 4c 49 53 54 29 2e 61 70 74 72 20 3c 20 5f  -(LIST).aptr < _
6000: 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29 09 09  _av_eptr(LIST)..
6010: 09 09 09 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 28  ...\.   ? -1 : (
6020: 2a 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 28  *(LIST).aptr = (
6030: 5f 5f 61 76 77 6f 72 64 29 28 56 41 4c 29 2c 20  __avword)(VAL), 
6040: 30 29 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64  0)).#endif.#if d
6050: 65 66 69 6e 65 64 28 41 4d 49 47 41 29 0a 2f 2a  efined(AMIGA)./*
6060: 20 53 6f 6d 65 20 61 72 67 75 6d 65 6e 74 73 20   Some arguments 
6070: 61 72 65 20 70 61 73 73 65 64 20 69 6e 20 72 65  are passed in re
6080: 67 69 73 74 65 72 73 2e 20 51 75 65 72 79 20 74  gisters. Query t
6090: 68 65 20 6d 61 63 72 6f 20 41 56 5f 41 52 47 5f  he macro AV_ARG_
60a0: 52 45 47 4e 55 4d 2e 0a 20 2a 20 54 68 69 73 20  REGNUM.. * This 
60b0: 73 68 6f 75 6c 64 20 72 65 61 6c 6c 79 20 62 65  should really be
60c0: 20 61 6e 20 61 72 67 75 6d 65 6e 74 20 74 6f 20   an argument to 
60d0: 5f 5f 61 76 5f 77 6f 72 64 2e 0a 20 2a 2f 0a 23  __av_word.. */.#
60e0: 75 6e 64 65 66 20 5f 5f 61 76 5f 77 6f 72 64 20  undef __av_word 
60f0: 2f 2a 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 61  /**/.#define __a
6100: 76 5f 77 6f 72 64 28 4c 49 53 54 2c 56 41 4c 29  v_word(LIST,VAL)
6110: 09 09 09 09 09 09 5c 0a 20 20 28 28 41 56 5f 41  ......\.  ((AV_A
6120: 52 47 5f 52 45 47 4e 55 4d 29 20 3e 3d 20 30 09  RG_REGNUM) >= 0.
6130: 09 09 09 09 09 09 5c 0a 20 20 20 3f 20 28 28 41  ......\.   ? ((A
6140: 56 5f 41 52 47 5f 52 45 47 4e 55 4d 29 20 3c 20  V_ARG_REGNUM) < 
6150: 38 2b 37 09 09 09 09 09 09 5c 0a 20 20 20 20 20  8+7......\.     
6160: 20 3f 20 2d 31 20 3a 20 28 28 4c 49 53 54 29 2e   ? -1 : ((LIST).
6170: 72 65 67 61 72 67 73 5b 28 41 56 5f 41 52 47 5f  regargs[(AV_ARG_
6180: 52 45 47 4e 55 4d 29 5d 20 3d 20 28 5f 5f 61 76  REGNUM)] = (__av
6190: 77 6f 72 64 29 28 56 41 4c 29 2c 20 30 29 29 09  word)(VAL), 0)).
61a0: 5c 0a 20 20 20 3a 20 28 2b 2b 28 4c 49 53 54 29  \.   : (++(LIST)
61b0: 2e 61 70 74 72 20 3e 20 5f 5f 61 76 5f 65 70 74  .aptr > __av_ept
61c0: 72 28 4c 49 53 54 29 09 09 09 09 09 5c 0a 20 20  r(LIST).....\.  
61d0: 20 20 20 20 3f 20 2d 31 20 3a 20 28 28 4c 49 53      ? -1 : ((LIS
61e0: 54 29 2e 61 70 74 72 5b 2d 31 5d 20 3d 20 28 5f  T).aptr[-1] = (_
61f0: 5f 61 76 77 6f 72 64 29 28 56 41 4c 29 2c 20 30  _avword)(VAL), 0
6200: 29 29 29 0a 23 65 6e 64 69 66 0a 0a 2f 2a 20 69  ))).#endif../* i
6210: 6e 74 65 67 65 72 20 61 72 67 75 6d 65 6e 74 20  nteger argument 
6220: 74 79 70 65 73 20 2a 2f 0a 0a 23 69 66 20 64 65  types */..#if de
6230: 66 69 6e 65 64 28 5f 5f 78 38 36 5f 36 34 5f 5f  fined(__x86_64__
6240: 29 0a 2f 2a 20 54 68 65 20 66 69 72 73 74 20 36  )./* The first 6
6250: 20 69 6e 74 65 67 65 72 20 61 72 67 75 6d 65 6e   integer argumen
6260: 74 73 20 61 72 65 20 70 61 73 73 65 64 20 69 6e  ts are passed in
6270: 20 72 65 67 69 73 74 65 72 73 2e 20 2a 2f 0a 23   registers. */.#
6280: 64 65 66 69 6e 65 20 61 76 5f 6c 6f 6e 67 28 4c  define av_long(L
6290: 49 53 54 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a  IST,VAL)......\.
62a0: 20 20 28 28 4c 49 53 54 29 2e 69 61 70 74 72 20    ((LIST).iaptr 
62b0: 3c 20 26 28 4c 49 53 54 29 2e 69 61 72 67 73 5b  < &(LIST).iargs[
62c0: 36 5d 09 09 09 09 09 5c 0a 20 20 20 3f 20 28 2a  6].....\.   ? (*
62d0: 28 4c 49 53 54 29 2e 69 61 70 74 72 2b 2b 20 3d  (LIST).iaptr++ =
62e0: 20 28 6c 6f 6e 67 29 28 56 41 4c 29 2c 20 30 29   (long)(VAL), 0)
62f0: 09 09 09 09 09 5c 0a 20 20 20 3a 20 5f 5f 61 76  .....\.   : __av
6300: 5f 77 6f 72 64 28 4c 49 53 54 2c 28 6c 6f 6e 67  _word(LIST,(long
6310: 29 28 56 41 4c 29 29 29 0a 23 65 6c 73 65 0a 23  )(VAL))).#else.#
6320: 64 65 66 69 6e 65 20 61 76 5f 6c 6f 6e 67 28 4c  define av_long(L
6330: 49 53 54 2c 56 41 4c 29 09 5f 5f 61 76 5f 77 6f  IST,VAL).__av_wo
6340: 72 64 28 4c 49 53 54 2c 28 6c 6f 6e 67 29 28 56  rd(LIST,(long)(V
6350: 41 4c 29 29 0a 23 65 6e 64 69 66 0a 0a 23 69 66  AL)).#endif..#if
6360: 20 64 65 66 69 6e 65 64 28 5f 5f 78 38 36 5f 36   defined(__x86_6
6370: 34 5f 5f 29 0a 2f 2a 20 54 68 65 20 66 69 72 73  4__)./* The firs
6380: 74 20 36 20 69 6e 74 65 67 65 72 20 61 72 67 75  t 6 integer argu
6390: 6d 65 6e 74 73 20 61 72 65 20 70 61 73 73 65 64  ments are passed
63a0: 20 69 6e 20 72 65 67 69 73 74 65 72 73 2e 20 2a   in registers. *
63b0: 2f 0a 23 64 65 66 69 6e 65 20 61 76 5f 75 6c 6f  /.#define av_ulo
63c0: 6e 67 28 4c 49 53 54 2c 56 41 4c 29 09 09 09 09  ng(LIST,VAL)....
63d0: 09 09 5c 0a 20 20 28 28 4c 49 53 54 29 2e 69 61  ..\.  ((LIST).ia
63e0: 70 74 72 20 3c 20 26 28 4c 49 53 54 29 2e 69 61  ptr < &(LIST).ia
63f0: 72 67 73 5b 36 5d 09 09 09 09 09 5c 0a 20 20 20  rgs[6].....\.   
6400: 3f 20 28 2a 28 4c 49 53 54 29 2e 69 61 70 74 72  ? (*(LIST).iaptr
6410: 2b 2b 20 3d 20 28 75 6e 73 69 67 6e 65 64 20 6c  ++ = (unsigned l
6420: 6f 6e 67 29 28 56 41 4c 29 2c 20 30 29 09 09 09  ong)(VAL), 0)...
6430: 5c 0a 20 20 20 3a 20 5f 5f 61 76 5f 77 6f 72 64  \.   : __av_word
6440: 28 4c 49 53 54 2c 28 75 6e 73 69 67 6e 65 64 20  (LIST,(unsigned 
6450: 6c 6f 6e 67 29 28 56 41 4c 29 29 29 0a 23 65 6c  long)(VAL))).#el
6460: 73 65 0a 23 64 65 66 69 6e 65 20 61 76 5f 75 6c  se.#define av_ul
6470: 6f 6e 67 28 4c 49 53 54 2c 56 41 4c 29 09 5f 5f  ong(LIST,VAL).__
6480: 61 76 5f 77 6f 72 64 28 4c 49 53 54 2c 28 75 6e  av_word(LIST,(un
6490: 73 69 67 6e 65 64 20 6c 6f 6e 67 29 28 56 41 4c  signed long)(VAL
64a0: 29 29 0a 23 65 6e 64 69 66 0a 0a 23 69 66 20 64  )).#endif..#if d
64b0: 65 66 69 6e 65 64 28 5f 5f 78 38 36 5f 36 34 5f  efined(__x86_64_
64c0: 5f 29 0a 2f 2a 20 54 68 65 20 66 69 72 73 74 20  _)./* The first 
64d0: 36 20 69 6e 74 65 67 65 72 20 61 72 67 75 6d 65  6 integer argume
64e0: 6e 74 73 20 61 72 65 20 70 61 73 73 65 64 20 69  nts are passed i
64f0: 6e 20 72 65 67 69 73 74 65 72 73 2e 20 2a 2f 0a  n registers. */.
6500: 23 64 65 66 69 6e 65 20 61 76 5f 70 74 72 28 4c  #define av_ptr(L
6510: 49 53 54 2c 54 59 50 45 2c 56 41 4c 29 09 09 09  IST,TYPE,VAL)...
6520: 09 09 09 5c 0a 20 20 28 28 4c 49 53 54 29 2e 69  ...\.  ((LIST).i
6530: 61 70 74 72 20 3c 20 26 28 4c 49 53 54 29 2e 69  aptr < &(LIST).i
6540: 61 72 67 73 5b 36 5d 09 09 09 09 09 5c 0a 20 20  args[6].....\.  
6550: 20 3f 20 28 2a 28 4c 49 53 54 29 2e 69 61 70 74   ? (*(LIST).iapt
6560: 72 2b 2b 20 3d 20 28 5f 5f 61 76 77 6f 72 64 29  r++ = (__avword)
6570: 28 54 59 50 45 29 28 56 41 4c 29 2c 20 30 29 09  (TYPE)(VAL), 0).
6580: 09 09 5c 0a 20 20 20 3a 20 5f 5f 61 76 5f 77 6f  ..\.   : __av_wo
6590: 72 64 28 4c 49 53 54 2c 28 54 59 50 45 29 28 56  rd(LIST,(TYPE)(V
65a0: 41 4c 29 29 29 0a 23 65 6c 73 65 0a 23 64 65 66  AL))).#else.#def
65b0: 69 6e 65 20 61 76 5f 70 74 72 28 4c 49 53 54 2c  ine av_ptr(LIST,
65c0: 54 59 50 45 2c 56 41 4c 29 09 5f 5f 61 76 5f 77  TYPE,VAL).__av_w
65d0: 6f 72 64 28 4c 49 53 54 2c 28 54 59 50 45 29 28  ord(LIST,(TYPE)(
65e0: 56 41 4c 29 29 0a 23 65 6e 64 69 66 0a 0a 23 64  VAL)).#endif..#d
65f0: 65 66 69 6e 65 20 61 76 5f 63 68 61 72 09 09 09  efine av_char...
6600: 61 76 5f 6c 6f 6e 67 0a 23 64 65 66 69 6e 65 20  av_long.#define 
6610: 61 76 5f 73 63 68 61 72 09 09 61 76 5f 6c 6f 6e  av_schar..av_lon
6620: 67 0a 23 64 65 66 69 6e 65 20 61 76 5f 73 68 6f  g.#define av_sho
6630: 72 74 09 09 61 76 5f 6c 6f 6e 67 0a 23 64 65 66  rt..av_long.#def
6640: 69 6e 65 20 61 76 5f 69 6e 74 09 09 09 61 76 5f  ine av_int...av_
6650: 6c 6f 6e 67 0a 23 64 65 66 69 6e 65 20 61 76 5f  long.#define av_
6660: 75 63 68 61 72 09 09 61 76 5f 75 6c 6f 6e 67 0a  uchar..av_ulong.
6670: 23 64 65 66 69 6e 65 20 61 76 5f 75 73 68 6f 72  #define av_ushor
6680: 74 09 09 61 76 5f 75 6c 6f 6e 67 0a 23 64 65 66  t..av_ulong.#def
6690: 69 6e 65 20 61 76 5f 75 69 6e 74 09 09 09 61 76  ine av_uint...av
66a0: 5f 75 6c 6f 6e 67 0a 0a 23 69 66 20 64 65 66 69  _ulong..#if defi
66b0: 6e 65 64 28 5f 5f 6d 69 70 73 36 34 5f 5f 29 20  ned(__mips64__) 
66c0: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 73 70 61  || defined(__spa
66d0: 72 63 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  rc64__) || defin
66e0: 65 64 28 5f 5f 61 6c 70 68 61 5f 5f 29 20 7c 7c  ed(__alpha__) ||
66f0: 20 64 65 66 69 6e 65 64 28 5f 5f 70 6f 77 65 72   defined(__power
6700: 70 63 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  pc64__) || defin
6710: 65 64 28 5f 5f 69 61 36 34 5f 5f 29 20 7c 7c 20  ed(__ia64__) || 
6720: 64 65 66 69 6e 65 64 28 5f 5f 78 38 36 5f 36 34  defined(__x86_64
6730: 5f 5f 29 0a 2f 2a 20 60 6c 6f 6e 67 20 6c 6f 6e  __)./* `long lon
6740: 67 27 20 61 6e 64 20 60 6c 6f 6e 67 27 20 61 72  g' and `long' ar
6750: 65 20 69 64 65 6e 74 69 63 61 6c 2e 20 2a 2f 0a  e identical. */.
6760: 23 64 65 66 69 6e 65 20 61 76 5f 6c 6f 6e 67 6c  #define av_longl
6770: 6f 6e 67 09 09 61 76 5f 6c 6f 6e 67 0a 23 64 65  ong..av_long.#de
6780: 66 69 6e 65 20 61 76 5f 75 6c 6f 6e 67 6c 6f 6e  fine av_ulonglon
6790: 67 09 09 61 76 5f 75 6c 6f 6e 67 0a 23 65 6c 69  g..av_ulong.#eli
67a0: 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73  f defined(__mips
67b0: 6e 33 32 5f 5f 29 0a 2f 2a 20 60 6c 6f 6e 67 20  n32__)./* `long 
67c0: 6c 6f 6e 67 27 20 66 69 74 73 20 69 6e 20 5f 5f  long' fits in __
67d0: 61 76 77 6f 72 64 2e 20 2a 2f 0a 23 64 65 66 69  avword. */.#defi
67e0: 6e 65 20 61 76 5f 6c 6f 6e 67 6c 6f 6e 67 09 09  ne av_longlong..
67f0: 5f 5f 61 76 5f 77 6f 72 64 0a 23 64 65 66 69 6e  __av_word.#defin
6800: 65 20 61 76 5f 75 6c 6f 6e 67 6c 6f 6e 67 28 4c  e av_ulonglong(L
6810: 49 53 54 2c 56 41 4c 29 09 5f 5f 61 76 5f 77 6f  IST,VAL).__av_wo
6820: 72 64 28 4c 49 53 54 2c 28 75 6e 73 69 67 6e 65  rd(LIST,(unsigne
6830: 64 20 6c 6f 6e 67 20 6c 6f 6e 67 29 28 56 41 4c  d long long)(VAL
6840: 29 29 0a 23 65 6c 69 66 20 64 65 66 69 6e 65 64  )).#elif defined
6850: 28 5f 5f 69 33 38 36 5f 5f 29 20 7c 7c 20 64 65  (__i386__) || de
6860: 66 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f 5f 29 20  fined(__m68k__) 
6870: 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f 6d 69  || (defined(__mi
6880: 70 73 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65  ps__) && !define
6890: 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 26  d(__mipsn32__) &
68a0: 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70  & !defined(__mip
68b0: 73 36 34 5f 5f 29 29 20 7c 7c 20 28 64 65 66 69  s64__)) || (defi
68c0: 6e 65 64 28 5f 5f 73 70 61 72 63 5f 5f 29 20 26  ned(__sparc__) &
68d0: 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 73 70 61  & !defined(__spa
68e0: 72 63 36 34 5f 5f 29 29 20 7c 7c 20 64 65 66 69  rc64__)) || defi
68f0: 6e 65 64 28 5f 5f 68 70 70 61 5f 5f 29 20 7c 7c  ned(__hppa__) ||
6900: 20 64 65 66 69 6e 65 64 28 5f 5f 61 72 6d 5f 5f   defined(__arm__
6910: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 70  ) || defined(__p
6920: 6f 77 65 72 70 63 5f 5f 29 20 7c 7c 20 64 65 66  owerpc__) || def
6930: 69 6e 65 64 28 5f 5f 6d 38 38 6b 5f 5f 29 20 7c  ined(__m88k__) |
6940: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 63 6f 6e 76  | defined(__conv
6950: 65 78 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  ex__) || defined
6960: 28 5f 5f 73 33 39 30 5f 5f 29 0a 2f 2a 20 60 6c  (__s390__)./* `l
6970: 6f 6e 67 20 6c 6f 6e 67 27 73 20 61 72 65 20 70  ong long's are p
6980: 61 73 73 65 64 20 65 6d 62 65 64 64 65 64 20 6f  assed embedded o
6990: 6e 20 74 68 65 20 61 72 67 20 73 74 61 63 6b 2e  n the arg stack.
69a0: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 61 76 5f 6c   */.#define av_l
69b0: 6f 6e 67 6c 6f 6e 67 28 4c 49 53 54 2c 56 41 4c  onglong(LIST,VAL
69c0: 29 09 5f 5f 61 76 5f 6c 6f 6e 67 6c 6f 6e 67 28  ).__av_longlong(
69d0: 4c 49 53 54 2c 6c 6f 6e 67 20 6c 6f 6e 67 2c 56  LIST,long long,V
69e0: 41 4c 29 0a 23 64 65 66 69 6e 65 20 61 76 5f 75  AL).#define av_u
69f0: 6c 6f 6e 67 6c 6f 6e 67 28 4c 49 53 54 2c 56 41  longlong(LIST,VA
6a00: 4c 29 09 5f 5f 61 76 5f 6c 6f 6e 67 6c 6f 6e 67  L).__av_longlong
6a10: 28 4c 49 53 54 2c 75 6e 73 69 67 6e 65 64 20 6c  (LIST,unsigned l
6a20: 6f 6e 67 20 6c 6f 6e 67 2c 56 41 4c 29 0a 23 69  ong long,VAL).#i
6a30: 66 20 64 65 66 69 6e 65 64 28 5f 5f 69 33 38 36  f defined(__i386
6a40: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
6a50: 5f 6d 36 38 6b 5f 5f 29 20 7c 7c 20 64 65 66 69  _m68k__) || defi
6a60: 6e 65 64 28 5f 5f 61 72 6d 5f 5f 29 20 7c 7c 20  ned(__arm__) || 
6a70: 28 64 65 66 69 6e 65 64 28 5f 5f 70 6f 77 65 72  (defined(__power
6a80: 70 63 5f 5f 29 20 26 26 20 28 64 65 66 69 6e 65  pc__) && (define
6a90: 64 28 5f 41 49 58 29 20 7c 7c 20 28 64 65 66 69  d(_AIX) || (defi
6aa0: 6e 65 64 28 5f 5f 4d 41 43 48 5f 5f 29 20 26 26  ned(__MACH__) &&
6ab0: 20 64 65 66 69 6e 65 64 28 5f 5f 41 50 50 4c 45   defined(__APPLE
6ac0: 5f 5f 29 29 29 29 20 7c 7c 20 64 65 66 69 6e 65  __)))) || define
6ad0: 64 28 5f 5f 63 6f 6e 76 65 78 5f 5f 29 0a 23 69  d(__convex__).#i
6ae0: 66 20 64 65 66 69 6e 65 64 28 5f 5f 41 52 4d 45  f defined(__ARME
6af0: 4c 5f 5f 29 0a 2f 2a 20 60 6c 6f 6e 67 20 6c 6f  L__)./* `long lo
6b00: 6e 67 27 73 20 61 72 65 20 38 20 62 79 74 65 73  ng's are 8 bytes
6b10: 20 61 6c 69 67 6e 65 64 20 6f 6e 20 41 52 4d 2e   aligned on ARM.
6b20: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76   */.#define __av
6b30: 5f 6c 6f 6e 67 6c 6f 6e 67 28 4c 49 53 54 2c 54  _longlong(LIST,T
6b40: 59 50 45 2c 56 41 4c 29 20 20 20 20 20 20 20 20  YPE,VAL)        
6b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6b60: 20 20 20 20 20 20 20 20 20 20 20 5c 0a 20 20 28             \.  (
6b70: 28 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 28  ((LIST).aptr = (
6b80: 5f 5f 61 76 77 6f 72 64 2a 29 28 28 28 5f 5f 61  __avword*)(((__a
6b90: 76 77 6f 72 64 29 28 4c 49 53 54 29 2e 61 70 74  vword)(LIST).apt
6ba0: 72 2b 73 69 7a 65 6f 66 28 54 59 50 45 29 2b 5f  r+sizeof(TYPE)+_
6bb0: 5f 41 56 5f 61 6c 69 67 6e 6f 66 28 54 59 50 45  _AV_alignof(TYPE
6bc0: 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 5f 5f  )-1) & -(long)__
6bd0: 41 56 5f 61 6c 69 67 6e 6f 66 28 54 59 50 45 29  AV_alignof(TYPE)
6be0: 29 29 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c  )) > __av_eptr(L
6bf0: 49 53 54 29 20 20 20 20 20 20 20 20 5c 0a 20 20  IST)        \.  
6c00: 20 3f 20 2d 31 20 3a 20 28 28 28 54 59 50 45 2a   ? -1 : (((TYPE*
6c10: 29 28 4c 49 53 54 29 2e 61 70 74 72 29 5b 2d 31  )(LIST).aptr)[-1
6c20: 5d 20 3d 20 28 54 59 50 45 29 28 56 41 4c 29 2c  ] = (TYPE)(VAL),
6c30: 20 30 29 29 0a 23 65 6c 73 65 0a 2f 2a 20 60 6c   0)).#else./* `l
6c40: 6f 6e 67 20 6c 6f 6e 67 27 73 20 61 72 65 20 28  ong long's are (
6c50: 61 74 20 6d 6f 73 74 29 20 77 6f 72 64 2d 61 6c  at most) word-al
6c60: 69 67 6e 65 64 2e 20 2a 2f 0a 23 64 65 66 69 6e  igned. */.#defin
6c70: 65 20 5f 5f 61 76 5f 6c 6f 6e 67 6c 6f 6e 67 28  e __av_longlong(
6c80: 4c 49 53 54 2c 54 59 50 45 2c 56 41 4c 29 09 09  LIST,TYPE,VAL)..
6c90: 09 09 09 5c 0a 20 20 28 28 28 4c 49 53 54 29 2e  ...\.  (((LIST).
6ca0: 61 70 74 72 20 2b 3d 20 73 69 7a 65 6f 66 28 54  aptr += sizeof(T
6cb0: 59 50 45 29 2f 73 69 7a 65 6f 66 28 5f 5f 61 76  YPE)/sizeof(__av
6cc0: 77 6f 72 64 29 29 20 3e 20 5f 5f 61 76 5f 65 70  word)) > __av_ep
6cd0: 74 72 28 4c 49 53 54 29 09 5c 0a 20 20 20 3f 20  tr(LIST).\.   ? 
6ce0: 2d 31 20 3a 20 28 28 28 54 59 50 45 2a 29 28 4c  -1 : (((TYPE*)(L
6cf0: 49 53 54 29 2e 61 70 74 72 29 5b 2d 31 5d 20 3d  IST).aptr)[-1] =
6d00: 20 28 54 59 50 45 29 28 56 41 4c 29 2c 20 30 29   (TYPE)(VAL), 0)
6d10: 29 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69 66 0a  ).#endif.#endif.
6d20: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69  #if defined(__mi
6d30: 70 73 5f 5f 29 20 7c 7c 20 28 64 65 66 69 6e 65  ps__) || (define
6d40: 64 28 5f 5f 73 70 61 72 63 5f 5f 29 20 26 26 20  d(__sparc__) && 
6d50: 21 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63  !defined(__sparc
6d60: 36 34 5f 5f 29 29 20 7c 7c 20 64 65 66 69 6e 65  64__)) || define
6d70: 64 28 5f 5f 68 70 70 61 5f 5f 29 20 7c 7c 20 28  d(__hppa__) || (
6d80: 64 65 66 69 6e 65 64 28 5f 5f 70 6f 77 65 72 70  defined(__powerp
6d90: 63 5f 5f 29 20 26 26 20 21 28 64 65 66 69 6e 65  c__) && !(define
6da0: 64 28 5f 41 49 58 29 20 7c 7c 20 28 64 65 66 69  d(_AIX) || (defi
6db0: 6e 65 64 28 5f 5f 4d 41 43 48 5f 5f 29 20 26 26  ned(__MACH__) &&
6dc0: 20 64 65 66 69 6e 65 64 28 5f 5f 41 50 50 4c 45   defined(__APPLE
6dd0: 5f 5f 29 29 29 29 20 7c 7c 20 64 65 66 69 6e 65  __)))) || define
6de0: 64 28 5f 5f 6d 38 38 6b 5f 5f 29 20 7c 7c 20 64  d(__m88k__) || d
6df0: 65 66 69 6e 65 64 28 5f 5f 73 33 39 30 5f 5f 29  efined(__s390__)
6e00: 0a 2f 2a 20 60 6c 6f 6e 67 20 6c 6f 6e 67 27 73  ./* `long long's
6e10: 20 68 61 76 65 20 61 6c 69 67 6e 6d 65 6e 74 20   have alignment 
6e20: 38 2e 20 2a 2f 0a 23 69 66 20 64 65 66 69 6e 65  8. */.#if define
6e30: 64 28 5f 5f 6d 69 70 73 5f 5f 29 0a 23 64 65 66  d(__mips__).#def
6e40: 69 6e 65 20 5f 5f 61 76 5f 6c 6f 6e 67 6c 6f 6e  ine __av_longlon
6e50: 67 28 4c 49 53 54 2c 54 59 50 45 2c 56 41 4c 29  g(LIST,TYPE,VAL)
6e60: 09 09 09 09 09 5c 0a 20 20 28 28 28 4c 49 53 54  .....\.  (((LIST
6e70: 29 2e 61 70 74 72 20 3d 20 28 5f 5f 61 76 77 6f  ).aptr = (__avwo
6e80: 72 64 2a 29 28 28 28 5f 5f 61 76 77 6f 72 64 29  rd*)(((__avword)
6e90: 28 4c 49 53 54 29 2e 61 70 74 72 2b 73 69 7a 65  (LIST).aptr+size
6ea0: 6f 66 28 54 59 50 45 29 2b 5f 5f 41 56 5f 61 6c  of(TYPE)+__AV_al
6eb0: 69 67 6e 6f 66 28 54 59 50 45 29 2d 31 29 20 26  ignof(TYPE)-1) &
6ec0: 20 2d 28 6c 6f 6e 67 29 5f 5f 41 56 5f 61 6c 69   -(long)__AV_ali
6ed0: 67 6e 6f 66 28 54 59 50 45 29 29 29 20 3e 20 5f  gnof(TYPE))) > _
6ee0: 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29 20 5c  _av_eptr(LIST) \
6ef0: 0a 20 20 20 3f 20 2d 31 20 3a 20 28 28 4c 49 53  .   ? -1 : ((LIS
6f00: 54 29 2e 61 6e 75 6d 2b 2b 2c 20 28 28 54 59 50  T).anum++, ((TYP
6f10: 45 2a 29 28 4c 49 53 54 29 2e 61 70 74 72 29 5b  E*)(LIST).aptr)[
6f20: 2d 31 5d 20 3d 20 28 54 59 50 45 29 28 56 41 4c  -1] = (TYPE)(VAL
6f30: 29 2c 20 30 29 29 0a 23 65 6e 64 69 66 0a 23 69  ), 0)).#endif.#i
6f40: 66 20 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72  f defined(__spar
6f50: 63 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64  c__) && !defined
6f60: 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29 0a 2f 2a  (__sparc64__)./*
6f70: 20 57 69 74 68 69 6e 20 74 68 65 20 61 72 67 20   Within the arg 
6f80: 73 74 61 63 6b 2c 20 74 68 65 20 61 6c 69 67 6e  stack, the align
6f90: 6d 65 6e 74 20 69 73 20 6f 6e 6c 79 20 34 2c 20  ment is only 4, 
6fa0: 6e 6f 74 20 38 2e 20 2a 2f 0a 2f 2a 20 54 68 69  not 8. */./* Thi
6fb0: 73 20 61 73 73 75 6d 65 73 20 73 69 7a 65 6f 66  s assumes sizeof
6fc0: 28 6c 6f 6e 67 20 6c 6f 6e 67 29 20 3d 3d 20 32  (long long) == 2
6fd0: 2a 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64  *sizeof(__avword
6fe0: 29 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f  ). */.#define __
6ff0: 61 76 5f 6c 6f 6e 67 6c 6f 6e 67 28 4c 49 53 54  av_longlong(LIST
7000: 2c 54 59 50 45 2c 56 41 4c 29 09 09 09 09 09 5c  ,TYPE,VAL).....\
7010: 0a 20 20 28 28 28 4c 49 53 54 29 2e 61 70 74 72  .  (((LIST).aptr
7020: 20 2b 3d 20 73 69 7a 65 6f 66 28 54 59 50 45 29   += sizeof(TYPE)
7030: 2f 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64  /sizeof(__avword
7040: 29 29 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c  )) > __av_eptr(L
7050: 49 53 54 29 09 5c 0a 20 20 20 3f 20 2d 31 20 3a  IST).\.   ? -1 :
7060: 09 09 09 09 09 09 09 09 5c 0a 20 20 20 28 28 4c  ........\.   ((L
7070: 49 53 54 29 2e 74 6d 70 2e 5f 6c 6f 6e 67 6c 6f  IST).tmp._longlo
7080: 6e 67 20 3d 20 28 54 59 50 45 29 28 56 41 4c 29  ng = (TYPE)(VAL)
7090: 2c 09 09 09 09 09 5c 0a 20 20 20 20 28 4c 49 53  ,.....\.    (LIS
70a0: 54 29 2e 61 70 74 72 5b 2d 32 5d 20 3d 20 28 4c  T).aptr[-2] = (L
70b0: 49 53 54 29 2e 74 6d 70 2e 77 6f 72 64 73 5b 30  IST).tmp.words[0
70c0: 5d 2c 09 09 09 09 5c 0a 20 20 20 20 28 4c 49 53  ],....\.    (LIS
70d0: 54 29 2e 61 70 74 72 5b 2d 31 5d 20 3d 20 28 4c  T).aptr[-1] = (L
70e0: 49 53 54 29 2e 74 6d 70 2e 77 6f 72 64 73 5b 31  IST).tmp.words[1
70f0: 5d 2c 09 09 09 09 5c 0a 20 20 20 20 30 29 29 0a  ],....\.    0)).
7100: 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e  #endif.#if defin
7110: 65 64 28 5f 5f 68 70 70 61 5f 5f 29 0a 23 64 65  ed(__hppa__).#de
7120: 66 69 6e 65 20 5f 5f 61 76 5f 6c 6f 6e 67 6c 6f  fine __av_longlo
7130: 6e 67 28 4c 49 53 54 2c 54 59 50 45 2c 56 41 4c  ng(LIST,TYPE,VAL
7140: 29 09 09 09 09 09 5c 0a 20 20 28 28 28 4c 49 53  ).....\.  (((LIS
7150: 54 29 2e 61 70 74 72 20 3d 20 28 5f 5f 61 76 77  T).aptr = (__avw
7160: 6f 72 64 2a 29 28 28 28 5f 5f 61 76 77 6f 72 64  ord*)(((__avword
7170: 29 28 4c 49 53 54 29 2e 61 70 74 72 20 26 20 2d  )(LIST).aptr & -
7180: 28 6c 6f 6e 67 29 5f 5f 41 56 5f 61 6c 69 67 6e  (long)__AV_align
7190: 6f 66 28 54 59 50 45 29 29 20 2d 20 73 69 7a 65  of(TYPE)) - size
71a0: 6f 66 28 54 59 50 45 29 29 29 20 3c 20 5f 5f 61  of(TYPE))) < __a
71b0: 76 5f 65 70 74 72 28 4c 49 53 54 29 20 5c 0a 20  v_eptr(LIST) \. 
71c0: 20 20 3f 20 2d 31 20 3a 20 28 2a 28 54 59 50 45    ? -1 : (*(TYPE
71d0: 2a 29 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20  *)(LIST).aptr = 
71e0: 28 54 59 50 45 29 28 56 41 4c 29 2c 20 30 29 29  (TYPE)(VAL), 0))
71f0: 0a 23 65 6e 64 69 66 0a 23 69 66 20 28 64 65 66  .#endif.#if (def
7200: 69 6e 65 64 28 5f 5f 70 6f 77 65 72 70 63 5f 5f  ined(__powerpc__
7210: 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f  ) && !defined(__
7220: 70 6f 77 65 72 70 63 36 34 5f 5f 29 20 26 26 20  powerpc64__) && 
7230: 21 28 64 65 66 69 6e 65 64 28 5f 41 49 58 29 20  !(defined(_AIX) 
7240: 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f 4d 41  || (defined(__MA
7250: 43 48 5f 5f 29 20 26 26 20 64 65 66 69 6e 65 64  CH__) && defined
7260: 28 5f 5f 41 50 50 4c 45 5f 5f 29 29 29 29 20 7c  (__APPLE__)))) |
7270: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 38 38 6b  | defined(__m88k
7280: 5f 5f 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76  __).#define __av
7290: 5f 6c 6f 6e 67 6c 6f 6e 67 28 4c 49 53 54 2c 54  _longlong(LIST,T
72a0: 59 50 45 2c 56 41 4c 29 09 09 09 09 09 5c 0a 20  YPE,VAL).....\. 
72b0: 20 28 28 28 4c 49 53 54 29 2e 61 70 74 72 20 3d   (((LIST).aptr =
72c0: 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28 28 28 5f   (__avword*)(((_
72d0: 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e 61  _avword)(LIST).a
72e0: 70 74 72 2b 73 69 7a 65 6f 66 28 54 59 50 45 29  ptr+sizeof(TYPE)
72f0: 2b 5f 5f 41 56 5f 61 6c 69 67 6e 6f 66 28 54 59  +__AV_alignof(TY
7300: 50 45 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29  PE)-1) & -(long)
7310: 5f 5f 41 56 5f 61 6c 69 67 6e 6f 66 28 54 59 50  __AV_alignof(TYP
7320: 45 29 29 29 20 3e 20 5f 5f 61 76 5f 65 70 74 72  E))) > __av_eptr
7330: 28 4c 49 53 54 29 20 5c 0a 20 20 20 3f 20 2d 31  (LIST) \.   ? -1
7340: 20 3a 20 28 28 28 54 59 50 45 2a 29 28 4c 49 53   : (((TYPE*)(LIS
7350: 54 29 2e 61 70 74 72 29 5b 2d 31 5d 20 3d 20 28  T).aptr)[-1] = (
7360: 54 59 50 45 29 28 56 41 4c 29 2c 20 30 29 29 0a  TYPE)(VAL), 0)).
7370: 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e  #endif.#if defin
7380: 65 64 28 5f 5f 73 33 39 30 5f 5f 29 0a 23 64 65  ed(__s390__).#de
7390: 66 69 6e 65 20 5f 5f 61 76 5f 6c 6f 6e 67 6c 6f  fine __av_longlo
73a0: 6e 67 28 4c 49 53 54 2c 54 59 50 45 2c 56 41 4c  ng(LIST,TYPE,VAL
73b0: 29 09 09 09 09 09 5c 0a 20 20 28 28 28 4c 49 53  ).....\.  (((LIS
73c0: 54 29 2e 61 70 74 72 20 3d 20 28 5f 5f 61 76 77  T).aptr = (__avw
73d0: 6f 72 64 2a 29 28 28 28 5f 5f 61 76 77 6f 72 64  ord*)(((__avword
73e0: 29 28 4c 49 53 54 29 2e 61 70 74 72 2b 73 69 7a  )(LIST).aptr+siz
73f0: 65 6f 66 28 54 59 50 45 29 2b 5f 5f 41 56 5f 61  eof(TYPE)+__AV_a
7400: 6c 69 67 6e 6f 66 28 54 59 50 45 29 2d 31 29 20  lignof(TYPE)-1) 
7410: 26 20 2d 28 6c 6f 6e 67 29 5f 5f 41 56 5f 61 6c  & -(long)__AV_al
7420: 69 67 6e 6f 66 28 54 59 50 45 29 29 29 20 3e 20  ignof(TYPE))) > 
7430: 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29 20  __av_eptr(LIST) 
7440: 5c 0a 20 20 20 3f 20 2d 31 20 3a 09 09 09 09 09  \.   ? -1 :.....
7450: 09 5c 0a 20 20 20 28 28 28 4c 49 53 54 29 2e 61  .\.   (((LIST).a
7460: 70 74 72 20 2d 20 28 4c 49 53 54 29 2e 61 72 67  ptr - (LIST).arg
7470: 73 20 2d 20 28 4c 49 53 54 29 2e 66 61 72 67 77  s - (LIST).fargw
7480: 6f 72 64 73 20 3d 3d 20 34 20 3f 20 2b 2b 28 4c  ords == 4 ? ++(L
7490: 49 53 54 29 2e 61 70 74 72 2c 30 20 3a 20 30 29  IST).aptr,0 : 0)
74a0: 2c 20 5c 0a 20 20 20 20 28 28 28 54 59 50 45 2a  , \.    (((TYPE*
74b0: 29 28 4c 49 53 54 29 2e 61 70 74 72 29 5b 2d 31  )(LIST).aptr)[-1
74c0: 5d 20 3d 20 28 54 59 50 45 29 28 56 41 4c 29 2c  ] = (TYPE)(VAL),
74d0: 20 30 29 29 29 0a 23 65 6e 64 69 66 0a 23 65 6e   0))).#endif.#en
74e0: 64 69 66 0a 23 65 6e 64 69 66 0a 0a 2f 2a 20 66  dif.#endif../* f
74f0: 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e 74 20 61 72  loating-point ar
7500: 67 75 6d 65 6e 74 20 74 79 70 65 73 20 2a 2f 0a  gument types */.
7510: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 69  .#if defined(__i
7520: 33 38 36 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65  386__) || define
7530: 64 28 5f 5f 6d 36 38 6b 5f 5f 29 20 7c 7c 20 28  d(__m68k__) || (
7540: 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f  defined(__sparc_
7550: 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f  _) && !defined(_
7560: 5f 73 70 61 72 63 36 34 5f 5f 29 29 20 7c 7c 20  _sparc64__)) || 
7570: 64 65 66 69 6e 65 64 28 5f 5f 61 72 6d 5f 5f 29  defined(__arm__)
7580: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 63 6f   || defined(__co
7590: 6e 76 65 78 5f 5f 29 0a 0a 23 64 65 66 69 6e 65  nvex__)..#define
75a0: 20 61 76 5f 66 6c 6f 61 74 28 4c 49 53 54 2c 56   av_float(LIST,V
75b0: 41 4c 29 09 09 09 09 09 09 5c 0a 20 20 28 2b 2b  AL)......\.  (++
75c0: 28 4c 49 53 54 29 2e 61 70 74 72 20 3e 20 5f 5f  (LIST).aptr > __
75d0: 61 76 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09  av_eptr(LIST)...
75e0: 09 09 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 28 28  ..\.   ? -1 : ((
75f0: 28 66 6c 6f 61 74 2a 29 28 4c 49 53 54 29 2e 61  (float*)(LIST).a
7600: 70 74 72 29 5b 2d 31 5d 20 3d 20 28 66 6c 6f 61  ptr)[-1] = (floa
7610: 74 29 28 56 41 4c 29 2c 20 30 29 29 0a 0a 23 69  t)(VAL), 0))..#i
7620: 66 20 64 65 66 69 6e 65 64 28 5f 5f 41 52 4d 45  f defined(__ARME
7630: 4c 5f 5f 29 0a 2f 2a 20 41 6c 6d 6f 73 74 20 69  L__)./* Almost i
7640: 64 65 6e 74 69 63 61 6c 20 6e 6f 72 6d 61 6c 20  dentical normal 
7650: 63 61 73 65 2c 20 62 75 74 20 77 65 20 6d 75 73  case, but we mus
7660: 74 20 61 6c 69 67 6e 20 6c 6f 63 61 74 69 6f 6e  t align location
7670: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 61 76 5f 64   */.#define av_d
7680: 6f 75 62 6c 65 28 4c 49 53 54 2c 56 41 4c 29 20  ouble(LIST,VAL) 
7690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
76a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
76b0: 20 20 20 20 20 20 20 20 20 20 20 5c 0a 20 20 20             \.   
76c0: 28 28 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20  (((LIST).aptr = 
76d0: 28 5f 5f 61 76 77 6f 72 64 2a 29 28 28 28 5f 5f  (__avword*)(((__
76e0: 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e 61 70  avword)(LIST).ap
76f0: 74 72 2b 31 35 29 26 2d 38 29 29 20 20 20 20 20  tr+15)&-8))     
7700: 20 20 20 20 20 5c 0a 20 20 20 20 3e 20 5f 5f 61       \.    > __a
7710: 76 5f 65 70 74 72 28 4c 49 53 54 29 20 20 20 20  v_eptr(LIST)    
7720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5c                 \
7750: 0a 20 20 20 20 3f 20 2d 31 20 3a 20 20 20 20 20  .    ? -1 :     
7760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7790: 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20 28 28          \.    ((
77a0: 4c 49 53 54 29 2e 74 6d 70 2e 5f 64 6f 75 62 6c  LIST).tmp._doubl
77b0: 65 20 3d 20 28 64 6f 75 62 6c 65 29 28 56 41 4c  e = (double)(VAL
77c0: 29 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ),              
77d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
77e0: 20 5c 0a 20 20 20 20 20 28 4c 49 53 54 29 2e 61   \.     (LIST).a
77f0: 70 74 72 5b 2d 32 5d 20 3d 20 28 4c 49 53 54 29  ptr[-2] = (LIST)
7800: 2e 74 6d 70 2e 77 6f 72 64 73 5b 30 5d 2c 20 20  .tmp.words[0],  
7810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7820: 20 20 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20            \.    
7830: 20 28 4c 49 53 54 29 2e 61 70 74 72 5b 2d 31 5d   (LIST).aptr[-1]
7840: 20 3d 20 28 4c 49 53 54 29 2e 74 6d 70 2e 77 6f   = (LIST).tmp.wo
7850: 72 64 73 5b 31 5d 2c 20 20 20 20 20 20 20 20 20  rds[1],         
7860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7870: 20 20 20 5c 0a 20 20 20 20 20 30 29 29 0a 23 65     \.     0)).#e
7880: 6c 73 65 0a 2f 2a 20 54 68 69 73 20 61 73 73 75  lse./* This assu
7890: 6d 65 73 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c  mes sizeof(doubl
78a0: 65 29 20 3d 3d 20 32 2a 73 69 7a 65 6f 66 28 5f  e) == 2*sizeof(_
78b0: 5f 61 76 77 6f 72 64 29 2e 20 2a 2f 0a 23 64 65  _avword). */.#de
78c0: 66 69 6e 65 20 61 76 5f 64 6f 75 62 6c 65 28 4c  fine av_double(L
78d0: 49 53 54 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a  IST,VAL)......\.
78e0: 20 20 20 28 28 28 4c 49 53 54 29 2e 61 70 74 72     (((LIST).aptr
78f0: 20 2b 3d 20 32 29 20 3e 20 5f 5f 61 76 5f 65 70   += 2) > __av_ep
7900: 74 72 28 4c 49 53 54 29 09 09 09 09 5c 0a 20 20  tr(LIST)....\.  
7910: 20 20 3f 20 2d 31 20 3a 09 09 09 09 09 09 09 09    ? -1 :........
7920: 5c 0a 20 20 20 20 28 28 4c 49 53 54 29 2e 74 6d  \.    ((LIST).tm
7930: 70 2e 5f 64 6f 75 62 6c 65 20 3d 20 28 64 6f 75  p._double = (dou
7940: 62 6c 65 29 28 56 41 4c 29 2c 09 09 09 09 5c 0a  ble)(VAL),....\.
7950: 20 20 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72       (LIST).aptr
7960: 5b 2d 32 5d 20 3d 20 28 4c 49 53 54 29 2e 74 6d  [-2] = (LIST).tm
7970: 70 2e 77 6f 72 64 73 5b 30 5d 2c 09 09 09 09 5c  p.words[0],....\
7980: 0a 20 20 20 20 20 28 4c 49 53 54 29 2e 61 70 74  .     (LIST).apt
7990: 72 5b 2d 31 5d 20 3d 20 28 4c 49 53 54 29 2e 74  r[-1] = (LIST).t
79a0: 6d 70 2e 77 6f 72 64 73 5b 31 5d 2c 09 09 09 09  mp.words[1],....
79b0: 5c 0a 20 20 20 20 20 30 29 29 0a 23 65 6e 64 69  \.     0)).#endi
79c0: 66 0a 23 65 6e 64 69 66 0a 0a 23 69 66 20 64 65  f.#endif..#if de
79d0: 66 69 6e 65 64 28 5f 5f 6d 69 70 73 5f 5f 29 20  fined(__mips__) 
79e0: 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 6d 69  && !defined(__mi
79f0: 70 73 6e 33 32 5f 5f 29 20 26 26 20 21 64 65 66  psn32__) && !def
7a00: 69 6e 65 64 28 5f 5f 6d 69 70 73 36 34 5f 5f 29  ined(__mips64__)
7a10: 0a 0a 2f 2a 20 55 70 20 74 6f 20 32 20 6c 65 61  ../* Up to 2 lea
7a20: 64 69 6e 67 20 66 6c 6f 61 74 20 6f 72 20 64 6f  ding float or do
7a30: 75 62 6c 65 20 6e 6f 6e 2d 76 61 72 61 72 67 73  uble non-varargs
7a40: 20 61 72 67 73 20 63 61 6e 20 62 65 20 70 61 73   args can be pas
7a50: 73 65 64 20 69 6e 0a 20 2a 20 66 6c 6f 61 74 20  sed in. * float 
7a60: 72 65 67 69 73 74 65 72 73 2c 20 62 75 74 20 77  registers, but w
7a70: 65 20 61 6c 73 6f 20 70 75 73 68 20 74 68 65 6d  e also push them
7a80: 20 69 6e 74 6f 20 74 68 65 20 63 6f 72 72 65 73   into the corres
7a90: 70 6f 6e 64 69 6e 67 20 69 6e 74 0a 20 2a 20 72  ponding int. * r
7aa0: 65 67 69 73 74 65 72 73 20 69 6e 20 63 61 73 65  egisters in case
7ab0: 20 6f 66 20 76 61 72 61 72 67 73 2e 20 46 6f 72   of varargs. For
7ac0: 20 64 6f 75 62 6c 65 73 20 77 65 20 6e 65 65 64   doubles we need
7ad0: 20 74 6f 20 61 6c 69 67 6e 20 74 68 65 20 61 70   to align the ap
7ae0: 74 72 0a 20 2a 20 74 6f 20 61 6e 20 65 76 65 6e  tr. * to an even
7af0: 20 62 6f 75 6e 64 61 72 79 2e 0a 20 2a 2f 0a 23   boundary.. */.#
7b00: 64 65 66 69 6e 65 20 61 76 5f 66 6c 6f 61 74 28  define av_float(
7b10: 4c 49 53 54 2c 56 41 4c 29 09 09 09 09 09 09 5c  LIST,VAL)......\
7b20: 0a 20 20 28 2b 2b 28 4c 49 53 54 29 2e 61 70 74  .  (++(LIST).apt
7b30: 72 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49  r > __av_eptr(LI
7b40: 53 54 29 09 09 09 09 09 5c 0a 20 20 20 3f 20 2d  ST).....\.   ? -
7b50: 31 20 3a 20 28 28 2b 2b 28 4c 49 53 54 29 2e 61  1 : ((++(LIST).a
7b60: 6e 75 6d 20 3d 3d 20 31 09 09 09 09 09 09 5c 0a  num == 1......\.
7b70: 09 20 20 20 20 3f 20 28 28 4c 49 53 54 29 2e 66  .    ? ((LIST).f
7b80: 6c 61 67 73 20 7c 3d 20 5f 5f 41 56 5f 46 4c 4f  lags |= __AV_FLO
7b90: 41 54 5f 31 2c 09 09 09 09 5c 0a 09 20 20 20 20  AT_1,....\..    
7ba0: 20 20 20 28 4c 49 53 54 29 2e 66 6c 6f 61 74 61     (LIST).floata
7bb0: 72 67 5b 30 5d 20 3d 20 28 28 66 6c 6f 61 74 2a  rg[0] = ((float*
7bc0: 29 28 4c 49 53 54 29 2e 61 70 74 72 29 5b 2d 31  )(LIST).aptr)[-1
7bd0: 5d 20 3d 20 28 66 6c 6f 61 74 29 28 56 41 4c 29  ] = (float)(VAL)
7be0: 29 5c 0a 09 20 20 20 20 3a 20 28 4c 49 53 54 29  )\..    : (LIST)
7bf0: 2e 61 6e 75 6d 20 3d 3d 20 32 20 26 26 20 28 28  .anum == 2 && ((
7c00: 28 4c 49 53 54 29 2e 66 6c 61 67 73 20 26 20 5f  (LIST).flags & _
7c10: 5f 41 56 5f 46 4c 4f 41 54 5f 31 29 20 7c 7c 20  _AV_FLOAT_1) || 
7c20: 28 28 4c 49 53 54 29 2e 66 6c 61 67 73 20 26 20  ((LIST).flags & 
7c30: 5f 5f 41 56 5f 44 4f 55 42 4c 45 5f 31 29 29 5c  __AV_DOUBLE_1))\
7c40: 0a 09 20 20 20 20 3f 20 28 28 4c 49 53 54 29 2e  ..    ? ((LIST).
7c50: 66 6c 61 67 73 20 7c 3d 20 5f 5f 41 56 5f 46 4c  flags |= __AV_FL
7c60: 4f 41 54 5f 32 2c 09 09 09 09 5c 0a 09 20 20 20  OAT_2,....\..   
7c70: 20 20 20 20 28 4c 49 53 54 29 2e 66 6c 6f 61 74      (LIST).float
7c80: 61 72 67 5b 31 5d 20 3d 20 28 28 66 6c 6f 61 74  arg[1] = ((float
7c90: 2a 29 28 4c 49 53 54 29 2e 61 70 74 72 29 5b 2d  *)(LIST).aptr)[-
7ca0: 31 5d 20 3d 20 28 66 6c 6f 61 74 29 28 56 41 4c  1] = (float)(VAL
7cb0: 29 29 5c 0a 09 20 20 20 20 3a 20 28 28 28 66 6c  ))\..    : (((fl
7cc0: 6f 61 74 2a 29 28 4c 49 53 54 29 2e 61 70 74 72  oat*)(LIST).aptr
7cd0: 29 5b 2d 31 5d 20 3d 20 28 66 6c 6f 61 74 29 28  )[-1] = (float)(
7ce0: 56 41 4c 29 29 29 2c 09 09 5c 0a 09 20 20 20 30  VAL))),..\..   0
7cf0: 29 29 0a 0a 23 64 65 66 69 6e 65 20 61 76 5f 64  ))..#define av_d
7d00: 6f 75 62 6c 65 28 4c 49 53 54 2c 56 41 4c 29 09  ouble(LIST,VAL).
7d10: 09 09 09 09 09 5c 0a 20 20 28 28 28 4c 49 53 54  .....\.  (((LIST
7d20: 29 2e 61 70 74 72 20 3d 20 28 5f 5f 61 76 77 6f  ).aptr = (__avwo
7d30: 72 64 2a 29 28 28 28 5f 5f 61 76 77 6f 72 64 29  rd*)(((__avword)
7d40: 28 4c 49 53 54 29 2e 61 70 74 72 2b 31 35 29 26  (LIST).aptr+15)&
7d50: 2d 38 29 29 09 09 5c 0a 20 20 20 3e 20 5f 5f 61  -8))..\.   > __a
7d60: 76 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09 09  v_eptr(LIST)....
7d70: 09 09 09 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 28  ...\.   ? -1 : (
7d80: 28 2b 2b 28 4c 49 53 54 29 2e 61 6e 75 6d 20 3d  (++(LIST).anum =
7d90: 3d 20 31 09 09 09 09 09 09 5c 0a 09 20 20 20 20  = 1......\..    
7da0: 3f 20 28 28 4c 49 53 54 29 2e 66 6c 61 67 73 20  ? ((LIST).flags 
7db0: 7c 3d 20 5f 5f 41 56 5f 44 4f 55 42 4c 45 5f 31  |= __AV_DOUBLE_1
7dc0: 2c 09 09 09 09 5c 0a 09 20 20 20 20 20 20 20 28  ,....\..       (
7dd0: 4c 49 53 54 29 2e 64 6f 75 62 6c 65 61 72 67 5b  LIST).doublearg[
7de0: 30 5d 20 3d 20 28 28 64 6f 75 62 6c 65 2a 29 28  0] = ((double*)(
7df0: 4c 49 53 54 29 2e 61 70 74 72 29 5b 2d 31 5d 20  LIST).aptr)[-1] 
7e00: 3d 20 28 64 6f 75 62 6c 65 29 28 56 41 4c 29 29  = (double)(VAL))
7e10: 5c 0a 09 20 20 20 20 3a 20 28 4c 49 53 54 29 2e  \..    : (LIST).
7e20: 61 6e 75 6d 20 3d 3d 20 32 20 26 26 20 28 28 28  anum == 2 && (((
7e30: 4c 49 53 54 29 2e 66 6c 61 67 73 20 26 20 5f 5f  LIST).flags & __
7e40: 41 56 5f 46 4c 4f 41 54 5f 31 29 20 7c 7c 20 28  AV_FLOAT_1) || (
7e50: 28 4c 49 53 54 29 2e 66 6c 61 67 73 20 26 20 5f  (LIST).flags & _
7e60: 5f 41 56 5f 44 4f 55 42 4c 45 5f 31 29 29 5c 0a  _AV_DOUBLE_1))\.
7e70: 09 20 20 20 20 3f 20 28 28 4c 49 53 54 29 2e 66  .    ? ((LIST).f
7e80: 6c 61 67 73 20 7c 3d 20 5f 5f 41 56 5f 44 4f 55  lags |= __AV_DOU
7e90: 42 4c 45 5f 32 2c 09 09 09 09 5c 0a 09 20 20 20  BLE_2,....\..   
7ea0: 20 20 20 20 28 4c 49 53 54 29 2e 64 6f 75 62 6c      (LIST).doubl
7eb0: 65 61 72 67 5b 31 5d 20 3d 20 28 28 64 6f 75 62  earg[1] = ((doub
7ec0: 6c 65 2a 29 28 4c 49 53 54 29 2e 61 70 74 72 29  le*)(LIST).aptr)
7ed0: 5b 2d 31 5d 20 3d 20 28 64 6f 75 62 6c 65 29 28  [-1] = (double)(
7ee0: 56 41 4c 29 29 5c 0a 09 20 20 20 20 3a 20 28 28  VAL))\..    : ((
7ef0: 28 64 6f 75 62 6c 65 2a 29 28 4c 49 53 54 29 2e  (double*)(LIST).
7f00: 61 70 74 72 29 5b 2d 31 5d 20 3d 20 28 64 6f 75  aptr)[-1] = (dou
7f10: 62 6c 65 29 28 56 41 4c 29 29 29 2c 09 09 5c 0a  ble)(VAL))),..\.
7f20: 09 20 20 20 30 29 29 0a 0a 23 65 6e 64 69 66 0a  .   0))..#endif.
7f30: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d  .#if defined(__m
7f40: 69 70 73 6e 33 32 5f 5f 29 20 7c 7c 20 64 65 66  ipsn32__) || def
7f50: 69 6e 65 64 28 5f 5f 6d 69 70 73 36 34 5f 5f 29  ined(__mips64__)
7f60: 0a 0a 2f 2a 20 55 70 20 74 6f 20 38 20 6c 65 61  ../* Up to 8 lea
7f70: 64 69 6e 67 20 66 6c 6f 61 74 20 6f 72 20 64 6f  ding float or do
7f80: 75 62 6c 65 20 6e 6f 6e 2d 76 61 72 61 72 67 73  uble non-varargs
7f90: 20 61 72 67 73 20 63 61 6e 20 62 65 20 70 61 73   args can be pas
7fa0: 73 65 64 20 69 6e 0a 20 2a 20 66 6c 6f 61 74 20  sed in. * float 
7fb0: 72 65 67 69 73 74 65 72 73 2c 20 62 75 74 20 77  registers, but w
7fc0: 65 20 61 6c 73 6f 20 70 75 73 68 20 74 68 65 6d  e also push them
7fd0: 20 69 6e 74 6f 20 74 68 65 20 63 6f 72 72 65 73   into the corres
7fe0: 70 6f 6e 64 69 6e 67 20 69 6e 74 0a 20 2a 20 72  ponding int. * r
7ff0: 65 67 69 73 74 65 72 73 20 69 6e 20 63 61 73 65  egisters in case
8000: 20 6f 66 20 76 61 72 61 72 67 73 2e 0a 20 2a 2f   of varargs.. */
8010: 0a 23 64 65 66 69 6e 65 20 61 76 5f 66 6c 6f 61  .#define av_floa
8020: 74 28 4c 49 53 54 2c 56 41 4c 29 09 09 09 09 09  t(LIST,VAL).....
8030: 09 5c 0a 20 20 28 28 4c 49 53 54 29 2e 61 70 74  .\.  ((LIST).apt
8040: 72 20 3e 3d 20 5f 5f 61 76 5f 65 70 74 72 28 4c  r >= __av_eptr(L
8050: 49 53 54 29 09 09 09 09 09 5c 0a 20 20 20 3f 20  IST).....\.   ? 
8060: 2d 31 20 3a 20 28 28 28 4c 49 53 54 29 2e 61 6e  -1 : (((LIST).an
8070: 75 6d 20 3c 20 38 09 09 09 09 09 09 5c 0a 09 20  um < 8......\.. 
8080: 20 20 20 3f 20 28 28 4c 49 53 54 29 2e 66 61 72     ? ((LIST).far
8090: 67 5f 6d 61 73 6b 20 7c 3d 20 28 31 20 3c 3c 20  g_mask |= (1 << 
80a0: 28 4c 49 53 54 29 2e 61 6e 75 6d 29 2c 09 09 09  (LIST).anum),...
80b0: 5c 0a 09 20 20 20 20 20 20 20 28 4c 49 53 54 29  \..       (LIST)
80c0: 2e 66 61 72 67 5b 28 4c 49 53 54 29 2e 61 6e 75  .farg[(LIST).anu
80d0: 6d 5d 20 3d 20 2a 28 66 6c 6f 61 74 2a 29 28 4c  m] = *(float*)(L
80e0: 49 53 54 29 2e 61 70 74 72 20 3d 20 28 66 6c 6f  IST).aptr = (flo
80f0: 61 74 29 28 56 41 4c 29 29 20 5c 0a 09 20 20 20  at)(VAL)) \..   
8100: 20 3a 20 28 2a 28 66 6c 6f 61 74 2a 29 28 4c 49   : (*(float*)(LI
8110: 53 54 29 2e 61 70 74 72 20 3d 20 28 66 6c 6f 61  ST).aptr = (floa
8120: 74 29 28 56 41 4c 29 29 29 2c 09 09 09 5c 0a 09  t)(VAL))),...\..
8130: 20 20 20 28 4c 49 53 54 29 2e 61 6e 75 6d 2b 2b     (LIST).anum++
8140: 2c 09 09 09 09 09 09 5c 0a 09 20 20 20 28 4c 49  ,......\..   (LI
8150: 53 54 29 2e 61 70 74 72 2b 2b 2c 09 09 09 09 09  ST).aptr++,.....
8160: 09 5c 0a 09 20 20 20 30 29 29 0a 0a 23 64 65 66  .\..   0))..#def
8170: 69 6e 65 20 61 76 5f 64 6f 75 62 6c 65 28 4c 49  ine av_double(LI
8180: 53 54 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a 20  ST,VAL)......\. 
8190: 20 28 28 4c 49 53 54 29 2e 61 70 74 72 20 3e 3d   ((LIST).aptr >=
81a0: 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29   __av_eptr(LIST)
81b0: 09 09 09 09 09 5c 0a 20 20 20 3f 20 2d 31 20 3a  .....\.   ? -1 :
81c0: 20 28 28 28 4c 49 53 54 29 2e 61 6e 75 6d 20 3c   (((LIST).anum <
81d0: 20 38 20 26 26 20 28 28 4c 49 53 54 29 2e 64 61   8 && ((LIST).da
81e0: 72 67 5f 6d 61 73 6b 20 7c 3d 20 28 31 20 3c 3c  rg_mask |= (1 <<
81f0: 20 28 4c 49 53 54 29 2e 61 6e 75 6d 29 29 29 2c   (LIST).anum))),
8200: 20 5c 0a 09 20 20 20 2a 28 64 6f 75 62 6c 65 2a   \..   *(double*
8210: 29 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 28  )(LIST).aptr = (
8220: 64 6f 75 62 6c 65 29 28 56 41 4c 29 2c 09 09 09  double)(VAL),...
8230: 5c 0a 09 20 20 20 28 4c 49 53 54 29 2e 61 6e 75  \..   (LIST).anu
8240: 6d 2b 2b 2c 09 09 09 09 09 09 5c 0a 09 20 20 20  m++,......\..   
8250: 28 4c 49 53 54 29 2e 61 70 74 72 2b 2b 2c 09 09  (LIST).aptr++,..
8260: 09 09 09 09 5c 0a 09 20 20 20 30 29 29 0a 0a 23  ....\..   0))..#
8270: 65 6e 64 69 66 0a 0a 23 69 66 20 64 65 66 69 6e  endif..#if defin
8280: 65 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29 0a  ed(__sparc64__).
8290: 0a 2f 2a 20 55 70 20 74 6f 20 31 36 20 6c 65 61  ./* Up to 16 lea
82a0: 64 69 6e 67 20 66 6c 6f 61 74 20 6f 72 20 64 6f  ding float or do
82b0: 75 62 6c 65 20 6e 6f 6e 2d 76 61 72 61 72 67 73  uble non-varargs
82c0: 20 61 72 67 73 20 63 61 6e 20 62 65 20 70 61 73   args can be pas
82d0: 73 65 64 20 69 6e 0a 20 2a 20 66 6c 6f 61 74 20  sed in. * float 
82e0: 72 65 67 69 73 74 65 72 73 2c 20 62 75 74 20 77  registers, but w
82f0: 65 20 61 6c 73 6f 20 70 75 73 68 20 74 68 65 6d  e also push them
8300: 20 69 6e 74 6f 20 74 68 65 20 63 6f 72 72 65 73   into the corres
8310: 70 6f 6e 64 69 6e 67 20 69 6e 74 0a 20 2a 20 72  ponding int. * r
8320: 65 67 69 73 74 65 72 73 20 69 6e 20 63 61 73 65  egisters in case
8330: 20 6f 66 20 76 61 72 61 72 67 73 2e 0a 20 2a 2f   of varargs.. */
8340: 0a 23 64 65 66 69 6e 65 20 61 76 5f 66 6c 6f 61  .#define av_floa
8350: 74 28 4c 49 53 54 2c 56 41 4c 29 09 09 09 09 09  t(LIST,VAL).....
8360: 09 5c 0a 20 20 28 28 4c 49 53 54 29 2e 61 70 74  .\.  ((LIST).apt
8370: 72 20 3e 3d 20 5f 5f 61 76 5f 65 70 74 72 28 4c  r >= __av_eptr(L
8380: 49 53 54 29 09 09 09 09 09 5c 0a 20 20 20 3f 20  IST).....\.   ? 
8390: 2d 31 20 3a 20 28 28 28 4c 49 53 54 29 2e 61 6e  -1 : (((LIST).an
83a0: 75 6d 20 3c 20 31 36 20 26 26 20 28 28 4c 49 53  um < 16 && ((LIS
83b0: 54 29 2e 64 61 72 67 5f 6d 61 73 6b 20 7c 3d 20  T).darg_mask |= 
83c0: 28 31 20 3c 3c 20 28 4c 49 53 54 29 2e 61 6e 75  (1 << (LIST).anu
83d0: 6d 29 29 29 2c 20 5c 0a 09 20 20 20 28 28 28 66  m))), \..   (((f
83e0: 6c 6f 61 74 2a 29 28 4c 49 53 54 29 2e 61 70 74  loat*)(LIST).apt
83f0: 72 29 5b 31 5d 20 3d 20 28 66 6c 6f 61 74 29 28  r)[1] = (float)(
8400: 56 41 4c 29 29 2c 09 09 09 5c 0a 09 20 20 20 28  VAL)),...\..   (
8410: 4c 49 53 54 29 2e 61 6e 75 6d 2b 2b 2c 09 09 09  LIST).anum++,...
8420: 09 09 09 5c 0a 09 20 20 20 28 4c 49 53 54 29 2e  ...\..   (LIST).
8430: 61 70 74 72 2b 2b 2c 09 09 09 09 09 09 5c 0a 09  aptr++,......\..
8440: 20 20 20 30 29 29 0a 0a 23 64 65 66 69 6e 65 20     0))..#define 
8450: 61 76 5f 64 6f 75 62 6c 65 28 4c 49 53 54 2c 56  av_double(LIST,V
8460: 41 4c 29 09 09 09 09 09 09 5c 0a 20 20 28 28 4c  AL)......\.  ((L
8470: 49 53 54 29 2e 61 70 74 72 20 3e 3d 20 5f 5f 61  IST).aptr >= __a
8480: 76 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09 09  v_eptr(LIST)....
8490: 09 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 28 28 28  .\.   ? -1 : (((
84a0: 4c 49 53 54 29 2e 61 6e 75 6d 20 3c 20 31 36 20  LIST).anum < 16 
84b0: 26 26 20 28 28 4c 49 53 54 29 2e 64 61 72 67 5f  && ((LIST).darg_
84c0: 6d 61 73 6b 20 7c 3d 20 28 31 20 3c 3c 20 28 4c  mask |= (1 << (L
84d0: 49 53 54 29 2e 61 6e 75 6d 29 29 29 2c 20 5c 0a  IST).anum))), \.
84e0: 09 20 20 20 2a 28 64 6f 75 62 6c 65 2a 29 28 4c  .   *(double*)(L
84f0: 49 53 54 29 2e 61 70 74 72 20 3d 20 28 64 6f 75  IST).aptr = (dou
8500: 62 6c 65 29 28 56 41 4c 29 2c 09 09 09 5c 0a 09  ble)(VAL),...\..
8510: 20 20 20 28 4c 49 53 54 29 2e 61 6e 75 6d 2b 2b     (LIST).anum++
8520: 2c 09 09 09 09 09 09 5c 0a 09 20 20 20 28 4c 49  ,......\..   (LI
8530: 53 54 29 2e 61 70 74 72 2b 2b 2c 09 09 09 09 09  ST).aptr++,.....
8540: 09 5c 0a 09 20 20 20 30 29 29 0a 0a 23 65 6e 64  .\..   0))..#end
8550: 69 66 0a 0a 23 69 66 20 64 65 66 69 6e 65 64 28  if..#if defined(
8560: 5f 5f 61 6c 70 68 61 5f 5f 29 0a 0a 23 64 65 66  __alpha__)..#def
8570: 69 6e 65 20 61 76 5f 64 6f 75 62 6c 65 28 4c 49  ine av_double(LI
8580: 53 54 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a 20  ST,VAL)......\. 
8590: 20 28 2b 2b 28 4c 49 53 54 29 2e 61 70 74 72 20   (++(LIST).aptr 
85a0: 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54  > __av_eptr(LIST
85b0: 29 09 09 09 09 09 5c 0a 20 20 20 3f 20 2d 31 20  ).....\.   ? -1 
85c0: 3a 20 28 28 28 64 6f 75 62 6c 65 2a 29 28 4c 49  : (((double*)(LI
85d0: 53 54 29 2e 61 70 74 72 29 5b 2d 31 5d 20 3d 20  ST).aptr)[-1] = 
85e0: 28 64 6f 75 62 6c 65 29 28 56 41 4c 29 2c 20 30  (double)(VAL), 0
85f0: 29 29 0a 0a 23 64 65 66 69 6e 65 20 61 76 5f 66  ))..#define av_f
8600: 6c 6f 61 74 28 4c 49 53 54 2c 56 41 4c 29 09 09  loat(LIST,VAL)..
8610: 09 09 09 09 5c 0a 20 20 28 2b 2b 28 4c 49 53 54  ....\.  (++(LIST
8620: 29 2e 61 70 74 72 20 3e 20 5f 5f 61 76 5f 65 70  ).aptr > __av_ep
8630: 74 72 28 4c 49 53 54 29 09 09 09 09 09 5c 0a 20  tr(LIST).....\. 
8640: 20 20 3f 20 2d 31 09 09 09 09 09 09 09 09 09 5c    ? -1.........\
8650: 0a 20 20 20 3a 20 28 28 28 4c 49 53 54 29 2e 61  .   : (((LIST).a
8660: 70 74 72 20 3e 20 26 28 4c 49 53 54 29 2e 61 72  ptr > &(LIST).ar
8670: 67 73 5b 36 5d 09 09 09 09 09 5c 0a 20 20 20 20  gs[6].....\.    
8680: 20 20 20 3f 20 2f 2a 20 54 68 65 73 65 20 61 72     ? /* These ar
8690: 67 73 20 77 69 6c 6c 20 62 65 20 66 65 74 63 68  gs will be fetch
86a0: 65 64 20 66 72 6f 6d 20 6d 65 6d 6f 72 79 20 75  ed from memory u
86b0: 73 69 6e 67 20 22 6c 64 73 22 20 69 6e 73 74 72  sing "lds" instr
86c0: 75 63 74 69 6f 6e 73 20 2a 2f 20 5c 0a 09 20 2f  uctions */ \.. /
86d0: 2a 20 74 68 65 72 65 66 6f 72 65 20 73 74 6f 72  * therefore stor
86e0: 65 20 74 68 65 6d 20 61 73 20 66 6c 6f 61 74 73  e them as floats
86f0: 20 2a 2f 09 09 09 09 5c 0a 09 20 28 2a 28 66 6c   */....\.. (*(fl
8700: 6f 61 74 2a 29 28 28 4c 49 53 54 29 2e 61 70 74  oat*)((LIST).apt
8710: 72 2d 31 29 20 3d 20 28 66 6c 6f 61 74 29 28 56  r-1) = (float)(V
8720: 41 4c 29 29 09 09 09 5c 0a 20 20 20 20 20 20 20  AL))...\.       
8730: 3a 20 2f 2a 20 54 68 65 20 66 69 72 73 74 20 36  : /* The first 6
8740: 20 61 72 67 73 20 77 69 6c 6c 20 62 65 20 70 75   args will be pu
8750: 74 20 69 6e 74 6f 20 72 65 67 69 73 74 65 72 73  t into registers
8760: 20 62 79 20 22 6c 64 74 22 20 69 6e 73 74 72 75   by "ldt" instru
8770: 63 74 69 6f 6e 73 20 2a 2f 20 5c 0a 09 20 2f 2a  ctions */ \.. /*
8780: 20 28 73 65 65 20 61 76 63 61 6c 6c 2d 61 6c 70   (see avcall-alp
8790: 68 61 2e 63 21 29 2e 20 54 68 65 72 65 66 6f 72  ha.c!). Therefor
87a0: 65 20 73 74 6f 72 65 20 74 68 65 6d 20 61 73 20  e store them as 
87b0: 64 6f 75 62 6c 65 73 2e 20 2a 2f 09 5c 0a 09 20  doubles. */.\.. 
87c0: 2f 2a 20 57 68 65 6e 20 76 69 65 77 65 64 20 61  /* When viewed a
87d0: 73 20 66 6c 6f 61 74 73 2c 20 74 68 65 20 76 61  s floats, the va
87e0: 6c 75 65 20 77 69 6c 6c 20 62 65 20 74 68 65 20  lue will be the 
87f0: 63 6f 72 72 65 63 74 20 6f 6e 65 2e 20 2a 2f 5c  correct one. */\
8800: 0a 09 20 28 2a 28 64 6f 75 62 6c 65 2a 29 28 28  .. (*(double*)((
8810: 4c 49 53 54 29 2e 61 70 74 72 2d 31 29 20 3d 20  LIST).aptr-1) = 
8820: 28 64 6f 75 62 6c 65 29 28 66 6c 6f 61 74 29 28  (double)(float)(
8830: 56 41 4c 29 29 09 09 5c 0a 20 20 20 20 20 29 2c  VAL))..\.     ),
8840: 20 30 29 29 0a 0a 23 65 6e 64 69 66 0a 0a 23 69   0))..#endif..#i
8850: 66 20 64 65 66 69 6e 65 64 28 5f 5f 68 70 70 61  f defined(__hppa
8860: 5f 5f 29 0a 0a 23 64 65 66 69 6e 65 20 61 76 5f  __)..#define av_
8870: 66 6c 6f 61 74 28 4c 49 53 54 2c 56 41 4c 29 09  float(LIST,VAL).
8880: 09 09 09 09 09 5c 0a 20 20 28 2d 2d 28 4c 49 53  .....\.  (--(LIS
8890: 54 29 2e 61 70 74 72 20 3c 20 5f 5f 61 76 5f 65  T).aptr < __av_e
88a0: 70 74 72 28 4c 49 53 54 29 09 09 09 09 09 5c 0a  ptr(LIST).....\.
88b0: 20 20 20 3f 20 2d 31 20 3a 20 28 2a 28 66 6c 6f     ? -1 : (*(flo
88c0: 61 74 2a 29 28 4c 49 53 54 29 2e 61 70 74 72 20  at*)(LIST).aptr 
88d0: 3d 20 28 66 6c 6f 61 74 29 28 56 41 4c 29 2c 20  = (float)(VAL), 
88e0: 30 29 29 0a 0a 23 64 65 66 69 6e 65 20 61 76 5f  0))..#define av_
88f0: 64 6f 75 62 6c 65 28 4c 49 53 54 2c 56 41 4c 29  double(LIST,VAL)
8900: 09 09 09 09 09 09 5c 0a 20 20 28 28 28 4c 49 53  ......\.  (((LIS
8910: 54 29 2e 61 70 74 72 20 3d 20 28 5f 5f 61 76 77  T).aptr = (__avw
8920: 6f 72 64 2a 29 28 28 28 6c 6f 6e 67 29 28 4c 49  ord*)(((long)(LI
8930: 53 54 29 2e 61 70 74 72 2d 73 69 7a 65 6f 66 28  ST).aptr-sizeof(
8940: 64 6f 75 62 6c 65 29 29 20 26 20 2d 28 6c 6f 6e  double)) & -(lon
8950: 67 29 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29  g)sizeof(double)
8960: 29 29 20 5c 0a 20 20 20 20 3c 20 5f 5f 61 76 5f  )) \.    < __av_
8970: 65 70 74 72 28 4c 49 53 54 29 09 09 09 09 09 09  eptr(LIST)......
8980: 09 5c 0a 20 20 20 20 3f 20 2d 31 20 3a 20 28 2a  .\.    ? -1 : (*
8990: 28 64 6f 75 62 6c 65 2a 29 28 4c 49 53 54 29 2e  (double*)(LIST).
89a0: 61 70 74 72 20 3d 20 28 64 6f 75 62 6c 65 29 28  aptr = (double)(
89b0: 56 41 4c 29 2c 20 30 29 29 0a 0a 23 65 6e 64 69  VAL), 0))..#endi
89c0: 66 0a 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f  f..#if defined(_
89d0: 5f 70 6f 77 65 72 70 63 5f 5f 29 20 26 26 20 21  _powerpc__) && !
89e0: 64 65 66 69 6e 65 64 28 5f 5f 70 6f 77 65 72 70  defined(__powerp
89f0: 63 36 34 5f 5f 29 20 26 26 20 28 64 65 66 69 6e  c64__) && (defin
8a00: 65 64 28 5f 41 49 58 29 20 7c 7c 20 28 64 65 66  ed(_AIX) || (def
8a10: 69 6e 65 64 28 5f 5f 4d 41 43 48 5f 5f 29 20 26  ined(__MACH__) &
8a20: 26 20 64 65 66 69 6e 65 64 28 5f 5f 41 50 50 4c  & defined(__APPL
8a30: 45 5f 5f 29 29 29 0a 0a 2f 2a 20 55 70 20 74 6f  E__)))../* Up to
8a40: 20 31 33 20 66 6c 6f 61 74 20 6f 72 20 64 6f 75   13 float or dou
8a50: 62 6c 65 20 6e 6f 6e 2d 76 61 72 61 72 67 73 20  ble non-varargs 
8a60: 61 72 67 73 20 63 61 6e 20 62 65 20 70 61 73 73  args can be pass
8a70: 65 64 20 69 6e 0a 20 2a 20 66 6c 6f 61 74 20 72  ed in. * float r
8a80: 65 67 69 73 74 65 72 73 2c 20 62 75 74 20 77 65  egisters, but we
8a90: 20 61 6c 73 6f 20 70 75 73 68 20 74 68 65 6d 20   also push them 
8aa0: 69 6e 74 6f 20 74 68 65 20 63 6f 72 72 65 73 70  into the corresp
8ab0: 6f 6e 64 69 6e 67 20 69 6e 74 0a 20 2a 20 72 65  onding int. * re
8ac0: 67 69 73 74 65 72 73 20 69 6e 20 63 61 73 65 20  gisters in case 
8ad0: 6f 66 20 76 61 72 61 72 67 73 2e 0a 20 2a 2f 0a  of varargs.. */.
8ae0: 0a 23 64 65 66 69 6e 65 20 61 76 5f 66 6c 6f 61  .#define av_floa
8af0: 74 28 4c 49 53 54 2c 56 41 4c 29 09 09 09 09 09  t(LIST,VAL).....
8b00: 09 5c 0a 20 20 28 2b 2b 28 4c 49 53 54 29 2e 61  .\.  (++(LIST).a
8b10: 70 74 72 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28  ptr > __av_eptr(
8b20: 4c 49 53 54 29 09 09 09 09 09 5c 0a 20 20 20 3f  LIST).....\.   ?
8b30: 20 2d 31 20 3a 20 28 28 28 66 6c 6f 61 74 2a 29   -1 : (((float*)
8b40: 28 4c 49 53 54 29 2e 61 70 74 72 29 5b 2d 31 5d  (LIST).aptr)[-1]
8b50: 20 3d 20 28 66 6c 6f 61 74 29 28 56 41 4c 29 2c   = (float)(VAL),
8b60: 09 09 09 5c 0a 09 20 20 20 28 4c 49 53 54 29 2e  ...\..   (LIST).
8b70: 66 61 70 74 72 20 3c 20 26 28 4c 49 53 54 29 2e  faptr < &(LIST).
8b80: 66 61 72 67 73 5b 31 33 5d 20 26 26 09 09 09 09  fargs[13] &&....
8b90: 5c 0a 09 09 28 2a 28 4c 49 53 54 29 2e 66 61 70  \...(*(LIST).fap
8ba0: 74 72 2b 2b 20 3d 20 28 64 6f 75 62 6c 65 29 28  tr++ = (double)(
8bb0: 66 6c 6f 61 74 29 28 56 41 4c 29 29 2c 09 09 5c  float)(VAL)),..\
8bc0: 0a 09 20 20 20 30 29 29 0a 0a 23 64 65 66 69 6e  ..   0))..#defin
8bd0: 65 20 61 76 5f 64 6f 75 62 6c 65 28 4c 49 53 54  e av_double(LIST
8be0: 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a 20 20 20  ,VAL)......\.   
8bf0: 28 28 28 4c 49 53 54 29 2e 61 70 74 72 20 2b 3d  (((LIST).aptr +=
8c00: 20 32 29 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28   2) > __av_eptr(
8c10: 4c 49 53 54 29 09 09 09 09 5c 0a 20 20 20 20 3f  LIST)....\.    ?
8c20: 20 2d 31 20 3a 09 09 09 09 09 09 09 09 5c 0a 20   -1 :........\. 
8c30: 20 20 20 28 28 4c 49 53 54 29 2e 74 6d 70 2e 5f     ((LIST).tmp._
8c40: 64 6f 75 62 6c 65 20 3d 20 28 64 6f 75 62 6c 65  double = (double
8c50: 29 28 56 41 4c 29 2c 09 09 09 09 5c 0a 20 20 20  )(VAL),....\.   
8c60: 20 20 28 4c 49 53 54 29 2e 61 70 74 72 5b 2d 32    (LIST).aptr[-2
8c70: 5d 20 3d 20 28 4c 49 53 54 29 2e 74 6d 70 2e 77  ] = (LIST).tmp.w
8c80: 6f 72 64 73 5b 30 5d 2c 09 09 09 09 5c 0a 20 20  ords[0],....\.  
8c90: 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72 5b 2d     (LIST).aptr[-
8ca0: 31 5d 20 3d 20 28 4c 49 53 54 29 2e 74 6d 70 2e  1] = (LIST).tmp.
8cb0: 77 6f 72 64 73 5b 31 5d 2c 09 09 09 09 5c 0a 20  words[1],....\. 
8cc0: 20 20 20 20 28 4c 49 53 54 29 2e 66 61 70 74 72      (LIST).faptr
8cd0: 20 3c 20 26 28 4c 49 53 54 29 2e 66 61 72 67 73   < &(LIST).fargs
8ce0: 5b 31 33 5d 20 26 26 09 09 09 09 5c 0a 09 28 2a  [13] &&....\..(*
8cf0: 28 4c 49 53 54 29 2e 66 61 70 74 72 2b 2b 20 3d  (LIST).faptr++ =
8d00: 20 28 4c 49 53 54 29 2e 74 6d 70 2e 5f 64 6f 75   (LIST).tmp._dou
8d10: 62 6c 65 29 2c 09 09 09 09 5c 0a 20 20 20 20 20  ble),....\.     
8d20: 30 29 29 0a 0a 23 65 6e 64 69 66 0a 0a 23 69 66  0))..#endif..#if
8d30: 20 64 65 66 69 6e 65 64 28 5f 5f 70 6f 77 65 72   defined(__power
8d40: 70 63 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65  pc__) && !define
8d50: 64 28 5f 5f 70 6f 77 65 72 70 63 36 34 5f 5f 29  d(__powerpc64__)
8d60: 20 26 26 20 21 28 64 65 66 69 6e 65 64 28 5f 41   && !(defined(_A
8d70: 49 58 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28  IX) || (defined(
8d80: 5f 5f 4d 41 43 48 5f 5f 29 20 26 26 20 64 65 66  __MACH__) && def
8d90: 69 6e 65 64 28 5f 5f 41 50 50 4c 45 5f 5f 29 29  ined(__APPLE__))
8da0: 29 0a 0a 2f 2a 20 55 70 20 74 6f 20 38 20 66 6c  )../* Up to 8 fl
8db0: 6f 61 74 20 6f 72 20 64 6f 75 62 6c 65 20 6e 6f  oat or double no
8dc0: 6e 2d 76 61 72 61 72 67 73 20 61 72 67 73 20 63  n-varargs args c
8dd0: 61 6e 20 62 65 20 70 61 73 73 65 64 20 69 6e 0a  an be passed in.
8de0: 20 2a 20 66 6c 6f 61 74 20 72 65 67 69 73 74 65   * float registe
8df0: 72 73 2c 20 77 69 74 68 6f 75 74 20 6f 63 63 75  rs, without occu
8e00: 70 79 69 6e 67 20 73 70 61 63 65 20 69 6e 20 74  pying space in t
8e10: 68 65 20 67 65 6e 65 72 61 6c 20 72 65 67 69 73  he general regis
8e20: 74 65 72 73 2e 0a 20 2a 2f 0a 0a 23 64 65 66 69  ters.. */..#defi
8e30: 6e 65 20 61 76 5f 66 6c 6f 61 74 28 4c 49 53 54  ne av_float(LIST
8e40: 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a 20 20 28  ,VAL)......\.  (
8e50: 28 4c 49 53 54 29 2e 66 61 70 74 72 20 3c 20 26  (LIST).faptr < &
8e60: 28 4c 49 53 54 29 2e 66 61 72 67 73 5b 38 5d 09  (LIST).fargs[8].
8e70: 09 09 09 09 5c 0a 20 20 20 3f 20 28 28 2a 28 4c  ....\.   ? ((*(L
8e80: 49 53 54 29 2e 66 61 70 74 72 2b 2b 20 3d 20 28  IST).faptr++ = (
8e90: 64 6f 75 62 6c 65 29 28 66 6c 6f 61 74 29 28 56  double)(float)(V
8ea0: 41 4c 29 29 2c 20 30 29 09 09 09 5c 0a 20 20 20  AL)), 0)...\.   
8eb0: 3a 20 28 2b 2b 28 4c 49 53 54 29 2e 61 70 74 72  : (++(LIST).aptr
8ec0: 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53   > __av_eptr(LIS
8ed0: 54 29 09 09 09 09 09 5c 0a 20 20 20 20 20 20 3f  T).....\.      ?
8ee0: 20 2d 31 20 3a 20 28 28 28 66 6c 6f 61 74 2a 29   -1 : (((float*)
8ef0: 28 4c 49 53 54 29 2e 61 70 74 72 29 5b 2d 31 5d  (LIST).aptr)[-1]
8f00: 20 3d 20 28 66 6c 6f 61 74 29 28 56 41 4c 29 2c   = (float)(VAL),
8f10: 20 30 29 29 29 0a 0a 23 64 65 66 69 6e 65 20 61   0)))..#define a
8f20: 76 5f 64 6f 75 62 6c 65 28 4c 49 53 54 2c 56 41  v_double(LIST,VA
8f30: 4c 29 09 09 09 09 09 09 5c 0a 20 20 28 28 4c 49  L)......\.  ((LI
8f40: 53 54 29 2e 66 61 70 74 72 20 3c 20 26 28 4c 49  ST).faptr < &(LI
8f50: 53 54 29 2e 66 61 72 67 73 5b 38 5d 09 09 09 09  ST).fargs[8]....
8f60: 09 5c 0a 20 20 20 3f 20 28 28 2a 28 4c 49 53 54  .\.   ? ((*(LIST
8f70: 29 2e 66 61 70 74 72 2b 2b 20 3d 20 28 64 6f 75  ).faptr++ = (dou
8f80: 62 6c 65 29 28 56 41 4c 29 29 2c 20 30 29 09 09  ble)(VAL)), 0)..
8f90: 09 09 5c 0a 20 20 20 3a 20 28 28 28 4c 49 53 54  ..\.   : (((LIST
8fa0: 29 2e 61 70 74 72 20 2b 3d 20 32 29 20 3e 20 5f  ).aptr += 2) > _
8fb0: 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29 09 09  _av_eptr(LIST)..
8fc0: 09 09 5c 0a 20 20 20 20 20 20 3f 20 2d 31 20 3a  ..\.      ? -1 :
8fd0: 09 09 09 09 09 09 09 09 5c 0a 20 20 20 20 20 20  ........\.      
8fe0: 28 28 4c 49 53 54 29 2e 74 6d 70 2e 5f 64 6f 75  ((LIST).tmp._dou
8ff0: 62 6c 65 20 3d 20 28 64 6f 75 62 6c 65 29 28 56  ble = (double)(V
9000: 41 4c 29 2c 09 09 09 09 5c 0a 20 20 20 20 20 20  AL),....\.      
9010: 20 28 4c 49 53 54 29 2e 61 70 74 72 5b 2d 32 5d   (LIST).aptr[-2]
9020: 20 3d 20 28 4c 49 53 54 29 2e 74 6d 70 2e 77 6f   = (LIST).tmp.wo
9030: 72 64 73 5b 30 5d 2c 09 09 09 09 5c 0a 20 20 20  rds[0],....\.   
9040: 20 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72 5b      (LIST).aptr[
9050: 2d 31 5d 20 3d 20 28 4c 49 53 54 29 2e 74 6d 70  -1] = (LIST).tmp
9060: 2e 77 6f 72 64 73 5b 31 5d 2c 09 09 09 09 5c 0a  .words[1],....\.
9070: 20 20 20 20 20 20 20 30 29 29 29 0a 0a 23 65 6e         0)))..#en
9080: 64 69 66 0a 0a 23 69 66 20 64 65 66 69 6e 65 64  dif..#if defined
9090: 28 5f 5f 70 6f 77 65 72 70 63 36 34 5f 5f 29 0a  (__powerpc64__).
90a0: 0a 2f 2a 20 55 70 20 74 6f 20 31 33 20 66 6c 6f  ./* Up to 13 flo
90b0: 61 74 20 6f 72 20 64 6f 75 62 6c 65 20 6e 6f 6e  at or double non
90c0: 2d 76 61 72 61 72 67 73 20 61 72 67 73 20 63 61  -varargs args ca
90d0: 6e 20 62 65 20 70 61 73 73 65 64 20 69 6e 0a 20  n be passed in. 
90e0: 2a 20 66 6c 6f 61 74 20 72 65 67 69 73 74 65 72  * float register
90f0: 73 2c 20 62 75 74 20 77 65 20 61 6c 73 6f 20 70  s, but we also p
9100: 75 73 68 20 74 68 65 6d 20 69 6e 74 6f 20 74 68  ush them into th
9110: 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20  e corresponding 
9120: 69 6e 74 0a 20 2a 20 72 65 67 69 73 74 65 72 73  int. * registers
9130: 20 69 6e 20 63 61 73 65 20 6f 66 20 76 61 72 61   in case of vara
9140: 72 67 73 2e 0a 20 2a 2f 0a 0a 23 64 65 66 69 6e  rgs.. */..#defin
9150: 65 20 61 76 5f 66 6c 6f 61 74 28 4c 49 53 54 2c  e av_float(LIST,
9160: 56 41 4c 29 09 09 09 09 09 09 5c 0a 20 20 28 2b  VAL)......\.  (+
9170: 2b 28 4c 49 53 54 29 2e 61 70 74 72 20 3e 20 5f  +(LIST).aptr > _
9180: 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29 09 09  _av_eptr(LIST)..
9190: 09 09 09 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 28  ...\.   ? -1 : (
91a0: 28 28 66 6c 6f 61 74 2a 29 28 4c 49 53 54 29 2e  ((float*)(LIST).
91b0: 61 70 74 72 29 5b 2d 31 5d 20 3d 20 28 66 6c 6f  aptr)[-1] = (flo
91c0: 61 74 29 28 56 41 4c 29 2c 09 09 09 5c 0a 09 20  at)(VAL),...\.. 
91d0: 20 20 28 4c 49 53 54 29 2e 66 61 70 74 72 20 3c    (LIST).faptr <
91e0: 20 26 28 4c 49 53 54 29 2e 66 61 72 67 73 5b 31   &(LIST).fargs[1
91f0: 33 5d 20 26 26 09 09 09 09 5c 0a 09 09 28 2a 28  3] &&....\...(*(
9200: 4c 49 53 54 29 2e 66 61 70 74 72 2b 2b 20 3d 20  LIST).faptr++ = 
9210: 28 64 6f 75 62 6c 65 29 28 66 6c 6f 61 74 29 28  (double)(float)(
9220: 56 41 4c 29 29 2c 09 09 5c 0a 09 20 20 20 30 29  VAL)),..\..   0)
9230: 29 0a 0a 23 64 65 66 69 6e 65 20 61 76 5f 64 6f  )..#define av_do
9240: 75 62 6c 65 28 4c 49 53 54 2c 56 41 4c 29 09 09  uble(LIST,VAL)..
9250: 09 09 09 09 5c 0a 20 20 28 2b 2b 28 4c 49 53 54  ....\.  (++(LIST
9260: 29 2e 61 70 74 72 20 3e 20 5f 5f 61 76 5f 65 70  ).aptr > __av_ep
9270: 74 72 28 4c 49 53 54 29 09 09 09 09 09 5c 0a 20  tr(LIST).....\. 
9280: 20 20 3f 20 2d 31 20 3a 20 28 28 28 64 6f 75 62    ? -1 : (((doub
9290: 6c 65 2a 29 28 4c 49 53 54 29 2e 61 70 74 72 29  le*)(LIST).aptr)
92a0: 5b 2d 31 5d 20 3d 20 28 64 6f 75 62 6c 65 29 28  [-1] = (double)(
92b0: 56 41 4c 29 2c 09 09 09 5c 0a 09 20 20 20 28 4c  VAL),...\..   (L
92c0: 49 53 54 29 2e 66 61 70 74 72 20 3c 20 26 28 4c  IST).faptr < &(L
92d0: 49 53 54 29 2e 66 61 72 67 73 5b 31 33 5d 20 26  IST).fargs[13] &
92e0: 26 09 09 09 09 5c 0a 09 09 28 2a 28 4c 49 53 54  &....\...(*(LIST
92f0: 29 2e 66 61 70 74 72 2b 2b 20 3d 20 28 64 6f 75  ).faptr++ = (dou
9300: 62 6c 65 29 28 56 41 4c 29 29 2c 09 09 09 5c 0a  ble)(VAL)),...\.
9310: 09 20 20 20 30 29 29 0a 0a 23 65 6e 64 69 66 0a  .   0))..#endif.
9320: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 73  .#if defined(__s
9330: 33 39 30 5f 5f 29 0a 0a 2f 2a 20 55 70 20 74 6f  390__)../* Up to
9340: 20 32 20 66 6c 6f 61 74 20 6f 72 20 64 6f 75 62   2 float or doub
9350: 6c 65 20 6e 6f 6e 2d 76 61 72 61 72 67 73 20 61  le non-varargs a
9360: 72 67 73 20 63 61 6e 20 62 65 20 70 61 73 73 65  rgs can be passe
9370: 64 20 69 6e 0a 20 2a 20 66 6c 6f 61 74 20 72 65  d in. * float re
9380: 67 69 73 74 65 72 73 2c 20 77 69 74 68 6f 75 74  gisters, without
9390: 20 6f 63 63 75 70 79 69 6e 67 20 73 70 61 63 65   occupying space
93a0: 20 69 6e 20 74 68 65 20 67 65 6e 65 72 61 6c 20   in the general 
93b0: 72 65 67 69 73 74 65 72 73 2e 0a 20 2a 2f 0a 0a  registers.. */..
93c0: 23 64 65 66 69 6e 65 20 61 76 5f 66 6c 6f 61 74  #define av_float
93d0: 28 4c 49 53 54 2c 56 41 4c 29 09 09 09 09 09 09  (LIST,VAL)......
93e0: 5c 0a 20 20 28 28 4c 49 53 54 29 2e 66 61 70 74  \.  ((LIST).fapt
93f0: 72 20 3c 20 26 28 4c 49 53 54 29 2e 66 61 72 67  r < &(LIST).farg
9400: 73 5b 32 5d 09 09 09 09 09 5c 0a 20 20 20 3f 20  s[2].....\.   ? 
9410: 28 4c 49 53 54 29 2e 64 61 70 74 72 2b 2b 2c 20  (LIST).daptr++, 
9420: 2a 28 4c 49 53 54 29 2e 66 61 72 67 73 75 73 65  *(LIST).fargsuse
9430: 64 70 74 72 2b 2b 20 3d 20 31 2c 20 2a 28 4c 49  dptr++ = 1, *(LI
9440: 53 54 29 2e 64 61 72 67 73 75 73 65 64 70 74 72  ST).dargsusedptr
9450: 2b 2b 20 3d 20 30 2c 20 28 28 2a 28 4c 49 53 54  ++ = 0, ((*(LIST
9460: 29 2e 66 61 70 74 72 2b 2b 20 3d 20 28 66 6c 6f  ).faptr++ = (flo
9470: 61 74 29 28 56 41 4c 29 29 2c 20 30 29 09 09 5c  at)(VAL)), 0)..\
9480: 0a 20 20 20 3a 20 28 2b 2b 28 4c 49 53 54 29 2e  .   : (++(LIST).
9490: 61 70 74 72 20 3e 20 5f 5f 61 76 5f 65 70 74 72  aptr > __av_eptr
94a0: 28 4c 49 53 54 29 09 09 09 09 09 5c 0a 20 20 20  (LIST).....\.   
94b0: 20 20 20 3f 20 2d 31 20 3a 20 28 28 4c 49 53 54     ? -1 : ((LIST
94c0: 29 2e 66 61 72 67 77 6f 72 64 73 2b 2b 2c 20 28  ).fargwords++, (
94d0: 28 66 6c 6f 61 74 2a 29 28 4c 49 53 54 29 2e 61  (float*)(LIST).a
94e0: 70 74 72 29 5b 2d 31 5d 20 3d 20 28 66 6c 6f 61  ptr)[-1] = (floa
94f0: 74 29 28 56 41 4c 29 2c 20 30 29 29 29 0a 0a 23  t)(VAL), 0)))..#
9500: 64 65 66 69 6e 65 20 61 76 5f 64 6f 75 62 6c 65  define av_double
9510: 28 4c 49 53 54 2c 56 41 4c 29 09 09 09 09 09 09  (LIST,VAL)......
9520: 5c 0a 20 20 28 28 4c 49 53 54 29 2e 64 61 70 74  \.  ((LIST).dapt
9530: 72 20 3c 20 26 28 4c 49 53 54 29 2e 64 61 72 67  r < &(LIST).darg
9540: 73 5b 32 5d 09 09 09 09 09 5c 0a 20 20 20 3f 20  s[2].....\.   ? 
9550: 28 4c 49 53 54 29 2e 66 61 70 74 72 2b 2b 2c 20  (LIST).faptr++, 
9560: 2a 28 4c 49 53 54 29 2e 64 61 72 67 73 75 73 65  *(LIST).dargsuse
9570: 64 70 74 72 2b 2b 20 3d 20 31 2c 20 2a 28 4c 49  dptr++ = 1, *(LI
9580: 53 54 29 2e 66 61 72 67 73 75 73 65 64 70 74 72  ST).fargsusedptr
9590: 2b 2b 20 3d 20 30 2c 20 28 28 2a 28 4c 49 53 54  ++ = 0, ((*(LIST
95a0: 29 2e 64 61 70 74 72 2b 2b 20 3d 20 28 64 6f 75  ).daptr++ = (dou
95b0: 62 6c 65 29 28 56 41 4c 29 29 2c 20 30 29 09 09  ble)(VAL)), 0)..
95c0: 5c 0a 20 20 20 3a 20 28 28 28 4c 49 53 54 29 2e  \.   : (((LIST).
95d0: 61 70 74 72 20 2b 3d 20 32 29 20 3e 20 5f 5f 61  aptr += 2) > __a
95e0: 76 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09 09  v_eptr(LIST)....
95f0: 5c 0a 20 20 20 20 20 20 3f 20 2d 31 20 3a 09 09  \.      ? -1 :..
9600: 09 09 09 09 09 09 5c 0a 20 20 20 20 20 20 28 28  ......\.      ((
9610: 4c 49 53 54 29 2e 66 61 72 67 77 6f 72 64 73 2b  LIST).fargwords+
9620: 3d 32 2c 20 28 4c 49 53 54 29 2e 74 6d 70 2e 5f  =2, (LIST).tmp._
9630: 64 6f 75 62 6c 65 20 3d 20 28 64 6f 75 62 6c 65  double = (double
9640: 29 28 56 41 4c 29 2c 09 09 09 5c 0a 20 20 20 20  )(VAL),...\.    
9650: 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72 5b 2d     (LIST).aptr[-
9660: 32 5d 20 3d 20 28 4c 49 53 54 29 2e 74 6d 70 2e  2] = (LIST).tmp.
9670: 77 6f 72 64 73 5b 30 5d 2c 09 09 09 09 5c 0a 20  words[0],....\. 
9680: 20 20 20 20 20 20 28 4c 49 53 54 29 2e 61 70 74        (LIST).apt
9690: 72 5b 2d 31 5d 20 3d 20 28 4c 49 53 54 29 2e 74  r[-1] = (LIST).t
96a0: 6d 70 2e 77 6f 72 64 73 5b 31 5d 2c 09 09 09 09  mp.words[1],....
96b0: 5c 0a 20 20 20 20 20 20 20 30 29 29 29 0a 0a 23  \.       0)))..#
96c0: 65 6e 64 69 66 0a 0a 23 69 66 20 64 65 66 69 6e  endif..#if defin
96d0: 65 64 28 5f 5f 6d 38 38 6b 5f 5f 29 0a 0a 23 64  ed(__m88k__)..#d
96e0: 65 66 69 6e 65 20 61 76 5f 66 6c 6f 61 74 28 4c  efine av_float(L
96f0: 49 53 54 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a  IST,VAL)......\.
9700: 20 20 28 2b 2b 28 4c 49 53 54 29 2e 61 70 74 72    (++(LIST).aptr
9710: 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53   > __av_eptr(LIS
9720: 54 29 09 09 09 09 09 5c 0a 20 20 20 3f 20 2d 31  T).....\.   ? -1
9730: 20 3a 20 28 28 28 66 6c 6f 61 74 2a 29 28 4c 49   : (((float*)(LI
9740: 53 54 29 2e 61 70 74 72 29 5b 2d 31 5d 20 3d 20  ST).aptr)[-1] = 
9750: 28 66 6c 6f 61 74 29 28 56 41 4c 29 2c 20 30 29  (float)(VAL), 0)
9760: 29 0a 0a 23 64 65 66 69 6e 65 20 61 76 5f 64 6f  )..#define av_do
9770: 75 62 6c 65 28 4c 49 53 54 2c 56 41 4c 29 09 09  uble(LIST,VAL)..
9780: 09 09 09 09 5c 0a 20 20 20 28 28 28 4c 49 53 54  ....\.   (((LIST
9790: 29 2e 61 70 74 72 20 3d 20 28 5f 5f 61 76 77 6f  ).aptr = (__avwo
97a0: 72 64 2a 29 28 28 28 6c 6f 6e 67 29 28 4c 49 53  rd*)(((long)(LIS
97b0: 54 29 2e 61 70 74 72 2b 73 69 7a 65 6f 66 28 64  T).aptr+sizeof(d
97c0: 6f 75 62 6c 65 29 2b 73 69 7a 65 6f 66 28 64 6f  ouble)+sizeof(do
97d0: 75 62 6c 65 29 2d 31 29 20 26 20 2d 28 6c 6f 6e  uble)-1) & -(lon
97e0: 67 29 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29  g)sizeof(double)
97f0: 29 29 20 5c 0a 20 20 20 20 3e 20 5f 5f 61 76 5f  )) \.    > __av_
9800: 65 70 74 72 28 4c 49 53 54 29 09 09 09 09 09 09  eptr(LIST)......
9810: 09 5c 0a 20 20 20 20 3f 20 2d 31 20 3a 20 28 28  .\.    ? -1 : ((
9820: 28 64 6f 75 62 6c 65 2a 29 28 4c 49 53 54 29 2e  (double*)(LIST).
9830: 61 70 74 72 29 5b 2d 31 5d 20 3d 20 28 64 6f 75  aptr)[-1] = (dou
9840: 62 6c 65 29 28 56 41 4c 29 2c 20 30 29 29 0a 0a  ble)(VAL), 0))..
9850: 23 65 6e 64 69 66 0a 0a 23 69 66 20 64 65 66 69  #endif..#if defi
9860: 6e 65 64 28 5f 5f 69 61 36 34 5f 5f 29 0a 0a 2f  ned(__ia64__)../
9870: 2a 20 55 70 20 74 6f 20 38 20 6c 65 61 64 69 6e  * Up to 8 leadin
9880: 67 20 66 6c 6f 61 74 20 6f 72 20 64 6f 75 62 6c  g float or doubl
9890: 65 20 6e 6f 6e 2d 76 61 72 61 72 67 73 20 61 72  e non-varargs ar
98a0: 67 73 20 63 61 6e 20 62 65 20 70 61 73 73 65 64  gs can be passed
98b0: 20 69 6e 0a 20 2a 20 66 6c 6f 61 74 20 72 65 67   in. * float reg
98c0: 69 73 74 65 72 73 2c 20 62 75 74 20 77 65 20 61  isters, but we a
98d0: 6c 73 6f 20 70 75 73 68 20 74 68 65 6d 20 69 6e  lso push them in
98e0: 74 6f 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e  to the correspon
98f0: 64 69 6e 67 20 69 6e 74 0a 20 2a 20 72 65 67 69  ding int. * regi
9900: 73 74 65 72 73 20 69 6e 20 63 61 73 65 20 6f 66  sters in case of
9910: 20 76 61 72 61 72 67 73 2e 0a 20 2a 2f 0a 23 64   varargs.. */.#d
9920: 65 66 69 6e 65 20 61 76 5f 66 6c 6f 61 74 28 4c  efine av_float(L
9930: 49 53 54 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a  IST,VAL)......\.
9940: 20 20 28 28 4c 49 53 54 29 2e 61 70 74 72 20 3e    ((LIST).aptr >
9950: 3d 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54  = __av_eptr(LIST
9960: 29 09 09 09 09 09 5c 0a 20 20 20 3f 20 2d 31 20  ).....\.   ? -1 
9970: 3a 20 28 28 2a 28 66 6c 6f 61 74 2a 29 28 4c 49  : ((*(float*)(LI
9980: 53 54 29 2e 61 70 74 72 20 3d 20 28 66 6c 6f 61  ST).aptr = (floa
9990: 74 29 28 56 41 4c 29 29 2c 09 09 09 5c 0a 09 20  t)(VAL)),...\.. 
99a0: 20 20 28 28 4c 49 53 54 29 2e 66 61 70 74 72 20    ((LIST).faptr 
99b0: 3c 20 26 28 4c 49 53 54 29 2e 66 61 72 67 73 5b  < &(LIST).fargs[
99c0: 38 5d 20 26 26 20 28 2a 28 4c 49 53 54 29 2e 66  8] && (*(LIST).f
99d0: 61 70 74 72 20 3d 20 2a 28 66 6c 6f 61 74 2a 29  aptr = *(float*)
99e0: 28 4c 49 53 54 29 2e 61 70 74 72 2c 20 28 4c 49  (LIST).aptr, (LI
99f0: 53 54 29 2e 66 61 70 74 72 2b 2b 29 29 2c 20 5c  ST).faptr++)), \
9a00: 0a 09 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72  ..   (LIST).aptr
9a10: 2b 2b 2c 09 09 09 09 09 09 5c 0a 09 20 20 20 30  ++,......\..   0
9a20: 29 29 0a 0a 23 64 65 66 69 6e 65 20 61 76 5f 64  ))..#define av_d
9a30: 6f 75 62 6c 65 28 4c 49 53 54 2c 56 41 4c 29 09  ouble(LIST,VAL).
9a40: 09 09 09 09 09 5c 0a 20 20 28 28 4c 49 53 54 29  .....\.  ((LIST)
9a50: 2e 61 70 74 72 20 3e 3d 20 5f 5f 61 76 5f 65 70  .aptr >= __av_ep
9a60: 74 72 28 4c 49 53 54 29 09 09 09 09 09 5c 0a 20  tr(LIST).....\. 
9a70: 20 20 3f 20 2d 31 20 3a 20 28 2a 28 64 6f 75 62    ? -1 : (*(doub
9a80: 6c 65 2a 29 28 4c 49 53 54 29 2e 61 70 74 72 20  le*)(LIST).aptr 
9a90: 3d 20 28 64 6f 75 62 6c 65 29 28 56 41 4c 29 2c  = (double)(VAL),
9aa0: 09 09 09 5c 0a 09 20 20 20 28 28 4c 49 53 54 29  ...\..   ((LIST)
9ab0: 2e 66 61 70 74 72 20 3c 20 26 28 4c 49 53 54 29  .faptr < &(LIST)
9ac0: 2e 66 61 72 67 73 5b 38 5d 20 26 26 20 28 2a 28  .fargs[8] && (*(
9ad0: 4c 49 53 54 29 2e 66 61 70 74 72 20 3d 20 2a 28  LIST).faptr = *(
9ae0: 64 6f 75 62 6c 65 2a 29 28 4c 49 53 54 29 2e 61  double*)(LIST).a
9af0: 70 74 72 2c 20 28 4c 49 53 54 29 2e 66 61 70 74  ptr, (LIST).fapt
9b00: 72 2b 2b 29 29 2c 20 5c 0a 09 20 20 20 28 4c 49  r++)), \..   (LI
9b10: 53 54 29 2e 61 70 74 72 2b 2b 2c 09 09 09 09 09  ST).aptr++,.....
9b20: 09 5c 0a 09 20 20 20 30 29 29 0a 0a 23 65 6e 64  .\..   0))..#end
9b30: 69 66 0a 0a 23 69 66 20 64 65 66 69 6e 65 64 28  if..#if defined(
9b40: 5f 5f 78 38 36 5f 36 34 5f 5f 29 0a 0a 2f 2a 20  __x86_64__)../* 
9b50: 55 70 20 74 6f 20 38 20 6c 65 61 64 69 6e 67 20  Up to 8 leading 
9b60: 66 6c 6f 61 74 20 6f 72 20 64 6f 75 62 6c 65 20  float or double 
9b70: 61 72 67 73 20 63 61 6e 20 62 65 20 70 61 73 73  args can be pass
9b80: 65 64 20 69 6e 20 66 6c 6f 61 74 20 72 65 67 69  ed in float regi
9b90: 73 74 65 72 73 2e 0a 20 2a 2f 0a 23 64 65 66 69  sters.. */.#defi
9ba0: 6e 65 20 61 76 5f 66 6c 6f 61 74 28 4c 49 53 54  ne av_float(LIST
9bb0: 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a 20 20 28  ,VAL)......\.  (
9bc0: 28 4c 49 53 54 29 2e 66 61 70 74 72 20 3c 20 26  (LIST).faptr < &
9bd0: 28 4c 49 53 54 29 2e 66 61 72 67 73 5b 38 5d 09  (LIST).fargs[8].
9be0: 09 09 09 09 5c 0a 20 20 20 3f 20 28 2a 28 4c 49  ....\.   ? (*(LI
9bf0: 53 54 29 2e 66 61 70 74 72 20 3d 20 30 2e 30 2c  ST).faptr = 0.0,
9c00: 20 2a 28 66 6c 6f 61 74 2a 29 28 4c 49 53 54 29   *(float*)(LIST)
9c10: 2e 66 61 70 74 72 20 3d 20 28 66 6c 6f 61 74 29  .faptr = (float)
9c20: 28 56 41 4c 29 2c 09 5c 0a 20 20 20 20 20 20 28  (VAL),.\.      (
9c30: 4c 49 53 54 29 2e 66 61 70 74 72 2b 2b 2c 09 09  LIST).faptr++,..
9c40: 09 09 09 09 09 5c 0a 20 20 20 20 20 20 30 29 09  .....\.      0).
9c50: 09 09 09 09 09 09 09 5c 0a 20 20 20 3a 20 28 28  .......\.   : ((
9c60: 4c 49 53 54 29 2e 61 70 74 72 20 3e 3d 20 5f 5f  LIST).aptr >= __
9c70: 61 76 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09  av_eptr(LIST)...
9c80: 09 09 5c 0a 20 20 20 20 20 20 3f 20 2d 31 20 3a  ..\.      ? -1 :
9c90: 20 28 28 2a 28 66 6c 6f 61 74 2a 29 28 4c 49 53   ((*(float*)(LIS
9ca0: 54 29 2e 61 70 74 72 20 3d 20 28 66 6c 6f 61 74  T).aptr = (float
9cb0: 29 28 56 41 4c 29 29 2c 09 09 09 5c 0a 09 20 20  )(VAL)),...\..  
9cc0: 20 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72 2b      (LIST).aptr+
9cd0: 2b 2c 09 09 09 09 09 09 5c 0a 09 20 20 20 20 20  +,......\..     
9ce0: 20 30 29 29 29 0a 0a 23 64 65 66 69 6e 65 20 61   0)))..#define a
9cf0: 76 5f 64 6f 75 62 6c 65 28 4c 49 53 54 2c 56 41  v_double(LIST,VA
9d00: 4c 29 09 09 09 09 09 09 5c 0a 20 20 28 28 4c 49  L)......\.  ((LI
9d10: 53 54 29 2e 66 61 70 74 72 20 3c 20 26 28 4c 49  ST).faptr < &(LI
9d20: 53 54 29 2e 66 61 72 67 73 5b 38 5d 09 09 09 09  ST).fargs[8]....
9d30: 09 5c 0a 20 20 20 3f 20 28 2a 28 4c 49 53 54 29  .\.   ? (*(LIST)
9d40: 2e 66 61 70 74 72 20 3d 20 28 64 6f 75 62 6c 65  .faptr = (double
9d50: 29 28 56 41 4c 29 2c 09 09 09 09 09 5c 0a 20 20  )(VAL),.....\.  
9d60: 20 20 20 20 28 4c 49 53 54 29 2e 66 61 70 74 72      (LIST).faptr
9d70: 2b 2b 2c 09 09 09 09 09 09 09 5c 0a 20 20 20 20  ++,.......\.    
9d80: 20 20 30 29 09 09 09 09 09 09 09 09 5c 0a 20 20    0)........\.  
9d90: 20 3a 20 28 28 4c 49 53 54 29 2e 61 70 74 72 20   : ((LIST).aptr 
9da0: 3e 3d 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53  >= __av_eptr(LIS
9db0: 54 29 09 09 09 09 09 5c 0a 20 20 20 20 20 20 3f  T).....\.      ?
9dc0: 20 2d 31 20 3a 20 28 28 2a 28 64 6f 75 62 6c 65   -1 : ((*(double
9dd0: 2a 29 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20  *)(LIST).aptr = 
9de0: 28 64 6f 75 62 6c 65 29 28 56 41 4c 29 29 2c 09  (double)(VAL)),.
9df0: 09 09 5c 0a 09 20 20 20 20 20 20 28 4c 49 53 54  ..\..      (LIST
9e00: 29 2e 61 70 74 72 2b 2b 2c 09 09 09 09 09 09 5c  ).aptr++,......\
9e10: 0a 09 20 20 20 20 20 20 30 29 29 29 0a 0a 23 65  ..      0)))..#e
9e20: 6e 64 69 66 0a 0a 2f 2a 0a 20 2a 20 73 74 72 75  ndif../*. * stru
9e30: 63 74 75 72 65 20 61 72 67 75 6d 65 6e 74 20 74  cture argument t
9e40: 79 70 65 73 0a 20 2a 2f 0a 0a 23 64 65 66 69 6e  ypes. */..#defin
9e50: 65 20 61 76 5f 73 74 72 75 63 74 28 4c 49 53 54  e av_struct(LIST
9e60: 2c 54 59 50 45 2c 56 41 4c 29 09 09 09 09 09 5c  ,TYPE,VAL).....\
9e70: 0a 20 20 5f 5f 61 76 5f 73 74 72 75 63 74 28 4c  .  __av_struct(L
9e80: 49 53 54 2c 54 59 50 45 2c 73 69 7a 65 6f 66 28  IST,TYPE,sizeof(
9e90: 54 59 50 45 29 2c 5f 5f 41 56 5f 61 6c 69 67 6e  TYPE),__AV_align
9ea0: 6f 66 28 54 59 50 45 29 2c 5f 5f 61 76 5f 73 74  of(TYPE),__av_st
9eb0: 72 75 63 74 5f 61 73 73 69 67 6e 2c 56 41 4c 29  ruct_assign,VAL)
9ec0: 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74  .#define __av_st
9ed0: 72 75 63 74 5f 61 73 73 69 67 6e 28 54 59 50 45  ruct_assign(TYPE
9ee0: 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f  ,TYPE_SIZE,TYPE_
9ef0: 41 4c 49 47 4e 2c 50 4c 41 43 45 2c 56 41 4c 29  ALIGN,PLACE,VAL)
9f00: 09 09 5c 0a 20 20 2a 28 54 59 50 45 2a 29 28 50  ..\.  *(TYPE*)(P
9f10: 4c 41 43 45 29 20 3d 20 28 56 41 4c 29 0a 2f 2a  LACE) = (VAL)./*
9f20: 20 5f 61 76 5f 73 74 72 75 63 74 28 29 20 69 73   _av_struct() is
9f30: 20 6c 69 6b 65 20 61 76 5f 73 74 72 75 63 74 28   like av_struct(
9f40: 29 2c 20 65 78 63 65 70 74 20 74 68 61 74 20 79  ), except that y
9f50: 6f 75 20 70 61 73 73 20 74 68 65 20 74 79 70 65  ou pass the type
9f60: 27 73 20 73 69 7a 65 20 61 6e 64 20 61 6c 69 67  's size and alig
9f70: 6e 6d 65 6e 74 0a 20 2a 20 61 6e 64 20 74 68 65  nment. * and the
9f80: 20 76 61 6c 75 65 27 73 20 61 64 64 72 65 73 73   value's address
9f90: 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20   instead of the 
9fa0: 74 79 70 65 20 61 6e 64 20 74 68 65 20 76 61 6c  type and the val
9fb0: 75 65 20 74 68 65 6d 73 65 6c 76 65 73 2e 0a 20  ue themselves.. 
9fc0: 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 61 76 5f 73  */.#define _av_s
9fd0: 74 72 75 63 74 28 4c 49 53 54 2c 54 59 50 45 5f  truct(LIST,TYPE_
9fe0: 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c  SIZE,TYPE_ALIGN,
9ff0: 56 41 4c 5f 41 44 44 52 29 09 09 09 5c 0a 20 20  VAL_ADDR)...\.  
a000: 5f 5f 61 76 5f 73 74 72 75 63 74 28 4c 49 53 54  __av_struct(LIST
a010: 2c 75 6e 6b 6e 6f 77 6e 2c 54 59 50 45 5f 53 49  ,unknown,TYPE_SI
a020: 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 5f 5f  ZE,TYPE_ALIGN,__
a030: 61 76 5f 73 74 72 75 63 74 5f 63 6f 70 79 2c 56  av_struct_copy,V
a040: 41 4c 5f 41 44 44 52 29 0a 23 64 65 66 69 6e 65  AL_ADDR).#define
a050: 20 5f 5f 61 76 5f 73 74 72 75 63 74 5f 63 6f 70   __av_struct_cop
a060: 79 28 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45  y(TYPE,TYPE_SIZE
a070: 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 50 4c 41 43  ,TYPE_ALIGN,PLAC
a080: 45 2c 56 41 4c 5f 41 44 44 52 29 09 5c 0a 20 20  E,VAL_ADDR).\.  
a090: 5f 5f 73 74 72 75 63 74 63 70 79 28 50 4c 41 43  __structcpy(PLAC
a0a0: 45 2c 56 41 4c 5f 41 44 44 52 2c 54 59 50 45 5f  E,VAL_ADDR,TYPE_
a0b0: 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29  SIZE,TYPE_ALIGN)
a0c0: 0a 2f 2a 20 53 74 72 75 63 74 75 72 65 20 61 72  ./* Structure ar
a0d0: 67 75 6d 65 6e 74 20 61 6c 69 67 6e 6d 65 6e 74  gument alignment
a0e0: 2e 20 2a 2f 0a 23 69 66 20 64 65 66 69 6e 65 64  . */.#if defined
a0f0: 28 5f 5f 69 33 38 36 5f 5f 29 20 26 26 20 64 65  (__i386__) && de
a100: 66 69 6e 65 64 28 5f 4d 53 43 5f 56 45 52 29 0a  fined(_MSC_VER).
a110: 2f 2a 20 49 6e 20 4d 53 56 43 2c 20 64 6f 75 62  /* In MSVC, doub
a120: 6c 65 73 20 69 6e 73 69 64 65 20 73 74 72 75 63  les inside struc
a130: 74 75 72 65 73 20 68 61 76 65 20 61 6c 69 67 6e  tures have align
a140: 6d 65 6e 74 20 38 2c 20 69 2e 65 2e 0a 20 2a 20  ment 8, i.e.. * 
a150: 5f 5f 41 56 5f 61 6c 69 67 6e 6f 66 28 64 6f 75  __AV_alignof(dou
a160: 62 6c 65 29 20 3d 20 38 2c 20 62 75 74 20 64 6f  ble) = 8, but do
a170: 75 62 6c 65 73 20 28 61 6e 64 20 61 6c 73 6f 20  ubles (and also 
a180: 73 74 72 75 63 74 75 72 65 73 20 63 6f 6e 74 61  structures conta
a190: 69 6e 69 6e 67 0a 20 2a 20 64 6f 75 62 6c 65 73  ining. * doubles
a1a0: 29 20 61 72 65 20 70 61 73 73 65 64 20 6f 6e 20  ) are passed on 
a1b0: 74 68 65 20 73 74 61 63 6b 20 77 69 74 68 20 61  the stack with a
a1c0: 6c 69 67 6e 6d 65 6e 74 20 34 2e 20 4c 6f 6f 6b  lignment 4. Look
a1d0: 73 20 72 65 61 6c 6c 79 20 77 65 69 72 64 2e 0a  s really weird..
a1e0: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76   */.#define __av
a1f0: 5f 73 74 72 75 63 74 5f 61 6c 69 67 6e 6d 65 6e  _struct_alignmen
a200: 74 28 54 59 50 45 5f 41 4c 49 47 4e 29 20 20 5c  t(TYPE_ALIGN)  \
a210: 0a 20 20 28 28 54 59 50 45 5f 41 4c 49 47 4e 29  .  ((TYPE_ALIGN)
a220: 20 3c 3d 20 34 20 3f 20 28 54 59 50 45 5f 41 4c   <= 4 ? (TYPE_AL
a230: 49 47 4e 29 20 3a 20 34 29 0a 23 65 6c 73 65 0a  IGN) : 4).#else.
a240: 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 72  #define __av_str
a250: 75 63 74 5f 61 6c 69 67 6e 6d 65 6e 74 28 54 59  uct_alignment(TY
a260: 50 45 5f 41 4c 49 47 4e 29 20 20 5c 0a 20 20 28  PE_ALIGN)  \.  (
a270: 54 59 50 45 5f 41 4c 49 47 4e 29 0a 23 65 6e 64  TYPE_ALIGN).#end
a280: 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f  if.#if defined(_
a290: 5f 69 33 38 36 5f 5f 29 20 7c 7c 20 64 65 66 69  _i386__) || defi
a2a0: 6e 65 64 28 5f 5f 6d 69 70 73 5f 5f 29 20 7c 7c  ned(__mips__) ||
a2b0: 20 64 65 66 69 6e 65 64 28 5f 5f 41 52 4d 45 4c   defined(__ARMEL
a2c0: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
a2d0: 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 7c 7c 20 64  _mipsn32__) || d
a2e0: 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 36 34 5f  efined(__mips64_
a2f0: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  _) || defined(__
a300: 61 6c 70 68 61 5f 5f 29 20 7c 7c 20 28 64 65 66  alpha__) || (def
a310: 69 6e 65 64 28 5f 5f 70 6f 77 65 72 70 63 5f 5f  ined(__powerpc__
a320: 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f  ) && !defined(__
a330: 70 6f 77 65 72 70 63 36 34 5f 5f 29 20 26 26 20  powerpc64__) && 
a340: 28 64 65 66 69 6e 65 64 28 5f 41 49 58 29 20 7c  (defined(_AIX) |
a350: 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f 4d 41 43  | (defined(__MAC
a360: 48 5f 5f 29 20 26 26 20 64 65 66 69 6e 65 64 28  H__) && defined(
a370: 5f 5f 41 50 50 4c 45 5f 5f 29 29 29 29 20 7c 7c  __APPLE__)))) ||
a380: 20 64 65 66 69 6e 65 64 28 5f 5f 70 6f 77 65 72   defined(__power
a390: 70 63 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  pc64__) || defin
a3a0: 65 64 28 5f 5f 6d 38 38 6b 5f 5f 29 20 7c 7c 20  ed(__m88k__) || 
a3b0: 64 65 66 69 6e 65 64 28 5f 5f 69 61 36 34 5f 5f  defined(__ia64__
a3c0: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 73  ) || defined(__s
a3d0: 33 39 30 5f 5f 29 0a 2f 2a 20 53 74 72 75 63 74  390__)./* Struct
a3e0: 75 72 65 73 20 61 72 65 20 70 61 73 73 65 64 20  ures are passed 
a3f0: 61 73 20 66 75 6c 6c 79 20 61 6c 69 67 6e 65 64  as fully aligned
a400: 20 73 74 72 75 63 74 75 72 65 73 20 6f 6e 20 74   structures on t
a410: 68 65 20 61 72 67 20 73 74 61 63 6b 2e 0a 20 2a  he arg stack.. *
a420: 20 57 65 20 61 6c 69 67 6e 20 74 68 65 20 61 70   We align the ap
a430: 74 72 2c 20 73 74 6f 72 65 20 74 68 65 20 73 74  tr, store the st
a440: 72 75 63 74 75 72 65 2c 20 74 68 65 6e 20 66 69  ructure, then fi
a450: 6c 6c 20 74 6f 20 77 6f 72 64 20 61 6c 69 67 6e  ll to word align
a460: 6d 65 6e 74 2e 0a 20 2a 20 53 69 6e 67 6c 65 2d  ment.. * Single-
a470: 73 6d 61 6c 6c 2d 69 6e 74 65 67 65 72 20 73 74  small-integer st
a480: 72 75 63 74 75 72 65 73 20 61 72 65 20 4e 4f 54  ructures are NOT
a490: 20 70 72 6f 6d 6f 74 65 64 20 74 6f 20 69 6e 74   promoted to int
a4a0: 65 67 65 72 73 20 61 6e 64 20 68 61 76 65 0a 20  egers and have. 
a4b0: 2a 20 64 69 66 66 65 72 65 6e 74 20 61 6c 69 67  * different alig
a4c0: 6e 6d 65 6e 74 2e 0a 20 2a 2f 0a 2f 2a 20 6c 69  nment.. */./* li
a4d0: 74 74 6c 65 20 65 6e 64 69 61 6e 20 2d 3e 20 73  ttle endian -> s
a4e0: 6d 61 6c 6c 20 73 74 72 75 63 74 75 72 65 73 20  mall structures 
a4f0: 3c 20 31 20 77 6f 72 64 20 61 72 65 20 61 64 6a  < 1 word are adj
a500: 75 73 74 65 64 20 74 6f 20 74 68 65 20 6c 65 66  usted to the lef
a510: 74 20 2a 2f 0a 23 69 66 20 64 65 66 69 6e 65 64  t */.#if defined
a520: 28 5f 5f 69 33 38 36 5f 5f 29 20 7c 7c 20 64 65  (__i386__) || de
a530: 66 69 6e 65 64 28 5f 5f 61 6c 70 68 61 5f 5f 29  fined(__alpha__)
a540: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 78 38   || defined(__x8
a550: 36 5f 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  6_64__) || defin
a560: 65 64 28 5f 5f 41 52 4d 45 4c 5f 5f 29 20 7c 7c  ed(__ARMEL__) ||
a570: 20 28 64 65 66 69 6e 65 64 28 5f 5f 69 61 36 34   (defined(__ia64
a580: 5f 5f 29 20 26 26 20 64 65 66 69 6e 65 64 28 5f  __) && defined(_
a590: 5f 47 4e 55 43 5f 5f 29 20 26 26 20 28 5f 5f 47  _GNUC__) && (__G
a5a0: 4e 55 43 5f 5f 20 3e 3d 20 33 29 29 0a 23 64 65  NUC__ >= 3)).#de
a5b0: 66 69 6e 65 20 5f 5f 61 76 5f 73 74 72 75 63 74  fine __av_struct
a5c0: 28 4c 49 53 54 2c 54 59 50 45 2c 54 59 50 45 5f  (LIST,TYPE,TYPE_
a5d0: 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c  SIZE,TYPE_ALIGN,
a5e0: 41 53 53 49 47 4e 2c 56 41 4c 29 09 09 5c 0a 20  ASSIGN,VAL)..\. 
a5f0: 20 28 28 28 4c 49 53 54 29 2e 61 70 74 72 20 3d   (((LIST).aptr =
a600: 09 09 09 09 09 09 09 5c 0a 20 20 20 20 28 5f 5f  .......\.    (__
a610: 61 76 77 6f 72 64 2a 29 28 28 28 5f 5f 61 76 77  avword*)(((__avw
a620: 6f 72 64 29 28 4c 49 53 54 29 2e 61 70 74 72 2b  ord)(LIST).aptr+
a630: 28 54 59 50 45 5f 53 49 5a 45 29 2b 5f 5f 61 76  (TYPE_SIZE)+__av
a640: 5f 73 74 72 75 63 74 5f 61 6c 69 67 6e 6d 65 6e  _struct_alignmen
a650: 74 28 54 59 50 45 5f 41 4c 49 47 4e 29 2d 31 29  t(TYPE_ALIGN)-1)
a660: 20 26 20 2d 28 6c 6f 6e 67 29 5f 5f 61 76 5f 73   & -(long)__av_s
a670: 74 72 75 63 74 5f 61 6c 69 67 6e 6d 65 6e 74 28  truct_alignment(
a680: 54 59 50 45 5f 41 4c 49 47 4e 29 29 29 5c 0a 20  TYPE_ALIGN)))\. 
a690: 20 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49    > __av_eptr(LI
a6a0: 53 54 29 09 09 09 09 09 09 09 5c 0a 20 20 20 3f  ST).......\.   ?
a6b0: 20 2d 31 20 3a 20 28 41 53 53 49 47 4e 28 54 59   -1 : (ASSIGN(TY
a6c0: 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50  PE,TYPE_SIZE,TYP
a6d0: 45 5f 41 4c 49 47 4e 2c 28 76 6f 69 64 2a 29 28  E_ALIGN,(void*)(
a6e0: 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29  (__avword)(LIST)
a6f0: 2e 61 70 74 72 2d 28 54 59 50 45 5f 53 49 5a 45  .aptr-(TYPE_SIZE
a700: 29 29 2c 56 41 4c 29 2c 5c 0a 09 20 20 20 28 4c  )),VAL),\..   (L
a710: 49 53 54 29 2e 61 70 74 72 20 3d 20 28 5f 5f 61  IST).aptr = (__a
a720: 76 77 6f 72 64 2a 29 28 28 28 5f 5f 61 76 77 6f  vword*)(((__avwo
a730: 72 64 29 28 4c 49 53 54 29 2e 61 70 74 72 2b 73  rd)(LIST).aptr+s
a740: 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 2d  izeof(__avword)-
a750: 31 29 20 26 20 2d 28 6c 6f 6e 67 29 73 69 7a 65  1) & -(long)size
a760: 6f 66 28 5f 5f 61 76 77 6f 72 64 29 29 2c 5c 0a  of(__avword)),\.
a770: 09 20 20 20 30 29 29 0a 23 65 6e 64 69 66 0a 23  .   0)).#endif.#
a780: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 69 61 36  if defined(__ia6
a790: 34 5f 5f 29 20 26 26 20 28 21 64 65 66 69 6e 65  4__) && (!define
a7a0: 64 28 5f 5f 47 4e 55 43 5f 5f 29 20 7c 7c 20 28  d(__GNUC__) || (
a7b0: 5f 5f 47 4e 55 43 5f 5f 20 3c 20 33 29 29 0a 2f  __GNUC__ < 3))./
a7c0: 2a 20 54 79 70 65 73 20 6c 61 72 67 65 72 20 74  * Types larger t
a7d0: 68 61 6e 20 61 20 77 6f 72 64 20 68 61 76 65 20  han a word have 
a7e0: 32 2d 77 6f 72 64 20 61 6c 69 67 6e 6d 65 6e 74  2-word alignment
a7f0: 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 61  . */.#define __a
a800: 76 5f 73 74 72 75 63 74 28 4c 49 53 54 2c 54 59  v_struct(LIST,TY
a810: 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50  PE,TYPE_SIZE,TYP
a820: 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e 2c 56  E_ALIGN,ASSIGN,V
a830: 41 4c 29 09 09 5c 0a 20 20 28 28 4c 49 53 54 29  AL)..\.  ((LIST)
a840: 2e 61 70 74 72 20 3d 20 28 5f 5f 61 76 77 6f 72  .aptr = (__avwor
a850: 64 2a 29 28 28 28 5f 5f 61 76 77 6f 72 64 29 28  d*)(((__avword)(
a860: 4c 49 53 54 29 2e 61 70 74 72 2b 28 54 59 50 45  LIST).aptr+(TYPE
a870: 5f 53 49 5a 45 29 2b 5f 5f 61 76 5f 73 74 72 75  _SIZE)+__av_stru
a880: 63 74 5f 61 6c 69 67 6e 6d 65 6e 74 28 54 59 50  ct_alignment(TYP
a890: 45 5f 41 4c 49 47 4e 29 2d 31 29 20 26 20 2d 28  E_ALIGN)-1) & -(
a8a0: 6c 6f 6e 67 29 5f 5f 61 76 5f 73 74 72 75 63 74  long)__av_struct
a8b0: 5f 61 6c 69 67 6e 6d 65 6e 74 28 54 59 50 45 5f  _alignment(TYPE_
a8c0: 41 4c 49 47 4e 29 29 2c 20 5c 0a 20 20 20 28 28  ALIGN)), \.   ((
a8d0: 54 59 50 45 5f 53 49 5a 45 29 20 3e 20 73 69 7a  TYPE_SIZE) > siz
a8e0: 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 20 26 26  eof(__avword) &&
a8f0: 20 28 28 28 4c 49 53 54 29 2e 61 70 74 72 20 2d   (((LIST).aptr -
a900: 20 26 28 4c 49 53 54 29 2e 61 72 67 73 5b 30 5d   &(LIST).args[0]
a910: 29 20 26 20 31 29 20 3f 20 2b 2b 28 4c 49 53 54  ) & 1) ? ++(LIST
a920: 29 2e 61 70 74 72 20 3a 20 30 29 2c 20 5c 0a 20  ).aptr : 0), \. 
a930: 20 20 28 28 4c 49 53 54 29 2e 61 70 74 72 20 3e    ((LIST).aptr >
a940: 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29   __av_eptr(LIST)
a950: 09 09 09 09 09 5c 0a 20 20 20 20 3f 20 2d 31 20  .....\.    ? -1 
a960: 3a 20 28 41 53 53 49 47 4e 28 54 59 50 45 2c 54  : (ASSIGN(TYPE,T
a970: 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c  YPE_SIZE,TYPE_AL
a980: 49 47 4e 2c 28 76 6f 69 64 2a 29 28 28 5f 5f 61  IGN,(void*)((__a
a990: 76 77 6f 72 64 29 28 4c 49 53 54 29 2e 61 70 74  vword)(LIST).apt
a9a0: 72 2d 28 54 59 50 45 5f 53 49 5a 45 29 29 2c 56  r-(TYPE_SIZE)),V
a9b0: 41 4c 29 2c 5c 0a 09 20 20 20 20 28 4c 49 53 54  AL),\..    (LIST
a9c0: 29 2e 61 70 74 72 20 3d 20 28 5f 5f 61 76 77 6f  ).aptr = (__avwo
a9d0: 72 64 2a 29 28 28 28 5f 5f 61 76 77 6f 72 64 29  rd*)(((__avword)
a9e0: 28 4c 49 53 54 29 2e 61 70 74 72 2b 73 69 7a 65  (LIST).aptr+size
a9f0: 6f 66 28 5f 5f 61 76 77 6f 72 64 29 2d 31 29 20  of(__avword)-1) 
aa00: 26 20 2d 28 6c 6f 6e 67 29 73 69 7a 65 6f 66 28  & -(long)sizeof(
aa10: 5f 5f 61 76 77 6f 72 64 29 29 2c 5c 0a 09 20 20  __avword)),\..  
aa20: 20 20 30 29 29 29 0a 23 65 6e 64 69 66 0a 2f 2a    0))).#endif./*
aa30: 20 73 6d 61 6c 6c 20 73 74 72 75 63 74 75 72 65   small structure
aa40: 73 20 3c 20 31 20 77 6f 72 64 20 61 72 65 20 61  s < 1 word are a
aa50: 64 6a 75 73 74 65 64 20 64 65 70 65 6e 64 69 6e  djusted dependin
aa60: 67 20 6f 6e 20 63 6f 6d 70 69 6c 65 72 20 2a 2f  g on compiler */
aa70: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d  .#if defined(__m
aa80: 69 70 73 5f 5f 29 20 26 26 20 21 64 65 66 69 6e  ips__) && !defin
aa90: 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20  ed(__mipsn32__) 
aaa0: 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 6d 69  && !defined(__mi
aab0: 70 73 36 34 5f 5f 29 0a 23 64 65 66 69 6e 65 20  ps64__).#define 
aac0: 5f 5f 61 76 5f 73 74 72 75 63 74 5f 6c 65 66 74  __av_struct_left
aad0: 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c 54 59  adjusted(LIST,TY
aae0: 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50  PE,TYPE_SIZE,TYP
aaf0: 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e 2c 56  E_ALIGN,ASSIGN,V
ab00: 41 4c 29 20 5c 0a 20 20 28 28 28 4c 49 53 54 29  AL) \.  (((LIST)
ab10: 2e 61 70 74 72 20 3d 09 09 09 09 09 09 09 5c 0a  .aptr =.......\.
ab20: 20 20 20 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28      (__avword*)(
ab30: 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54  ((__avword)(LIST
ab40: 29 2e 61 70 74 72 2b 28 54 59 50 45 5f 53 49 5a  ).aptr+(TYPE_SIZ
ab50: 45 29 2b 28 54 59 50 45 5f 41 4c 49 47 4e 29 2d  E)+(TYPE_ALIGN)-
ab60: 31 29 20 26 20 2d 28 6c 6f 6e 67 29 28 54 59 50  1) & -(long)(TYP
ab70: 45 5f 41 4c 49 47 4e 29 29 29 5c 0a 20 20 20 3e  E_ALIGN)))\.   >
ab80: 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29   __av_eptr(LIST)
ab90: 09 09 09 09 09 09 09 5c 0a 20 20 20 3f 20 2d 31  .......\.   ? -1
aba0: 20 3a 20 28 2b 2b 28 4c 49 53 54 29 2e 61 6e 75   : (++(LIST).anu
abb0: 6d 2c 09 09 09 09 09 09 5c 0a 09 20 20 20 41 53  m,......\..   AS
abc0: 53 49 47 4e 28 54 59 50 45 2c 54 59 50 45 5f 53  SIGN(TYPE,TYPE_S
abd0: 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 28  IZE,TYPE_ALIGN,(
abe0: 76 6f 69 64 2a 29 28 28 5f 5f 61 76 77 6f 72 64  void*)((__avword
abf0: 29 28 4c 49 53 54 29 2e 61 70 74 72 2d 28 54 59  )(LIST).aptr-(TY
ac00: 50 45 5f 53 49 5a 45 29 29 2c 56 41 4c 29 2c 5c  PE_SIZE)),VAL),\
ac10: 0a 09 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72  ..   (LIST).aptr
ac20: 20 3d 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28 28   = (__avword*)((
ac30: 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29  (__avword)(LIST)
ac40: 2e 61 70 74 72 2b 73 69 7a 65 6f 66 28 5f 5f 61  .aptr+sizeof(__a
ac50: 76 77 6f 72 64 29 2d 31 29 20 26 20 2d 28 6c 6f  vword)-1) & -(lo
ac60: 6e 67 29 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f  ng)sizeof(__avwo
ac70: 72 64 29 29 2c 5c 0a 09 20 20 20 30 29 29 0a 23  rd)),\..   0)).#
ac80: 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 72 75  define __av_stru
ac90: 63 74 5f 72 69 67 68 74 61 64 6a 75 73 74 65 64  ct_rightadjusted
aca0: 28 4c 49 53 54 2c 54 59 50 45 2c 54 59 50 45 5f  (LIST,TYPE,TYPE_
acb0: 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c  SIZE,TYPE_ALIGN,
acc0: 41 53 53 49 47 4e 2c 56 41 4c 29 20 5c 0a 20 20  ASSIGN,VAL) \.  
acd0: 28 28 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 09  (((LIST).aptr =.
ace0: 09 09 09 09 09 09 5c 0a 20 20 20 20 28 5f 5f 61  ......\.    (__a
acf0: 76 77 6f 72 64 2a 29 28 28 28 28 28 5f 5f 61 76  vword*)(((((__av
ad00: 77 6f 72 64 29 28 4c 49 53 54 29 2e 61 70 74 72  word)(LIST).aptr
ad10: 2b 28 54 59 50 45 5f 53 49 5a 45 29 2b 28 54 59  +(TYPE_SIZE)+(TY
ad20: 50 45 5f 41 4c 49 47 4e 29 2d 31 29 20 26 20 2d  PE_ALIGN)-1) & -
ad30: 28 6c 6f 6e 67 29 28 54 59 50 45 5f 41 4c 49 47  (long)(TYPE_ALIG
ad40: 4e 29 29 5c 0a 09 09 20 2b 73 69 7a 65 6f 66 28  N))\... +sizeof(
ad50: 5f 5f 61 76 77 6f 72 64 29 2d 31 29 20 26 20 2d  __avword)-1) & -
ad60: 28 6c 6f 6e 67 29 73 69 7a 65 6f 66 28 5f 5f 61  (long)sizeof(__a
ad70: 76 77 6f 72 64 29 29 29 09 5c 0a 20 20 20 3e 20  vword))).\.   > 
ad80: 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29 09  __av_eptr(LIST).
ad90: 09 09 09 09 09 09 5c 0a 20 20 20 3f 20 2d 31 20  ......\.   ? -1 
ada0: 3a 20 28 2b 2b 28 4c 49 53 54 29 2e 61 6e 75 6d  : (++(LIST).anum
adb0: 2c 09 09 09 09 09 09 5c 0a 09 20 20 20 41 53 53  ,......\..   ASS
adc0: 49 47 4e 28 54 59 50 45 2c 54 59 50 45 5f 53 49  IGN(TYPE,TYPE_SI
add0: 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 28 76  ZE,TYPE_ALIGN,(v
ade0: 6f 69 64 2a 29 28 28 5f 5f 61 76 77 6f 72 64 29  oid*)((__avword)
adf0: 28 4c 49 53 54 29 2e 61 70 74 72 2d 28 54 59 50  (LIST).aptr-(TYP
ae00: 45 5f 53 49 5a 45 29 29 2c 56 41 4c 29 2c 5c 0a  E_SIZE)),VAL),\.
ae10: 09 20 20 20 30 29 29 0a 23 64 65 66 69 6e 65 20  .   0)).#define 
ae20: 5f 5f 61 76 5f 73 74 72 75 63 74 28 4c 49 53 54  __av_struct(LIST
ae30: 2c 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c  ,TYPE,TYPE_SIZE,
ae40: 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47  TYPE_ALIGN,ASSIG
ae50: 4e 2c 56 41 4c 29 09 09 5c 0a 20 20 28 28 4c 49  N,VAL)..\.  ((LI
ae60: 53 54 29 2e 66 6c 61 67 73 20 26 20 5f 5f 41 56  ST).flags & __AV
ae70: 5f 53 47 49 43 43 5f 53 54 52 55 43 54 5f 41 52  _SGICC_STRUCT_AR
ae80: 47 53 09 09 09 09 5c 0a 20 20 20 3f 20 2f 2a 20  GS....\.   ? /* 
ae90: 53 47 49 20 4d 49 50 53 20 63 63 20 70 61 73 73  SGI MIPS cc pass
aea0: 65 73 20 73 6d 61 6c 6c 20 73 74 72 75 63 74 75  es small structu
aeb0: 72 65 73 20 6c 65 66 74 2d 61 64 6a 75 73 74 65  res left-adjuste
aec0: 64 2c 20 61 6c 74 68 6f 75 67 68 20 62 69 67 2d  d, although big-
aed0: 65 6e 64 69 61 6e 21 20 2a 2f 5c 0a 20 20 20 20  endian! */\.    
aee0: 20 5f 5f 61 76 5f 73 74 72 75 63 74 5f 6c 65 66   __av_struct_lef
aef0: 74 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c 54  tadjusted(LIST,T
af00: 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59  YPE,TYPE_SIZE,TY
af10: 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e 2c  PE_ALIGN,ASSIGN,
af20: 56 41 4c 29 20 5c 0a 20 20 20 3a 20 2f 2a 20 53  VAL) \.   : /* S
af30: 47 49 20 4d 49 50 53 20 67 63 63 20 70 61 73 73  GI MIPS gcc pass
af40: 65 73 20 73 6d 61 6c 6c 20 73 74 72 75 63 74 75  es small structu
af50: 72 65 73 20 77 69 74 68 69 6e 20 74 68 65 20 66  res within the f
af60: 69 72 73 74 20 66 6f 75 72 20 77 6f 72 64 73 20  irst four words 
af70: 6c 65 66 74 2d 09 20 20 5c 0a 20 20 20 20 20 20  left-.  \.      
af80: 2a 20 61 64 6a 75 73 74 65 64 2c 20 66 6f 72 20  * adjusted, for 
af90: 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 77 69  compatibility wi
afa0: 74 68 20 63 63 2e 20 42 75 74 20 73 74 72 75 63  th cc. But struc
afb0: 74 75 72 65 73 20 69 6e 20 6d 65 6d 6f 72 79 20  tures in memory 
afc0: 61 72 65 20 70 61 73 73 65 64 20 20 5c 0a 20 20  are passed  \.  
afd0: 20 20 20 20 2a 20 72 69 67 68 74 2d 61 64 6a 75      * right-adju
afe0: 73 74 65 64 21 21 20 53 65 65 20 67 63 63 2d 32  sted!! See gcc-2
aff0: 2e 36 2e 33 2f 63 6f 6e 66 69 67 2f 6d 69 70 73  .6.3/config/mips
b000: 2f 6d 69 70 73 2e 63 3a 66 75 6e 63 74 69 6f 6e  /mips.c:function
b010: 5f 61 72 67 28 29 2e 09 20 20 5c 0a 20 20 20 20  _arg()..  \.    
b020: 20 20 2a 2f 09 09 09 09 09 09 09 09 09 20 20 5c    */.........  \
b030: 0a 20 20 20 20 20 28 28 4c 49 53 54 29 2e 61 70  .     ((LIST).ap
b040: 74 72 20 3c 20 26 28 4c 49 53 54 29 2e 61 72 67  tr < &(LIST).arg
b050: 73 5b 34 5d 09 09 09 09 09 09 5c 0a 20 20 20 20  s[4]......\.    
b060: 20 20 3f 20 5f 5f 61 76 5f 73 74 72 75 63 74 5f    ? __av_struct_
b070: 6c 65 66 74 61 64 6a 75 73 74 65 64 28 4c 49 53  leftadjusted(LIS
b080: 54 2c 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45  T,TYPE,TYPE_SIZE
b090: 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49  ,TYPE_ALIGN,ASSI
b0a0: 47 4e 2c 56 41 4c 29 09 5c 0a 20 20 20 20 20 20  GN,VAL).\.      
b0b0: 3a 20 5f 5f 61 76 5f 73 74 72 75 63 74 5f 72 69  : __av_struct_ri
b0c0: 67 68 74 61 64 6a 75 73 74 65 64 28 4c 49 53 54  ghtadjusted(LIST
b0d0: 2c 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c  ,TYPE,TYPE_SIZE,
b0e0: 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47  TYPE_ALIGN,ASSIG
b0f0: 4e 2c 56 41 4c 29 29 29 0a 23 65 6e 64 69 66 0a  N,VAL))).#endif.
b100: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69  #if defined(__mi
b110: 70 73 6e 33 32 5f 5f 29 20 7c 7c 20 64 65 66 69  psn32__) || defi
b120: 6e 65 64 28 5f 5f 6d 69 70 73 36 34 5f 5f 29 0a  ned(__mips64__).
b130: 2f 2a 20 57 68 65 6e 20 61 20 73 74 72 75 63 74  /* When a struct
b140: 75 72 65 20 69 73 20 70 61 73 73 65 64 20 28 70  ure is passed (p
b150: 61 72 74 69 61 6c 6c 79 29 20 69 6e 20 72 65 67  artially) in reg
b160: 69 73 74 65 72 73 2c 20 69 74 20 69 73 20 70 61  isters, it is pa
b170: 73 73 65 64 20 69 6e 20 74 68 65 0a 20 2a 20 69  ssed in the. * i
b180: 6e 74 65 67 65 72 20 72 65 67 69 73 74 65 72 73  nteger registers
b190: 2c 20 65 78 63 65 70 74 20 74 68 61 74 20 64 6f  , except that do
b1a0: 75 62 6c 65 73 20 77 69 74 68 69 6e 20 74 68 65  ubles within the
b1b0: 20 73 74 72 75 63 74 75 72 65 20 61 72 65 20 70   structure are p
b1c0: 61 73 73 65 64 20 69 6e 0a 20 2a 20 74 68 65 20  assed in. * the 
b1d0: 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 72  floating point r
b1e0: 65 67 69 73 74 65 72 73 2e 20 49 6e 73 74 65 61  egisters. Instea
b1f0: 64 20 6f 66 20 64 69 73 74 69 6e 67 75 69 73 68  d of distinguish
b200: 69 6e 67 20 74 68 65 73 65 20 63 61 73 65 73 2c  ing these cases,
b210: 20 77 65 0a 20 2a 20 61 6c 77 61 79 73 20 70 61   we. * always pa
b220: 73 73 20 74 68 65 20 73 74 72 75 63 74 75 72 65  ss the structure
b230: 20 69 6e 20 62 6f 74 68 20 74 68 65 20 69 6e 74   in both the int
b240: 65 67 65 72 20 61 6e 64 20 74 68 65 20 66 6c 6f  eger and the flo
b250: 61 74 69 6e 67 20 70 6f 69 6e 74 0a 20 2a 20 72  ating point. * r
b260: 65 67 69 73 74 65 72 73 2e 0a 20 2a 2f 0a 23 64  egisters.. */.#d
b270: 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 72 75 63  efine __av_struc
b280: 74 5f 6c 65 66 74 61 64 6a 75 73 74 65 64 28 4c  t_leftadjusted(L
b290: 49 53 54 2c 54 59 50 45 2c 54 59 50 45 5f 53 49  IST,TYPE,TYPE_SI
b2a0: 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53  ZE,TYPE_ALIGN,AS
b2b0: 53 49 47 4e 2c 56 41 4c 29 20 5c 0a 20 20 28 28  SIGN,VAL) \.  ((
b2c0: 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 09 09 09  (LIST).aptr =...
b2d0: 09 09 09 09 5c 0a 20 20 20 20 28 5f 5f 61 76 77  ....\.    (__avw
b2e0: 6f 72 64 2a 29 28 28 28 5f 5f 61 76 77 6f 72 64  ord*)(((__avword
b2f0: 29 28 4c 49 53 54 29 2e 61 70 74 72 2b 28 54 59  )(LIST).aptr+(TY
b300: 50 45 5f 53 49 5a 45 29 2b 28 54 59 50 45 5f 41  PE_SIZE)+(TYPE_A
b310: 4c 49 47 4e 29 2d 31 29 20 26 20 2d 28 6c 6f 6e  LIGN)-1) & -(lon
b320: 67 29 28 54 59 50 45 5f 41 4c 49 47 4e 29 29 29  g)(TYPE_ALIGN)))
b330: 5c 0a 20 20 20 3e 20 5f 5f 61 76 5f 65 70 74 72  \.   > __av_eptr
b340: 28 4c 49 53 54 29 09 09 09 09 09 09 09 5c 0a 20  (LIST).......\. 
b350: 20 20 3f 20 2d 31 20 3a 20 28 41 53 53 49 47 4e    ? -1 : (ASSIGN
b360: 28 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c  (TYPE,TYPE_SIZE,
b370: 54 59 50 45 5f 41 4c 49 47 4e 2c 28 76 6f 69 64  TYPE_ALIGN,(void
b380: 2a 29 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49  *)((__avword)(LI
b390: 53 54 29 2e 61 70 74 72 2d 28 54 59 50 45 5f 53  ST).aptr-(TYPE_S
b3a0: 49 5a 45 29 29 2c 56 41 4c 29 2c 5c 0a 09 20 20  IZE)),VAL),\..  
b3b0: 20 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 28   (LIST).aptr = (
b3c0: 5f 5f 61 76 77 6f 72 64 2a 29 28 28 28 5f 5f 61  __avword*)(((__a
b3d0: 76 77 6f 72 64 29 28 4c 49 53 54 29 2e 61 70 74  vword)(LIST).apt
b3e0: 72 2b 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72  r+sizeof(__avwor
b3f0: 64 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 73  d)-1) & -(long)s
b400: 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 29  izeof(__avword))
b410: 2c 5c 0a 09 20 20 20 28 28 4c 49 53 54 29 2e 61  ,\..   ((LIST).a
b420: 6e 75 6d 20 3c 20 38 20 26 26 20 28 28 4c 49 53  num < 8 && ((LIS
b430: 54 29 2e 64 61 72 67 5f 6d 61 73 6b 20 7c 3d 20  T).darg_mask |= 
b440: 28 2d 31 20 3c 3c 20 28 4c 49 53 54 29 2e 61 6e  (-1 << (LIST).an
b450: 75 6d 29 29 29 2c 20 5c 0a 09 20 20 20 28 4c 49  um))), \..   (LI
b460: 53 54 29 2e 61 6e 75 6d 20 2b 3d 20 28 28 28 28  ST).anum += ((((
b470: 28 54 59 50 45 5f 53 49 5a 45 29 2b 28 54 59 50  (TYPE_SIZE)+(TYP
b480: 45 5f 41 4c 49 47 4e 29 2d 31 29 20 26 20 2d 28  E_ALIGN)-1) & -(
b490: 6c 6f 6e 67 29 28 54 59 50 45 5f 41 4c 49 47 4e  long)(TYPE_ALIGN
b4a0: 29 29 20 2b 20 73 69 7a 65 6f 66 28 5f 5f 61 76  )) + sizeof(__av
b4b0: 77 6f 72 64 29 2d 31 29 20 26 20 2d 28 6c 6f 6e  word)-1) & -(lon
b4c0: 67 29 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72  g)sizeof(__avwor
b4d0: 64 29 29 2f 73 69 7a 65 6f 66 28 5f 5f 61 76 77  d))/sizeof(__avw
b4e0: 6f 72 64 29 2c 5c 0a 09 20 20 20 28 4c 49 53 54  ord),\..   (LIST
b4f0: 29 2e 64 61 72 67 5f 6d 61 73 6b 20 26 3d 20 28  ).darg_mask &= (
b500: 31 20 3c 3c 20 28 28 4c 49 53 54 29 2e 61 6e 75  1 << ((LIST).anu
b510: 6d 20 3c 20 38 20 3f 20 28 4c 49 53 54 29 2e 61  m < 8 ? (LIST).a
b520: 6e 75 6d 20 3a 20 38 29 29 20 2d 20 31 2c 20 5c  num : 8)) - 1, \
b530: 0a 09 20 20 20 30 29 29 0a 23 64 65 66 69 6e 65  ..   0)).#define
b540: 20 5f 5f 61 76 5f 73 74 72 75 63 74 5f 72 69 67   __av_struct_rig
b550: 68 74 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c  htadjusted(LIST,
b560: 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54  TYPE,TYPE_SIZE,T
b570: 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e  YPE_ALIGN,ASSIGN
b580: 2c 56 41 4c 29 20 5c 0a 20 20 28 28 28 4c 49 53  ,VAL) \.  (((LIS
b590: 54 29 2e 61 70 74 72 20 3d 09 09 09 09 09 09 09  T).aptr =.......
b5a0: 5c 0a 20 20 20 20 28 5f 5f 61 76 77 6f 72 64 2a  \.    (__avword*
b5b0: 29 28 28 28 28 28 5f 5f 61 76 77 6f 72 64 29 28  )(((((__avword)(
b5c0: 4c 49 53 54 29 2e 61 70 74 72 2b 28 54 59 50 45  LIST).aptr+(TYPE
b5d0: 5f 53 49 5a 45 29 2b 28 54 59 50 45 5f 41 4c 49  _SIZE)+(TYPE_ALI
b5e0: 47 4e 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29  GN)-1) & -(long)
b5f0: 28 54 59 50 45 5f 41 4c 49 47 4e 29 29 5c 0a 09  (TYPE_ALIGN))\..
b600: 09 20 2b 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f  . +sizeof(__avwo
b610: 72 64 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29  rd)-1) & -(long)
b620: 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29  sizeof(__avword)
b630: 29 29 09 5c 0a 20 20 20 3e 20 5f 5f 61 76 5f 65  )).\.   > __av_e
b640: 70 74 72 28 4c 49 53 54 29 09 09 09 09 09 09 09  ptr(LIST).......
b650: 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 28 41 53 53  \.   ? -1 : (ASS
b660: 49 47 4e 28 54 59 50 45 2c 54 59 50 45 5f 53 49  IGN(TYPE,TYPE_SI
b670: 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 28 76  ZE,TYPE_ALIGN,(v
b680: 6f 69 64 2a 29 28 28 5f 5f 61 76 77 6f 72 64 29  oid*)((__avword)
b690: 28 4c 49 53 54 29 2e 61 70 74 72 2d 28 54 59 50  (LIST).aptr-(TYP
b6a0: 45 5f 53 49 5a 45 29 29 2c 56 41 4c 29 2c 5c 0a  E_SIZE)),VAL),\.
b6b0: 09 20 20 20 28 28 4c 49 53 54 29 2e 61 6e 75 6d  .   ((LIST).anum
b6c0: 20 3c 20 38 20 26 26 20 28 28 4c 49 53 54 29 2e   < 8 && ((LIST).
b6d0: 64 61 72 67 5f 6d 61 73 6b 20 7c 3d 20 28 2d 31  darg_mask |= (-1
b6e0: 20 3c 3c 20 28 4c 49 53 54 29 2e 61 6e 75 6d 29   << (LIST).anum)
b6f0: 29 29 2c 20 5c 0a 09 20 20 20 28 4c 49 53 54 29  )), \..   (LIST)
b700: 2e 61 6e 75 6d 20 2b 3d 20 28 28 28 28 28 54 59  .anum += (((((TY
b710: 50 45 5f 53 49 5a 45 29 2b 28 54 59 50 45 5f 41  PE_SIZE)+(TYPE_A
b720: 4c 49 47 4e 29 2d 31 29 20 26 20 2d 28 6c 6f 6e  LIGN)-1) & -(lon
b730: 67 29 28 54 59 50 45 5f 41 4c 49 47 4e 29 29 20  g)(TYPE_ALIGN)) 
b740: 2b 20 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72  + sizeof(__avwor
b750: 64 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 73  d)-1) & -(long)s
b760: 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 29  izeof(__avword))
b770: 2f 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64  /sizeof(__avword
b780: 29 2c 5c 0a 09 20 20 20 28 4c 49 53 54 29 2e 64  ),\..   (LIST).d
b790: 61 72 67 5f 6d 61 73 6b 20 26 3d 20 28 31 20 3c  arg_mask &= (1 <
b7a0: 3c 20 28 28 4c 49 53 54 29 2e 61 6e 75 6d 20 3c  < ((LIST).anum <
b7b0: 20 38 20 3f 20 28 4c 49 53 54 29 2e 61 6e 75 6d   8 ? (LIST).anum
b7c0: 20 3a 20 38 29 29 20 2d 20 31 2c 20 5c 0a 09 20   : 8)) - 1, \.. 
b7d0: 20 20 30 29 29 0a 23 64 65 66 69 6e 65 20 5f 5f    0)).#define __
b7e0: 61 76 5f 73 74 72 75 63 74 28 4c 49 53 54 2c 54  av_struct(LIST,T
b7f0: 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59  YPE,TYPE_SIZE,TY
b800: 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e 2c  PE_ALIGN,ASSIGN,
b810: 56 41 4c 29 09 09 5c 0a 20 20 28 28 4c 49 53 54  VAL)..\.  ((LIST
b820: 29 2e 66 6c 61 67 73 20 26 20 5f 5f 41 56 5f 53  ).flags & __AV_S
b830: 47 49 43 43 5f 53 54 52 55 43 54 5f 41 52 47 53  GICC_STRUCT_ARGS
b840: 09 09 09 09 5c 0a 20 20 20 3f 20 2f 2a 20 53 47  ....\.   ? /* SG
b850: 49 20 4d 49 50 53 20 63 63 20 70 61 73 73 65 73  I MIPS cc passes
b860: 20 73 6d 61 6c 6c 20 73 74 72 75 63 74 75 72 65   small structure
b870: 73 20 6c 65 66 74 2d 61 64 6a 75 73 74 65 64 2c  s left-adjusted,
b880: 20 61 6c 74 68 6f 75 67 68 20 62 69 67 2d 65 6e   although big-en
b890: 64 69 61 6e 21 20 2a 2f 5c 0a 20 20 20 20 20 5f  dian! */\.     _
b8a0: 5f 61 76 5f 73 74 72 75 63 74 5f 6c 65 66 74 61  _av_struct_lefta
b8b0: 64 6a 75 73 74 65 64 28 4c 49 53 54 2c 54 59 50  djusted(LIST,TYP
b8c0: 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45  E,TYPE_SIZE,TYPE
b8d0: 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e 2c 56 41  _ALIGN,ASSIGN,VA
b8e0: 4c 29 20 5c 0a 20 20 20 3a 20 2f 2a 20 53 47 49  L) \.   : /* SGI
b8f0: 20 4d 49 50 53 20 67 63 63 20 70 61 73 73 65 73   MIPS gcc passes
b900: 20 73 6d 61 6c 6c 20 73 74 72 75 63 74 75 72 65   small structure
b910: 73 20 72 69 67 68 74 2d 61 64 6a 75 73 74 65 64  s right-adjusted
b920: 2e 20 2a 2f 09 09 5c 0a 20 20 20 20 20 5f 5f 61  . */..\.     __a
b930: 76 5f 73 74 72 75 63 74 5f 72 69 67 68 74 61 64  v_struct_rightad
b940: 6a 75 73 74 65 64 28 4c 49 53 54 2c 54 59 50 45  justed(LIST,TYPE
b950: 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f  ,TYPE_SIZE,TYPE_
b960: 41 4c 49 47 4e 2c 41 53 53 49 47 4e 2c 56 41 4c  ALIGN,ASSIGN,VAL
b970: 29 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65  )).#endif.#if de
b980: 66 69 6e 65 64 28 5f 5f 70 6f 77 65 72 70 63 5f  fined(__powerpc_
b990: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  _) || defined(__
b9a0: 70 6f 77 65 72 70 63 36 34 5f 5f 29 0a 23 64 65  powerpc64__).#de
b9b0: 66 69 6e 65 20 5f 5f 61 76 5f 73 74 72 75 63 74  fine __av_struct
b9c0: 5f 6c 65 66 74 61 64 6a 75 73 74 65 64 28 4c 49  _leftadjusted(LI
b9d0: 53 54 2c 54 59 50 45 2c 54 59 50 45 5f 53 49 5a  ST,TYPE,TYPE_SIZ
b9e0: 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53  E,TYPE_ALIGN,ASS
b9f0: 49 47 4e 2c 56 41 4c 29 5c 0a 20 20 28 28 28 4c  IGN,VAL)\.  (((L
ba00: 49 53 54 29 2e 61 70 74 72 20 3d 09 09 09 09 09  IST).aptr =.....
ba10: 09 09 5c 0a 20 20 20 20 28 5f 5f 61 76 77 6f 72  ..\.    (__avwor
ba20: 64 2a 29 28 28 28 5f 5f 61 76 77 6f 72 64 29 28  d*)(((__avword)(
ba30: 4c 49 53 54 29 2e 61 70 74 72 2b 28 54 59 50 45  LIST).aptr+(TYPE
ba40: 5f 53 49 5a 45 29 2b 28 54 59 50 45 5f 41 4c 49  _SIZE)+(TYPE_ALI
ba50: 47 4e 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29  GN)-1) & -(long)
ba60: 28 54 59 50 45 5f 41 4c 49 47 4e 29 29 29 5c 0a  (TYPE_ALIGN)))\.
ba70: 20 20 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c     > __av_eptr(L
ba80: 49 53 54 29 09 09 09 09 09 09 09 5c 0a 20 20 20  IST).......\.   
ba90: 3f 20 2d 31 20 3a 20 28 41 53 53 49 47 4e 28 54  ? -1 : (ASSIGN(T
baa0: 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59  YPE,TYPE_SIZE,TY
bab0: 50 45 5f 41 4c 49 47 4e 2c 28 76 6f 69 64 2a 29  PE_ALIGN,(void*)
bac0: 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54  ((__avword)(LIST
bad0: 29 2e 61 70 74 72 2d 28 54 59 50 45 5f 53 49 5a  ).aptr-(TYPE_SIZ
bae0: 45 29 29 2c 56 41 4c 29 2c 5c 0a 09 20 20 20 28  E)),VAL),\..   (
baf0: 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 28 5f 5f  LIST).aptr = (__
bb00: 61 76 77 6f 72 64 2a 29 28 28 28 5f 5f 61 76 77  avword*)(((__avw
bb10: 6f 72 64 29 28 4c 49 53 54 29 2e 61 70 74 72 2b  ord)(LIST).aptr+
bb20: 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29  sizeof(__avword)
bb30: 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 73 69 7a  -1) & -(long)siz
bb40: 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 29 2c 5c  eof(__avword)),\
bb50: 0a 09 20 20 20 30 29 29 0a 23 64 65 66 69 6e 65  ..   0)).#define
bb60: 20 5f 5f 61 76 5f 73 74 72 75 63 74 5f 72 69 67   __av_struct_rig
bb70: 68 74 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c  htadjusted(LIST,
bb80: 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54  TYPE,TYPE_SIZE,T
bb90: 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e  YPE_ALIGN,ASSIGN
bba0: 2c 56 41 4c 29 5c 0a 20 20 28 28 28 4c 49 53 54  ,VAL)\.  (((LIST
bbb0: 29 2e 61 70 74 72 20 3d 09 09 09 09 09 09 09 5c  ).aptr =.......\
bbc0: 0a 20 20 20 20 28 5f 5f 61 76 77 6f 72 64 2a 29  .    (__avword*)
bbd0: 28 28 28 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c  (((((__avword)(L
bbe0: 49 53 54 29 2e 61 70 74 72 2b 28 54 59 50 45 5f  IST).aptr+(TYPE_
bbf0: 53 49 5a 45 29 2b 28 54 59 50 45 5f 41 4c 49 47  SIZE)+(TYPE_ALIG
bc00: 4e 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 28  N)-1) & -(long)(
bc10: 54 59 50 45 5f 41 4c 49 47 4e 29 29 5c 0a 09 09  TYPE_ALIGN))\...
bc20: 20 2b 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72   +sizeof(__avwor
bc30: 64 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 73  d)-1) & -(long)s
bc40: 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 29  izeof(__avword))
bc50: 29 09 5c 0a 20 20 20 3e 20 5f 5f 61 76 5f 65 70  ).\.   > __av_ep
bc60: 74 72 28 4c 49 53 54 29 09 09 09 09 09 09 09 5c  tr(LIST).......\
bc70: 0a 20 20 20 3f 20 2d 31 20 3a 20 28 41 53 53 49  .   ? -1 : (ASSI
bc80: 47 4e 28 54 59 50 45 2c 54 59 50 45 5f 53 49 5a  GN(TYPE,TYPE_SIZ
bc90: 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 28 76 6f  E,TYPE_ALIGN,(vo
bca0: 69 64 2a 29 28 28 5f 5f 61 76 77 6f 72 64 29 28  id*)((__avword)(
bcb0: 4c 49 53 54 29 2e 61 70 74 72 2d 28 54 59 50 45  LIST).aptr-(TYPE
bcc0: 5f 53 49 5a 45 29 29 2c 56 41 4c 29 2c 5c 0a 09  _SIZE)),VAL),\..
bcd0: 20 20 20 30 29 29 0a 23 69 66 20 21 64 65 66 69     0)).#if !defi
bce0: 6e 65 64 28 5f 5f 70 6f 77 65 72 70 63 36 34 5f  ned(__powerpc64_
bcf0: 5f 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f  _).#define __av_
bd00: 73 74 72 75 63 74 28 4c 49 53 54 2c 54 59 50 45  struct(LIST,TYPE
bd10: 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f  ,TYPE_SIZE,TYPE_
bd20: 41 4c 49 47 4e 2c 41 53 53 49 47 4e 2c 56 41 4c  ALIGN,ASSIGN,VAL
bd30: 29 09 09 5c 0a 20 20 28 28 4c 49 53 54 29 2e 66  )..\.  ((LIST).f
bd40: 6c 61 67 73 20 26 20 5f 5f 41 56 5f 41 49 58 43  lags & __AV_AIXC
bd50: 43 5f 53 54 52 55 43 54 5f 41 52 47 53 09 09 09  C_STRUCT_ARGS...
bd60: 09 5c 0a 20 20 20 3f 20 2f 2a 20 41 49 58 20 63  .\.   ? /* AIX c
bd70: 63 20 61 6e 64 20 78 6c 63 20 70 61 73 73 20 73  c and xlc pass s
bd80: 6d 61 6c 6c 20 73 74 72 75 63 74 75 72 65 73 20  mall structures 
bd90: 6c 65 66 74 2d 61 64 6a 75 73 74 65 64 2c 20 61  left-adjusted, a
bda0: 6c 74 68 6f 75 67 68 20 62 69 67 2d 65 6e 64 69  lthough big-endi
bdb0: 61 6e 21 20 2a 2f 5c 0a 20 20 20 20 20 5f 5f 61  an! */\.     __a
bdc0: 76 5f 73 74 72 75 63 74 5f 6c 65 66 74 61 64 6a  v_struct_leftadj
bdd0: 75 73 74 65 64 28 4c 49 53 54 2c 54 59 50 45 2c  usted(LIST,TYPE,
bde0: 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41  TYPE_SIZE,TYPE_A
bdf0: 4c 49 47 4e 2c 41 53 53 49 47 4e 2c 56 41 4c 29  LIGN,ASSIGN,VAL)
be00: 20 5c 0a 20 20 20 3a 20 2f 2a 20 67 63 63 20 70   \.   : /* gcc p
be10: 61 73 73 65 73 20 73 6d 61 6c 6c 20 73 74 72 75  asses small stru
be20: 63 74 75 72 65 73 20 72 69 67 68 74 2d 61 64 6a  ctures right-adj
be30: 75 73 74 65 64 2e 20 2a 2f 09 09 09 5c 0a 20 20  usted. */...\.  
be40: 20 20 20 5f 5f 61 76 5f 73 74 72 75 63 74 5f 72     __av_struct_r
be50: 69 67 68 74 61 64 6a 75 73 74 65 64 28 4c 49 53  ightadjusted(LIS
be60: 54 2c 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45  T,TYPE,TYPE_SIZE
be70: 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49  ,TYPE_ALIGN,ASSI
be80: 47 4e 2c 56 41 4c 29 29 0a 23 65 6e 64 69 66 0a  GN,VAL)).#endif.
be90: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 70 6f  #if defined(__po
bea0: 77 65 72 70 63 36 34 5f 5f 29 0a 23 64 65 66 69  werpc64__).#defi
beb0: 6e 65 20 5f 5f 61 76 5f 73 74 72 75 63 74 28 4c  ne __av_struct(L
bec0: 49 53 54 2c 54 59 50 45 2c 54 59 50 45 5f 53 49  IST,TYPE,TYPE_SI
bed0: 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53  ZE,TYPE_ALIGN,AS
bee0: 53 49 47 4e 2c 56 41 4c 29 09 09 5c 0a 20 20 5f  SIGN,VAL)..\.  _
bef0: 5f 61 76 5f 73 74 72 75 63 74 5f 72 69 67 68 74  _av_struct_right
bf00: 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c 54 59  adjusted(LIST,TY
bf10: 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50  PE,TYPE_SIZE,TYP
bf20: 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e 2c 56  E_ALIGN,ASSIGN,V
bf30: 41 4c 29 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69  AL).#endif.#endi
bf40: 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  f.#if defined(__
bf50: 73 33 39 30 5f 5f 29 0a 23 64 65 66 69 6e 65 20  s390__).#define 
bf60: 5f 5f 61 76 5f 73 74 72 75 63 74 5f 72 69 67 68  __av_struct_righ
bf70: 74 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c 54  tadjusted(LIST,T
bf80: 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59  YPE,TYPE_SIZE,TY
bf90: 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e 2c  PE_ALIGN,ASSIGN,
bfa0: 56 41 4c 29 5c 0a 20 20 28 28 28 4c 49 53 54 29  VAL)\.  (((LIST)
bfb0: 2e 61 70 74 72 20 3d 09 09 09 09 09 09 09 5c 0a  .aptr =.......\.
bfc0: 20 20 20 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28      (__avword*)(
bfd0: 28 28 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49  ((((__avword)(LI
bfe0: 53 54 29 2e 61 70 74 72 2b 28 54 59 50 45 5f 53  ST).aptr+(TYPE_S
bff0: 49 5a 45 29 2b 28 54 59 50 45 5f 41 4c 49 47 4e  IZE)+(TYPE_ALIGN
c000: 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 28 54  )-1) & -(long)(T
c010: 59 50 45 5f 41 4c 49 47 4e 29 29 5c 0a 09 09 20  YPE_ALIGN))\... 
c020: 2b 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64  +sizeof(__avword
c030: 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 73 69  )-1) & -(long)si
c040: 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 29 29  zeof(__avword)))
c050: 09 5c 0a 20 20 20 3e 20 5f 5f 61 76 5f 65 70 74  .\.   > __av_ept
c060: 72 28 4c 49 53 54 29 09 09 09 09 09 09 09 5c 0a  r(LIST).......\.
c070: 20 20 20 3f 20 2d 31 20 3a 20 28 41 53 53 49 47     ? -1 : (ASSIG
c080: 4e 28 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45  N(TYPE,TYPE_SIZE
c090: 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 28 76 6f 69  ,TYPE_ALIGN,(voi
c0a0: 64 2a 29 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c  d*)((__avword)(L
c0b0: 49 53 54 29 2e 61 70 74 72 2d 28 54 59 50 45 5f  IST).aptr-(TYPE_
c0c0: 53 49 5a 45 29 29 2c 56 41 4c 29 2c 5c 0a 09 20  SIZE)),VAL),\.. 
c0d0: 20 20 30 29 29 0a 23 64 65 66 69 6e 65 20 5f 5f    0)).#define __
c0e0: 61 76 5f 73 74 72 75 63 74 28 4c 49 53 54 2c 54  av_struct(LIST,T
c0f0: 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59  YPE,TYPE_SIZE,TY
c100: 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e 2c  PE_ALIGN,ASSIGN,
c110: 56 41 4c 29 09 09 5c 0a 28 28 54 59 50 45 5f 53  VAL)..\.((TYPE_S
c120: 49 5a 45 29 20 21 3d 20 31 20 26 26 20 28 54 59  IZE) != 1 && (TY
c130: 50 45 5f 53 49 5a 45 29 20 21 3d 20 32 20 26 26  PE_SIZE) != 2 &&
c140: 20 28 54 59 50 45 5f 53 49 5a 45 29 20 21 3d 20   (TYPE_SIZE) != 
c150: 34 20 26 26 20 28 54 59 50 45 5f 53 49 5a 45 29  4 && (TYPE_SIZE)
c160: 20 21 3d 20 38 20 5c 0a 20 3f 20 28 2b 2b 28 4c   != 8 \. ? (++(L
c170: 49 53 54 29 2e 61 70 74 72 09 09 09 09 09 09 09  IST).aptr.......
c180: 5c 0a 20 20 20 20 3e 20 28 28 4c 49 53 54 29 2e  \.    > ((LIST).
c190: 65 70 74 72 20 3d 20 28 5f 5f 61 76 77 6f 72 64  eptr = (__avword
c1a0: 2a 29 28 28 6c 6f 6e 67 29 28 4c 49 53 54 29 2e  *)((long)(LIST).
c1b0: 65 70 74 72 20 2d 20 28 28 28 54 59 50 45 5f 53  eptr - (((TYPE_S
c1c0: 49 5a 45 29 2b 37 29 26 2d 38 29 29 29 5c 0a 20  IZE)+7)&-8)))\. 
c1d0: 20 20 20 3f 20 2d 31 20 3a 09 09 09 09 09 09 09     ? -1 :.......
c1e0: 09 5c 0a 20 20 20 20 28 41 53 53 49 47 4e 28 54  .\.    (ASSIGN(T
c1f0: 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59  YPE,TYPE_SIZE,TY
c200: 50 45 5f 41 4c 49 47 4e 2c 28 76 6f 69 64 2a 29  PE_ALIGN,(void*)
c210: 28 4c 49 53 54 29 2e 65 70 74 72 2c 56 41 4c 29  (LIST).eptr,VAL)
c220: 2c 09 09 5c 0a 20 20 20 20 20 28 4c 49 53 54 29  ,..\.     (LIST)
c230: 2e 61 70 74 72 5b 2d 31 5d 20 3d 20 28 5f 5f 61  .aptr[-1] = (__a
c240: 76 77 6f 72 64 29 28 4c 49 53 54 29 2e 65 70 74  vword)(LIST).ept
c250: 72 2c 09 09 09 09 5c 0a 20 20 20 20 20 30 29 29  r,....\.     0))
c260: 09 09 09 09 09 09 09 09 5c 0a 20 3a 20 28 28 28  ........\. : (((
c270: 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 38 20  TYPE_SIZE) == 8 
c280: 26 26 20 28 4c 49 53 54 29 2e 61 70 74 72 20 2d  && (LIST).aptr -
c290: 20 28 4c 49 53 54 29 2e 61 72 67 73 20 2d 20 28   (LIST).args - (
c2a0: 4c 49 53 54 29 2e 66 61 72 67 77 6f 72 64 73 20  LIST).fargwords 
c2b0: 3d 3d 20 34 20 3f 20 2b 2b 28 4c 49 53 54 29 2e  == 4 ? ++(LIST).
c2c0: 61 70 74 72 2c 30 20 3a 20 30 29 2c 20 5c 0a 20  aptr,0 : 0), \. 
c2d0: 20 20 20 5f 5f 61 76 5f 73 74 72 75 63 74 5f 72     __av_struct_r
c2e0: 69 67 68 74 61 64 6a 75 73 74 65 64 28 4c 49 53  ightadjusted(LIS
c2f0: 54 2c 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45  T,TYPE,TYPE_SIZE
c300: 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49  ,TYPE_ALIGN,ASSI
c310: 47 4e 2c 56 41 4c 29 29 29 0a 23 65 6e 64 69 66  GN,VAL))).#endif
c320: 0a 2f 2a 20 62 69 67 20 65 6e 64 69 61 6e 20 2d  ./* big endian -
c330: 3e 20 73 6d 61 6c 6c 20 73 74 72 75 63 74 75 72  > small structur
c340: 65 73 20 3c 20 31 20 77 6f 72 64 20 61 72 65 20  es < 1 word are 
c350: 61 64 6a 75 73 74 65 64 20 74 6f 20 74 68 65 20  adjusted to the 
c360: 72 69 67 68 74 20 2a 2f 0a 23 69 66 20 64 65 66  right */.#if def
c370: 69 6e 65 64 28 5f 5f 6d 38 38 6b 5f 5f 29 0a 23  ined(__m88k__).#
c380: 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 72 75  define __av_stru
c390: 63 74 28 4c 49 53 54 2c 54 59 50 45 2c 54 59 50  ct(LIST,TYPE,TYP
c3a0: 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47  E_SIZE,TYPE_ALIG
c3b0: 4e 2c 41 53 53 49 47 4e 2c 56 41 4c 29 09 09 5c  N,ASSIGN,VAL)..\
c3c0: 0a 20 20 28 28 28 4c 49 53 54 29 2e 61 70 74 72  .  (((LIST).aptr
c3d0: 20 3d 09 09 09 09 09 09 09 5c 0a 20 20 20 20 28   =.......\.    (
c3e0: 5f 5f 61 76 77 6f 72 64 2a 29 28 28 28 28 28 5f  __avword*)(((((_
c3f0: 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e 61  _avword)(LIST).a
c400: 70 74 72 2b 28 54 59 50 45 5f 53 49 5a 45 29 2b  ptr+(TYPE_SIZE)+
c410: 28 54 59 50 45 5f 41 4c 49 47 4e 29 2d 31 29 20  (TYPE_ALIGN)-1) 
c420: 26 20 2d 28 6c 6f 6e 67 29 28 54 59 50 45 5f 41  & -(long)(TYPE_A
c430: 4c 49 47 4e 29 29 5c 0a 09 09 20 2b 73 69 7a 65  LIGN))\... +size
c440: 6f 66 28 5f 5f 61 76 77 6f 72 64 29 2d 31 29 20  of(__avword)-1) 
c450: 26 20 2d 28 6c 6f 6e 67 29 73 69 7a 65 6f 66 28  & -(long)sizeof(
c460: 5f 5f 61 76 77 6f 72 64 29 29 29 09 5c 0a 20 20  __avword))).\.  
c470: 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53   > __av_eptr(LIS
c480: 54 29 09 09 09 09 09 09 09 5c 0a 20 20 20 3f 20  T).......\.   ? 
c490: 2d 31 20 3a 20 28 41 53 53 49 47 4e 28 54 59 50  -1 : (ASSIGN(TYP
c4a0: 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45  E,TYPE_SIZE,TYPE
c4b0: 5f 41 4c 49 47 4e 2c 28 76 6f 69 64 2a 29 28 28  _ALIGN,(void*)((
c4c0: 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e  __avword)(LIST).
c4d0: 61 70 74 72 2d 28 54 59 50 45 5f 53 49 5a 45 29  aptr-(TYPE_SIZE)
c4e0: 29 2c 56 41 4c 29 2c 5c 0a 09 20 20 20 30 29 29  ),VAL),\..   0))
c4f0: 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69 66 0a 23  .#endif.#endif.#
c500: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 36 38  if defined(__m68
c510: 6b 5f 5f 29 20 7c 7c 20 28 64 65 66 69 6e 65 64  k__) || (defined
c520: 28 5f 5f 61 72 6d 5f 5f 29 20 26 26 20 21 64 65  (__arm__) && !de
c530: 66 69 6e 65 64 28 5f 5f 41 52 4d 45 4c 5f 5f 29  fined(__ARMEL__)
c540: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 63  ) || defined(__c
c550: 6f 6e 76 65 78 5f 5f 29 0a 2f 2a 20 53 74 72 75  onvex__)./* Stru
c560: 63 74 75 72 65 73 20 61 72 65 20 70 61 73 73 65  ctures are passe
c570: 64 20 61 73 20 65 6d 62 65 64 64 65 64 20 63 6f  d as embedded co
c580: 70 69 65 73 20 6f 6e 20 74 68 65 20 61 72 67 20  pies on the arg 
c590: 73 74 61 63 6b 2e 0a 20 2a 2f 0a 23 64 65 66 69  stack.. */.#defi
c5a0: 6e 65 20 5f 5f 61 76 5f 73 74 72 75 63 74 28 4c  ne __av_struct(L
c5b0: 49 53 54 2c 54 59 50 45 2c 54 59 50 45 5f 53 49  IST,TYPE,TYPE_SI
c5c0: 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53  ZE,TYPE_ALIGN,AS
c5d0: 53 49 47 4e 2c 56 41 4c 29 09 09 5c 0a 20 20 28  SIGN,VAL)..\.  (
c5e0: 28 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 28  ((LIST).aptr = (
c5f0: 5f 5f 61 76 77 6f 72 64 2a 29 28 28 28 6c 6f 6e  __avword*)(((lon
c600: 67 29 28 4c 49 53 54 29 2e 61 70 74 72 2b 28 54  g)(LIST).aptr+(T
c610: 59 50 45 5f 53 49 5a 45 29 2b 73 69 7a 65 6f 66  YPE_SIZE)+sizeof
c620: 28 5f 5f 61 76 77 6f 72 64 29 2d 31 29 20 26 20  (__avword)-1) & 
c630: 2d 28 6c 6f 6e 67 29 73 69 7a 65 6f 66 28 5f 5f  -(long)sizeof(__
c640: 61 76 77 6f 72 64 29 29 29 20 5c 0a 20 20 20 20  avword))) \.    
c650: 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54  > __av_eptr(LIST
c660: 29 09 09 09 09 09 09 09 5c 0a 20 20 20 20 3f 20  ).......\.    ? 
c670: 2d 31 20 3a 20 28 41 53 53 49 47 4e 28 54 59 50  -1 : (ASSIGN(TYP
c680: 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45  E,TYPE_SIZE,TYPE
c690: 5f 41 4c 49 47 4e 2c 28 76 6f 69 64 2a 29 28 28  _ALIGN,(void*)((
c6a0: 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e  __avword)(LIST).
c6b0: 61 70 74 72 2d 28 54 59 50 45 5f 53 49 5a 45 29  aptr-(TYPE_SIZE)
c6c0: 29 2c 56 41 4c 29 2c 5c 0a 09 20 20 20 20 30 29  ),VAL),\..    0)
c6d0: 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 28 64 65  ).#endif.#if (de
c6e0: 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f 5f 29  fined(__sparc__)
c6f0: 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 73   && !defined(__s
c700: 70 61 72 63 36 34 5f 5f 29 29 20 7c 7c 20 28 64  parc64__)) || (d
c710: 65 66 69 6e 65 64 28 5f 5f 70 6f 77 65 72 70 63  efined(__powerpc
c720: 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 28  __) && !defined(
c730: 5f 5f 70 6f 77 65 72 70 63 36 34 5f 5f 29 20 26  __powerpc64__) &
c740: 26 20 21 28 64 65 66 69 6e 65 64 28 5f 41 49 58  & !(defined(_AIX
c750: 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f  ) || (defined(__
c760: 4d 41 43 48 5f 5f 29 20 26 26 20 64 65 66 69 6e  MACH__) && defin
c770: 65 64 28 5f 5f 41 50 50 4c 45 5f 5f 29 29 29 29  ed(__APPLE__))))
c780: 0a 2f 2a 20 53 74 72 75 63 74 75 72 65 73 20 61  ./* Structures a
c790: 72 65 20 70 61 73 73 65 64 20 61 73 20 70 6f 69  re passed as poi
c7a0: 6e 74 65 72 73 20 74 6f 20 63 61 6c 6c 65 72 2d  nters to caller-
c7b0: 6d 61 64 65 20 6c 6f 63 61 6c 20 63 6f 70 69 65  made local copie
c7c0: 73 2e 20 57 65 0a 20 2a 20 67 72 61 62 20 73 70  s. We. * grab sp
c7d0: 61 63 65 20 66 6f 72 20 74 68 65 20 63 6f 70 69  ace for the copi
c7e0: 65 73 20 66 72 6f 6d 20 74 68 65 20 65 6e 64 20  es from the end 
c7f0: 6f 66 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20  of the argument 
c800: 6c 69 73 74 20 73 70 61 63 65 0a 20 2a 20 61 6e  list space. * an
c810: 64 20 61 6c 77 61 79 73 20 75 73 65 20 6d 61 78  d always use max
c820: 69 6d 61 6c 20 28 64 6f 75 62 6c 65 29 20 61 6c  imal (double) al
c830: 69 67 6e 6d 65 6e 74 2e 0a 20 2a 2f 0a 23 64 65  ignment.. */.#de
c840: 66 69 6e 65 20 5f 5f 61 76 5f 73 74 72 75 63 74  fine __av_struct
c850: 28 4c 49 53 54 2c 54 59 50 45 2c 54 59 50 45 5f  (LIST,TYPE,TYPE_
c860: 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c  SIZE,TYPE_ALIGN,
c870: 41 53 53 49 47 4e 2c 56 41 4c 29 09 09 5c 0a 20  ASSIGN,VAL)..\. 
c880: 20 20 28 2b 2b 28 4c 49 53 54 29 2e 61 70 74 72    (++(LIST).aptr
c890: 09 09 09 09 09 09 09 5c 0a 20 20 20 20 3e 20 28  .......\.    > (
c8a0: 28 4c 49 53 54 29 2e 65 70 74 72 20 3d 20 28 5f  (LIST).eptr = (_
c8b0: 5f 61 76 77 6f 72 64 2a 29 28 28 6c 6f 6e 67 29  _avword*)((long)
c8c0: 28 4c 49 53 54 29 2e 65 70 74 72 20 2d 20 28 28  (LIST).eptr - ((
c8d0: 28 54 59 50 45 5f 53 49 5a 45 29 2b 37 29 26 2d  (TYPE_SIZE)+7)&-
c8e0: 38 29 29 29 5c 0a 20 20 20 20 3f 20 2d 31 20 3a  8)))\.    ? -1 :
c8f0: 09 09 09 09 09 09 09 09 5c 0a 20 20 20 20 28 41  ........\.    (A
c900: 53 53 49 47 4e 28 54 59 50 45 2c 54 59 50 45 5f  SSIGN(TYPE,TYPE_
c910: 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c  SIZE,TYPE_ALIGN,
c920: 28 76 6f 69 64 2a 29 28 4c 49 53 54 29 2e 65 70  (void*)(LIST).ep
c930: 74 72 2c 56 41 4c 29 2c 09 09 5c 0a 20 20 20 20  tr,VAL),..\.    
c940: 20 28 4c 49 53 54 29 2e 61 70 74 72 5b 2d 31 5d   (LIST).aptr[-1]
c950: 20 3d 20 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49   = (__avword)(LI
c960: 53 54 29 2e 65 70 74 72 2c 09 09 09 09 5c 0a 20  ST).eptr,....\. 
c970: 20 20 20 20 30 29 29 0a 23 65 6e 64 69 66 0a 23      0)).#endif.#
c980: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 73 70 61  if defined(__spa
c990: 72 63 36 34 5f 5f 29 0a 2f 2a 20 53 74 72 75 63  rc64__)./* Struc
c9a0: 74 75 72 65 73 20 3c 3d 20 31 36 20 62 79 74 65  tures <= 16 byte
c9b0: 73 20 61 72 65 20 70 61 73 73 65 64 20 61 73 20  s are passed as 
c9c0: 65 6d 62 65 64 64 65 64 20 63 6f 70 69 65 73 20  embedded copies 
c9d0: 6f 6e 20 74 68 65 20 61 72 67 20 73 74 61 63 6b  on the arg stack
c9e0: 2c 0a 20 2a 20 6c 65 66 74 2d 61 64 6a 75 73 74  ,. * left-adjust
c9f0: 65 64 20 28 61 6c 74 68 6f 75 67 68 20 62 69 67  ed (although big
ca00: 2d 65 6e 64 69 61 6e 21 29 2e 0a 20 2a 20 57 68  -endian!).. * Wh
ca10: 65 6e 20 61 20 73 74 72 75 63 74 75 72 65 20 69  en a structure i
ca20: 73 20 70 61 73 73 65 64 20 28 70 61 72 74 69 61  s passed (partia
ca30: 6c 6c 79 29 20 69 6e 20 72 65 67 69 73 74 65 72  lly) in register
ca40: 73 2c 20 69 74 20 69 73 20 70 61 73 73 65 64 20  s, it is passed 
ca50: 69 6e 20 74 68 65 0a 20 2a 20 69 6e 74 65 67 65  in the. * intege
ca60: 72 20 72 65 67 69 73 74 65 72 73 2c 20 65 78 63  r registers, exc
ca70: 65 70 74 20 74 68 61 74 20 66 6c 6f 61 74 73 20  ept that floats 
ca80: 61 6e 64 20 64 6f 75 62 6c 65 73 20 77 69 74 68  and doubles with
ca90: 69 6e 20 74 68 65 20 73 74 72 75 63 74 75 72 65  in the structure
caa0: 0a 20 2a 20 61 72 65 20 70 61 73 73 65 64 20 69  . * are passed i
cab0: 6e 20 74 68 65 20 66 6c 6f 61 74 69 6e 67 20 70  n the floating p
cac0: 6f 69 6e 74 20 72 65 67 69 73 74 65 72 73 2e 20  oint registers. 
cad0: 49 6e 73 74 65 61 64 20 6f 66 20 64 69 73 74 69  Instead of disti
cae0: 6e 67 75 69 73 68 69 6e 67 0a 20 2a 20 74 68 65  nguishing. * the
caf0: 73 65 20 63 61 73 65 73 2c 20 77 65 20 61 6c 77  se cases, we alw
cb00: 61 79 73 20 70 61 73 73 20 74 68 65 20 73 74 72  ays pass the str
cb10: 75 63 74 75 72 65 20 69 6e 20 62 6f 74 68 20 74  ucture in both t
cb20: 68 65 20 69 6e 74 65 67 65 72 20 61 6e 64 20 74  he integer and t
cb30: 68 65 0a 20 2a 20 66 6c 6f 61 74 69 6e 67 20 70  he. * floating p
cb40: 6f 69 6e 74 20 72 65 67 69 73 74 65 72 73 2e 0a  oint registers..
cb50: 20 2a 20 42 69 67 20 73 74 72 75 63 74 75 72 65   * Big structure
cb60: 73 20 61 72 65 20 70 61 73 73 65 64 20 61 73 20  s are passed as 
cb70: 70 6f 69 6e 74 65 72 73 20 74 6f 20 63 61 6c 6c  pointers to call
cb80: 65 72 2d 6d 61 64 65 20 6c 6f 63 61 6c 20 63 6f  er-made local co
cb90: 70 69 65 73 2e 0a 20 2a 20 46 49 58 4d 45 3a 20  pies.. * FIXME: 
cba0: 53 68 6f 75 6c 64 6e 27 74 20 28 4c 49 53 54 29  Shouldn't (LIST)
cbb0: 2e 61 6e 75 6d 20 62 65 20 69 6e 63 72 65 6d 65  .anum be increme
cbc0: 6e 74 65 64 20 69 6e 20 73 79 6e 63 20 77 69 74  nted in sync wit
cbd0: 68 20 28 4c 49 53 54 29 2e 61 70 74 72 20 3f 0a  h (LIST).aptr ?.
cbe0: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76   */.#define __av
cbf0: 5f 73 74 72 75 63 74 28 4c 49 53 54 2c 54 59 50  _struct(LIST,TYP
cc00: 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45  E,TYPE_SIZE,TYPE
cc10: 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e 2c 56 41  _ALIGN,ASSIGN,VA
cc20: 4c 29 09 09 5c 0a 20 20 28 28 54 59 50 45 5f 53  L)..\.  ((TYPE_S
cc30: 49 5a 45 29 20 3e 20 31 36 09 09 09 09 09 09 09  IZE) > 16.......
cc40: 5c 0a 20 20 20 3f 20 28 2b 2b 28 4c 49 53 54 29  \.   ? (++(LIST)
cc50: 2e 61 70 74 72 09 09 09 09 09 09 09 5c 0a 20 20  .aptr.......\.  
cc60: 20 20 20 20 3e 20 28 28 4c 49 53 54 29 2e 65 70      > ((LIST).ep
cc70: 74 72 20 3d 20 28 5f 5f 61 76 77 6f 72 64 2a 29  tr = (__avword*)
cc80: 28 28 6c 6f 6e 67 29 28 4c 49 53 54 29 2e 65 70  ((long)(LIST).ep
cc90: 74 72 20 2d 20 28 28 28 54 59 50 45 5f 53 49 5a  tr - (((TYPE_SIZ
cca0: 45 29 2b 37 29 26 2d 38 29 29 29 5c 0a 20 20 20  E)+7)&-8)))\.   
ccb0: 20 20 20 3f 20 2d 31 20 3a 09 09 09 09 09 09 09     ? -1 :.......
ccc0: 09 5c 0a 20 20 20 20 20 20 28 41 53 53 49 47 4e  .\.      (ASSIGN
ccd0: 28 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c  (TYPE,TYPE_SIZE,
cce0: 54 59 50 45 5f 41 4c 49 47 4e 2c 28 76 6f 69 64  TYPE_ALIGN,(void
ccf0: 2a 29 28 4c 49 53 54 29 2e 65 70 74 72 2c 56 41  *)(LIST).eptr,VA
cd00: 4c 29 2c 09 5c 0a 20 20 20 20 20 20 20 28 4c 49  L),.\.       (LI
cd10: 53 54 29 2e 61 70 74 72 5b 2d 31 5d 20 3d 20 28  ST).aptr[-1] = (
cd20: 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e  __avword)(LIST).
cd30: 65 70 74 72 2c 09 09 09 09 5c 0a 20 20 20 20 20  eptr,....\.     
cd40: 20 20 30 29 29 09 09 09 09 09 09 09 09 5c 0a 20    0))........\. 
cd50: 20 20 3a 20 28 28 28 4c 49 53 54 29 2e 61 70 74    : (((LIST).apt
cd60: 72 20 3d 09 09 09 09 09 09 09 5c 0a 20 20 20 20  r =.......\.    
cd70: 20 20 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28 28     (__avword*)((
cd80: 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29  (__avword)(LIST)
cd90: 2e 61 70 74 72 2b 28 54 59 50 45 5f 53 49 5a 45  .aptr+(TYPE_SIZE
cda0: 29 2b 28 54 59 50 45 5f 41 4c 49 47 4e 29 2d 31  )+(TYPE_ALIGN)-1
cdb0: 29 20 26 20 2d 28 6c 6f 6e 67 29 28 54 59 50 45  ) & -(long)(TYPE
cdc0: 5f 41 4c 49 47 4e 29 29 29 5c 0a 20 20 20 20 20  _ALIGN)))\.     
cdd0: 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53   > __av_eptr(LIS
cde0: 54 29 09 09 09 09 09 09 09 5c 0a 20 20 20 20 20  T).......\.     
cdf0: 20 3f 20 2d 31 20 3a 20 28 41 53 53 49 47 4e 28   ? -1 : (ASSIGN(
ce00: 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54  TYPE,TYPE_SIZE,T
ce10: 59 50 45 5f 41 4c 49 47 4e 2c 28 76 6f 69 64 2a  YPE_ALIGN,(void*
ce20: 29 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53  )((__avword)(LIS
ce30: 54 29 2e 61 70 74 72 2d 28 54 59 50 45 5f 53 49  T).aptr-(TYPE_SI
ce40: 5a 45 29 29 2c 56 41 4c 29 2c 5c 0a 09 20 20 20  ZE)),VAL),\..   
ce50: 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72 20 3d     (LIST).aptr =
ce60: 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28 28 28 5f   (__avword*)(((_
ce70: 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e 61  _avword)(LIST).a
ce80: 70 74 72 2b 73 69 7a 65 6f 66 28 5f 5f 61 76 77  ptr+sizeof(__avw
ce90: 6f 72 64 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67  ord)-1) & -(long
cea0: 29 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64  )sizeof(__avword
ceb0: 29 29 2c 5c 0a 09 20 20 20 20 20 20 28 28 4c 49  )),\..      ((LI
cec0: 53 54 29 2e 61 6e 75 6d 20 3c 20 31 36 09 09 09  ST).anum < 16...
ced0: 09 09 09 5c 0a 09 09 26 26 20 28 28 4c 49 53 54  ...\...&& ((LIST
cee0: 29 2e 64 61 72 67 5f 6d 61 73 6b 20 7c 3d 20 28  ).darg_mask |= (
cef0: 2d 31 20 3c 3c 20 28 4c 49 53 54 29 2e 61 6e 75  -1 << (LIST).anu
cf00: 6d 29 29 29 2c 09 09 5c 0a 09 20 20 20 20 20 20  m))),..\..      
cf10: 28 4c 49 53 54 29 2e 61 6e 75 6d 20 2b 3d 20 28  (LIST).anum += (
cf20: 28 28 28 28 54 59 50 45 5f 53 49 5a 45 29 2b 28  ((((TYPE_SIZE)+(
cf30: 54 59 50 45 5f 41 4c 49 47 4e 29 2d 31 29 20 26  TYPE_ALIGN)-1) &
cf40: 20 2d 28 6c 6f 6e 67 29 28 54 59 50 45 5f 41 4c   -(long)(TYPE_AL
cf50: 49 47 4e 29 29 20 2b 20 73 69 7a 65 6f 66 28 5f  IGN)) + sizeof(_
cf60: 5f 61 76 77 6f 72 64 29 2d 31 29 20 26 20 2d 28  _avword)-1) & -(
cf70: 6c 6f 6e 67 29 73 69 7a 65 6f 66 28 5f 5f 61 76  long)sizeof(__av
cf80: 77 6f 72 64 29 29 2f 73 69 7a 65 6f 66 28 5f 5f  word))/sizeof(__
cf90: 61 76 77 6f 72 64 29 2c 5c 0a 09 20 20 20 20 20  avword),\..     
cfa0: 20 28 4c 49 53 54 29 2e 64 61 72 67 5f 6d 61 73   (LIST).darg_mas
cfb0: 6b 20 26 3d 20 28 31 20 3c 3c 20 28 28 4c 49 53  k &= (1 << ((LIS
cfc0: 54 29 2e 61 6e 75 6d 20 3c 20 31 36 20 3f 20 28  T).anum < 16 ? (
cfd0: 4c 49 53 54 29 2e 61 6e 75 6d 20 3a 20 31 36 29  LIST).anum : 16)
cfe0: 29 20 2d 20 31 2c 20 5c 0a 09 20 20 20 20 20 20  ) - 1, \..      
cff0: 30 29 29 29 0a 23 65 6e 64 69 66 0a 23 69 66 20  0))).#endif.#if 
d000: 64 65 66 69 6e 65 64 28 5f 5f 68 70 70 61 5f 5f  defined(__hppa__
d010: 29 0a 2f 2a 20 53 74 72 75 63 74 75 72 65 73 20  )./* Structures 
d020: 3c 3d 20 38 20 62 79 74 65 73 20 61 72 65 20 70  <= 8 bytes are p
d030: 61 73 73 65 64 20 61 73 20 65 6d 62 65 64 64 65  assed as embedde
d040: 64 20 63 6f 70 69 65 73 20 6f 6e 20 74 68 65 20  d copies on the 
d050: 61 72 67 20 73 74 61 63 6b 2e 0a 20 2a 20 42 69  arg stack.. * Bi
d060: 67 20 73 74 72 75 63 74 75 72 65 73 20 61 72 65  g structures are
d070: 20 70 61 73 73 65 64 20 61 73 20 70 6f 69 6e 74   passed as point
d080: 65 72 73 20 74 6f 20 63 61 6c 6c 65 72 2d 6d 61  ers to caller-ma
d090: 64 65 20 6c 6f 63 61 6c 20 63 6f 70 69 65 73 2e  de local copies.
d0a0: 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 61  . */.#define __a
d0b0: 76 5f 73 74 72 75 63 74 28 4c 49 53 54 2c 54 59  v_struct(LIST,TY
d0c0: 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50  PE,TYPE_SIZE,TYP
d0d0: 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e 2c 56  E_ALIGN,ASSIGN,V
d0e0: 41 4c 29 09 09 09 5c 0a 20 20 28 28 54 59 50 45  AL)...\.  ((TYPE
d0f0: 5f 53 49 5a 45 29 20 3e 20 38 09 09 09 09 09 09  _SIZE) > 8......
d100: 09 09 5c 0a 20 20 20 3f 20 28 2d 2d 28 4c 49 53  ..\.   ? (--(LIS
d110: 54 29 2e 61 70 74 72 09 09 09 09 09 09 09 09 5c  T).aptr........\
d120: 0a 20 20 20 20 20 20 3c 20 28 28 4c 49 53 54 29  .      < ((LIST)
d130: 2e 65 70 74 72 20 3d 20 28 5f 5f 61 76 77 6f 72  .eptr = (__avwor
d140: 64 2a 29 28 28 6c 6f 6e 67 29 28 4c 49 53 54 29  d*)((long)(LIST)
d150: 2e 65 70 74 72 20 2b 20 28 28 28 54 59 50 45 5f  .eptr + (((TYPE_
d160: 53 49 5a 45 29 20 2b 20 37 29 20 26 20 2d 38 29  SIZE) + 7) & -8)
d170: 29 29 20 5c 0a 20 20 20 20 20 20 3f 20 2d 31 09  )) \.      ? -1.
d180: 09 09 09 09 09 09 09 09 5c 0a 20 20 20 20 20 20  ........\.      
d190: 3a 20 28 41 53 53 49 47 4e 28 54 59 50 45 2c 54  : (ASSIGN(TYPE,T
d1a0: 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c  YPE_SIZE,TYPE_AL
d1b0: 49 47 4e 2c 28 76 6f 69 64 2a 29 28 28 6c 6f 6e  IGN,(void*)((lon
d1c0: 67 29 28 4c 49 53 54 29 2e 65 70 74 72 20 2d 20  g)(LIST).eptr - 
d1d0: 28 28 28 54 59 50 45 5f 53 49 5a 45 29 20 2b 20  (((TYPE_SIZE) + 
d1e0: 37 29 20 26 20 2d 38 29 29 2c 20 56 41 4c 29 2c  7) & -8)), VAL),
d1f0: 20 5c 0a 09 20 2a 28 4c 49 53 54 29 2e 61 70 74   \.. *(LIST).apt
d200: 72 20 3d 20 28 5f 5f 61 76 77 6f 72 64 29 28 28  r = (__avword)((
d210: 6c 6f 6e 67 29 28 4c 49 53 54 29 2e 65 70 74 72  long)(LIST).eptr
d220: 20 2d 20 28 28 28 54 59 50 45 5f 53 49 5a 45 29   - (((TYPE_SIZE)
d230: 20 2b 20 37 29 20 26 20 2d 38 29 29 2c 20 5c 0a   + 7) & -8)), \.
d240: 09 20 30 29 29 09 09 09 09 09 09 09 09 09 5c 0a  . 0)).........\.
d250: 20 20 20 3a 20 28 28 54 59 50 45 5f 53 49 5a 45     : ((TYPE_SIZE
d260: 29 20 3e 20 34 09 09 09 09 09 09 09 09 5c 0a 20  ) > 4........\. 
d270: 20 20 20 20 20 3f 20 28 28 28 4c 49 53 54 29 2e       ? (((LIST).
d280: 61 70 74 72 20 3d 20 28 5f 5f 61 76 77 6f 72 64  aptr = (__avword
d290: 2a 29 28 28 28 28 6c 6f 6e 67 29 28 4c 49 53 54  *)((((long)(LIST
d2a0: 29 2e 61 70 74 72 20 26 20 2d 38 29 20 2d 20 28  ).aptr & -8) - (
d2b0: 6c 6f 6e 67 29 28 54 59 50 45 5f 53 49 5a 45 29  long)(TYPE_SIZE)
d2c0: 29 20 26 20 2d 38 29 29 20 5c 0a 09 20 20 3c 20  ) & -8)) \..  < 
d2d0: 26 28 4c 49 53 54 29 2e 61 72 67 73 5b 30 5d 09  &(LIST).args[0].
d2e0: 09 09 09 09 09 09 5c 0a 09 20 20 3f 20 2d 31 20  ......\..  ? -1 
d2f0: 3a 20 28 41 53 53 49 47 4e 28 54 59 50 45 2c 54  : (ASSIGN(TYPE,T
d300: 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c  YPE_SIZE,TYPE_AL
d310: 49 47 4e 2c 28 76 6f 69 64 2a 29 28 4c 49 53 54  IGN,(void*)(LIST
d320: 29 2e 61 70 74 72 2c 56 41 4c 29 2c 20 30 29 29  ).aptr,VAL), 0))
d330: 09 5c 0a 20 20 20 20 20 20 3a 20 2f 2a 20 46 49  .\.      : /* FI
d340: 58 4d 45 3a 20 67 63 63 2d 32 2e 36 2e 33 20 70  XME: gcc-2.6.3 p
d350: 61 73 73 65 73 20 73 74 72 75 63 74 75 72 65 73  asses structures
d360: 20 3c 3d 20 34 20 62 79 74 65 73 20 69 6e 20 6d   <= 4 bytes in m
d370: 65 6d 6f 72 79 20 6c 65 66 74 2d 61 64 6a 75 73  emory left-adjus
d380: 74 65 64 21 20 3f 3f 20 2a 2f 5c 0a 20 20 20 20  ted! ?? */\.    
d390: 20 20 20 20 28 28 28 4c 49 53 54 29 2e 61 70 74      (((LIST).apt
d3a0: 72 20 3d 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28  r = (__avword*)(
d3b0: 28 28 6c 6f 6e 67 29 28 4c 49 53 54 29 2e 61 70  ((long)(LIST).ap
d3c0: 74 72 20 26 20 2d 34 29 20 2d 20 28 6c 6f 6e 67  tr & -4) - (long
d3d0: 29 28 54 59 50 45 5f 53 49 5a 45 29 29 29 20 5c  )(TYPE_SIZE))) \
d3e0: 0a 09 20 20 3c 20 26 28 4c 49 53 54 29 2e 61 72  ..  < &(LIST).ar
d3f0: 67 73 5b 30 5d 09 09 09 09 09 09 09 5c 0a 09 20  gs[0].......\.. 
d400: 20 3f 20 2d 31 20 3a 20 28 41 53 53 49 47 4e 28   ? -1 : (ASSIGN(
d410: 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54  TYPE,TYPE_SIZE,T
d420: 59 50 45 5f 41 4c 49 47 4e 2c 28 76 6f 69 64 2a  YPE_ALIGN,(void*
d430: 29 28 4c 49 53 54 29 2e 61 70 74 72 2c 56 41 4c  )(LIST).aptr,VAL
d440: 29 2c 09 5c 0a 09 09 20 20 28 4c 49 53 54 29 2e  ),.\...  (LIST).
d450: 61 70 74 72 20 3d 20 28 5f 5f 61 76 77 6f 72 64  aptr = (__avword
d460: 2a 29 28 28 6c 6f 6e 67 29 28 4c 49 53 54 29 2e  *)((long)(LIST).
d470: 61 70 74 72 20 26 20 2d 34 29 2c 09 09 5c 0a 09  aptr & -4),..\..
d480: 09 20 20 30 29 29 29 29 0a 23 65 6e 64 69 66 0a  .  0)))).#endif.
d490: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 78 38  #if defined(__x8
d4a0: 36 5f 36 34 5f 5f 29 0a 2f 2a 20 53 74 72 75 63  6_64__)./* Struc
d4b0: 74 75 72 65 73 20 3c 3d 20 31 36 20 62 79 74 65  tures <= 16 byte
d4c0: 73 20 63 61 6e 20 62 65 20 70 61 73 73 65 64 20  s can be passed 
d4d0: 69 6e 20 69 6e 74 65 67 65 72 20 6f 72 20 66 6c  in integer or fl
d4e0: 6f 61 74 69 6e 67 2d 70 6f 69 6e 74 20 72 65 67  oating-point reg
d4f0: 69 73 74 65 72 73 0a 20 20 20 69 66 20 74 68 65  isters.   if the
d500: 72 65 20 69 73 20 65 6e 6f 75 67 68 20 72 6f 6f  re is enough roo
d510: 6d 20 66 6f 72 20 74 68 65 20 77 68 6f 6c 65 20  m for the whole 
d520: 6e 75 6d 62 65 72 20 6f 66 20 77 6f 72 64 73 20  number of words 
d530: 6e 65 65 64 65 64 20 62 79 20 74 68 65 20 73 74  needed by the st
d540: 72 75 63 74 75 72 65 0a 20 20 20 69 6e 20 74 68  ructure.   in th
d550: 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20  e corresponding 
d560: 69 61 72 67 73 2f 66 61 72 67 73 20 62 6c 6f 63  iargs/fargs bloc
d570: 6b 2e 20 57 65 20 63 61 6e 27 74 20 64 69 73 74  k. We can't dist
d580: 69 6e 67 75 69 73 68 20 74 68 65 20 74 77 6f 20  inguish the two 
d590: 63 61 73 65 73 0a 20 20 20 61 6e 64 20 73 75 70  cases.   and sup
d5a0: 70 6f 72 74 20 6f 6e 6c 79 20 70 61 73 73 69 6e  port only passin
d5b0: 67 20 69 6e 20 69 6e 74 65 67 65 72 20 72 65 67  g in integer reg
d5c0: 69 73 74 65 72 73 2e 20 4f 74 68 65 72 20 73 74  isters. Other st
d5d0: 72 75 63 74 75 72 65 73 20 61 72 65 20 70 61 73  ructures are pas
d5e0: 73 65 64 0a 20 20 20 6f 6e 20 74 68 65 20 61 72  sed.   on the ar
d5f0: 67 20 73 74 61 63 6b 2e 20 2a 2f 0a 23 64 65 66  g stack. */.#def
d600: 69 6e 65 20 5f 5f 61 76 5f 73 74 72 75 63 74 28  ine __av_struct(
d610: 4c 49 53 54 2c 54 59 50 45 2c 54 59 50 45 5f 53  LIST,TYPE,TYPE_S
d620: 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 41  IZE,TYPE_ALIGN,A
d630: 53 53 49 47 4e 2c 56 41 4c 29 09 09 09 5c 0a 20  SSIGN,VAL)...\. 
d640: 20 28 28 4c 49 53 54 29 2e 69 61 70 74 72 20 2b   ((LIST).iaptr +
d650: 20 28 28 54 59 50 45 5f 53 49 5a 45 29 20 2b 20   ((TYPE_SIZE) + 
d660: 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29  sizeof(__avword)
d670: 2d 31 29 20 2f 20 73 69 7a 65 6f 66 28 5f 5f 61  -1) / sizeof(__a
d680: 76 77 6f 72 64 29 20 3c 3d 20 26 28 4c 49 53 54  vword) <= &(LIST
d690: 29 2e 69 61 72 67 73 5b 36 5d 20 5c 0a 20 20 20  ).iargs[6] \.   
d6a0: 3f 20 28 41 53 53 49 47 4e 28 54 59 50 45 2c 54  ? (ASSIGN(TYPE,T
d6b0: 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c  YPE_SIZE,TYPE_AL
d6c0: 49 47 4e 2c 28 76 6f 69 64 2a 29 28 4c 49 53 54  IGN,(void*)(LIST
d6d0: 29 2e 69 61 70 74 72 2c 56 41 4c 29 2c 09 09 5c  ).iaptr,VAL),..\
d6e0: 0a 20 20 20 20 20 20 28 4c 49 53 54 29 2e 69 61  .      (LIST).ia
d6f0: 70 74 72 20 2b 3d 20 28 28 54 59 50 45 5f 53 49  ptr += ((TYPE_SI
d700: 5a 45 29 20 2b 20 73 69 7a 65 6f 66 28 5f 5f 61  ZE) + sizeof(__a
d710: 76 77 6f 72 64 29 2d 31 29 20 2f 20 73 69 7a 65  vword)-1) / size
d720: 6f 66 28 5f 5f 61 76 77 6f 72 64 29 2c 09 5c 0a  of(__avword),.\.
d730: 20 20 20 20 20 20 30 29 09 09 09 09 09 09 09 09        0)........
d740: 09 5c 0a 20 20 20 3a 20 28 28 4c 49 53 54 29 2e  .\.   : ((LIST).
d750: 61 70 74 72 20 3d 20 28 5f 5f 61 76 77 6f 72 64  aptr = (__avword
d760: 2a 29 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49  *)((__avword)(LI
d770: 53 54 29 2e 61 70 74 72 20 2b 20 28 28 28 54 59  ST).aptr + (((TY
d780: 50 45 5f 53 49 5a 45 29 2b 5f 5f 61 76 5f 73 74  PE_SIZE)+__av_st
d790: 72 75 63 74 5f 61 6c 69 67 6e 6d 65 6e 74 28 54  ruct_alignment(T
d7a0: 59 50 45 5f 41 4c 49 47 4e 29 2d 31 29 20 26 20  YPE_ALIGN)-1) & 
d7b0: 2d 28 6c 6f 6e 67 29 5f 5f 61 76 5f 73 74 72 75  -(long)__av_stru
d7c0: 63 74 5f 61 6c 69 67 6e 6d 65 6e 74 28 54 59 50  ct_alignment(TYP
d7d0: 45 5f 41 4c 49 47 4e 29 29 29 2c 20 5c 0a 20 20  E_ALIGN))), \.  
d7e0: 20 20 20 20 28 28 4c 49 53 54 29 2e 61 70 74 72      ((LIST).aptr
d7f0: 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53   > __av_eptr(LIS
d800: 54 29 09 09 09 09 09 09 5c 0a 20 20 20 20 20 20  T)......\.      
d810: 20 3f 20 2d 31 20 3a 20 28 41 53 53 49 47 4e 28   ? -1 : (ASSIGN(
d820: 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54  TYPE,TYPE_SIZE,T
d830: 59 50 45 5f 41 4c 49 47 4e 2c 28 76 6f 69 64 2a  YPE_ALIGN,(void*
d840: 29 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53  )((__avword)(LIS
d850: 54 29 2e 61 70 74 72 20 2d 20 28 28 28 54 59 50  T).aptr - (((TYP
d860: 45 5f 53 49 5a 45 29 2b 5f 5f 61 76 5f 73 74 72  E_SIZE)+__av_str
d870: 75 63 74 5f 61 6c 69 67 6e 6d 65 6e 74 28 54 59  uct_alignment(TY
d880: 50 45 5f 41 4c 49 47 4e 29 2d 31 29 20 26 20 2d  PE_ALIGN)-1) & -
d890: 28 6c 6f 6e 67 29 5f 5f 61 76 5f 73 74 72 75 63  (long)__av_struc
d8a0: 74 5f 61 6c 69 67 6e 6d 65 6e 74 28 54 59 50 45  t_alignment(TYPE
d8b0: 5f 41 4c 49 47 4e 29 29 29 2c 56 41 4c 29 2c 5c  _ALIGN))),VAL),\
d8c0: 0a 09 20 20 20 20 20 20 20 30 29 29 29 29 0a 23  ..       0)))).#
d8d0: 65 6e 64 69 66 0a 0a 2f 2a 0a 20 2a 20 63 61 6c  endif../*. * cal
d8e0: 6c 69 6e 67 20 74 68 65 20 66 75 6e 63 74 69 6f  ling the functio
d8f0: 6e 0a 20 2a 2f 0a 0a 23 64 65 66 69 6e 65 20 61  n. */..#define a
d900: 76 5f 63 61 6c 6c 28 4c 49 53 54 29 20 5f 5f 62  v_call(LIST) __b
d910: 75 69 6c 74 69 6e 5f 61 76 63 61 6c 6c 28 26 28  uiltin_avcall(&(
d920: 4c 49 53 54 29 29 0a 0a 2f 2a 20 44 65 74 65 72  LIST))../* Deter
d930: 6d 69 6e 65 20 77 68 65 74 68 65 72 20 61 20 73  mine whether a s
d940: 74 72 75 63 74 20 74 79 70 65 20 69 73 20 77 6f  truct type is wo
d950: 72 64 2d 73 70 6c 69 74 74 61 62 6c 65 2c 20 69  rd-splittable, i
d960: 2e 65 2e 20 77 68 65 74 68 65 72 20 65 61 63 68  .e. whether each
d970: 20 6f 66 0a 20 2a 20 69 74 73 20 63 6f 6d 70 6f   of. * its compo
d980: 6e 65 6e 74 73 20 66 69 74 20 69 6e 74 6f 20 61  nents fit into a
d990: 20 72 65 67 69 73 74 65 72 2e 0a 20 2a 20 54 68   register.. * Th
d9a0: 65 20 65 6e 74 69 72 65 20 63 6f 6d 70 75 74 61  e entire computa
d9b0: 74 69 6f 6e 20 69 73 20 64 6f 6e 65 20 61 74 20  tion is done at 
d9c0: 63 6f 6d 70 69 6c 65 20 74 69 6d 65 2e 0a 20 2a  compile time.. *
d9d0: 2f 0a 23 64 65 66 69 6e 65 20 61 76 5f 77 6f 72  /.#define av_wor
d9e0: 64 5f 73 70 6c 69 74 74 61 62 6c 65 5f 31 28 73  d_splittable_1(s
d9f0: 6c 6f 74 31 29 20 20 5c 0a 20 20 28 5f 5f 61 76  lot1)  \.  (__av
da00: 5f 6f 66 66 73 65 74 31 28 73 6c 6f 74 31 29 2f  _offset1(slot1)/
da10: 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29  sizeof(__avword)
da20: 20 3d 3d 20 28 5f 5f 61 76 5f 6f 66 66 73 65 74   == (__av_offset
da30: 31 28 73 6c 6f 74 31 29 2b 73 69 7a 65 6f 66 28  1(slot1)+sizeof(
da40: 73 6c 6f 74 31 29 2d 31 29 2f 73 69 7a 65 6f 66  slot1)-1)/sizeof
da50: 28 5f 5f 61 76 77 6f 72 64 29 29 0a 23 64 65 66  (__avword)).#def
da60: 69 6e 65 20 61 76 5f 77 6f 72 64 5f 73 70 6c 69  ine av_word_spli
da70: 74 74 61 62 6c 65 5f 32 28 73 6c 6f 74 31 2c 73  ttable_2(slot1,s
da80: 6c 6f 74 32 29 20 20 5c 0a 20 20 28 28 5f 5f 61  lot2)  \.  ((__a
da90: 76 5f 6f 66 66 73 65 74 31 28 73 6c 6f 74 31 29  v_offset1(slot1)
daa0: 2f 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64  /sizeof(__avword
dab0: 29 20 3d 3d 20 28 5f 5f 61 76 5f 6f 66 66 73 65  ) == (__av_offse
dac0: 74 31 28 73 6c 6f 74 31 29 2b 73 69 7a 65 6f 66  t1(slot1)+sizeof
dad0: 28 73 6c 6f 74 31 29 2d 31 29 2f 73 69 7a 65 6f  (slot1)-1)/sizeo
dae0: 66 28 5f 5f 61 76 77 6f 72 64 29 29 20 5c 0a 20  f(__avword)) \. 
daf0: 20 20 26 26 20 28 5f 5f 61 76 5f 6f 66 66 73 65    && (__av_offse
db00: 74 32 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 29 2f  t2(slot1,slot2)/
db10: 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29  sizeof(__avword)
db20: 20 3d 3d 20 28 5f 5f 61 76 5f 6f 66 66 73 65 74   == (__av_offset
db30: 32 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 29 2b 73  2(slot1,slot2)+s
db40: 69 7a 65 6f 66 28 73 6c 6f 74 32 29 2d 31 29 2f  izeof(slot2)-1)/
db50: 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29  sizeof(__avword)
db60: 29 20 5c 0a 20 20 29 0a 23 64 65 66 69 6e 65 20  ) \.  ).#define 
db70: 61 76 5f 77 6f 72 64 5f 73 70 6c 69 74 74 61 62  av_word_splittab
db80: 6c 65 5f 33 28 73 6c 6f 74 31 2c 73 6c 6f 74 32  le_3(slot1,slot2
db90: 2c 73 6c 6f 74 33 29 20 20 5c 0a 20 20 28 28 5f  ,slot3)  \.  ((_
dba0: 5f 61 76 5f 6f 66 66 73 65 74 31 28 73 6c 6f 74  _av_offset1(slot
dbb0: 31 29 2f 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f  1)/sizeof(__avwo
dbc0: 72 64 29 20 3d 3d 20 28 5f 5f 61 76 5f 6f 66 66  rd) == (__av_off
dbd0: 73 65 74 31 28 73 6c 6f 74 31 29 2b 73 69 7a 65  set1(slot1)+size
dbe0: 6f 66 28 73 6c 6f 74 31 29 2d 31 29 2f 73 69 7a  of(slot1)-1)/siz
dbf0: 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 29 20 5c  eof(__avword)) \
dc00: 0a 20 20 20 26 26 20 28 5f 5f 61 76 5f 6f 66 66  .   && (__av_off
dc10: 73 65 74 32 28 73 6c 6f 74 31 2c 73 6c 6f 74 32  set2(slot1,slot2
dc20: 29 2f 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72  )/sizeof(__avwor
dc30: 64 29 20 3d 3d 20 28 5f 5f 61 76 5f 6f 66 66 73  d) == (__av_offs
dc40: 65 74 32 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 29  et2(slot1,slot2)
dc50: 2b 73 69 7a 65 6f 66 28 73 6c 6f 74 32 29 2d 31  +sizeof(slot2)-1
dc60: 29 2f 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72  )/sizeof(__avwor
dc70: 64 29 29 20 5c 0a 20 20 20 26 26 20 28 5f 5f 61  d)) \.   && (__a
dc80: 76 5f 6f 66 66 73 65 74 33 28 73 6c 6f 74 31 2c  v_offset3(slot1,
dc90: 73 6c 6f 74 32 2c 73 6c 6f 74 33 29 2f 73 69 7a  slot2,slot3)/siz
dca0: 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 20 3d 3d  eof(__avword) ==
dcb0: 20 28 5f 5f 61 76 5f 6f 66 66 73 65 74 33 28 73   (__av_offset3(s
dcc0: 6c 6f 74 31 2c 73 6c 6f 74 32 2c 73 6c 6f 74 33  lot1,slot2,slot3
dcd0: 29 2b 73 69 7a 65 6f 66 28 73 6c 6f 74 33 29 2d  )+sizeof(slot3)-
dce0: 31 29 2f 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f  1)/sizeof(__avwo
dcf0: 72 64 29 29 20 5c 0a 20 20 29 0a 23 64 65 66 69  rd)) \.  ).#defi
dd00: 6e 65 20 61 76 5f 77 6f 72 64 5f 73 70 6c 69 74  ne av_word_split
dd10: 74 61 62 6c 65 5f 34 28 73 6c 6f 74 31 2c 73 6c  table_4(slot1,sl
dd20: 6f 74 32 2c 73 6c 6f 74 33 2c 73 6c 6f 74 34 29  ot2,slot3,slot4)
dd30: 20 20 5c 0a 20 20 28 28 5f 5f 61 76 5f 6f 66 66    \.  ((__av_off
dd40: 73 65 74 31 28 73 6c 6f 74 31 29 2f 73 69 7a 65  set1(slot1)/size
dd50: 6f 66 28 5f 5f 61 76 77 6f 72 64 29 20 3d 3d 20  of(__avword) == 
dd60: 28 5f 5f 61 76 5f 6f 66 66 73 65 74 31 28 73 6c  (__av_offset1(sl
dd70: 6f 74 31 29 2b 73 69 7a 65 6f 66 28 73 6c 6f 74  ot1)+sizeof(slot
dd80: 31 29 2d 31 29 2f 73 69 7a 65 6f 66 28 5f 5f 61  1)-1)/sizeof(__a
dd90: 76 77 6f 72 64 29 29 20 5c 0a 20 20 20 26 26 20  vword)) \.   && 
dda0: 28 5f 5f 61 76 5f 6f 66 66 73 65 74 32 28 73 6c  (__av_offset2(sl
ddb0: 6f 74 31 2c 73 6c 6f 74 32 29 2f 73 69 7a 65 6f  ot1,slot2)/sizeo
ddc0: 66 28 5f 5f 61 76 77 6f 72 64 29 20 3d 3d 20 28  f(__avword) == (
ddd0: 5f 5f 61 76 5f 6f 66 66 73 65 74 32 28 73 6c 6f  __av_offset2(slo
dde0: 74 31 2c 73 6c 6f 74 32 29 2b 73 69 7a 65 6f 66  t1,slot2)+sizeof
ddf0: 28 73 6c 6f 74 32 29 2d 31 29 2f 73 69 7a 65 6f  (slot2)-1)/sizeo
de00: 66 28 5f 5f 61 76 77 6f 72 64 29 29 20 5c 0a 20  f(__avword)) \. 
de10: 20 20 26 26 20 28 5f 5f 61 76 5f 6f 66 66 73 65    && (__av_offse
de20: 74 33 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 2c 73  t3(slot1,slot2,s
de30: 6c 6f 74 33 29 2f 73 69 7a 65 6f 66 28 5f 5f 61  lot3)/sizeof(__a
de40: 76 77 6f 72 64 29 20 3d 3d 20 28 5f 5f 61 76 5f  vword) == (__av_
de50: 6f 66 66 73 65 74 33 28 73 6c 6f 74 31 2c 73 6c  offset3(slot1,sl
de60: 6f 74 32 2c 73 6c 6f 74 33 29 2b 73 69 7a 65 6f  ot2,slot3)+sizeo
de70: 66 28 73 6c 6f 74 33 29 2d 31 29 2f 73 69 7a 65  f(slot3)-1)/size
de80: 6f 66 28 5f 5f 61 76 77 6f 72 64 29 29 20 5c 0a  of(__avword)) \.
de90: 20 20 20 26 26 20 28 5f 5f 61 76 5f 6f 66 66 73     && (__av_offs
dea0: 65 74 34 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 2c  et4(slot1,slot2,
deb0: 73 6c 6f 74 33 2c 73 6c 6f 74 34 29 2f 73 69 7a  slot3,slot4)/siz
dec0: 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 20 3d 3d  eof(__avword) ==
ded0: 20 28 5f 5f 61 76 5f 6f 66 66 73 65 74 34 28 73   (__av_offset4(s
dee0: 6c 6f 74 31 2c 73 6c 6f 74 32 2c 73 6c 6f 74 33  lot1,slot2,slot3
def0: 2c 73 6c 6f 74 34 29 2b 73 69 7a 65 6f 66 28 73  ,slot4)+sizeof(s
df00: 6c 6f 74 34 29 2d 31 29 2f 73 69 7a 65 6f 66 28  lot4)-1)/sizeof(
df10: 5f 5f 61 76 77 6f 72 64 29 29 20 5c 0a 20 20 29  __avword)) \.  )
df20: 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 6f 66  .#define __av_of
df30: 66 73 65 74 31 28 73 6c 6f 74 31 29 20 20 5c 0a  fset1(slot1)  \.
df40: 20 20 30 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76    0.#define __av
df50: 5f 6f 66 66 73 65 74 32 28 73 6c 6f 74 31 2c 73  _offset2(slot1,s
df60: 6c 6f 74 32 29 20 20 5c 0a 20 20 28 28 5f 5f 61  lot2)  \.  ((__a
df70: 76 5f 6f 66 66 73 65 74 31 28 73 6c 6f 74 31 29  v_offset1(slot1)
df80: 2b 73 69 7a 65 6f 66 28 73 6c 6f 74 31 29 2b 5f  +sizeof(slot1)+_
df90: 5f 41 56 5f 61 6c 69 67 6e 6f 66 28 73 6c 6f 74  _AV_alignof(slot
dfa0: 32 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 5f  2)-1) & -(long)_
dfb0: 5f 41 56 5f 61 6c 69 67 6e 6f 66 28 73 6c 6f 74  _AV_alignof(slot
dfc0: 32 29 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76  2)).#define __av
dfd0: 5f 6f 66 66 73 65 74 33 28 73 6c 6f 74 31 2c 73  _offset3(slot1,s
dfe0: 6c 6f 74 32 2c 73 6c 6f 74 33 29 20 20 5c 0a 20  lot2,slot3)  \. 
dff0: 20 28 28 5f 5f 61 76 5f 6f 66 66 73 65 74 32 28   ((__av_offset2(
e000: 73 6c 6f 74 31 2c 73 6c 6f 74 32 29 2b 73 69 7a  slot1,slot2)+siz
e010: 65 6f 66 28 73 6c 6f 74 32 29 2b 5f 5f 41 56 5f  eof(slot2)+__AV_
e020: 61 6c 69 67 6e 6f 66 28 73 6c 6f 74 33 29 2d 31  alignof(slot3)-1
e030: 29 20 26 20 2d 28 6c 6f 6e 67 29 5f 5f 41 56 5f  ) & -(long)__AV_
e040: 61 6c 69 67 6e 6f 66 28 73 6c 6f 74 33 29 29 0a  alignof(slot3)).
e050: 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 6f 66 66  #define __av_off
e060: 73 65 74 34 28 73 6c 6f 74 31 2c 73 6c 6f 74 32  set4(slot1,slot2
e070: 2c 73 6c 6f 74 33 2c 73 6c 6f 74 34 29 20 20 5c  ,slot3,slot4)  \
e080: 0a 20 20 28 28 5f 5f 61 76 5f 6f 66 66 73 65 74  .  ((__av_offset
e090: 33 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 2c 73 6c  3(slot1,slot2,sl
e0a0: 6f 74 33 29 2b 73 69 7a 65 6f 66 28 73 6c 6f 74  ot3)+sizeof(slot
e0b0: 33 29 2b 5f 5f 41 56 5f 61 6c 69 67 6e 6f 66 28  3)+__AV_alignof(
e0c0: 73 6c 6f 74 34 29 2d 31 29 20 26 20 2d 28 6c 6f  slot4)-1) & -(lo
e0d0: 6e 67 29 5f 5f 41 56 5f 61 6c 69 67 6e 6f 66 28  ng)__AV_alignof(
e0e0: 73 6c 6f 74 34 29 29 0a 0a 2f 2a 0a 20 2a 20 4d  slot4))../*. * M
e0f0: 69 73 63 65 6c 6c 61 6e 65 6f 75 73 20 64 65 63  iscellaneous dec
e100: 6c 61 72 61 74 69 6f 6e 73 2e 0a 20 2a 2f 0a 0a  larations.. */..
e110: 65 78 74 65 72 6e 20 69 6e 74 20 5f 5f 62 75 69  extern int __bui
e120: 6c 74 69 6e 5f 61 76 63 61 6c 6c 20 28 61 76 5f  ltin_avcall (av_
e130: 61 6c 69 73 74 2a 20 6c 29 3b 0a 65 78 74 65 72  alist* l);.exter
e140: 6e 20 76 6f 69 64 20 5f 5f 73 74 72 75 63 74 63  n void __structc
e150: 70 79 20 28 76 6f 69 64 2a 20 64 65 73 74 2c 20  py (void* dest, 
e160: 63 6f 6e 73 74 20 76 6f 69 64 2a 20 73 72 63 2c  const void* src,
e170: 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 73   unsigned long s
e180: 69 7a 65 2c 20 75 6e 73 69 67 6e 65 64 20 6c 6f  ize, unsigned lo
e190: 6e 67 20 61 6c 69 67 6e 6d 65 6e 74 29 3b 0a 0a  ng alignment);..
e1a0: 23 65 6e 64 69 66 20 2f 2a 5f 61 76 63 61 6c 6c  #endif /*_avcall
e1b0: 5f 68 20 2a 2f 0a                                _h */.