Artifact f012af7a1545900c18b3f4e92e3a38849dc7d196:


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 64 65 66 69 6e 65 20 5f 5f 69  86__.#define __i
0380: 33 38 36 5f 5f 20 31 0a 23 65 6e 64 69 66 0a 23  386__ 1.#endif.#
0390: 69 66 6e 64 65 66 20 5f 5f 6d 36 38 6b 5f 5f 0a  ifndef __m68k__.
03a0: 23 75 6e 64 65 66 20 5f 5f 6d 36 38 6b 5f 5f 0a  #undef __m68k__.
03b0: 23 65 6e 64 69 66 0a 23 69 66 6e 64 65 66 20 5f  #endif.#ifndef _
03c0: 5f 6d 69 70 73 5f 5f 0a 23 75 6e 64 65 66 20 5f  _mips__.#undef _
03d0: 5f 6d 69 70 73 5f 5f 0a 23 65 6e 64 69 66 0a 23  _mips__.#endif.#
03e0: 69 66 6e 64 65 66 20 5f 5f 6d 69 70 73 6e 33 32  ifndef __mipsn32
03f0: 5f 5f 0a 23 75 6e 64 65 66 20 5f 5f 6d 69 70 73  __.#undef __mips
0400: 6e 33 32 5f 5f 0a 23 65 6e 64 69 66 0a 23 69 66  n32__.#endif.#if
0410: 6e 64 65 66 20 5f 5f 6d 69 70 73 36 34 5f 5f 0a  ndef __mips64__.
0420: 23 75 6e 64 65 66 20 5f 5f 6d 69 70 73 36 34 5f  #undef __mips64_
0430: 5f 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64 65 66  _.#endif.#ifndef
0440: 20 5f 5f 73 70 61 72 63 5f 5f 0a 23 75 6e 64 65   __sparc__.#unde
0450: 66 20 5f 5f 73 70 61 72 63 5f 5f 0a 23 65 6e 64  f __sparc__.#end
0460: 69 66 0a 23 69 66 6e 64 65 66 20 5f 5f 73 70 61  if.#ifndef __spa
0470: 72 63 36 34 5f 5f 0a 23 75 6e 64 65 66 20 5f 5f  rc64__.#undef __
0480: 73 70 61 72 63 36 34 5f 5f 0a 23 65 6e 64 69 66  sparc64__.#endif
0490: 0a 23 69 66 6e 64 65 66 20 5f 5f 61 6c 70 68 61  .#ifndef __alpha
04a0: 5f 5f 0a 23 75 6e 64 65 66 20 5f 5f 61 6c 70 68  __.#undef __alph
04b0: 61 5f 5f 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64  a__.#endif.#ifnd
04c0: 65 66 20 5f 5f 68 70 70 61 5f 5f 0a 23 75 6e 64  ef __hppa__.#und
04d0: 65 66 20 5f 5f 68 70 70 61 5f 5f 0a 23 65 6e 64  ef __hppa__.#end
04e0: 69 66 0a 23 69 66 6e 64 65 66 20 5f 5f 61 72 6d  if.#ifndef __arm
04f0: 5f 5f 0a 23 75 6e 64 65 66 20 5f 5f 61 72 6d 5f  __.#undef __arm_
0500: 5f 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64 65 66  _.#endif.#ifndef
0510: 20 5f 5f 70 6f 77 65 72 70 63 5f 5f 0a 23 75 6e   __powerpc__.#un
0520: 64 65 66 20 5f 5f 70 6f 77 65 72 70 63 5f 5f 0a  def __powerpc__.
0530: 23 65 6e 64 69 66 0a 23 69 66 6e 64 65 66 20 5f  #endif.#ifndef _
0540: 5f 70 6f 77 65 72 70 63 36 34 5f 5f 0a 23 75 6e  _powerpc64__.#un
0550: 64 65 66 20 5f 5f 70 6f 77 65 72 70 63 36 34 5f  def __powerpc64_
0560: 5f 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64 65 66  _.#endif.#ifndef
0570: 20 5f 5f 73 33 39 30 5f 5f 0a 23 75 6e 64 65 66   __s390__.#undef
0580: 20 5f 5f 73 33 39 30 5f 5f 0a 23 65 6e 64 69 66   __s390__.#endif
0590: 0a 23 69 66 6e 64 65 66 20 5f 5f 6d 38 38 6b 5f  .#ifndef __m88k_
05a0: 5f 0a 23 75 6e 64 65 66 20 5f 5f 6d 38 38 6b 5f  _.#undef __m88k_
05b0: 5f 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64 65 66  _.#endif.#ifndef
05c0: 20 5f 5f 63 6f 6e 76 65 78 5f 5f 0a 23 75 6e 64   __convex__.#und
05d0: 65 66 20 5f 5f 63 6f 6e 76 65 78 5f 5f 0a 23 65  ef __convex__.#e
05e0: 6e 64 69 66 0a 23 69 66 6e 64 65 66 20 5f 5f 69  ndif.#ifndef __i
05f0: 61 36 34 5f 5f 0a 23 75 6e 64 65 66 20 5f 5f 69  a64__.#undef __i
0600: 61 36 34 5f 5f 0a 23 65 6e 64 69 66 0a 23 69 66  a64__.#endif.#if
0610: 6e 64 65 66 20 5f 5f 78 38 36 5f 36 34 5f 5f 0a  ndef __x86_64__.
0620: 23 75 6e 64 65 66 20 5f 5f 78 38 36 5f 36 34 5f  #undef __x86_64_
0630: 5f 0a 23 65 6e 64 69 66 0a 0a 2f 2a 20 43 61 6c  _.#endif../* Cal
0640: 6c 69 6e 67 20 63 6f 6e 76 65 6e 74 69 6f 6e 20  ling convention 
0650: 2a 2f 0a 2f 2a 20 44 65 66 69 6e 65 20 69 66 20  */./* Define if 
0660: 75 73 69 6e 67 20 70 63 63 20 6e 6f 6e 2d 72 65  using pcc non-re
0670: 65 6e 74 72 61 6e 74 20 73 74 72 75 63 74 20 72  entrant struct r
0680: 65 74 75 72 6e 20 63 6f 6e 76 65 6e 74 69 6f 6e  eturn convention
0690: 20 2a 2f 0a 23 75 6e 64 65 66 20 5f 5f 50 43 43   */.#undef __PCC
06a0: 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 5f 5f  _STRUCT_RETURN__
06b0: 0a 2f 2a 20 44 65 66 69 6e 65 20 69 66 20 73 6d  ./* Define if sm
06c0: 61 6c 6c 20 73 74 72 75 63 74 73 20 61 72 65 20  all structs are 
06d0: 72 65 74 75 72 6e 65 64 20 69 6e 20 72 65 67 69  returned in regi
06e0: 73 74 65 72 73 20 2a 2f 0a 23 64 65 66 69 6e 65  sters */.#define
06f0: 20 5f 5f 53 4d 41 4c 4c 5f 53 54 52 55 43 54 5f   __SMALL_STRUCT_
0700: 52 45 54 55 52 4e 5f 5f 20 31 0a 2f 2a 20 44 65  RETURN__ 1./* De
0710: 66 69 6e 65 20 69 66 20 66 6c 6f 61 74 69 6e 67  fine if floating
0720: 2d 70 6f 69 6e 74 20 72 65 73 75 6c 74 73 20 61  -point results a
0730: 72 65 20 72 65 74 75 72 6e 65 64 20 69 6e 20 74  re returned in t
0740: 68 65 20 69 6e 74 65 67 65 72 20 72 65 67 69 73  he integer regis
0750: 74 65 72 73 20 2a 2f 0a 23 75 6e 64 65 66 20 5f  ters */.#undef _
0760: 5f 49 52 45 47 5f 46 4c 4f 41 54 5f 52 45 54 55  _IREG_FLOAT_RETU
0770: 52 4e 5f 5f 0a 0a 2f 2a 20 41 43 5f 54 59 50 45  RN__../* AC_TYPE
0780: 5f 4c 4f 4e 47 5f 4c 4f 4e 47 20 2a 2f 0a 2f 2a  _LONG_LONG */./*
0790: 20 44 65 66 69 6e 65 20 69 66 20 79 6f 75 72 20   Define if your 
07a0: 63 6f 6d 70 69 6c 65 72 20 73 75 70 70 6f 72 74  compiler support
07b0: 73 20 74 68 65 20 27 6c 6f 6e 67 20 6c 6f 6e 67  s the 'long long
07c0: 27 20 74 79 70 65 2e 20 2a 2f 0a 23 75 6e 64 65  ' type. */.#unde
07d0: 66 20 48 41 56 45 5f 4c 4f 4e 47 5f 4c 4f 4e 47  f HAVE_LONG_LONG
07e0: 5f 49 4e 54 0a 0a 2f 2a 20 45 6e 64 20 6f 66 20  _INT../* End of 
07f0: 64 65 66 69 6e 69 74 69 6f 6e 73 20 61 64 6a 75  definitions adju
0800: 73 74 65 64 20 62 79 20 60 63 6f 6e 66 69 67 75  sted by `configu
0810: 72 65 27 2e 20 2a 2f 0a 0a 0a 2f 2a 20 4d 61 78  re'. */.../* Max
0820: 20 23 20 77 6f 72 64 73 20 69 6e 20 61 72 67 75   # words in argu
0830: 6d 65 6e 74 2d 6c 69 73 74 20 61 6e 64 20 74 65  ment-list and te
0840: 6d 70 6f 72 61 72 79 20 73 74 72 75 63 74 75 72  mporary structur
0850: 65 20 73 74 6f 72 61 67 65 2e 0a 20 2a 2f 0a 23  e storage.. */.#
0860: 69 66 6e 64 65 66 20 5f 5f 41 56 5f 41 4c 49 53  ifndef __AV_ALIS
0870: 54 5f 57 4f 52 44 53 0a 23 64 65 66 69 6e 65 20  T_WORDS.#define 
0880: 5f 5f 41 56 5f 41 4c 49 53 54 5f 57 4f 52 44 53  __AV_ALIST_WORDS
0890: 20 20 32 35 36 0a 23 65 6e 64 69 66 0a 0a 2f 2a    256.#endif../*
08a0: 20 44 65 74 65 72 6d 69 6e 65 20 74 68 65 20 61   Determine the a
08b0: 6c 69 67 6e 6d 65 6e 74 20 6f 66 20 61 20 74 79  lignment of a ty
08c0: 70 65 20 61 74 20 63 6f 6d 70 69 6c 65 20 74 69  pe at compile ti
08d0: 6d 65 2e 0a 20 2a 2f 0a 23 69 66 20 64 65 66 69  me.. */.#if defi
08e0: 6e 65 64 28 5f 5f 47 4e 55 43 5f 5f 29 0a 23 64  ned(__GNUC__).#d
08f0: 65 66 69 6e 65 20 5f 5f 41 56 5f 61 6c 69 67 6e  efine __AV_align
0900: 6f 66 20 5f 5f 61 6c 69 67 6e 6f 66 5f 5f 0a 23  of __alignof__.#
0910: 65 6c 73 65 0a 23 69 66 20 64 65 66 69 6e 65 64  else.#if defined
0920: 28 5f 5f 6d 69 70 73 5f 5f 29 20 7c 7c 20 64 65  (__mips__) || de
0930: 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f  fined(__mipsn32_
0940: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  _) || defined(__
0950: 6d 69 70 73 36 34 5f 5f 29 20 2f 2a 20 53 47 49  mips64__) /* SGI
0960: 20 63 6f 6d 70 69 6c 65 72 20 2a 2f 0a 23 64 65   compiler */.#de
0970: 66 69 6e 65 20 5f 5f 41 56 5f 61 6c 69 67 6e 6f  fine __AV_aligno
0980: 66 20 5f 5f 62 75 69 6c 74 69 6e 5f 61 6c 69 67  f __builtin_alig
0990: 6e 6f 66 0a 23 65 6c 73 65 0a 23 64 65 66 69 6e  nof.#else.#defin
09a0: 65 20 5f 5f 41 56 5f 6f 66 66 73 65 74 6f 66 28  e __AV_offsetof(
09b0: 74 79 70 65 2c 69 64 65 6e 74 29 20 20 28 28 75  type,ident)  ((u
09c0: 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 29 26 28 28  nsigned long)&((
09d0: 28 74 79 70 65 2a 29 30 29 2d 3e 69 64 65 6e 74  (type*)0)->ident
09e0: 29 29 0a 23 64 65 66 69 6e 65 20 5f 5f 41 56 5f  )).#define __AV_
09f0: 61 6c 69 67 6e 6f 66 28 74 79 70 65 29 20 20 5f  alignof(type)  _
0a00: 5f 41 56 5f 6f 66 66 73 65 74 6f 66 28 73 74 72  _AV_offsetof(str
0a10: 75 63 74 20 7b 20 63 68 61 72 20 5f 5f 73 6c 6f  uct { char __slo
0a20: 74 31 3b 20 74 79 70 65 20 5f 5f 73 6c 6f 74 32  t1; type __slot2
0a30: 3b 20 7d 2c 20 5f 5f 73 6c 6f 74 32 29 0a 23 65  ; }, __slot2).#e
0a40: 6e 64 69 66 0a 23 65 6e 64 69 66 0a 0a 2f 2a 20  ndif.#endif../* 
0a50: 43 20 62 75 69 6c 74 69 6e 20 74 79 70 65 73 2e  C builtin types.
0a60: 0a 20 2a 2f 0a 23 69 66 20 64 65 66 69 6e 65 64  . */.#if defined
0a70: 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 0a 74 79  (__mipsn32__).ty
0a80: 70 65 64 65 66 20 6c 6f 6e 67 20 6c 6f 6e 67 20  pedef long long 
0a90: 5f 5f 61 76 77 6f 72 64 3b 0a 23 65 6c 73 65 0a  __avword;.#else.
0aa0: 74 79 70 65 64 65 66 20 6c 6f 6e 67 20 5f 5f 61  typedef long __a
0ab0: 76 77 6f 72 64 3b 0a 23 65 6e 64 69 66 0a 0a 65  vword;.#endif..e
0ac0: 6e 75 6d 20 5f 5f 41 56 74 79 70 65 0a 7b 0a 20  num __AVtype.{. 
0ad0: 20 5f 5f 41 56 77 6f 72 64 2c 0a 20 20 5f 5f 41   __AVword,.  __A
0ae0: 56 76 6f 69 64 2c 0a 20 20 5f 5f 41 56 63 68 61  Vvoid,.  __AVcha
0af0: 72 2c 0a 20 20 5f 5f 41 56 73 63 68 61 72 2c 0a  r,.  __AVschar,.
0b00: 20 20 5f 5f 41 56 75 63 68 61 72 2c 0a 20 20 5f    __AVuchar,.  _
0b10: 5f 41 56 73 68 6f 72 74 2c 0a 20 20 5f 5f 41 56  _AVshort,.  __AV
0b20: 75 73 68 6f 72 74 2c 0a 20 20 5f 5f 41 56 69 6e  ushort,.  __AVin
0b30: 74 2c 0a 20 20 5f 5f 41 56 75 69 6e 74 2c 0a 20  t,.  __AVuint,. 
0b40: 20 5f 5f 41 56 6c 6f 6e 67 2c 0a 20 20 5f 5f 41   __AVlong,.  __A
0b50: 56 75 6c 6f 6e 67 2c 0a 20 20 5f 5f 41 56 6c 6f  Vulong,.  __AVlo
0b60: 6e 67 6c 6f 6e 67 2c 0a 20 20 5f 5f 41 56 75 6c  nglong,.  __AVul
0b70: 6f 6e 67 6c 6f 6e 67 2c 0a 20 20 5f 5f 41 56 66  onglong,.  __AVf
0b80: 6c 6f 61 74 2c 0a 20 20 5f 5f 41 56 64 6f 75 62  loat,.  __AVdoub
0b90: 6c 65 2c 0a 20 20 5f 5f 41 56 76 6f 69 64 70 2c  le,.  __AVvoidp,
0ba0: 0a 20 20 5f 5f 41 56 73 74 72 75 63 74 0a 7d 3b  .  __AVstruct.};
0bb0: 0a 0a 65 6e 75 6d 20 5f 5f 41 56 5f 61 6c 69 73  ..enum __AV_alis
0bc0: 74 5f 66 6c 61 67 73 0a 7b 0a 0a 20 20 2f 2a 20  t_flags.{..  /* 
0bd0: 68 6f 77 20 74 6f 20 72 65 74 75 72 6e 20 73 74  how to return st
0be0: 72 75 63 74 73 20 2a 2f 0a 20 20 2f 2a 20 54 68  ructs */.  /* Th
0bf0: 65 72 65 20 61 72 65 20 62 61 73 69 63 61 6c 6c  ere are basicall
0c00: 79 20 33 20 77 61 79 73 20 74 6f 20 72 65 74 75  y 3 ways to retu
0c10: 72 6e 20 73 74 72 75 63 74 73 3a 0a 20 20 20 2a  rn structs:.   *
0c20: 20 61 2e 20 54 68 65 20 63 61 6c 6c 65 64 20 66   a. The called f
0c30: 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20  unction returns 
0c40: 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 73 74 61  a pointer to sta
0c50: 74 69 63 20 64 61 74 61 2e 20 4e 6f 74 20 72 65  tic data. Not re
0c60: 65 6e 74 72 61 6e 74 2e 0a 20 20 20 2a 20 62 2e  entrant..   * b.
0c70: 20 54 68 65 20 63 61 6c 6c 65 72 20 70 61 73 73   The caller pass
0c80: 65 73 20 74 68 65 20 72 65 74 75 72 6e 20 73 74  es the return st
0c90: 72 75 63 74 75 72 65 20 61 64 64 72 65 73 73 20  ructure address 
0ca0: 69 6e 20 61 20 64 65 64 69 63 61 74 65 64 20 72  in a dedicated r
0cb0: 65 67 69 73 74 65 72 0a 20 20 20 2a 20 20 20 20  egister.   *    
0cc0: 6f 72 20 61 73 20 61 20 66 69 72 73 74 20 28 6f  or as a first (o
0cd0: 72 20 6c 61 73 74 29 2c 20 69 6e 76 69 73 69 62  r last), invisib
0ce0: 6c 65 20 61 72 67 75 6d 65 6e 74 2e 20 54 68 65  le argument. The
0cf0: 20 63 61 6c 6c 65 64 20 66 75 6e 63 74 69 6f 6e   called function
0d00: 20 73 74 6f 72 65 73 0a 20 20 20 2a 20 20 20 20   stores.   *    
0d10: 69 74 73 20 72 65 73 75 6c 74 20 74 68 65 72 65  its result there
0d20: 2e 0a 20 20 20 2a 20 63 2e 20 4c 69 6b 65 20 62  ..   * c. Like b
0d30: 2c 20 61 6e 64 20 74 68 65 20 63 61 6c 6c 65 64  , and the called
0d40: 20 66 75 6e 63 74 69 6f 6e 20 61 6c 73 6f 20 72   function also r
0d50: 65 74 75 72 6e 73 20 74 68 65 20 72 65 74 75 72  eturns the retur
0d60: 6e 20 73 74 72 75 63 74 75 72 65 0a 20 20 20 2a  n structure.   *
0d70: 20 20 20 20 61 64 64 72 65 73 73 20 69 6e 20 74      address in t
0d80: 68 65 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20  he return value 
0d90: 72 65 67 69 73 74 65 72 2e 20 28 54 68 69 73 20  register. (This 
0da0: 69 73 20 6e 6f 74 20 76 65 72 79 20 64 69 73 74  is not very dist
0db0: 69 6e 67 75 69 73 68 61 62 6c 65 0a 20 20 20 2a  inguishable.   *
0dc0: 20 20 20 20 66 72 6f 6d 20 62 2e 29 0a 20 20 20      from b.).   
0dd0: 2a 20 49 6e 64 65 70 65 6e 64 65 6e 74 6c 79 20  * Independently 
0de0: 6f 66 20 74 68 69 73 2c 0a 20 20 20 2a 20 72 2e  of this,.   * r.
0df0: 20 73 6d 61 6c 6c 20 73 74 72 75 63 74 75 72 65   small structure
0e00: 73 20 28 3c 3d 20 34 20 6f 72 20 3c 3d 20 38 20  s (<= 4 or <= 8 
0e10: 62 79 74 65 73 29 20 6d 61 79 20 62 65 20 72 65  bytes) may be re
0e20: 74 75 72 6e 65 64 20 69 6e 20 74 68 65 20 72 65  turned in the re
0e30: 74 75 72 6e 0a 20 20 20 2a 20 20 20 20 76 61 6c  turn.   *    val
0e40: 75 65 20 72 65 67 69 73 74 65 72 28 73 29 2c 20  ue register(s), 
0e50: 6f 72 0a 20 20 20 2a 20 6d 2e 20 65 76 65 6e 20  or.   * m. even 
0e60: 73 6d 61 6c 6c 20 73 74 72 75 63 74 75 72 65 73  small structures
0e70: 20 61 72 65 20 70 61 73 73 65 64 20 69 6e 20 6d   are passed in m
0e80: 65 6d 6f 72 79 2e 0a 20 20 20 2a 2f 0a 20 20 2f  emory..   */.  /
0e90: 2a 20 67 63 63 2d 32 2e 36 2e 33 20 65 6d 70 6c  * gcc-2.6.3 empl
0ea0: 6f 79 73 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e  oys the followin
0eb0: 67 20 73 74 72 61 74 65 67 79 3a 0a 20 20 20 2a  g strategy:.   *
0ec0: 20 20 20 2d 20 49 66 20 50 43 43 5f 53 54 41 54     - If PCC_STAT
0ed0: 49 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e  IC_STRUCT_RETURN
0ee0: 20 69 73 20 64 65 66 69 6e 65 64 20 69 6e 20 74   is defined in t
0ef0: 68 65 20 6d 61 63 68 69 6e 65 20 64 65 73 63 72  he machine descr
0f00: 69 70 74 69 6f 6e 0a 20 20 20 2a 20 20 20 20 20  iption.   *     
0f10: 69 74 20 75 73 65 73 20 6d 65 74 68 6f 64 20 61  it uses method a
0f20: 2c 20 65 6c 73 65 20 6d 65 74 68 6f 64 20 63 2e  , else method c.
0f30: 0a 20 20 20 2a 20 20 20 2d 20 49 66 20 66 6c 61  .   *   - If fla
0f40: 67 5f 70 63 63 5f 73 74 72 75 63 74 5f 72 65 74  g_pcc_struct_ret
0f50: 75 72 6e 20 69 73 20 73 65 74 20 28 65 69 74 68  urn is set (eith
0f60: 65 72 20 62 79 20 2d 66 70 63 63 2d 73 74 72 75  er by -fpcc-stru
0f70: 63 74 2d 72 65 74 75 72 6e 20 6f 72 20 69 66 0a  ct-return or if.
0f80: 20 20 20 2a 20 20 20 20 20 44 45 46 41 55 4c 54     *     DEFAULT
0f90: 5f 50 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55  _PCC_STRUCT_RETU
0fa0: 52 4e 20 69 73 20 64 65 66 69 6e 65 64 20 74 6f  RN is defined to
0fb0: 20 31 20 69 6e 20 74 68 65 20 6d 61 63 68 69 6e   1 in the machin
0fc0: 65 20 64 65 73 63 72 69 70 74 69 6f 6e 29 0a 20  e description). 
0fd0: 20 20 2a 20 20 20 20 20 69 74 20 75 73 65 73 20    *     it uses 
0fe0: 6d 65 74 68 6f 64 20 6d 2c 20 65 6c 73 65 20 28  method m, else (
0ff0: 65 69 74 68 65 72 20 62 79 20 2d 66 72 65 67 2d  either by -freg-
1000: 73 74 72 75 63 74 2d 72 65 74 75 72 6e 20 6f 72  struct-return or
1010: 20 69 66 0a 20 20 20 2a 20 20 20 20 20 44 45 46   if.   *     DEF
1020: 41 55 4c 54 5f 50 43 43 5f 53 54 52 55 43 54 5f  AULT_PCC_STRUCT_
1030: 52 45 54 55 52 4e 20 69 73 20 64 65 66 69 6e 65  RETURN is define
1040: 64 20 74 6f 20 30 20 69 6e 20 74 68 65 20 6d 61  d to 0 in the ma
1050: 63 68 69 6e 65 20 64 65 73 63 72 69 70 74 69 6f  chine descriptio
1060: 6e 29 0a 20 20 20 2a 20 20 20 20 20 6d 65 74 68  n).   *     meth
1070: 6f 64 20 72 2e 0a 20 20 20 2a 2f 0a 20 20 5f 5f  od r..   */.  __
1080: 41 56 5f 50 43 43 5f 53 54 52 55 43 54 5f 52 45  AV_PCC_STRUCT_RE
1090: 54 55 52 4e 09 3d 20 31 3c 3c 30 2c 09 2f 2a 20  TURN.= 1<<0,./* 
10a0: 61 3a 20 6e 65 65 64 20 74 6f 20 63 6f 70 79 20  a: need to copy 
10b0: 74 68 65 20 73 74 72 75 63 74 20 2a 2f 0a 20 20  the struct */.  
10c0: 5f 5f 41 56 5f 53 4d 41 4c 4c 5f 53 54 52 55 43  __AV_SMALL_STRUC
10d0: 54 5f 52 45 54 55 52 4e 09 3d 20 31 3c 3c 31 2c  T_RETURN.= 1<<1,
10e0: 09 2f 2a 20 72 3a 20 73 70 65 63 69 61 6c 20 63  ./* r: special c
10f0: 61 73 65 20 66 6f 72 20 73 6d 61 6c 6c 20 73 74  ase for small st
1100: 72 75 63 74 73 20 2a 2f 0a 20 20 5f 5f 41 56 5f  ructs */.  __AV_
1110: 47 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52  GCC_STRUCT_RETUR
1120: 4e 09 3d 20 31 3c 3c 32 2c 09 2f 2a 20 63 6f 6e  N.= 1<<2,./* con
1130: 73 69 64 65 72 20 38 20 62 79 74 65 20 73 74 72  sider 8 byte str
1140: 75 63 74 73 20 61 73 20 73 6d 61 6c 6c 20 2a 2f  ucts as small */
1150: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 73  .#if defined(__s
1160: 70 61 72 63 5f 5f 29 20 26 26 20 21 64 65 66 69  parc__) && !defi
1170: 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29  ned(__sparc64__)
1180: 0a 20 20 5f 5f 41 56 5f 53 55 4e 43 43 5f 53 54  .  __AV_SUNCC_ST
1190: 52 55 43 54 5f 52 45 54 55 52 4e 09 3d 20 31 3c  RUCT_RETURN.= 1<
11a0: 3c 33 2c 0a 20 20 5f 5f 41 56 5f 53 55 4e 50 52  <3,.  __AV_SUNPR
11b0: 4f 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52  OCC_STRUCT_RETUR
11c0: 4e 09 3d 20 31 3c 3c 34 2c 0a 23 65 6e 64 69 66  N.= 1<<4,.#endif
11d0: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 69  .#if defined(__i
11e0: 33 38 36 5f 5f 29 0a 20 20 5f 5f 41 56 5f 4e 45  386__).  __AV_NE
11f0: 58 54 47 43 43 5f 53 54 52 55 43 54 5f 52 45 54  XTGCC_STRUCT_RET
1200: 55 52 4e 09 3d 20 31 3c 3c 33 2c 0a 20 20 5f 5f  URN.= 1<<3,.  __
1210: 41 56 5f 4d 53 56 43 5f 53 54 52 55 43 54 5f 52  AV_MSVC_STRUCT_R
1220: 45 54 55 52 4e 09 3d 20 31 3c 3c 34 2c 0a 23 65  ETURN.= 1<<4,.#e
1230: 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64  ndif.#if defined
1240: 28 5f 5f 68 70 70 61 5f 5f 29 0a 20 20 5f 5f 41  (__hppa__).  __A
1250: 56 5f 4f 4c 44 47 43 43 5f 53 54 52 55 43 54 5f  V_OLDGCC_STRUCT_
1260: 52 45 54 55 52 4e 09 3d 20 31 3c 3c 33 2c 0a 23  RETURN.= 1<<3,.#
1270: 65 6e 64 69 66 0a 20 20 2f 2a 20 74 68 65 20 64  endif.  /* the d
1280: 65 66 61 75 6c 74 20 77 61 79 20 74 6f 20 72 65  efault way to re
1290: 74 75 72 6e 20 73 74 72 75 63 74 73 20 2a 2f 0a  turn structs */.
12a0: 20 20 2f 2a 20 54 68 69 73 20 63 68 6f 69 63 65    /* This choice
12b0: 20 68 65 72 65 20 69 73 20 62 61 73 65 64 20 6f   here is based o
12c0: 6e 20 74 68 65 20 61 73 73 75 6d 70 74 69 6f 6e  n the assumption
12d0: 20 74 68 61 74 20 74 68 65 20 66 75 6e 63 74 69   that the functi
12e0: 6f 6e 20 79 6f 75 20 61 72 65 0a 20 20 20 2a 20  on you are.   * 
12f0: 67 6f 69 6e 67 20 74 6f 20 63 61 6c 6c 20 68 61  going to call ha
1300: 73 20 62 65 65 6e 20 63 6f 6d 70 69 6c 65 64 20  s been compiled 
1310: 77 69 74 68 20 74 68 65 20 73 61 6d 65 20 63 6f  with the same co
1320: 6d 70 69 6c 65 72 20 79 6f 75 20 61 72 65 20 75  mpiler you are u
1330: 73 69 6e 67 20 74 6f 0a 20 20 20 2a 20 69 6e 63  sing to.   * inc
1340: 6c 75 64 65 20 74 68 69 73 20 66 69 6c 65 2e 0a  lude this file..
1350: 20 20 20 2a 20 49 66 20 79 6f 75 20 77 61 6e 74     * If you want
1360: 20 74 6f 20 63 61 6c 6c 20 66 75 6e 63 74 69 6f   to call functio
1370: 6e 73 20 77 69 74 68 20 61 6e 6f 74 68 65 72 20  ns with another 
1380: 73 74 72 75 63 74 20 72 65 74 75 72 6e 69 6e 67  struct returning
1390: 20 63 6f 6e 76 65 6e 74 69 6f 6e 2c 0a 20 20 20   convention,.   
13a0: 2a 20 6a 75 73 74 20 20 23 64 65 66 69 6e 65 20  * just  #define 
13b0: 5f 5f 41 56 5f 53 54 52 55 43 54 5f 52 45 54 55  __AV_STRUCT_RETU
13c0: 52 4e 20 2e 2e 2e 0a 20 20 20 2a 20 62 65 66 6f  RN ....   * befo
13d0: 72 65 20 6f 72 20 61 66 74 65 72 20 23 69 6e 63  re or after #inc
13e0: 6c 75 64 69 6e 67 20 3c 61 76 63 61 6c 6c 2e 68  luding <avcall.h
13f0: 3e 2e 0a 20 20 20 2a 2f 0a 23 69 66 6e 64 65 66  >..   */.#ifndef
1400: 20 5f 5f 41 56 5f 53 54 52 55 43 54 5f 52 45 54   __AV_STRUCT_RET
1410: 55 52 4e 0a 20 20 5f 5f 41 56 5f 53 54 52 55 43  URN.  __AV_STRUC
1420: 54 5f 52 45 54 55 52 4e 09 09 3d 0a 23 69 66 20  T_RETURN..=.#if 
1430: 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f  defined(__sparc_
1440: 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f  _) && !defined(_
1450: 5f 73 70 61 72 63 36 34 5f 5f 29 20 26 26 20 64  _sparc64__) && d
1460: 65 66 69 6e 65 64 28 73 75 6e 29 20 26 26 20 64  efined(sun) && d
1470: 65 66 69 6e 65 64 28 5f 5f 53 55 4e 50 52 4f 5f  efined(__SUNPRO_
1480: 43 29 20 2f 2a 20 53 55 4e 57 73 70 72 6f 20 63  C) /* SUNWspro c
1490: 63 20 2a 2f 0a 09 09 09 09 20 20 5f 5f 41 56 5f  c */.....  __AV_
14a0: 53 55 4e 50 52 4f 43 43 5f 53 54 52 55 43 54 5f  SUNPROCC_STRUCT_
14b0: 52 45 54 55 52 4e 2c 0a 23 65 6c 73 65 0a 23 69  RETURN,.#else.#i
14c0: 66 20 64 65 66 69 6e 65 64 28 5f 5f 50 43 43 5f  f defined(__PCC_
14d0: 53 54 52 55 43 54 5f 52 45 54 55 52 4e 5f 5f 29  STRUCT_RETURN__)
14e0: 20 2f 2a 20 64 65 66 69 6e 65 64 20 74 68 72 6f   /* defined thro
14f0: 75 67 68 20 63 6f 6e 66 69 67 75 72 65 2c 20 73  ugh configure, s
1500: 65 65 20 61 62 6f 76 65 20 2a 2f 0a 09 09 09 09  ee above */.....
1510: 20 20 5f 5f 41 56 5f 50 43 43 5f 53 54 52 55 43    __AV_PCC_STRUC
1520: 54 5f 52 45 54 55 52 4e 2c 0a 23 65 6c 73 65 0a  T_RETURN,.#else.
1530: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 53 4d  #if defined(__SM
1540: 41 4c 4c 5f 53 54 52 55 43 54 5f 52 45 54 55 52  ALL_STRUCT_RETUR
1550: 4e 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  N__) || defined(
1560: 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 7c 7c 20  __mipsn32__) || 
1570: 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 36 34  defined(__mips64
1580: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
1590: 5f 41 52 4d 45 4c 5f 5f 29 20 2f 2a 20 64 65 66  _ARMEL__) /* def
15a0: 69 6e 65 64 20 74 68 72 6f 75 67 68 20 63 6f 6e  ined through con
15b0: 66 69 67 75 72 65 2c 20 73 65 65 20 61 62 6f 76  figure, see abov
15c0: 65 20 2a 2f 0a 09 09 09 09 20 20 5f 5f 41 56 5f  e */.....  __AV_
15d0: 53 4d 41 4c 4c 5f 53 54 52 55 43 54 5f 52 45 54  SMALL_STRUCT_RET
15e0: 55 52 4e 20 7c 0a 23 65 6e 64 69 66 0a 23 69 66  URN |.#endif.#if
15f0: 20 64 65 66 69 6e 65 64 28 5f 5f 47 4e 55 43 5f   defined(__GNUC_
1600: 5f 29 0a 09 09 09 09 20 20 5f 5f 41 56 5f 47 43  _).....  __AV_GC
1610: 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20  C_STRUCT_RETURN 
1620: 7c 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66  |.#endif.#if def
1630: 69 6e 65 64 28 5f 5f 69 33 38 36 5f 5f 29 20 26  ined(__i386__) &
1640: 26 20 64 65 66 69 6e 65 64 28 4e 65 58 54 29 20  & defined(NeXT) 
1650: 26 26 20 64 65 66 69 6e 65 64 28 5f 5f 47 4e 55  && defined(__GNU
1660: 43 5f 5f 29 20 2f 2a 20 4e 65 58 54 20 67 63 63  C__) /* NeXT gcc
1670: 2d 32 2e 35 2e 38 20 2a 2f 0a 09 09 09 09 20 20  -2.5.8 */.....  
1680: 5f 5f 41 56 5f 4e 45 58 54 47 43 43 5f 53 54 52  __AV_NEXTGCC_STR
1690: 55 43 54 5f 52 45 54 55 52 4e 20 7c 0a 23 65 6e  UCT_RETURN |.#en
16a0: 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28  dif.#if defined(
16b0: 5f 5f 69 33 38 36 5f 5f 29 20 26 26 20 64 65 66  __i386__) && def
16c0: 69 6e 65 64 28 5f 4d 53 43 5f 56 45 52 29 20 2f  ined(_MSC_VER) /
16d0: 2a 20 4d 53 56 43 20 34 2e 30 20 2a 2f 0a 09 09  * MSVC 4.0 */...
16e0: 09 09 20 20 5f 5f 41 56 5f 4d 53 56 43 5f 53 54  ..  __AV_MSVC_ST
16f0: 52 55 43 54 5f 52 45 54 55 52 4e 20 7c 0a 23 65  RUCT_RETURN |.#e
1700: 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64  ndif.#if defined
1710: 28 5f 5f 68 70 70 61 5f 5f 29 20 26 26 20 64 65  (__hppa__) && de
1720: 66 69 6e 65 64 28 5f 5f 47 4e 55 43 5f 5f 29 20  fined(__GNUC__) 
1730: 26 26 20 28 5f 5f 47 4e 55 43 5f 5f 20 3c 20 33  && (__GNUC__ < 3
1740: 29 20 26 26 20 28 5f 5f 47 4e 55 43 5f 4d 49 4e  ) && (__GNUC_MIN
1750: 4f 52 5f 5f 20 3c 20 37 29 0a 09 09 09 09 20 20  OR__ < 7).....  
1760: 5f 5f 41 56 5f 4f 4c 44 47 43 43 5f 53 54 52 55  __AV_OLDGCC_STRU
1770: 43 54 5f 52 45 54 55 52 4e 20 7c 0a 23 65 6e 64  CT_RETURN |.#end
1780: 69 66 0a 20 20 09 09 09 09 20 20 30 2c 0a 23 65  if.  ....  0,.#e
1790: 6e 64 69 66 0a 23 65 6e 64 69 66 0a 23 65 6e 64  ndif.#endif.#end
17a0: 69 66 0a 0a 20 20 2f 2a 20 68 6f 77 20 74 6f 20  if..  /* how to 
17b0: 72 65 74 75 72 6e 20 66 6c 6f 61 74 73 20 2a 2f  return floats */
17c0: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d  .#if defined(__m
17d0: 36 38 6b 5f 5f 29 20 7c 7c 20 28 64 65 66 69 6e  68k__) || (defin
17e0: 65 64 28 5f 5f 73 70 61 72 63 5f 5f 29 20 26 26  ed(__sparc__) &&
17f0: 20 21 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72   !defined(__spar
1800: 63 36 34 5f 5f 29 29 0a 20 20 5f 5f 41 56 5f 53  c64__)).  __AV_S
1810: 55 4e 43 43 5f 46 4c 4f 41 54 5f 52 45 54 55 52  UNCC_FLOAT_RETUR
1820: 4e 09 3d 20 31 3c 3c 35 2c 0a 23 65 6e 64 69 66  N.= 1<<5,.#endif
1830: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d  .#if defined(__m
1840: 36 38 6b 5f 5f 29 0a 20 20 5f 5f 41 56 5f 46 52  68k__).  __AV_FR
1850: 45 47 5f 46 4c 4f 41 54 5f 52 45 54 55 52 4e 09  EG_FLOAT_RETURN.
1860: 3d 20 31 3c 3c 36 2c 0a 23 65 6e 64 69 66 0a 20  = 1<<6,.#endif. 
1870: 20 2f 2a 20 74 68 65 20 64 65 66 61 75 6c 74 20   /* the default 
1880: 77 61 79 20 74 6f 20 72 65 74 75 72 6e 20 66 6c  way to return fl
1890: 6f 61 74 73 20 2a 2f 0a 20 20 2f 2a 20 54 68 69  oats */.  /* Thi
18a0: 73 20 63 68 6f 69 63 65 20 68 65 72 65 20 69 73  s choice here is
18b0: 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 61 73   based on the as
18c0: 73 75 6d 70 74 69 6f 6e 20 74 68 61 74 20 74 68  sumption that th
18d0: 65 20 66 75 6e 63 74 69 6f 6e 20 79 6f 75 20 61  e function you a
18e0: 72 65 0a 20 20 20 2a 20 67 6f 69 6e 67 20 74 6f  re.   * going to
18f0: 20 63 61 6c 6c 20 68 61 73 20 62 65 65 6e 20 63   call has been c
1900: 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 74 68 65  ompiled with the
1910: 20 73 61 6d 65 20 63 6f 6d 70 69 6c 65 72 20 79   same compiler y
1920: 6f 75 20 61 72 65 20 75 73 69 6e 67 20 74 6f 0a  ou are using to.
1930: 20 20 20 2a 20 69 6e 63 6c 75 64 65 20 74 68 69     * include thi
1940: 73 20 66 69 6c 65 2e 0a 20 20 20 2a 20 49 66 20  s file..   * If 
1950: 79 6f 75 20 77 61 6e 74 20 74 6f 20 63 61 6c 6c  you want to call
1960: 20 66 75 6e 63 74 69 6f 6e 73 20 77 69 74 68 20   functions with 
1970: 61 6e 6f 74 68 65 72 20 66 6c 6f 61 74 20 72 65  another float re
1980: 74 75 72 6e 69 6e 67 20 63 6f 6e 76 65 6e 74 69  turning conventi
1990: 6f 6e 2c 0a 20 20 20 2a 20 6a 75 73 74 20 20 23  on,.   * just  #
19a0: 64 65 66 69 6e 65 20 5f 5f 41 56 5f 46 4c 4f 41  define __AV_FLOA
19b0: 54 5f 52 45 54 55 52 4e 20 2e 2e 2e 0a 20 20 20  T_RETURN ....   
19c0: 2a 20 62 65 66 6f 72 65 20 6f 72 20 61 66 74 65  * before or afte
19d0: 72 20 23 69 6e 63 6c 75 64 69 6e 67 20 3c 61 76  r #including <av
19e0: 63 61 6c 6c 2e 68 3e 2e 0a 20 20 20 2a 2f 0a 23  call.h>..   */.#
19f0: 69 66 6e 64 65 66 20 5f 5f 41 56 5f 46 4c 4f 41  ifndef __AV_FLOA
1a00: 54 5f 52 45 54 55 52 4e 0a 23 69 66 20 28 64 65  T_RETURN.#if (de
1a10: 66 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f 5f 29 20  fined(__m68k__) 
1a20: 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f 73 70  || (defined(__sp
1a30: 61 72 63 5f 5f 29 20 26 26 20 21 64 65 66 69 6e  arc__) && !defin
1a40: 65 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29 29  ed(__sparc64__))
1a50: 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f  ) && !defined(__
1a60: 47 4e 55 43 5f 5f 29 20 26 26 20 64 65 66 69 6e  GNUC__) && defin
1a70: 65 64 28 73 75 6e 29 20 26 26 20 21 64 65 66 69  ed(sun) && !defi
1a80: 6e 65 64 28 5f 5f 53 55 4e 50 52 4f 5f 43 29 20  ned(__SUNPRO_C) 
1a90: 20 2f 2a 20 73 75 6e 20 63 63 20 2a 2f 0a 20 20   /* sun cc */.  
1aa0: 5f 5f 41 56 5f 46 4c 4f 41 54 5f 52 45 54 55 52  __AV_FLOAT_RETUR
1ab0: 4e 09 09 3d 20 5f 5f 41 56 5f 53 55 4e 43 43 5f  N..= __AV_SUNCC_
1ac0: 46 4c 4f 41 54 5f 52 45 54 55 52 4e 2c 0a 23 65  FLOAT_RETURN,.#e
1ad0: 6c 69 66 20 28 64 65 66 69 6e 65 64 28 5f 5f 6d  lif (defined(__m
1ae0: 36 38 6b 5f 5f 29 20 26 26 20 21 64 65 66 69 6e  68k__) && !defin
1af0: 65 64 28 5f 5f 49 52 45 47 5f 46 4c 4f 41 54 5f  ed(__IREG_FLOAT_
1b00: 52 45 54 55 52 4e 5f 5f 29 29 0a 20 20 5f 5f 41  RETURN__)).  __A
1b10: 56 5f 46 4c 4f 41 54 5f 52 45 54 55 52 4e 09 09  V_FLOAT_RETURN..
1b20: 3d 20 5f 5f 41 56 5f 46 52 45 47 5f 46 4c 4f 41  = __AV_FREG_FLOA
1b30: 54 5f 52 45 54 55 52 4e 2c 0a 23 65 6c 73 65 0a  T_RETURN,.#else.
1b40: 20 20 5f 5f 41 56 5f 46 4c 4f 41 54 5f 52 45 54    __AV_FLOAT_RET
1b50: 55 52 4e 09 09 3d 20 30 2c 0a 23 65 6e 64 69 66  URN..= 0,.#endif
1b60: 0a 23 65 6e 64 69 66 0a 0a 20 20 2f 2a 20 68 6f  .#endif..  /* ho
1b70: 77 20 74 6f 20 70 61 73 73 20 73 74 72 75 63 74  w to pass struct
1b80: 73 20 2a 2f 0a 23 69 66 20 64 65 66 69 6e 65 64  s */.#if defined
1b90: 28 5f 5f 6d 69 70 73 5f 5f 29 20 7c 7c 20 64 65  (__mips__) || de
1ba0: 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f  fined(__mipsn32_
1bb0: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  _) || defined(__
1bc0: 6d 69 70 73 36 34 5f 5f 29 0a 20 20 5f 5f 41 56  mips64__).  __AV
1bd0: 5f 53 47 49 43 43 5f 53 54 52 55 43 54 5f 41 52  _SGICC_STRUCT_AR
1be0: 47 53 09 3d 20 31 3c 3c 37 2c 0a 23 65 6e 64 69  GS.= 1<<7,.#endi
1bf0: 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  f.#if defined(__
1c00: 70 6f 77 65 72 70 63 5f 5f 29 20 26 26 20 21 64  powerpc__) && !d
1c10: 65 66 69 6e 65 64 28 5f 5f 70 6f 77 65 72 70 63  efined(__powerpc
1c20: 36 34 5f 5f 29 0a 20 20 5f 5f 41 56 5f 41 49 58  64__).  __AV_AIX
1c30: 43 43 5f 53 54 52 55 43 54 5f 41 52 47 53 09 3d  CC_STRUCT_ARGS.=
1c40: 20 31 3c 3c 37 2c 0a 23 65 6e 64 69 66 0a 20 20   1<<7,.#endif.  
1c50: 2f 2a 20 74 68 65 20 64 65 66 61 75 6c 74 20 77  /* the default w
1c60: 61 79 20 74 6f 20 70 61 73 73 20 66 6c 6f 61 74  ay to pass float
1c70: 73 20 2a 2f 0a 20 20 2f 2a 20 54 68 69 73 20 63  s */.  /* This c
1c80: 68 6f 69 63 65 20 68 65 72 65 20 69 73 20 62 61  hoice here is ba
1c90: 73 65 64 20 6f 6e 20 74 68 65 20 61 73 73 75 6d  sed on the assum
1ca0: 70 74 69 6f 6e 20 74 68 61 74 20 74 68 65 20 66  ption that the f
1cb0: 75 6e 63 74 69 6f 6e 20 79 6f 75 20 61 72 65 0a  unction you are.
1cc0: 20 20 20 2a 20 67 6f 69 6e 67 20 74 6f 20 63 61     * going to ca
1cd0: 6c 6c 20 68 61 73 20 62 65 65 6e 20 63 6f 6d 70  ll has been comp
1ce0: 69 6c 65 64 20 77 69 74 68 20 74 68 65 20 73 61  iled with the sa
1cf0: 6d 65 20 63 6f 6d 70 69 6c 65 72 20 79 6f 75 20  me compiler you 
1d00: 61 72 65 20 75 73 69 6e 67 20 74 6f 0a 20 20 20  are using to.   
1d10: 2a 20 69 6e 63 6c 75 64 65 20 74 68 69 73 20 66  * include this f
1d20: 69 6c 65 2e 0a 20 20 20 2a 20 49 66 20 79 6f 75  ile..   * If you
1d30: 20 77 61 6e 74 20 74 6f 20 63 61 6c 6c 20 66 75   want to call fu
1d40: 6e 63 74 69 6f 6e 73 20 77 69 74 68 20 61 6e 6f  nctions with ano
1d50: 74 68 65 72 20 66 6c 6f 61 74 20 70 61 73 73 69  ther float passi
1d60: 6e 67 20 63 6f 6e 76 65 6e 74 69 6f 6e 2c 0a 20  ng convention,. 
1d70: 20 20 2a 20 6a 75 73 74 20 20 23 64 65 66 69 6e    * just  #defin
1d80: 65 20 5f 5f 41 56 5f 53 54 52 55 43 54 5f 41 52  e __AV_STRUCT_AR
1d90: 47 53 20 2e 2e 2e 0a 20 20 20 2a 20 62 65 66 6f  GS ....   * befo
1da0: 72 65 20 6f 72 20 61 66 74 65 72 20 23 69 6e 63  re or after #inc
1db0: 6c 75 64 69 6e 67 20 3c 61 76 63 61 6c 6c 2e 68  luding <avcall.h
1dc0: 3e 2e 0a 20 20 20 2a 2f 0a 23 69 66 6e 64 65 66  >..   */.#ifndef
1dd0: 20 5f 5f 41 56 5f 53 54 52 55 43 54 5f 41 52 47   __AV_STRUCT_ARG
1de0: 53 0a 23 69 66 20 28 64 65 66 69 6e 65 64 28 5f  S.#if (defined(_
1df0: 5f 6d 69 70 73 5f 5f 29 20 7c 7c 20 64 65 66 69  _mips__) || defi
1e00: 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29  ned(__mipsn32__)
1e10: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69   || defined(__mi
1e20: 70 73 36 34 5f 5f 29 29 20 26 26 20 21 64 65 66  ps64__)) && !def
1e30: 69 6e 65 64 28 5f 5f 47 4e 55 43 5f 5f 29 20 2f  ined(__GNUC__) /
1e40: 2a 20 53 47 49 20 6d 69 70 73 20 63 63 20 2a 2f  * SGI mips cc */
1e50: 0a 20 20 5f 5f 41 56 5f 53 54 52 55 43 54 5f 41  .  __AV_STRUCT_A
1e60: 52 47 53 09 09 3d 20 5f 5f 41 56 5f 53 47 49 43  RGS..= __AV_SGIC
1e70: 43 5f 53 54 52 55 43 54 5f 41 52 47 53 2c 0a 23  C_STRUCT_ARGS,.#
1e80: 65 6c 73 65 0a 23 69 66 20 64 65 66 69 6e 65 64  else.#if defined
1e90: 28 5f 5f 70 6f 77 65 72 70 63 5f 5f 29 20 26 26  (__powerpc__) &&
1ea0: 20 21 64 65 66 69 6e 65 64 28 5f 5f 70 6f 77 65   !defined(__powe
1eb0: 72 70 63 36 34 5f 5f 29 20 26 26 20 64 65 66 69  rpc64__) && defi
1ec0: 6e 65 64 28 5f 41 49 58 29 20 26 26 20 21 64 65  ned(_AIX) && !de
1ed0: 66 69 6e 65 64 28 5f 5f 47 4e 55 43 5f 5f 29 20  fined(__GNUC__) 
1ee0: 2f 2a 20 41 49 58 20 63 63 2c 20 78 6c 63 20 2a  /* AIX cc, xlc *
1ef0: 2f 0a 20 20 5f 5f 41 56 5f 53 54 52 55 43 54 5f  /.  __AV_STRUCT_
1f00: 41 52 47 53 09 09 3d 20 5f 5f 41 56 5f 41 49 58  ARGS..= __AV_AIX
1f10: 43 43 5f 53 54 52 55 43 54 5f 41 52 47 53 2c 0a  CC_STRUCT_ARGS,.
1f20: 23 65 6c 73 65 0a 20 20 5f 5f 41 56 5f 53 54 52  #else.  __AV_STR
1f30: 55 43 54 5f 41 52 47 53 09 09 3d 20 30 2c 0a 23  UCT_ARGS..= 0,.#
1f40: 65 6e 64 69 66 0a 23 65 6e 64 69 66 0a 23 65 6e  endif.#endif.#en
1f50: 64 69 66 0a 0a 20 20 2f 2a 20 68 6f 77 20 74 6f  dif..  /* how to
1f60: 20 70 61 73 73 20 66 6c 6f 61 74 73 20 2a 2f 0a   pass floats */.
1f70: 20 20 2f 2a 20 41 4e 53 49 20 43 20 63 6f 6d 70    /* ANSI C comp
1f80: 69 6c 65 72 73 20 61 6e 64 20 47 4e 55 20 67 63  ilers and GNU gc
1f90: 63 20 70 61 73 73 20 66 6c 6f 61 74 73 20 61 73  c pass floats as
1fa0: 20 66 6c 6f 61 74 73 2e 0a 20 20 20 2a 20 4b 26   floats..   * K&
1fb0: 52 20 43 20 63 6f 6d 70 69 6c 65 72 73 20 70 61  R C compilers pa
1fc0: 73 73 20 66 6c 6f 61 74 73 20 61 73 20 64 6f 75  ss floats as dou
1fd0: 62 6c 65 73 2e 20 57 65 20 64 6f 6e 27 74 20 73  bles. We don't s
1fe0: 75 70 70 6f 72 74 20 74 68 65 6d 20 61 6e 79 20  upport them any 
1ff0: 6d 6f 72 65 2e 0a 20 20 20 2a 2f 0a 0a 20 20 2f  more..   */..  /
2000: 2a 20 68 6f 77 20 74 6f 20 70 61 73 73 20 61 6e  * how to pass an
2010: 64 20 72 65 74 75 72 6e 20 73 6d 61 6c 6c 20 69  d return small i
2020: 6e 74 65 67 65 72 20 61 72 67 75 6d 65 6e 74 73  nteger arguments
2030: 20 2a 2f 0a 20 20 5f 5f 41 56 5f 41 4e 53 49 5f   */.  __AV_ANSI_
2040: 49 4e 54 45 47 45 52 53 09 09 3d 20 30 2c 20 2f  INTEGERS..= 0, /
2050: 2a 20 6e 6f 20 70 72 6f 6d 6f 74 69 6f 6e 73 20  * no promotions 
2060: 2a 2f 0a 20 20 5f 5f 41 56 5f 54 52 41 44 49 54  */.  __AV_TRADIT
2070: 49 4f 4e 41 4c 5f 49 4e 54 45 47 45 52 53 09 3d  IONAL_INTEGERS.=
2080: 20 30 2c 20 2f 2a 20 70 72 6f 6d 6f 74 65 20 5b   0, /* promote [
2090: 75 5d 63 68 61 72 2c 20 5b 75 5d 73 68 6f 72 74  u]char, [u]short
20a0: 20 74 6f 20 5b 75 5d 69 6e 74 20 2a 2f 0a 20 20   to [u]int */.  
20b0: 2f 2a 20 46 6f 72 74 75 6e 61 74 65 6c 79 20 74  /* Fortunately t
20c0: 68 65 73 65 20 74 77 6f 20 6d 65 74 68 6f 64 73  hese two methods
20d0: 20 61 72 65 20 63 6f 6d 70 61 74 69 62 6c 65 2e   are compatible.
20e0: 20 4f 75 72 20 6d 61 63 72 6f 73 20 77 6f 72 6b   Our macros work
20f0: 20 77 69 74 68 20 62 6f 74 68 2e 20 2a 2f 0a 0a   with both. */..
2100: 20 20 2f 2a 20 73 74 61 63 6b 20 63 6c 65 61 6e    /* stack clean
2110: 75 70 20 70 6f 6c 69 63 79 20 2a 2f 0a 20 20 5f  up policy */.  _
2120: 5f 41 56 5f 43 44 45 43 4c 5f 43 4c 45 41 4e 55  _AV_CDECL_CLEANU
2130: 50 09 09 3d 20 30 2c 20 2f 2a 20 63 61 6c 6c 65  P..= 0, /* calle
2140: 72 20 70 6f 70 73 20 61 72 67 73 20 61 66 74 65  r pops args afte
2150: 72 20 72 65 74 75 72 6e 20 2a 2f 0a 20 20 5f 5f  r return */.  __
2160: 41 56 5f 53 54 44 43 41 4c 4c 5f 43 4c 45 41 4e  AV_STDCALL_CLEAN
2170: 55 50 09 09 3d 20 30 2c 20 2f 2a 20 63 61 6c 6c  UP..= 0, /* call
2180: 65 65 20 70 6f 70 73 20 61 72 67 73 20 62 65 66  ee pops args bef
2190: 6f 72 65 20 72 65 74 75 72 6e 20 2a 2f 0a 09 09  ore return */...
21a0: 09 09 20 20 20 20 20 2f 2a 20 63 75 72 72 65 6e  ..     /* curren
21b0: 74 6c 79 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74  tly only support
21c0: 65 64 20 6f 6e 20 5f 5f 69 33 38 36 5f 5f 20 2a  ed on __i386__ *
21d0: 2f 0a 23 69 66 6e 64 65 66 20 5f 5f 41 56 5f 43  /.#ifndef __AV_C
21e0: 4c 45 41 4e 55 50 0a 20 20 5f 5f 41 56 5f 43 4c  LEANUP.  __AV_CL
21f0: 45 41 4e 55 50 09 09 09 3d 20 5f 5f 41 56 5f 43  EANUP...= __AV_C
2200: 44 45 43 4c 5f 43 4c 45 41 4e 55 50 2c 0a 23 65  DECL_CLEANUP,.#e
2210: 6e 64 69 66 0a 0a 20 20 2f 2a 20 54 68 65 73 65  ndif..  /* These
2220: 20 61 72 65 20 66 6f 72 20 69 6e 74 65 72 6e 61   are for interna
2230: 6c 20 75 73 65 20 6f 6e 6c 79 20 2a 2f 0a 23 69  l use only */.#i
2240: 66 20 64 65 66 69 6e 65 64 28 5f 5f 69 33 38 36  f defined(__i386
2250: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
2260: 5f 6d 36 38 6b 5f 5f 29 20 7c 7c 20 64 65 66 69  _m68k__) || defi
2270: 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29  ned(__mipsn32__)
2280: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69   || defined(__mi
2290: 70 73 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  ps64__) || defin
22a0: 65 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29 20  ed(__sparc64__) 
22b0: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 61 6c 70  || defined(__alp
22c0: 68 61 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  ha__) || defined
22d0: 28 5f 5f 61 72 6d 5f 5f 29 20 7c 7c 20 28 64 65  (__arm__) || (de
22e0: 66 69 6e 65 64 28 5f 5f 70 6f 77 65 72 70 63 5f  fined(__powerpc_
22f0: 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f  _) && !defined(_
2300: 5f 70 6f 77 65 72 70 63 36 34 5f 5f 29 29 20 7c  _powerpc64__)) |
2310: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 63 6f 6e 76  | defined(__conv
2320: 65 78 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  ex__) || defined
2330: 28 5f 5f 69 61 36 34 5f 5f 29 20 7c 7c 20 64 65  (__ia64__) || de
2340: 66 69 6e 65 64 28 5f 5f 78 38 36 5f 36 34 5f 5f  fined(__x86_64__
2350: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 73  ) || defined(__s
2360: 33 39 30 5f 5f 29 0a 20 20 5f 5f 41 56 5f 52 45  390__).  __AV_RE
2370: 47 49 53 54 45 52 5f 53 54 52 55 43 54 5f 52 45  GISTER_STRUCT_RE
2380: 54 55 52 4e 09 3d 20 31 3c 3c 39 2c 0a 23 65 6e  TURN.= 1<<9,.#en
2390: 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28  dif.#if defined(
23a0: 5f 5f 6d 69 70 73 5f 5f 29 20 26 26 20 21 64 65  __mips__) && !de
23b0: 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f  fined(__mipsn32_
23c0: 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f  _) && !defined(_
23d0: 5f 6d 69 70 73 36 34 5f 5f 29 0a 20 20 5f 5f 41  _mips64__).  __A
23e0: 56 5f 46 4c 4f 41 54 5f 31 09 09 09 3d 20 31 3c  V_FLOAT_1...= 1<
23f0: 3c 31 30 2c 0a 20 20 5f 5f 41 56 5f 46 4c 4f 41  <10,.  __AV_FLOA
2400: 54 5f 32 09 09 09 3d 20 31 3c 3c 31 31 2c 0a 20  T_2...= 1<<11,. 
2410: 20 5f 5f 41 56 5f 44 4f 55 42 4c 45 5f 31 09 09   __AV_DOUBLE_1..
2420: 09 3d 20 31 3c 3c 31 32 2c 0a 20 20 5f 5f 41 56  .= 1<<12,.  __AV
2430: 5f 44 4f 55 42 4c 45 5f 32 09 09 09 3d 20 31 3c  _DOUBLE_2...= 1<
2440: 3c 31 33 2c 0a 23 65 6e 64 69 66 0a 0a 20 20 5f  <13,.#endif..  _
2450: 5f 41 56 5f 66 6c 61 67 5f 66 6f 72 5f 62 72 6f  _AV_flag_for_bro
2460: 6b 65 6e 5f 63 6f 6d 70 69 6c 65 72 73 5f 74 68  ken_compilers_th
2470: 61 74 5f 64 6f 6e 74 5f 6c 69 6b 65 5f 74 72 61  at_dont_like_tra
2480: 69 6c 69 6e 67 5f 63 6f 6d 6d 61 73 0a 7d 3b 0a  iling_commas.};.
2490: 0a 74 79 70 65 64 65 66 20 73 74 72 75 63 74 0a  .typedef struct.
24a0: 7b 0a 20 20 2f 2a 20 66 75 6e 63 74 69 6f 6e 20  {.  /* function 
24b0: 74 6f 20 62 65 20 63 61 6c 6c 65 64 20 2a 2f 0a  to be called */.
24c0: 20 20 5f 5f 61 76 77 6f 72 64 09 09 28 2a 66 75    __avword..(*fu
24d0: 6e 63 29 28 29 3b 0a 20 20 2f 2a 20 73 6f 6d 65  nc)();.  /* some
24e0: 20 61 76 5f 2e 2e 2e 20 6d 61 63 72 6f 73 20 6e   av_... macros n
24f0: 65 65 64 20 74 68 65 73 65 20 66 6c 61 67 73 20  eed these flags 
2500: 2a 2f 0a 20 20 69 6e 74 09 09 09 66 6c 61 67 73  */.  int...flags
2510: 3b 0a 20 20 2f 2a 20 72 65 74 75 72 6e 20 74 79  ;.  /* return ty
2520: 70 65 2c 20 61 64 64 72 65 73 73 20 66 6f 72 20  pe, address for 
2530: 74 68 65 20 72 65 73 75 6c 74 20 2a 2f 0a 20 20  the result */.  
2540: 76 6f 69 64 2a 09 09 09 72 61 64 64 72 3b 0a 20  void*...raddr;. 
2550: 20 65 6e 75 6d 20 5f 5f 41 56 74 79 70 65 09 09   enum __AVtype..
2560: 72 74 79 70 65 3b 0a 20 20 75 6e 73 69 67 6e 65  rtype;.  unsigne
2570: 64 20 6c 6f 6e 67 09 09 72 73 69 7a 65 3b 0a 20  d long..rsize;. 
2580: 20 2f 2a 20 63 75 72 72 65 6e 74 20 70 6f 69 6e   /* current poin
2590: 74 65 72 20 69 6e 74 6f 20 74 68 65 20 61 72 67  ter into the arg
25a0: 73 5b 5d 20 61 72 72 61 79 20 2a 2f 0a 20 20 5f  s[] array */.  _
25b0: 5f 61 76 77 6f 72 64 2a 09 09 61 70 74 72 3b 0a  _avword*..aptr;.
25c0: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 73 70  #if defined(__sp
25d0: 61 72 63 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65  arc__) || define
25e0: 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29 20 7c  d(__sparc64__) |
25f0: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 68 70 70 61  | defined(__hppa
2600: 5f 5f 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28  __) || (defined(
2610: 5f 5f 70 6f 77 65 72 70 63 5f 5f 29 20 26 26 20  __powerpc__) && 
2620: 21 64 65 66 69 6e 65 64 28 5f 5f 70 6f 77 65 72  !defined(__power
2630: 70 63 36 34 5f 5f 29 20 26 26 20 21 64 65 66 69  pc64__) && !defi
2640: 6e 65 64 28 5f 41 49 58 29 20 26 26 20 21 28 64  ned(_AIX) && !(d
2650: 65 66 69 6e 65 64 28 5f 5f 4d 41 43 48 5f 5f 29  efined(__MACH__)
2660: 20 26 26 20 64 65 66 69 6e 65 64 28 5f 5f 41 50   && defined(__AP
2670: 50 4c 45 5f 5f 29 29 29 20 7c 7c 20 64 65 66 69  PLE__))) || defi
2680: 6e 65 64 28 5f 5f 73 33 39 30 5f 5f 29 0a 20 20  ned(__s390__).  
2690: 2f 2a 20 6c 69 6d 69 74 20 70 6f 69 6e 74 65 72  /* limit pointer
26a0: 20 69 6e 74 6f 20 74 68 65 20 61 72 67 73 5b 5d   into the args[]
26b0: 20 61 72 72 61 79 20 2a 2f 0a 20 20 5f 5f 61 76   array */.  __av
26c0: 77 6f 72 64 2a 09 09 65 70 74 72 3b 0a 23 65 6e  word*..eptr;.#en
26d0: 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28  dif.#if defined(
26e0: 5f 5f 69 33 38 36 5f 5f 29 20 26 26 20 30 0a 20  __i386__) && 0. 
26f0: 20 2f 2a 20 46 69 6c 6c 65 72 20 77 6f 72 64 2c   /* Filler word,
2700: 20 6e 65 65 64 65 64 20 69 66 20 74 68 65 20 6e   needed if the n
2710: 75 6d 62 65 72 73 20 6f 66 20 77 6f 72 64 73 20  umbers of words 
2720: 75 70 20 74 6f 20 6e 6f 77 20 69 6e 20 74 68 69  up to now in thi
2730: 73 20 73 74 72 75 63 74 75 72 65 20 2a 2f 0a 20  s structure */. 
2740: 20 2f 2a 20 69 73 20 6f 64 64 20 28 62 65 63 61   /* is odd (beca
2750: 75 73 65 20 6f 6e 20 4d 53 56 43 2c 20 61 6c 69  use on MSVC, ali
2760: 67 6e 6f 66 28 64 6f 75 62 6c 65 29 20 3d 20 38  gnof(double) = 8
2770: 2c 20 6e 6f 72 6d 61 6c 6c 79 20 3d 20 34 29 2e  , normally = 4).
2780: 20 20 20 20 20 20 20 20 20 20 20 20 2a 2f 0a 20              */. 
2790: 20 5f 5f 61 76 77 6f 72 64 09 09 66 69 6c 6c 65   __avword..fille
27a0: 72 31 3b 0a 23 65 6e 64 69 66 0a 23 69 66 20 64  r1;.#endif.#if d
27b0: 65 66 69 6e 65 64 28 5f 5f 69 33 38 36 5f 5f 29  efined(__i386__)
27c0: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 36   || defined(__m6
27d0: 38 6b 5f 5f 29 20 7c 7c 20 28 64 65 66 69 6e 65  8k__) || (define
27e0: 64 28 5f 5f 73 70 61 72 63 5f 5f 29 20 26 26 20  d(__sparc__) && 
27f0: 21 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63  !defined(__sparc
2800: 36 34 5f 5f 29 29 20 7c 7c 20 64 65 66 69 6e 65  64__)) || define
2810: 64 28 5f 5f 68 70 70 61 5f 5f 29 20 7c 7c 20 64  d(__hppa__) || d
2820: 65 66 69 6e 65 64 28 5f 5f 61 72 6d 5f 5f 29 20  efined(__arm__) 
2830: 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f 70 6f  || (defined(__po
2840: 77 65 72 70 63 5f 5f 29 20 26 26 20 21 64 65 66  werpc__) && !def
2850: 69 6e 65 64 28 5f 5f 70 6f 77 65 72 70 63 36 34  ined(__powerpc64
2860: 5f 5f 29 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  __)) || defined(
2870: 5f 5f 63 6f 6e 76 65 78 5f 5f 29 20 7c 7c 20 64  __convex__) || d
2880: 65 66 69 6e 65 64 28 5f 5f 73 33 39 30 5f 5f 29  efined(__s390__)
2890: 0a 20 20 2f 2a 20 74 65 6d 70 6f 72 61 72 79 20  .  /* temporary 
28a0: 73 74 6f 72 61 67 65 2c 20 75 73 65 64 20 74 6f  storage, used to
28b0: 20 73 70 6c 69 74 20 64 6f 75 62 6c 65 73 20 69   split doubles i
28c0: 6e 74 6f 20 74 77 6f 20 77 6f 72 64 73 20 2a 2f  nto two words */
28d0: 0a 20 20 75 6e 69 6f 6e 20 7b 0a 20 20 20 20 64  .  union {.    d
28e0: 6f 75 62 6c 65 09 5f 64 6f 75 62 6c 65 3b 0a 23  ouble._double;.#
28f0: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 73 70 61  if defined(__spa
2900: 72 63 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65  rc__) && !define
2910: 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29 20 26  d(__sparc64__) &
2920: 26 20 64 65 66 69 6e 65 64 28 48 41 56 45 5f 4c  & defined(HAVE_L
2930: 4f 4e 47 5f 4c 4f 4e 47 5f 49 4e 54 29 0a 20 20  ONG_LONG_INT).  
2940: 20 20 6c 6f 6e 67 20 6c 6f 6e 67 09 5f 6c 6f 6e    long long._lon
2950: 67 6c 6f 6e 67 3b 0a 23 65 6e 64 69 66 0a 20 20  glong;.#endif.  
2960: 20 20 5f 5f 61 76 77 6f 72 64 09 77 6f 72 64 73    __avword.words
2970: 5b 32 5d 3b 0a 20 20 7d 09 09 09 74 6d 70 3b 0a  [2];.  }...tmp;.
2980: 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e  #endif.#if defin
2990: 65 64 28 5f 5f 78 38 36 5f 36 34 5f 5f 29 0a 20  ed(__x86_64__). 
29a0: 20 2f 2a 20 73 74 6f 72 65 20 74 68 65 20 69 6e   /* store the in
29b0: 74 65 67 65 72 20 61 72 67 75 6d 65 6e 74 73 20  teger arguments 
29c0: 69 6e 20 61 6e 20 65 78 74 72 61 20 61 72 72 61  in an extra arra
29d0: 79 20 2a 2f 0a 20 20 5f 5f 61 76 77 6f 72 64 2a  y */.  __avword*
29e0: 09 09 69 61 70 74 72 3b 0a 20 20 5f 5f 61 76 77  ..iaptr;.  __avw
29f0: 6f 72 64 09 09 69 61 72 67 73 5b 36 5d 3b 0a 23  ord..iargs[6];.#
2a00: 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65  endif.#if define
2a10: 64 28 5f 5f 6d 69 70 73 5f 5f 29 20 26 26 20 21  d(__mips__) && !
2a20: 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33  defined(__mipsn3
2a30: 32 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64  2__) && !defined
2a40: 28 5f 5f 6d 69 70 73 36 34 5f 5f 29 0a 20 20 2f  (__mips64__).  /
2a50: 2a 20 73 74 6f 72 65 20 74 68 65 20 66 6c 6f 61  * store the floa
2a60: 74 69 6e 67 2d 70 6f 69 6e 74 20 61 72 67 75 6d  ting-point argum
2a70: 65 6e 74 73 20 69 6e 20 61 6e 20 65 78 74 72 61  ents in an extra
2a80: 20 61 72 72 61 79 20 2a 2f 0a 20 20 69 6e 74 09   array */.  int.
2a90: 09 09 61 6e 75 6d 3b 0a 20 20 66 6c 6f 61 74 09  ..anum;.  float.
2aa0: 09 09 66 6c 6f 61 74 61 72 67 5b 32 5d 3b 0a 20  ..floatarg[2];. 
2ab0: 20 64 6f 75 62 6c 65 09 09 64 6f 75 62 6c 65 61   double..doublea
2ac0: 72 67 5b 32 5d 3b 0a 23 65 6e 64 69 66 0a 23 69  rg[2];.#endif.#i
2ad0: 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73  f defined(__mips
2ae0: 6e 33 32 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65  n32__) || define
2af0: 64 28 5f 5f 6d 69 70 73 36 34 5f 5f 29 0a 20 20  d(__mips64__).  
2b00: 2f 2a 20 73 74 6f 72 65 20 74 68 65 20 66 6c 6f  /* store the flo
2b10: 61 74 69 6e 67 2d 70 6f 69 6e 74 20 61 72 67 75  ating-point argu
2b20: 6d 65 6e 74 73 20 69 6e 20 61 6e 20 65 78 74 72  ments in an extr
2b30: 61 20 61 72 72 61 79 20 2a 2f 0a 20 20 69 6e 74  a array */.  int
2b40: 09 09 09 61 6e 75 6d 3b 09 09 2f 2a 20 72 65 64  ...anum;../* red
2b50: 75 6e 64 61 6e 74 3a 20 28 4c 49 53 54 29 2e 61  undant: (LIST).a
2b60: 70 74 72 20 3d 20 26 28 4c 49 53 54 29 2e 61 72  ptr = &(LIST).ar
2b70: 67 73 5b 28 4c 49 53 54 29 2e 61 6e 75 6d 5d 20  gs[(LIST).anum] 
2b80: 2a 2f 0a 20 20 75 6e 73 69 67 6e 65 64 20 69 6e  */.  unsigned in
2b90: 74 09 09 66 61 72 67 5f 6d 61 73 6b 3b 09 2f 2a  t..farg_mask;./*
2ba0: 20 62 69 74 6d 61 73 6b 20 6f 66 20 74 68 6f 73   bitmask of thos
2bb0: 65 20 65 6e 74 72 69 65 73 20 69 6e 20 66 61 72  e entries in far
2bc0: 67 5b 5d 20 77 68 69 63 68 20 68 61 76 65 20 61  g[] which have a
2bd0: 20 76 61 6c 75 65 20 2a 2f 0a 20 20 75 6e 73 69   value */.  unsi
2be0: 67 6e 65 64 20 69 6e 74 09 09 64 61 72 67 5f 6d  gned int..darg_m
2bf0: 61 73 6b 3b 09 2f 2a 20 62 69 74 6d 61 73 6b 20  ask;./* bitmask 
2c00: 6f 66 20 74 68 6f 73 65 20 65 6e 74 72 69 65 73  of those entries
2c10: 20 69 6e 20 61 72 67 73 5b 5d 20 77 68 69 63 68   in args[] which
2c20: 20 68 61 76 65 20 61 20 64 6f 75 62 6c 65 20 76   have a double v
2c30: 61 6c 75 65 20 2a 2f 0a 20 20 66 6c 6f 61 74 09  alue */.  float.
2c40: 09 09 66 61 72 67 5b 38 5d 3b 0a 23 65 6e 64 69  ..farg[8];.#endi
2c50: 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  f.#if defined(__
2c60: 73 70 61 72 63 36 34 5f 5f 29 0a 20 20 2f 2a 20  sparc64__).  /* 
2c70: 73 74 6f 72 65 20 74 68 65 20 66 6c 6f 61 74 69  store the floati
2c80: 6e 67 2d 70 6f 69 6e 74 20 61 72 67 75 6d 65 6e  ng-point argumen
2c90: 74 73 20 69 6e 20 61 6e 20 65 78 74 72 61 20 61  ts in an extra a
2ca0: 72 72 61 79 20 2a 2f 0a 20 20 69 6e 74 09 09 09  rray */.  int...
2cb0: 61 6e 75 6d 3b 09 09 2f 2a 20 72 65 64 75 6e 64  anum;../* redund
2cc0: 61 6e 74 3a 20 28 4c 49 53 54 29 2e 61 70 74 72  ant: (LIST).aptr
2cd0: 20 3d 20 26 28 4c 49 53 54 29 2e 61 72 67 73 5b   = &(LIST).args[
2ce0: 28 4c 49 53 54 29 2e 61 6e 75 6d 5d 20 2a 2f 0a  (LIST).anum] */.
2cf0: 20 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 09 09    unsigned int..
2d00: 66 61 72 67 5f 6d 61 73 6b 3b 09 2f 2a 20 62 69  farg_mask;./* bi
2d10: 74 6d 61 73 6b 20 6f 66 20 74 68 6f 73 65 20 65  tmask of those e
2d20: 6e 74 72 69 65 73 20 69 6e 20 66 61 72 67 5b 5d  ntries in farg[]
2d30: 20 77 68 69 63 68 20 68 61 76 65 20 61 20 76 61   which have a va
2d40: 6c 75 65 20 2a 2f 0a 20 20 75 6e 73 69 67 6e 65  lue */.  unsigne
2d50: 64 20 69 6e 74 09 09 64 61 72 67 5f 6d 61 73 6b  d int..darg_mask
2d60: 3b 09 2f 2a 20 62 69 74 6d 61 73 6b 20 6f 66 20  ;./* bitmask of 
2d70: 74 68 6f 73 65 20 65 6e 74 72 69 65 73 20 69 6e  those entries in
2d80: 20 61 72 67 73 5b 5d 20 77 68 69 63 68 20 68 61   args[] which ha
2d90: 76 65 20 61 20 64 6f 75 62 6c 65 20 76 61 6c 75  ve a double valu
2da0: 65 20 2a 2f 0a 23 65 6e 64 69 66 0a 23 69 66 20  e */.#endif.#if 
2db0: 64 65 66 69 6e 65 64 28 5f 5f 69 61 36 34 5f 5f  defined(__ia64__
2dc0: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 78  ) || defined(__x
2dd0: 38 36 5f 36 34 5f 5f 29 0a 20 20 2f 2a 20 73 74  86_64__).  /* st
2de0: 6f 72 65 20 74 68 65 20 66 6c 6f 61 74 69 6e 67  ore the floating
2df0: 2d 70 6f 69 6e 74 20 61 72 67 75 6d 65 6e 74 73  -point arguments
2e00: 20 69 6e 20 61 6e 20 65 78 74 72 61 20 61 72 72   in an extra arr
2e10: 61 79 20 2a 2f 0a 20 20 64 6f 75 62 6c 65 2a 09  ay */.  double*.
2e20: 09 66 61 70 74 72 3b 0a 20 20 64 6f 75 62 6c 65  .faptr;.  double
2e30: 09 09 66 61 72 67 73 5b 38 5d 3b 0a 23 65 6e 64  ..fargs[8];.#end
2e40: 69 66 0a 20 20 5f 5f 61 76 77 6f 72 64 09 09 61  if.  __avword..a
2e50: 72 67 73 5b 5f 5f 41 56 5f 41 4c 49 53 54 5f 57  rgs[__AV_ALIST_W
2e60: 4f 52 44 53 5d 3b 20 2f 2a 20 73 69 7a 65 6f 66  ORDS]; /* sizeof
2e70: 28 64 6f 75 62 6c 65 29 2d 61 6c 69 67 6e 65 64  (double)-aligned
2e80: 20 2a 2f 0a 23 69 66 20 64 65 66 69 6e 65 64 28   */.#if defined(
2e90: 5f 5f 70 6f 77 65 72 70 63 5f 5f 29 20 7c 7c 20  __powerpc__) || 
2ea0: 64 65 66 69 6e 65 64 28 5f 5f 70 6f 77 65 72 70  defined(__powerp
2eb0: 63 36 34 5f 5f 29 0a 20 20 2f 2a 20 73 74 6f 72  c64__).  /* stor
2ec0: 65 20 74 68 65 20 66 6c 6f 61 74 69 6e 67 2d 70  e the floating-p
2ed0: 6f 69 6e 74 20 61 72 67 75 6d 65 6e 74 73 20 69  oint arguments i
2ee0: 6e 20 61 6e 20 65 78 74 72 61 20 61 72 72 61 79  n an extra array
2ef0: 20 2a 2f 0a 20 20 64 6f 75 62 6c 65 2a 09 09 66   */.  double*..f
2f00: 61 70 74 72 3b 0a 20 20 64 6f 75 62 6c 65 09 09  aptr;.  double..
2f10: 66 61 72 67 73 5b 31 33 5d 3b 0a 23 65 6e 64 69  fargs[13];.#endi
2f20: 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  f.#if defined(__
2f30: 73 33 39 30 5f 5f 29 0a 20 20 2f 2a 20 73 74 6f  s390__).  /* sto
2f40: 72 65 20 74 68 65 20 66 6c 6f 61 74 69 6e 67 2d  re the floating-
2f50: 70 6f 69 6e 74 20 61 72 67 75 6d 65 6e 74 73 20  point arguments 
2f60: 69 6e 20 61 6e 20 65 78 74 72 61 20 61 72 72 61  in an extra arra
2f70: 79 20 2a 2f 0a 20 20 69 6e 74 20 20 20 09 09 66  y */.  int   ..f
2f80: 61 72 67 77 6f 72 64 73 3b 0a 20 20 66 6c 6f 61  argwords;.  floa
2f90: 74 2a 09 09 66 61 70 74 72 3b 0a 20 20 66 6c 6f  t*..faptr;.  flo
2fa0: 61 74 20 09 09 66 61 72 67 73 5b 32 5d 3b 0a 20  at ..fargs[2];. 
2fb0: 20 69 6e 74 2a 09 09 09 66 61 72 67 73 75 73 65   int*...fargsuse
2fc0: 64 70 74 72 3b 0a 20 20 69 6e 74 09 09 09 66 61  dptr;.  int...fa
2fd0: 72 67 73 75 73 65 64 5b 32 5d 3b 0a 20 20 64 6f  rgsused[2];.  do
2fe0: 75 62 6c 65 2a 09 09 64 61 70 74 72 3b 0a 20 20  uble*..daptr;.  
2ff0: 64 6f 75 62 6c 65 09 09 64 61 72 67 73 5b 32 5d  double..dargs[2]
3000: 3b 0a 20 20 69 6e 74 2a 09 09 09 64 61 72 67 73  ;.  int*...dargs
3010: 75 73 65 64 70 74 72 3b 0a 20 20 69 6e 74 09 09  usedptr;.  int..
3020: 09 64 61 72 67 73 75 73 65 64 5b 32 5d 3b 0a 23  .dargsused[2];.#
3030: 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65  endif.#if define
3040: 64 28 41 4d 49 47 41 29 0a 20 20 2f 2a 20 73 74  d(AMIGA).  /* st
3050: 6f 72 65 20 74 68 65 20 61 72 67 75 6d 65 6e 74  ore the argument
3060: 73 20 70 61 73 73 65 64 20 69 6e 20 72 65 67 69  s passed in regi
3070: 73 74 65 72 73 20 69 6e 20 61 6e 20 65 78 74 72  sters in an extr
3080: 61 20 61 72 72 61 79 20 2a 2f 0a 20 20 5f 5f 61  a array */.  __a
3090: 76 77 6f 72 64 09 09 72 65 67 61 72 67 73 5b 38  vword..regargs[8
30a0: 2b 37 5d 3b 0a 23 65 6e 64 69 66 0a 7d 20 61 76  +7];.#endif.} av
30b0: 5f 61 6c 69 73 74 3b 0a 0a 2f 2a 20 54 68 65 20  _alist;../* The 
30c0: 6c 69 6d 69 74 20 66 6f 72 20 74 68 65 20 70 6f  limit for the po
30d0: 69 6e 74 65 72 20 69 6e 74 6f 20 74 68 65 20 61  inter into the a
30e0: 72 67 73 5b 5d 20 61 72 72 61 79 2e 20 2a 2f 0a  rgs[] array. */.
30f0: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 73 70  #if defined(__sp
3100: 61 72 63 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65  arc__) || define
3110: 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29 20 7c  d(__sparc64__) |
3120: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 68 70 70 61  | defined(__hppa
3130: 5f 5f 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28  __) || (defined(
3140: 5f 5f 70 6f 77 65 72 70 63 5f 5f 29 20 26 26 20  __powerpc__) && 
3150: 21 64 65 66 69 6e 65 64 28 5f 5f 70 6f 77 65 72  !defined(__power
3160: 70 63 36 34 5f 5f 29 20 26 26 20 21 64 65 66 69  pc64__) && !defi
3170: 6e 65 64 28 5f 41 49 58 29 20 26 26 20 21 28 64  ned(_AIX) && !(d
3180: 65 66 69 6e 65 64 28 5f 5f 4d 41 43 48 5f 5f 29  efined(__MACH__)
3190: 20 26 26 20 64 65 66 69 6e 65 64 28 5f 5f 41 50   && defined(__AP
31a0: 50 4c 45 5f 5f 29 29 29 20 7c 7c 20 64 65 66 69  PLE__))) || defi
31b0: 6e 65 64 28 5f 5f 73 33 39 30 29 0a 23 64 65 66  ned(__s390).#def
31c0: 69 6e 65 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49  ine __av_eptr(LI
31d0: 53 54 29 09 28 28 4c 49 53 54 29 2e 65 70 74 72  ST).((LIST).eptr
31e0: 29 0a 23 65 6c 73 65 0a 23 64 65 66 69 6e 65 20  ).#else.#define 
31f0: 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29 09  __av_eptr(LIST).
3200: 28 26 28 4c 49 53 54 29 2e 61 72 67 73 5b 5f 5f  (&(LIST).args[__
3210: 41 56 5f 41 4c 49 53 54 5f 57 4f 52 44 53 5d 29  AV_ALIST_WORDS])
3220: 0a 23 65 6e 64 69 66 0a 0a 2f 2a 20 44 65 6c 61  .#endif../* Dela
3230: 79 65 64 20 6f 76 65 72 66 6c 6f 77 20 64 65 74  yed overflow det
3240: 65 63 74 69 6f 6e 20 2a 2f 0a 23 69 66 20 64 65  ection */.#if de
3250: 66 69 6e 65 64 28 5f 5f 68 70 70 61 5f 5f 29 0a  fined(__hppa__).
3260: 23 64 65 66 69 6e 65 20 61 76 5f 6f 76 65 72 66  #define av_overf
3270: 6c 6f 77 6e 28 4c 49 53 54 29 20 28 28 4c 49 53  lown(LIST) ((LIS
3280: 54 29 2e 61 70 74 72 20 3c 20 5f 5f 61 76 5f 65  T).aptr < __av_e
3290: 70 74 72 28 4c 49 53 54 29 29 0a 23 65 6c 73 65  ptr(LIST)).#else
32a0: 0a 23 64 65 66 69 6e 65 20 61 76 5f 6f 76 65 72  .#define av_over
32b0: 66 6c 6f 77 6e 28 4c 49 53 54 29 20 28 28 4c 49  flown(LIST) ((LI
32c0: 53 54 29 2e 61 70 74 72 20 3e 20 5f 5f 61 76 5f  ST).aptr > __av_
32d0: 65 70 74 72 28 4c 49 53 54 29 29 0a 23 65 6e 64  eptr(LIST)).#end
32e0: 69 66 0a 0a 0a 2f 2a 0a 20 2a 20 20 61 76 5f 73  if.../*. *  av_s
32f0: 74 61 72 74 5f 3c 74 79 70 65 3e 20 6d 61 63 72  tart_<type> macr
3300: 6f 73 20 77 68 69 63 68 20 73 70 65 63 69 66 79  os which specify
3310: 20 74 68 65 20 72 65 74 75 72 6e 20 74 79 70 65   the return type
3320: 0a 20 2a 2f 0a 0a 23 64 65 66 69 6e 65 20 5f 5f  . */..#define __
3330: 41 56 5f 53 54 41 52 54 5f 46 4c 41 47 53 20 20  AV_START_FLAGS  
3340: 5c 0a 20 20 5f 5f 41 56 5f 53 54 52 55 43 54 5f  \.  __AV_STRUCT_
3350: 52 45 54 55 52 4e 20 7c 20 5f 5f 41 56 5f 46 4c  RETURN | __AV_FL
3360: 4f 41 54 5f 52 45 54 55 52 4e 20 7c 20 5f 5f 41  OAT_RETURN | __A
3370: 56 5f 53 54 52 55 43 54 5f 41 52 47 53 20 7c 20  V_STRUCT_ARGS | 
3380: 5f 5f 41 56 5f 43 4c 45 41 4e 55 50 0a 0a 23 64  __AV_CLEANUP..#d
3390: 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72 74  efine __av_start
33a0: 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44 44 52  (LIST,FUNC,RADDR
33b0: 2c 52 45 54 54 59 50 45 29 09 09 09 09 5c 0a 20  ,RETTYPE)....\. 
33c0: 20 28 28 4c 49 53 54 29 2e 66 75 6e 63 20 3d 20   ((LIST).func = 
33d0: 28 5f 5f 61 76 77 6f 72 64 28 2a 29 28 29 29 28  (__avword(*)())(
33e0: 46 55 4e 43 29 2c 09 09 09 09 09 5c 0a 20 20 20  FUNC),.....\.   
33f0: 28 4c 49 53 54 29 2e 72 61 64 64 72 20 3d 20 28  (LIST).raddr = (
3400: 76 6f 69 64 2a 29 28 52 41 44 44 52 29 2c 09 09  void*)(RADDR),..
3410: 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2e 72  ...\.   (LIST).r
3420: 74 79 70 65 20 3d 20 28 52 45 54 54 59 50 45 29  type = (RETTYPE)
3430: 2c 09 09 09 09 09 09 5c 0a 20 20 20 5f 5f 61 76  ,......\.   __av
3440: 5f 73 74 61 72 74 31 28 4c 49 53 54 29 09 09 09  _start1(LIST)...
3450: 09 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2e  ....\.   (LIST).
3460: 66 6c 61 67 73 20 3d 20 5f 5f 41 56 5f 53 54 41  flags = __AV_STA
3470: 52 54 5f 46 4c 41 47 53 29 0a 0a 23 69 66 20 64  RT_FLAGS)..#if d
3480: 65 66 69 6e 65 64 28 5f 5f 69 33 38 36 5f 5f 29  efined(__i386__)
3490: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 36   || defined(__m6
34a0: 38 6b 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  8k__) || defined
34b0: 28 5f 5f 61 6c 70 68 61 5f 5f 29 20 7c 7c 20 64  (__alpha__) || d
34c0: 65 66 69 6e 65 64 28 5f 5f 61 72 6d 5f 5f 29 20  efined(__arm__) 
34d0: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 38 38  || defined(__m88
34e0: 6b 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  k__) || defined(
34f0: 5f 5f 63 6f 6e 76 65 78 5f 5f 29 0a 23 64 65 66  __convex__).#def
3500: 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72 74 31 28  ine __av_start1(
3510: 4c 49 53 54 29 09 09 09 09 09 09 5c 0a 20 20 20  LIST)......\.   
3520: 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 26 28  (LIST).aptr = &(
3530: 4c 49 53 54 29 2e 61 72 67 73 5b 30 5d 2c 0a 23  LIST).args[0],.#
3540: 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65  endif.#if define
3550: 64 28 5f 5f 6d 69 70 73 5f 5f 29 20 26 26 20 21  d(__mips__) && !
3560: 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33  defined(__mipsn3
3570: 32 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64  2__) && !defined
3580: 28 5f 5f 6d 69 70 73 36 34 5f 5f 29 0a 23 64 65  (__mips64__).#de
3590: 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72 74 31  fine __av_start1
35a0: 28 4c 49 53 54 29 09 09 09 09 09 09 5c 0a 20 20  (LIST)......\.  
35b0: 20 28 4c 49 53 54 29 2e 61 6e 75 6d 20 3d 20 30   (LIST).anum = 0
35c0: 2c 09 09 09 09 09 09 09 5c 0a 20 20 20 28 4c 49  ,.......\.   (LI
35d0: 53 54 29 2e 61 70 74 72 20 3d 20 26 28 4c 49 53  ST).aptr = &(LIS
35e0: 54 29 2e 61 72 67 73 5b 30 5d 2c 0a 23 65 6e 64  T).args[0],.#end
35f0: 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f  if.#if defined(_
3600: 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 7c 7c 20 64  _mipsn32__) || d
3610: 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 36 34 5f  efined(__mips64_
3620: 5f 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f  _).#define __av_
3630: 73 74 61 72 74 31 28 4c 49 53 54 29 09 09 09 09  start1(LIST)....
3640: 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2e 61 6e  ..\.   (LIST).an
3650: 75 6d 20 3d 20 30 2c 09 09 09 09 09 09 09 5c 0a  um = 0,.......\.
3660: 20 20 20 28 4c 49 53 54 29 2e 66 61 72 67 5f 6d     (LIST).farg_m
3670: 61 73 6b 20 3d 20 30 2c 09 09 09 09 09 09 5c 0a  ask = 0,......\.
3680: 20 20 20 28 4c 49 53 54 29 2e 64 61 72 67 5f 6d     (LIST).darg_m
3690: 61 73 6b 20 3d 20 30 2c 09 09 09 09 09 09 5c 0a  ask = 0,......\.
36a0: 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72 20 3d     (LIST).aptr =
36b0: 20 26 28 4c 49 53 54 29 2e 61 72 67 73 5b 30 5d   &(LIST).args[0]
36c0: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66  ,.#endif.#if def
36d0: 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f 5f 29 20  ined(__sparc__) 
36e0: 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 73 70  && !defined(__sp
36f0: 61 72 63 36 34 5f 5f 29 0a 23 64 65 66 69 6e 65  arc64__).#define
3700: 20 5f 5f 61 76 5f 73 74 61 72 74 31 28 4c 49 53   __av_start1(LIS
3710: 54 29 09 09 09 09 09 09 5c 0a 20 20 20 28 4c 49  T)......\.   (LI
3720: 53 54 29 2e 61 70 74 72 20 3d 20 26 28 4c 49 53  ST).aptr = &(LIS
3730: 54 29 2e 61 72 67 73 5b 30 5d 2c 09 09 09 09 09  T).args[0],.....
3740: 5c 0a 20 20 20 28 4c 49 53 54 29 2e 65 70 74 72  \.   (LIST).eptr
3750: 20 3d 20 26 28 4c 49 53 54 29 2e 61 72 67 73 5b   = &(LIST).args[
3760: 5f 5f 41 56 5f 41 4c 49 53 54 5f 57 4f 52 44 53  __AV_ALIST_WORDS
3770: 5d 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65  ],.#endif.#if de
3780: 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f  fined(__sparc64_
3790: 5f 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f  _).#define __av_
37a0: 73 74 61 72 74 31 28 4c 49 53 54 29 09 09 09 09  start1(LIST)....
37b0: 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2e 61 6e  ..\.   (LIST).an
37c0: 75 6d 20 3d 20 30 2c 09 09 09 09 09 09 09 5c 0a  um = 0,.......\.
37d0: 20 20 20 28 4c 49 53 54 29 2e 66 61 72 67 5f 6d     (LIST).farg_m
37e0: 61 73 6b 20 3d 20 30 2c 09 09 09 09 09 09 5c 0a  ask = 0,......\.
37f0: 20 20 20 28 4c 49 53 54 29 2e 64 61 72 67 5f 6d     (LIST).darg_m
3800: 61 73 6b 20 3d 20 30 2c 09 09 09 09 09 09 5c 0a  ask = 0,......\.
3810: 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72 20 3d     (LIST).aptr =
3820: 20 26 28 4c 49 53 54 29 2e 61 72 67 73 5b 30 5d   &(LIST).args[0]
3830: 2c 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 53 54  ,.....\.   (LIST
3840: 29 2e 65 70 74 72 20 3d 20 26 28 4c 49 53 54 29  ).eptr = &(LIST)
3850: 2e 61 72 67 73 5b 5f 5f 41 56 5f 41 4c 49 53 54  .args[__AV_ALIST
3860: 5f 57 4f 52 44 53 5d 2c 0a 23 65 6e 64 69 66 0a  _WORDS],.#endif.
3870: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 68 70  #if defined(__hp
3880: 70 61 5f 5f 29 0a 23 64 65 66 69 6e 65 20 5f 5f  pa__).#define __
3890: 61 76 5f 73 74 61 72 74 31 28 4c 49 53 54 29 09  av_start1(LIST).
38a0: 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 29  .....\.   (LIST)
38b0: 2e 61 70 74 72 20 3d 20 26 28 4c 49 53 54 29 2e  .aptr = &(LIST).
38c0: 61 72 67 73 5b 5f 5f 41 56 5f 41 4c 49 53 54 5f  args[__AV_ALIST_
38d0: 57 4f 52 44 53 5d 2c 09 09 09 5c 0a 20 20 20 28  WORDS],...\.   (
38e0: 4c 49 53 54 29 2e 65 70 74 72 20 3d 20 26 28 4c  LIST).eptr = &(L
38f0: 49 53 54 29 2e 61 72 67 73 5b 30 5d 2c 0a 23 65  IST).args[0],.#e
3900: 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64  ndif.#if defined
3910: 28 5f 5f 70 6f 77 65 72 70 63 5f 5f 29 20 7c 7c  (__powerpc__) ||
3920: 20 64 65 66 69 6e 65 64 28 5f 5f 70 6f 77 65 72   defined(__power
3930: 70 63 36 34 5f 5f 29 0a 23 69 66 20 64 65 66 69  pc64__).#if defi
3940: 6e 65 64 28 5f 5f 70 6f 77 65 72 70 63 36 34 5f  ned(__powerpc64_
3950: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 41  _) || defined(_A
3960: 49 58 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28  IX) || (defined(
3970: 5f 5f 4d 41 43 48 5f 5f 29 20 26 26 20 64 65 66  __MACH__) && def
3980: 69 6e 65 64 28 5f 5f 41 50 50 4c 45 5f 5f 29 29  ined(__APPLE__))
3990: 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74  .#define __av_st
39a0: 61 72 74 31 28 4c 49 53 54 29 09 09 09 09 09 09  art1(LIST)......
39b0: 5c 0a 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72  \.   (LIST).aptr
39c0: 20 3d 20 26 28 4c 49 53 54 29 2e 61 72 67 73 5b   = &(LIST).args[
39d0: 30 5d 2c 09 09 09 09 09 5c 0a 20 20 20 28 4c 49  0],.....\.   (LI
39e0: 53 54 29 2e 66 61 70 74 72 20 3d 20 26 28 4c 49  ST).faptr = &(LI
39f0: 53 54 29 2e 66 61 72 67 73 5b 30 5d 2c 0a 23 65  ST).fargs[0],.#e
3a00: 6c 73 65 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76  lse.#define __av
3a10: 5f 73 74 61 72 74 31 28 4c 49 53 54 29 09 09 09  _start1(LIST)...
3a20: 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2e 61  ...\.   (LIST).a
3a30: 70 74 72 20 3d 20 26 28 4c 49 53 54 29 2e 61 72  ptr = &(LIST).ar
3a40: 67 73 5b 30 5d 2c 09 09 09 09 09 5c 0a 20 20 20  gs[0],.....\.   
3a50: 28 4c 49 53 54 29 2e 66 61 70 74 72 20 3d 20 26  (LIST).faptr = &
3a60: 28 4c 49 53 54 29 2e 66 61 72 67 73 5b 30 5d 2c  (LIST).fargs[0],
3a70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3a90: 20 20 20 20 20 5c 0a 20 20 20 28 4c 49 53 54 29       \.   (LIST)
3aa0: 2e 65 70 74 72 20 3d 20 26 28 4c 49 53 54 29 2e  .eptr = &(LIST).
3ab0: 61 72 67 73 5b 5f 5f 41 56 5f 41 4c 49 53 54 5f  args[__AV_ALIST_
3ac0: 57 4f 52 44 53 5d 2c 0a 23 65 6e 64 69 66 0a 23  WORDS],.#endif.#
3ad0: 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65  endif.#if define
3ae0: 64 28 5f 5f 73 33 39 30 5f 5f 29 0a 23 64 65 66  d(__s390__).#def
3af0: 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72 74 31 28  ine __av_start1(
3b00: 4c 49 53 54 29 09 09 09 09 09 09 5c 0a 20 20 20  LIST)......\.   
3b10: 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 26 28  (LIST).aptr = &(
3b20: 4c 49 53 54 29 2e 61 72 67 73 5b 30 5d 2c 09 09  LIST).args[0],..
3b30: 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2e 66  ...\.   (LIST).f
3b40: 61 72 67 77 6f 72 64 73 20 3d 20 30 2c 09 09 09  argwords = 0,...
3b50: 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2e 66  ...\.   (LIST).f
3b60: 61 70 74 72 20 3d 20 26 28 4c 49 53 54 29 2e 66  aptr = &(LIST).f
3b70: 61 72 67 73 5b 30 5d 2c 20 20 20 20 20 20 20 20  args[0],        
3b80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3b90: 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 0a 20               \. 
3ba0: 20 20 28 4c 49 53 54 29 2e 64 61 70 74 72 20 3d    (LIST).daptr =
3bb0: 20 26 28 4c 49 53 54 29 2e 64 61 72 67 73 5b 30   &(LIST).dargs[0
3bc0: 5d 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ],              
3bd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3be0: 20 20 20 20 20 20 20 5c 0a 20 20 20 28 4c 49 53         \.   (LIS
3bf0: 54 29 2e 66 61 72 67 73 75 73 65 64 70 74 72 20  T).fargsusedptr 
3c00: 3d 20 26 28 4c 49 53 54 29 2e 66 61 72 67 73 75  = &(LIST).fargsu
3c10: 73 65 64 5b 30 5d 2c 20 20 20 20 20 20 20 20 20  sed[0],         
3c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3c30: 20 5c 0a 20 20 20 28 4c 49 53 54 29 2e 64 61 72   \.   (LIST).dar
3c40: 67 73 75 73 65 64 70 74 72 20 3d 20 26 28 4c 49  gsusedptr = &(LI
3c50: 53 54 29 2e 64 61 72 67 73 75 73 65 64 5b 30 5d  ST).dargsused[0]
3c60: 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ,               
3c70: 20 20 20 20 20 20 20 20 20 20 20 5c 0a 20 20 20             \.   
3c80: 28 4c 49 53 54 29 2e 65 70 74 72 20 3d 20 26 28  (LIST).eptr = &(
3c90: 4c 49 53 54 29 2e 61 72 67 73 5b 5f 5f 41 56 5f  LIST).args[__AV_
3ca0: 41 4c 49 53 54 5f 57 4f 52 44 53 5d 2c 0a 23 65  ALIST_WORDS],.#e
3cb0: 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64  ndif.#if defined
3cc0: 28 5f 5f 69 61 36 34 5f 5f 29 0a 23 64 65 66 69  (__ia64__).#defi
3cd0: 6e 65 20 5f 5f 61 76 5f 73 74 61 72 74 31 28 4c  ne __av_start1(L
3ce0: 49 53 54 29 09 09 09 09 09 09 5c 0a 20 20 20 28  IST)......\.   (
3cf0: 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 26 28 4c  LIST).aptr = &(L
3d00: 49 53 54 29 2e 61 72 67 73 5b 30 5d 2c 09 09 09  IST).args[0],...
3d10: 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2e 66 61  ..\.   (LIST).fa
3d20: 70 74 72 20 3d 20 26 28 4c 49 53 54 29 2e 66 61  ptr = &(LIST).fa
3d30: 72 67 73 5b 30 5d 2c 0a 23 65 6e 64 69 66 0a 23  rgs[0],.#endif.#
3d40: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 78 38 36  if defined(__x86
3d50: 5f 36 34 5f 5f 29 0a 23 64 65 66 69 6e 65 20 5f  _64__).#define _
3d60: 5f 61 76 5f 73 74 61 72 74 31 28 4c 49 53 54 29  _av_start1(LIST)
3d70: 09 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 53 54  ......\.   (LIST
3d80: 29 2e 61 70 74 72 20 3d 20 26 28 4c 49 53 54 29  ).aptr = &(LIST)
3d90: 2e 61 72 67 73 5b 30 5d 2c 09 09 09 09 09 5c 0a  .args[0],.....\.
3da0: 20 20 20 28 4c 49 53 54 29 2e 69 61 70 74 72 20     (LIST).iaptr 
3db0: 3d 20 26 28 4c 49 53 54 29 2e 69 61 72 67 73 5b  = &(LIST).iargs[
3dc0: 30 5d 2c 09 09 09 09 09 5c 0a 20 20 20 28 4c 49  0],.....\.   (LI
3dd0: 53 54 29 2e 66 61 70 74 72 20 3d 20 26 28 4c 49  ST).faptr = &(LI
3de0: 53 54 29 2e 66 61 72 67 73 5b 30 5d 2c 0a 23 65  ST).fargs[0],.#e
3df0: 6e 64 69 66 0a 0a 23 64 65 66 69 6e 65 20 61 76  ndif..#define av
3e00: 5f 73 74 61 72 74 5f 76 6f 69 64 28 4c 49 53 54  _start_void(LIST
3e10: 2c 46 55 4e 43 29 09 09 5f 5f 61 76 5f 73 74 61  ,FUNC)..__av_sta
3e20: 72 74 28 4c 49 53 54 2c 46 55 4e 43 2c 30 2c 20  rt(LIST,FUNC,0, 
3e30: 20 20 20 5f 5f 41 56 76 6f 69 64 29 0a 23 64 65     __AVvoid).#de
3e40: 66 69 6e 65 20 61 76 5f 73 74 61 72 74 5f 63 68  fine av_start_ch
3e50: 61 72 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44  ar(LIST,FUNC,RAD
3e60: 44 52 29 09 09 5f 5f 61 76 5f 73 74 61 72 74 28  DR)..__av_start(
3e70: 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44 44 52 2c  LIST,FUNC,RADDR,
3e80: 5f 5f 41 56 63 68 61 72 29 0a 23 64 65 66 69 6e  __AVchar).#defin
3e90: 65 20 61 76 5f 73 74 61 72 74 5f 73 63 68 61 72  e av_start_schar
3ea0: 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44 44 52  (LIST,FUNC,RADDR
3eb0: 29 09 09 5f 5f 61 76 5f 73 74 61 72 74 28 4c 49  )..__av_start(LI
3ec0: 53 54 2c 46 55 4e 43 2c 52 41 44 44 52 2c 5f 5f  ST,FUNC,RADDR,__
3ed0: 41 56 73 63 68 61 72 29 0a 23 64 65 66 69 6e 65  AVschar).#define
3ee0: 20 61 76 5f 73 74 61 72 74 5f 75 63 68 61 72 28   av_start_uchar(
3ef0: 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44 44 52 29  LIST,FUNC,RADDR)
3f00: 09 09 5f 5f 61 76 5f 73 74 61 72 74 28 4c 49 53  ..__av_start(LIS
3f10: 54 2c 46 55 4e 43 2c 52 41 44 44 52 2c 5f 5f 41  T,FUNC,RADDR,__A
3f20: 56 75 63 68 61 72 29 0a 23 64 65 66 69 6e 65 20  Vuchar).#define 
3f30: 61 76 5f 73 74 61 72 74 5f 73 68 6f 72 74 28 4c  av_start_short(L
3f40: 49 53 54 2c 46 55 4e 43 2c 52 41 44 44 52 29 09  IST,FUNC,RADDR).
3f50: 09 5f 5f 61 76 5f 73 74 61 72 74 28 4c 49 53 54  .__av_start(LIST
3f60: 2c 46 55 4e 43 2c 52 41 44 44 52 2c 5f 5f 41 56  ,FUNC,RADDR,__AV
3f70: 73 68 6f 72 74 29 0a 23 64 65 66 69 6e 65 20 61  short).#define a
3f80: 76 5f 73 74 61 72 74 5f 75 73 68 6f 72 74 28 4c  v_start_ushort(L
3f90: 49 53 54 2c 46 55 4e 43 2c 52 41 44 44 52 29 09  IST,FUNC,RADDR).
3fa0: 5f 5f 61 76 5f 73 74 61 72 74 28 4c 49 53 54 2c  __av_start(LIST,
3fb0: 46 55 4e 43 2c 52 41 44 44 52 2c 5f 5f 41 56 75  FUNC,RADDR,__AVu
3fc0: 73 68 6f 72 74 29 0a 23 64 65 66 69 6e 65 20 61  short).#define a
3fd0: 76 5f 73 74 61 72 74 5f 69 6e 74 28 4c 49 53 54  v_start_int(LIST
3fe0: 2c 46 55 4e 43 2c 52 41 44 44 52 29 09 09 5f 5f  ,FUNC,RADDR)..__
3ff0: 61 76 5f 73 74 61 72 74 28 4c 49 53 54 2c 46 55  av_start(LIST,FU
4000: 4e 43 2c 52 41 44 44 52 2c 5f 5f 41 56 69 6e 74  NC,RADDR,__AVint
4010: 29 0a 23 64 65 66 69 6e 65 20 61 76 5f 73 74 61  ).#define av_sta
4020: 72 74 5f 75 69 6e 74 28 4c 49 53 54 2c 46 55 4e  rt_uint(LIST,FUN
4030: 43 2c 52 41 44 44 52 29 09 09 5f 5f 61 76 5f 73  C,RADDR)..__av_s
4040: 74 61 72 74 28 4c 49 53 54 2c 46 55 4e 43 2c 52  tart(LIST,FUNC,R
4050: 41 44 44 52 2c 5f 5f 41 56 75 69 6e 74 29 0a 23  ADDR,__AVuint).#
4060: 64 65 66 69 6e 65 20 61 76 5f 73 74 61 72 74 5f  define av_start_
4070: 6c 6f 6e 67 28 4c 49 53 54 2c 46 55 4e 43 2c 52  long(LIST,FUNC,R
4080: 41 44 44 52 29 09 09 5f 5f 61 76 5f 73 74 61 72  ADDR)..__av_star
4090: 74 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44 44  t(LIST,FUNC,RADD
40a0: 52 2c 5f 5f 41 56 6c 6f 6e 67 29 0a 23 64 65 66  R,__AVlong).#def
40b0: 69 6e 65 20 61 76 5f 73 74 61 72 74 5f 75 6c 6f  ine av_start_ulo
40c0: 6e 67 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44  ng(LIST,FUNC,RAD
40d0: 44 52 29 09 09 5f 5f 61 76 5f 73 74 61 72 74 28  DR)..__av_start(
40e0: 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44 44 52 2c  LIST,FUNC,RADDR,
40f0: 5f 5f 41 56 75 6c 6f 6e 67 29 0a 23 64 65 66 69  __AVulong).#defi
4100: 6e 65 20 61 76 5f 73 74 61 72 74 5f 6c 6f 6e 67  ne av_start_long
4110: 6c 6f 6e 67 28 4c 49 53 54 2c 46 55 4e 43 2c 52  long(LIST,FUNC,R
4120: 41 44 44 52 29 09 5f 5f 61 76 5f 73 74 61 72 74  ADDR).__av_start
4130: 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44 44 52  (LIST,FUNC,RADDR
4140: 2c 5f 5f 41 56 6c 6f 6e 67 6c 6f 6e 67 29 0a 23  ,__AVlonglong).#
4150: 64 65 66 69 6e 65 20 61 76 5f 73 74 61 72 74 5f  define av_start_
4160: 75 6c 6f 6e 67 6c 6f 6e 67 28 4c 49 53 54 2c 46  ulonglong(LIST,F
4170: 55 4e 43 2c 52 41 44 44 52 29 09 5f 5f 61 76 5f  UNC,RADDR).__av_
4180: 73 74 61 72 74 28 4c 49 53 54 2c 46 55 4e 43 2c  start(LIST,FUNC,
4190: 52 41 44 44 52 2c 5f 5f 41 56 75 6c 6f 6e 67 6c  RADDR,__AVulongl
41a0: 6f 6e 67 29 0a 23 64 65 66 69 6e 65 20 61 76 5f  ong).#define av_
41b0: 73 74 61 72 74 5f 66 6c 6f 61 74 28 4c 49 53 54  start_float(LIST
41c0: 2c 46 55 4e 43 2c 52 41 44 44 52 29 09 09 5f 5f  ,FUNC,RADDR)..__
41d0: 61 76 5f 73 74 61 72 74 28 4c 49 53 54 2c 46 55  av_start(LIST,FU
41e0: 4e 43 2c 52 41 44 44 52 2c 5f 5f 41 56 66 6c 6f  NC,RADDR,__AVflo
41f0: 61 74 29 0a 23 64 65 66 69 6e 65 20 61 76 5f 73  at).#define av_s
4200: 74 61 72 74 5f 64 6f 75 62 6c 65 28 4c 49 53 54  tart_double(LIST
4210: 2c 46 55 4e 43 2c 52 41 44 44 52 29 09 5f 5f 61  ,FUNC,RADDR).__a
4220: 76 5f 73 74 61 72 74 28 4c 49 53 54 2c 46 55 4e  v_start(LIST,FUN
4230: 43 2c 52 41 44 44 52 2c 5f 5f 41 56 64 6f 75 62  C,RADDR,__AVdoub
4240: 6c 65 29 0a 23 64 65 66 69 6e 65 20 61 76 5f 73  le).#define av_s
4250: 74 61 72 74 5f 70 74 72 28 4c 49 53 54 2c 46 55  tart_ptr(LIST,FU
4260: 4e 43 2c 54 59 50 45 2c 52 41 44 44 52 29 09 5f  NC,TYPE,RADDR)._
4270: 5f 61 76 5f 73 74 61 72 74 28 4c 49 53 54 2c 46  _av_start(LIST,F
4280: 55 4e 43 2c 52 41 44 44 52 2c 5f 5f 41 56 76 6f  UNC,RADDR,__AVvo
4290: 69 64 70 29 0a 0a 23 64 65 66 69 6e 65 20 61 76  idp)..#define av
42a0: 5f 73 74 61 72 74 5f 73 74 72 75 63 74 28 4c 49  _start_struct(LI
42b0: 53 54 2c 46 55 4e 43 2c 54 59 50 45 2c 54 59 50  ST,FUNC,TYPE,TYP
42c0: 45 5f 53 50 4c 49 54 54 41 42 4c 45 2c 52 41 44  E_SPLITTABLE,RAD
42d0: 44 52 29 09 09 5c 0a 20 20 5f 61 76 5f 73 74 61  DR)..\.  _av_sta
42e0: 72 74 5f 73 74 72 75 63 74 28 4c 49 53 54 2c 46  rt_struct(LIST,F
42f0: 55 4e 43 2c 73 69 7a 65 6f 66 28 54 59 50 45 29  UNC,sizeof(TYPE)
4300: 2c 54 59 50 45 5f 53 50 4c 49 54 54 41 42 4c 45  ,TYPE_SPLITTABLE
4310: 2c 52 41 44 44 52 29 0a 23 64 65 66 69 6e 65 20  ,RADDR).#define 
4320: 5f 61 76 5f 73 74 61 72 74 5f 73 74 72 75 63 74  _av_start_struct
4330: 28 4c 49 53 54 2c 46 55 4e 43 2c 54 59 50 45 5f  (LIST,FUNC,TYPE_
4340: 53 49 5a 45 2c 54 59 50 45 5f 53 50 4c 49 54 54  SIZE,TYPE_SPLITT
4350: 41 42 4c 45 2c 52 41 44 44 52 29 09 5c 0a 20 20  ABLE,RADDR).\.  
4360: 28 5f 5f 61 76 5f 73 74 61 72 74 28 4c 49 53 54  (__av_start(LIST
4370: 2c 46 55 4e 43 2c 52 41 44 44 52 2c 5f 5f 41 56  ,FUNC,RADDR,__AV
4380: 73 74 72 75 63 74 29 2c 09 09 09 09 5c 0a 20 20  struct),....\.  
4390: 20 28 4c 49 53 54 29 2e 72 73 69 7a 65 20 3d 20   (LIST).rsize = 
43a0: 54 59 50 45 5f 53 49 5a 45 2c 09 09 09 09 09 09  TYPE_SIZE,......
43b0: 5c 0a 20 20 20 5f 5f 61 76 5f 73 74 61 72 74 5f  \.   __av_start_
43c0: 73 74 72 75 63 74 31 28 4c 49 53 54 2c 54 59 50  struct1(LIST,TYP
43d0: 45 5f 53 49 5a 45 2c 54 59 50 45 5f 53 50 4c 49  E_SIZE,TYPE_SPLI
43e0: 54 54 41 42 4c 45 29 2c 09 09 09 5c 0a 20 20 20  TTABLE),...\.   
43f0: 30 29 0a 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76  0)..#define __av
4400: 5f 73 74 61 72 74 5f 73 74 72 75 63 74 31 28 4c  _start_struct1(L
4410: 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59  IST,TYPE_SIZE,TY
4420: 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 20 20  PE_SPLITTABLE)  
4430: 5c 0a 20 20 28 28 4c 49 53 54 29 2e 66 6c 61 67  \.  ((LIST).flag
4440: 73 20 26 20 5f 5f 41 56 5f 50 43 43 5f 53 54 52  s & __AV_PCC_STR
4450: 55 43 54 5f 52 45 54 55 52 4e 09 09 09 09 5c 0a  UCT_RETURN....\.
4460: 20 20 20 3f 20 2f 2a 20 70 63 63 20 73 74 72 75     ? /* pcc stru
4470: 63 74 20 72 65 74 75 72 6e 20 63 6f 6e 76 65 6e  ct return conven
4480: 74 69 6f 6e 3a 09 09 09 09 09 5c 0a 20 20 20 20  tion:.....\.    
4490: 20 20 2a 20 63 61 6c 6c 65 64 20 66 75 6e 63 74    * called funct
44a0: 69 6f 6e 20 72 65 74 75 72 6e 73 20 70 6f 69 6e  ion returns poin
44b0: 74 65 72 20 74 6f 20 76 61 6c 75 65 2c 20 77 65  ter to value, we
44c0: 27 6c 6c 20 63 6f 70 79 20 69 74 73 20 63 6f 6e  'll copy its con
44d0: 74 65 6e 74 73 20 61 66 74 65 72 77 61 72 64 73  tents afterwards
44e0: 2e 20 5c 0a 20 20 20 20 20 20 2a 2f 09 09 09 09  . \.      */....
44f0: 09 09 09 09 5c 0a 20 20 20 20 20 30 09 09 09 09  ....\.     0....
4500: 09 09 09 09 09 5c 0a 20 20 20 3a 20 5f 5f 61 76  .....\.   : __av
4510: 5f 73 74 61 72 74 5f 73 74 72 75 63 74 32 28 4c  _start_struct2(L
4520: 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59  IST,TYPE_SIZE,TY
4530: 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 09 09  PE_SPLITTABLE)..
4540: 09 5c 0a 20 20 29 0a 23 69 66 20 28 64 65 66 69  .\.  ).#if (defi
4550: 6e 65 64 28 5f 5f 73 70 61 72 63 5f 5f 29 20 26  ned(__sparc__) &
4560: 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 73 70 61  & !defined(__spa
4570: 72 63 36 34 5f 5f 29 29 20 7c 7c 20 64 65 66 69  rc64__)) || defi
4580: 6e 65 64 28 5f 5f 6d 38 38 6b 5f 5f 29 0a 2f 2a  ned(__m88k__)./*
4590: 20 52 65 74 75 72 6e 20 73 74 72 75 63 74 75 72   Return structur
45a0: 65 20 70 6f 69 6e 74 65 72 20 69 73 20 70 61 73  e pointer is pas
45b0: 73 65 64 20 69 6e 20 61 20 73 70 65 63 69 61 6c  sed in a special
45c0: 20 72 65 67 69 73 74 65 72 2e 0a 20 2a 2f 0a 23   register.. */.#
45d0: 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72  define __av_star
45e0: 74 5f 73 74 72 75 63 74 32 28 4c 49 53 54 2c 54  t_struct2(LIST,T
45f0: 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 53 50  YPE_SIZE,TYPE_SP
4600: 4c 49 54 54 41 42 4c 45 29 20 20 30 0a 23 65 6c  LITTABLE)  0.#el
4610: 73 65 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f  se.#define __av_
4620: 73 74 61 72 74 5f 73 74 72 75 63 74 32 28 4c 49  start_struct2(LI
4630: 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50  ST,TYPE_SIZE,TYP
4640: 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 20 20 5c  E_SPLITTABLE)  \
4650: 0a 20 20 28 28 28 4c 49 53 54 29 2e 66 6c 61 67  .  (((LIST).flag
4660: 73 20 26 20 5f 5f 41 56 5f 53 4d 41 4c 4c 5f 53  s & __AV_SMALL_S
4670: 54 52 55 43 54 5f 52 45 54 55 52 4e 29 09 09 09  TRUCT_RETURN)...
4680: 09 5c 0a 20 20 20 26 26 20 5f 5f 61 76 5f 72 65  .\.   && __av_re
4690: 67 5f 73 74 72 75 63 74 5f 72 65 74 75 72 6e 28  g_struct_return(
46a0: 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54  LIST,TYPE_SIZE,T
46b0: 59 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 09  YPE_SPLITTABLE).
46c0: 09 5c 0a 20 20 20 3f 20 2f 2a 20 3c 3d 20 57 6f  .\.   ? /* <= Wo
46d0: 72 64 2d 73 69 7a 65 64 20 73 74 72 75 63 74 75  rd-sized structu
46e0: 72 65 73 20 61 72 65 20 72 65 74 75 72 6e 65 64  res are returned
46f0: 20 69 6e 20 61 20 72 65 67 69 73 74 65 72 2e 20   in a register. 
4700: 2a 2f 09 09 5c 0a 20 20 20 20 20 5f 5f 61 76 5f  */..\.     __av_
4710: 73 74 61 72 74 5f 73 74 72 75 63 74 33 28 4c 49  start_struct3(LI
4720: 53 54 29 09 09 09 09 09 09 5c 0a 20 20 20 3a 20  ST)......\.   : 
4730: 5f 5f 61 76 5f 73 74 61 72 74 5f 73 74 72 75 63  __av_start_struc
4740: 74 34 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a  t4(LIST,TYPE_SIZ
4750: 45 29 09 09 09 09 09 5c 0a 20 20 29 0a 2f 2a 20  E).....\.  )./* 
4760: 44 65 74 65 72 6d 69 6e 65 73 20 77 68 65 74 68  Determines wheth
4770: 65 72 20 61 20 73 74 72 75 63 74 75 72 65 20 69  er a structure i
4780: 73 20 72 65 74 75 72 6e 65 64 20 69 6e 20 72 65  s returned in re
4790: 67 69 73 74 65 72 73 2c 0a 20 2a 20 64 65 70 65  gisters,. * depe
47a0: 6e 64 69 6e 67 20 6f 6e 20 69 74 73 20 73 69 7a  nding on its siz
47b0: 65 20 61 6e 64 20 69 74 73 20 77 6f 72 64 2d 73  e and its word-s
47c0: 70 6c 69 74 74 61 62 6c 65 20 66 6c 61 67 2e 0a  plittable flag..
47d0: 20 2a 2f 0a 23 69 66 20 28 64 65 66 69 6e 65 64   */.#if (defined
47e0: 28 5f 5f 69 33 38 36 5f 5f 29 20 26 26 20 64 65  (__i386__) && de
47f0: 66 69 6e 65 64 28 5f 57 49 4e 33 32 29 29 0a 23  fined(_WIN32)).#
4800: 64 65 66 69 6e 65 20 5f 5f 61 76 5f 72 65 67 5f  define __av_reg_
4810: 73 74 72 75 63 74 5f 72 65 74 75 72 6e 28 4c 49  struct_return(LI
4820: 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50  ST,TYPE_SIZE,TYP
4830: 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 20 20 5c  E_SPLITTABLE)  \
4840: 0a 20 20 28 28 54 59 50 45 5f 53 49 5a 45 29 20  .  ((TYPE_SIZE) 
4850: 3d 3d 20 31 20 7c 7c 20 28 54 59 50 45 5f 53 49  == 1 || (TYPE_SI
4860: 5a 45 29 20 3d 3d 20 32 20 7c 7c 20 28 54 59 50  ZE) == 2 || (TYP
4870: 45 5f 53 49 5a 45 29 20 3d 3d 20 34 09 09 5c 0a  E_SIZE) == 4..\.
4880: 20 20 20 7c 7c 20 28 28 54 59 50 45 5f 53 49 5a     || ((TYPE_SIZ
4890: 45 29 20 3d 3d 20 38 09 09 09 09 09 09 09 5c 0a  E) == 8.......\.
48a0: 20 20 20 20 20 20 20 26 26 20 28 28 28 4c 49 53         && (((LIS
48b0: 54 29 2e 66 6c 61 67 73 20 26 20 5f 5f 41 56 5f  T).flags & __AV_
48c0: 4d 53 56 43 5f 53 54 52 55 43 54 5f 52 45 54 55  MSVC_STRUCT_RETU
48d0: 52 4e 29 09 09 09 5c 0a 20 20 20 20 20 20 20 20  RN)...\.        
48e0: 20 20 20 7c 7c 20 28 28 54 59 50 45 5f 53 50 4c     || ((TYPE_SPL
48f0: 49 54 54 41 42 4c 45 29 09 09 09 09 09 5c 0a 20  ITTABLE).....\. 
4900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 26 26                &&
4910: 20 28 28 4c 49 53 54 29 2e 66 6c 61 67 73 20 26   ((LIST).flags &
4920: 20 5f 5f 41 56 5f 47 43 43 5f 53 54 52 55 43 54   __AV_GCC_STRUCT
4930: 5f 52 45 54 55 52 4e 29 09 09 5c 0a 20 20 29 20  _RETURN)..\.  ) 
4940: 20 20 29 20 20 20 29 20 20 20 29 0a 2f 2a 20 54    )   )   )./* T
4950: 75 72 6e 20 6f 6e 20 5f 5f 41 56 5f 52 45 47 49  urn on __AV_REGI
4960: 53 54 45 52 5f 53 54 52 55 43 54 5f 52 45 54 55  STER_STRUCT_RETU
4970: 52 4e 20 69 66 20 5f 5f 41 56 5f 53 4d 41 4c 4c  RN if __AV_SMALL
4980: 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20 77  _STRUCT_RETURN w
4990: 61 73 20 73 65 74 0a 20 2a 20 61 6e 64 20 74 68  as set. * and th
49a0: 65 20 73 74 72 75 63 74 20 77 69 6c 6c 20 61 63  e struct will ac
49b0: 74 75 61 6c 6c 79 20 62 65 20 72 65 74 75 72 6e  tually be return
49c0: 65 64 20 69 6e 20 72 65 67 69 73 74 65 72 73 2e  ed in registers.
49d0: 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 61  . */.#define __a
49e0: 76 5f 73 74 61 72 74 5f 73 74 72 75 63 74 33 28  v_start_struct3(
49f0: 4c 49 53 54 29 20 20 5c 0a 20 20 28 28 4c 49 53  LIST)  \.  ((LIS
4a00: 54 29 2e 66 6c 61 67 73 20 7c 3d 20 5f 5f 41 56  T).flags |= __AV
4a10: 5f 52 45 47 49 53 54 45 52 5f 53 54 52 55 43 54  _REGISTER_STRUCT
4a20: 5f 52 45 54 55 52 4e 2c 20 30 29 0a 23 65 6e 64  _RETURN, 0).#end
4a30: 69 66 0a 23 69 66 20 28 64 65 66 69 6e 65 64 28  if.#if (defined(
4a40: 5f 5f 69 33 38 36 5f 5f 29 20 26 26 20 21 64 65  __i386__) && !de
4a50: 66 69 6e 65 64 28 5f 57 49 4e 33 32 29 29 20 7c  fined(_WIN32)) |
4a60: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b  | defined(__m68k
4a70: 5f 5f 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28  __) || (defined(
4a80: 5f 5f 61 72 6d 5f 5f 29 20 26 26 20 21 64 65 66  __arm__) && !def
4a90: 69 6e 65 64 28 5f 5f 41 52 4d 45 4c 5f 5f 29 29  ined(__ARMEL__))
4aa0: 20 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f 70   || (defined(__p
4ab0: 6f 77 65 72 70 63 5f 5f 29 20 26 26 20 21 64 65  owerpc__) && !de
4ac0: 66 69 6e 65 64 28 5f 5f 70 6f 77 65 72 70 63 36  fined(__powerpc6
4ad0: 34 5f 5f 29 29 20 7c 7c 20 64 65 66 69 6e 65 64  4__)) || defined
4ae0: 28 5f 5f 63 6f 6e 76 65 78 5f 5f 29 20 7c 7c 20  (__convex__) || 
4af0: 64 65 66 69 6e 65 64 28 5f 5f 73 33 39 30 5f 5f  defined(__s390__
4b00: 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 72  ).#define __av_r
4b10: 65 67 5f 73 74 72 75 63 74 5f 72 65 74 75 72 6e  eg_struct_return
4b20: 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c  (LIST,TYPE_SIZE,
4b30: 54 59 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 29  TYPE_SPLITTABLE)
4b40: 20 20 5c 0a 20 20 28 28 54 59 50 45 5f 53 49 5a    \.  ((TYPE_SIZ
4b50: 45 29 20 3d 3d 20 31 20 7c 7c 20 28 54 59 50 45  E) == 1 || (TYPE
4b60: 5f 53 49 5a 45 29 20 3d 3d 20 32 20 7c 7c 20 28  _SIZE) == 2 || (
4b70: 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 34 09  TYPE_SIZE) == 4.
4b80: 09 5c 0a 20 20 20 7c 7c 20 28 28 54 59 50 45 5f  .\.   || ((TYPE_
4b90: 53 49 5a 45 29 20 3d 3d 20 38 20 26 26 20 28 54  SIZE) == 8 && (T
4ba0: 59 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 09  YPE_SPLITTABLE).
4bb0: 09 09 09 5c 0a 20 20 20 20 20 20 20 26 26 20 28  ...\.       && (
4bc0: 28 4c 49 53 54 29 2e 66 6c 61 67 73 20 26 20 5f  (LIST).flags & _
4bd0: 5f 41 56 5f 47 43 43 5f 53 54 52 55 43 54 5f 52  _AV_GCC_STRUCT_R
4be0: 45 54 55 52 4e 29 09 09 09 5c 0a 20 20 29 20 20  ETURN)...\.  )  
4bf0: 20 29 0a 2f 2a 20 54 75 72 6e 20 6f 6e 20 5f 5f   )./* Turn on __
4c00: 41 56 5f 52 45 47 49 53 54 45 52 5f 53 54 52 55  AV_REGISTER_STRU
4c10: 43 54 5f 52 45 54 55 52 4e 20 69 66 20 5f 5f 41  CT_RETURN if __A
4c20: 56 5f 53 4d 41 4c 4c 5f 53 54 52 55 43 54 5f 52  V_SMALL_STRUCT_R
4c30: 45 54 55 52 4e 20 77 61 73 20 73 65 74 0a 20 2a  ETURN was set. *
4c40: 20 61 6e 64 20 74 68 65 20 73 74 72 75 63 74 20   and the struct 
4c50: 77 69 6c 6c 20 61 63 74 75 61 6c 6c 79 20 62 65  will actually be
4c60: 20 72 65 74 75 72 6e 65 64 20 69 6e 20 72 65 67   returned in reg
4c70: 69 73 74 65 72 73 2e 0a 20 2a 2f 0a 23 64 65 66  isters.. */.#def
4c80: 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72 74 5f 73  ine __av_start_s
4c90: 74 72 75 63 74 33 28 4c 49 53 54 29 20 20 5c 0a  truct3(LIST)  \.
4ca0: 20 20 28 28 4c 49 53 54 29 2e 66 6c 61 67 73 20    ((LIST).flags 
4cb0: 7c 3d 20 5f 5f 41 56 5f 52 45 47 49 53 54 45 52  |= __AV_REGISTER
4cc0: 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 2c 20  _STRUCT_RETURN, 
4cd0: 30 29 0a 23 65 6e 64 69 66 0a 0a 23 69 66 20 64  0).#endif..#if d
4ce0: 65 66 69 6e 65 64 28 5f 5f 41 52 4d 45 4c 5f 5f  efined(__ARMEL__
4cf0: 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 72  ).#define __av_r
4d00: 65 67 5f 73 74 72 75 63 74 5f 72 65 74 75 72 6e  eg_struct_return
4d10: 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c  (LIST,TYPE_SIZE,
4d20: 54 59 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 29  TYPE_SPLITTABLE)
4d30: 20 20 5c 0a 20 20 20 20 28 28 54 59 50 45 5f 53    \.    ((TYPE_S
4d40: 49 5a 45 29 20 3c 3d 20 34 29 0a 23 64 65 66 69  IZE) <= 4).#defi
4d50: 6e 65 20 5f 5f 61 76 5f 73 74 61 72 74 5f 73 74  ne __av_start_st
4d60: 72 75 63 74 33 28 4c 49 53 54 29 20 20 5c 0a 20  ruct3(LIST)  \. 
4d70: 20 28 28 4c 49 53 54 29 2e 66 6c 61 67 73 20 7c   ((LIST).flags |
4d80: 3d 20 5f 5f 41 56 5f 52 45 47 49 53 54 45 52 5f  = __AV_REGISTER_
4d90: 53 54 52 55 43 54 5f 52 45 54 55 52 4e 2c 20 30  STRUCT_RETURN, 0
4da0: 29 0a 23 65 6e 64 69 66 0a 0a 23 69 66 20 64 65  ).#endif..#if de
4db0: 66 69 6e 65 64 28 5f 5f 61 6c 70 68 61 5f 5f 29  fined(__alpha__)
4dc0: 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 72 65  .#define __av_re
4dd0: 67 5f 73 74 72 75 63 74 5f 72 65 74 75 72 6e 28  g_struct_return(
4de0: 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54  LIST,TYPE_SIZE,T
4df0: 59 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 20  YPE_SPLITTABLE) 
4e00: 20 5c 0a 20 20 28 28 54 59 50 45 5f 53 49 5a 45   \.  ((TYPE_SIZE
4e10: 29 20 3d 3d 20 31 20 7c 7c 20 28 54 59 50 45 5f  ) == 1 || (TYPE_
4e20: 53 49 5a 45 29 20 3d 3d 20 32 20 7c 7c 20 28 54  SIZE) == 2 || (T
4e30: 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 34 20 7c  YPE_SIZE) == 4 |
4e40: 7c 20 28 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d  | (TYPE_SIZE) ==
4e50: 20 38 09 5c 0a 20 20 20 7c 7c 20 28 28 54 59 50   8.\.   || ((TYP
4e60: 45 5f 53 49 5a 45 29 20 3d 3d 20 31 36 20 26 26  E_SIZE) == 16 &&
4e70: 20 28 54 59 50 45 5f 53 50 4c 49 54 54 41 42 4c   (TYPE_SPLITTABL
4e80: 45 29 09 09 09 09 5c 0a 20 20 20 20 20 20 20 26  E)....\.       &
4e90: 26 20 28 28 4c 49 53 54 29 2e 66 6c 61 67 73 20  & ((LIST).flags 
4ea0: 26 20 5f 5f 41 56 5f 47 43 43 5f 53 54 52 55 43  & __AV_GCC_STRUC
4eb0: 54 5f 52 45 54 55 52 4e 29 09 09 09 5c 0a 20 20  T_RETURN)...\.  
4ec0: 29 20 20 20 29 0a 2f 2a 20 54 75 72 6e 20 6f 6e  )   )./* Turn on
4ed0: 20 5f 5f 41 56 5f 52 45 47 49 53 54 45 52 5f 53   __AV_REGISTER_S
4ee0: 54 52 55 43 54 5f 52 45 54 55 52 4e 20 69 66 20  TRUCT_RETURN if 
4ef0: 5f 5f 41 56 5f 53 4d 41 4c 4c 5f 53 54 52 55 43  __AV_SMALL_STRUC
4f00: 54 5f 52 45 54 55 52 4e 20 77 61 73 20 73 65 74  T_RETURN was set
4f10: 0a 20 2a 20 61 6e 64 20 74 68 65 20 73 74 72 75  . * and the stru
4f20: 63 74 20 77 69 6c 6c 20 61 63 74 75 61 6c 6c 79  ct will actually
4f30: 20 62 65 20 72 65 74 75 72 6e 65 64 20 69 6e 20   be returned in 
4f40: 72 65 67 69 73 74 65 72 73 2e 0a 20 2a 2f 0a 23  registers.. */.#
4f50: 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72  define __av_star
4f60: 74 5f 73 74 72 75 63 74 33 28 4c 49 53 54 29 20  t_struct3(LIST) 
4f70: 20 5c 0a 20 20 28 28 4c 49 53 54 29 2e 66 6c 61   \.  ((LIST).fla
4f80: 67 73 20 7c 3d 20 5f 5f 41 56 5f 52 45 47 49 53  gs |= __AV_REGIS
4f90: 54 45 52 5f 53 54 52 55 43 54 5f 52 45 54 55 52  TER_STRUCT_RETUR
4fa0: 4e 2c 20 30 29 0a 23 65 6e 64 69 66 0a 23 69 66  N, 0).#endif.#if
4fb0: 20 64 65 66 69 6e 65 64 28 5f 5f 68 70 70 61 5f   defined(__hppa_
4fc0: 5f 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f  _).#define __av_
4fd0: 72 65 67 5f 73 74 72 75 63 74 5f 72 65 74 75 72  reg_struct_retur
4fe0: 6e 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45  n(LIST,TYPE_SIZE
4ff0: 2c 54 59 50 45 5f 53 50 4c 49 54 54 41 42 4c 45  ,TYPE_SPLITTABLE
5000: 29 20 20 5c 0a 20 20 28 28 4c 49 53 54 29 2e 66  )  \.  ((LIST).f
5010: 6c 61 67 73 20 26 20 5f 5f 41 56 5f 4f 4c 44 47  lags & __AV_OLDG
5020: 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e  CC_STRUCT_RETURN
5030: 09 09 09 09 5c 0a 20 20 20 3f 20 28 28 54 59 50  ....\.   ? ((TYP
5040: 45 5f 53 49 5a 45 29 20 3d 3d 20 31 20 7c 7c 20  E_SIZE) == 1 || 
5050: 28 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 32  (TYPE_SIZE) == 2
5060: 20 7c 7c 20 28 54 59 50 45 5f 53 49 5a 45 29 20   || (TYPE_SIZE) 
5070: 3d 3d 20 34 29 09 09 5c 0a 20 20 20 3a 20 28 28  == 4)..\.   : ((
5080: 54 59 50 45 5f 53 49 5a 45 29 20 3c 3d 20 38 29  TYPE_SIZE) <= 8)
5090: 09 09 09 09 09 09 09 5c 0a 20 20 29 0a 2f 2a 20  .......\.  )./* 
50a0: 54 65 73 74 20 62 6f 74 68 20 5f 5f 41 56 5f 4f  Test both __AV_O
50b0: 4c 44 47 43 43 5f 53 54 52 55 43 54 5f 52 45 54  LDGCC_STRUCT_RET
50c0: 55 52 4e 20 61 6e 64 20 5f 5f 41 56 5f 53 4d 41  URN and __AV_SMA
50d0: 4c 4c 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e  LL_STRUCT_RETURN
50e0: 20 61 74 20 72 75 6e 20 74 69 6d 65 2e 20 2a 2f   at run time. */
50f0: 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74  .#define __av_st
5100: 61 72 74 5f 73 74 72 75 63 74 33 28 4c 49 53 54  art_struct3(LIST
5110: 29 20 20 5c 0a 20 20 30 0a 23 65 6e 64 69 66 0a  )  \.  0.#endif.
5120: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69  #if defined(__mi
5130: 70 73 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65  ps__) && !define
5140: 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 26  d(__mipsn32__) &
5150: 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70  & !defined(__mip
5160: 73 36 34 5f 5f 29 0a 23 64 65 66 69 6e 65 20 5f  s64__).#define _
5170: 5f 61 76 5f 72 65 67 5f 73 74 72 75 63 74 5f 72  _av_reg_struct_r
5180: 65 74 75 72 6e 28 4c 49 53 54 2c 54 59 50 45 5f  eturn(LIST,TYPE_
5190: 53 49 5a 45 2c 54 59 50 45 5f 53 50 4c 49 54 54  SIZE,TYPE_SPLITT
51a0: 41 42 4c 45 29 20 20 5c 0a 20 20 28 28 54 59 50  ABLE)  \.  ((TYP
51b0: 45 5f 53 49 5a 45 29 20 3d 3d 20 31 20 7c 7c 20  E_SIZE) == 1 || 
51c0: 28 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 32  (TYPE_SIZE) == 2
51d0: 20 7c 7c 20 28 54 59 50 45 5f 53 49 5a 45 29 20   || (TYPE_SIZE) 
51e0: 3d 3d 20 34 29 0a 2f 2a 20 54 65 73 74 20 5f 5f  == 4)./* Test __
51f0: 41 56 5f 53 4d 41 4c 4c 5f 53 54 52 55 43 54 5f  AV_SMALL_STRUCT_
5200: 52 45 54 55 52 4e 20 69 6e 73 74 65 61 64 20 6f  RETURN instead o
5210: 66 20 5f 5f 41 56 5f 52 45 47 49 53 54 45 52 5f  f __AV_REGISTER_
5220: 53 54 52 55 43 54 5f 52 45 54 55 52 4e 2e 20 2a  STRUCT_RETURN. *
5230: 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73  /.#define __av_s
5240: 74 61 72 74 5f 73 74 72 75 63 74 33 28 4c 49 53  tart_struct3(LIS
5250: 54 29 20 20 5c 0a 20 20 30 0a 23 65 6e 64 69 66  T)  \.  0.#endif
5260: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d  .#if defined(__m
5270: 69 70 73 6e 33 32 5f 5f 29 20 7c 7c 20 64 65 66  ipsn32__) || def
5280: 69 6e 65 64 28 5f 5f 6d 69 70 73 36 34 5f 5f 29  ined(__mips64__)
5290: 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 72 65  .#define __av_re
52a0: 67 5f 73 74 72 75 63 74 5f 72 65 74 75 72 6e 28  g_struct_return(
52b0: 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54  LIST,TYPE_SIZE,T
52c0: 59 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 20  YPE_SPLITTABLE) 
52d0: 20 5c 0a 20 20 28 28 4c 49 53 54 29 2e 66 6c 61   \.  ((LIST).fla
52e0: 67 73 20 26 20 5f 5f 41 56 5f 47 43 43 5f 53 54  gs & __AV_GCC_ST
52f0: 52 55 43 54 5f 52 45 54 55 52 4e 09 09 09 09 5c  RUCT_RETURN....\
5300: 0a 20 20 20 3f 20 28 28 54 59 50 45 5f 53 49 5a  .   ? ((TYPE_SIZ
5310: 45 29 20 3d 3d 20 31 20 7c 7c 20 28 54 59 50 45  E) == 1 || (TYPE
5320: 5f 53 49 5a 45 29 20 3d 3d 20 32 20 7c 7c 20 28  _SIZE) == 2 || (
5330: 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 34 20  TYPE_SIZE) == 4 
5340: 7c 7c 20 28 54 59 50 45 5f 53 49 5a 45 29 20 3d  || (TYPE_SIZE) =
5350: 3d 20 38 29 20 5c 0a 20 20 20 3a 20 28 28 54 59  = 8) \.   : ((TY
5360: 50 45 5f 53 49 5a 45 29 20 3c 3d 20 31 36 29 09  PE_SIZE) <= 16).
5370: 09 09 09 09 09 5c 0a 20 20 29 0a 2f 2a 20 54 75  .....\.  )./* Tu
5380: 72 6e 20 6f 6e 20 5f 5f 41 56 5f 52 45 47 49 53  rn on __AV_REGIS
5390: 54 45 52 5f 53 54 52 55 43 54 5f 52 45 54 55 52  TER_STRUCT_RETUR
53a0: 4e 20 69 66 20 5f 5f 41 56 5f 53 4d 41 4c 4c 5f  N if __AV_SMALL_
53b0: 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20 77 61  STRUCT_RETURN wa
53c0: 73 20 73 65 74 0a 20 2a 20 61 6e 64 20 74 68 65  s set. * and the
53d0: 20 73 74 72 75 63 74 20 77 69 6c 6c 20 61 63 74   struct will act
53e0: 75 61 6c 6c 79 20 62 65 20 72 65 74 75 72 6e 65  ually be returne
53f0: 64 20 69 6e 20 72 65 67 69 73 74 65 72 73 2e 0a  d in registers..
5400: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76   */.#define __av
5410: 5f 73 74 61 72 74 5f 73 74 72 75 63 74 33 28 4c  _start_struct3(L
5420: 49 53 54 29 20 20 5c 0a 20 20 28 28 4c 49 53 54  IST)  \.  ((LIST
5430: 29 2e 66 6c 61 67 73 20 7c 3d 20 5f 5f 41 56 5f  ).flags |= __AV_
5440: 52 45 47 49 53 54 45 52 5f 53 54 52 55 43 54 5f  REGISTER_STRUCT_
5450: 52 45 54 55 52 4e 2c 20 30 29 0a 23 65 6e 64 69  RETURN, 0).#endi
5460: 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  f.#if defined(__
5470: 70 6f 77 65 72 70 63 36 34 5f 5f 29 0a 23 64 65  powerpc64__).#de
5480: 66 69 6e 65 20 5f 5f 61 76 5f 72 65 67 5f 73 74  fine __av_reg_st
5490: 72 75 63 74 5f 72 65 74 75 72 6e 28 4c 49 53 54  ruct_return(LIST
54a0: 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f  ,TYPE_SIZE,TYPE_
54b0: 53 50 4c 49 54 54 41 42 4c 45 29 20 20 5c 0a 20  SPLITTABLE)  \. 
54c0: 20 30 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f   0.#define __av_
54d0: 73 74 61 72 74 5f 73 74 72 75 63 74 33 28 4c 49  start_struct3(LI
54e0: 53 54 29 20 20 5c 0a 20 20 30 0a 23 65 6e 64 69  ST)  \.  0.#endi
54f0: 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  f.#if defined(__
5500: 73 70 61 72 63 36 34 5f 5f 29 20 7c 7c 20 64 65  sparc64__) || de
5510: 66 69 6e 65 64 28 5f 5f 69 61 36 34 5f 5f 29 0a  fined(__ia64__).
5520: 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 72 65 67  #define __av_reg
5530: 5f 73 74 72 75 63 74 5f 72 65 74 75 72 6e 28 4c  _struct_return(L
5540: 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59  IST,TYPE_SIZE,TY
5550: 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 20 20  PE_SPLITTABLE)  
5560: 5c 0a 20 20 28 28 54 59 50 45 5f 53 49 5a 45 29  \.  ((TYPE_SIZE)
5570: 20 3c 3d 20 33 32 29 0a 2f 2a 20 54 75 72 6e 20   <= 32)./* Turn 
5580: 6f 6e 20 5f 5f 41 56 5f 52 45 47 49 53 54 45 52  on __AV_REGISTER
5590: 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20 69  _STRUCT_RETURN i
55a0: 66 20 5f 5f 41 56 5f 53 4d 41 4c 4c 5f 53 54 52  f __AV_SMALL_STR
55b0: 55 43 54 5f 52 45 54 55 52 4e 20 77 61 73 20 73  UCT_RETURN was s
55c0: 65 74 0a 20 2a 20 61 6e 64 20 74 68 65 20 73 74  et. * and the st
55d0: 72 75 63 74 20 77 69 6c 6c 20 61 63 74 75 61 6c  ruct will actual
55e0: 6c 79 20 62 65 20 72 65 74 75 72 6e 65 64 20 69  ly be returned i
55f0: 6e 20 72 65 67 69 73 74 65 72 73 2e 0a 20 2a 2f  n registers.. */
5600: 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74  .#define __av_st
5610: 61 72 74 5f 73 74 72 75 63 74 33 28 4c 49 53 54  art_struct3(LIST
5620: 29 20 20 5c 0a 20 20 28 28 4c 49 53 54 29 2e 66  )  \.  ((LIST).f
5630: 6c 61 67 73 20 7c 3d 20 5f 5f 41 56 5f 52 45 47  lags |= __AV_REG
5640: 49 53 54 45 52 5f 53 54 52 55 43 54 5f 52 45 54  ISTER_STRUCT_RET
5650: 55 52 4e 2c 20 30 29 0a 23 65 6e 64 69 66 0a 23  URN, 0).#endif.#
5660: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 78 38 36  if defined(__x86
5670: 5f 36 34 5f 5f 29 0a 23 64 65 66 69 6e 65 20 5f  _64__).#define _
5680: 5f 61 76 5f 72 65 67 5f 73 74 72 75 63 74 5f 72  _av_reg_struct_r
5690: 65 74 75 72 6e 28 4c 49 53 54 2c 54 59 50 45 5f  eturn(LIST,TYPE_
56a0: 53 49 5a 45 2c 54 59 50 45 5f 53 50 4c 49 54 54  SIZE,TYPE_SPLITT
56b0: 41 42 4c 45 29 20 20 5c 0a 20 20 28 28 54 59 50  ABLE)  \.  ((TYP
56c0: 45 5f 53 49 5a 45 29 20 3c 3d 20 31 36 29 0a 2f  E_SIZE) <= 16)./
56d0: 2a 20 54 75 72 6e 20 6f 6e 20 5f 5f 41 56 5f 52  * Turn on __AV_R
56e0: 45 47 49 53 54 45 52 5f 53 54 52 55 43 54 5f 52  EGISTER_STRUCT_R
56f0: 45 54 55 52 4e 20 69 66 20 5f 5f 41 56 5f 53 4d  ETURN if __AV_SM
5700: 41 4c 4c 5f 53 54 52 55 43 54 5f 52 45 54 55 52  ALL_STRUCT_RETUR
5710: 4e 20 77 61 73 20 73 65 74 0a 20 2a 20 61 6e 64  N was set. * and
5720: 20 74 68 65 20 73 74 72 75 63 74 20 77 69 6c 6c   the struct will
5730: 20 61 63 74 75 61 6c 6c 79 20 62 65 20 72 65 74   actually be ret
5740: 75 72 6e 65 64 20 69 6e 20 72 65 67 69 73 74 65  urned in registe
5750: 72 73 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20  rs.. */.#define 
5760: 5f 5f 61 76 5f 73 74 61 72 74 5f 73 74 72 75 63  __av_start_struc
5770: 74 33 28 4c 49 53 54 29 20 20 5c 0a 20 20 28 28  t3(LIST)  \.  ((
5780: 4c 49 53 54 29 2e 66 6c 61 67 73 20 7c 3d 20 5f  LIST).flags |= _
5790: 5f 41 56 5f 52 45 47 49 53 54 45 52 5f 53 54 52  _AV_REGISTER_STR
57a0: 55 43 54 5f 52 45 54 55 52 4e 2c 20 30 29 0a 23  UCT_RETURN, 0).#
57b0: 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65  endif.#if define
57c0: 64 28 5f 5f 69 33 38 36 5f 5f 29 0a 2f 2a 20 52  d(__i386__)./* R
57d0: 65 74 75 72 6e 20 73 74 72 75 63 74 75 72 65 20  eturn structure 
57e0: 70 6f 69 6e 74 65 72 20 69 73 20 70 61 73 73 65  pointer is passe
57f0: 64 20 69 6e 20 61 20 73 70 65 63 69 61 6c 20 72  d in a special r
5800: 65 67 69 73 74 65 72 20 6f 72 20 61 73 20 66 69  egister or as fi
5810: 72 73 74 20 61 72 67 2e 20 2a 2f 0a 23 64 65 66  rst arg. */.#def
5820: 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72 74 5f 73  ine __av_start_s
5830: 74 72 75 63 74 34 28 4c 49 53 54 2c 54 59 50 45  truct4(LIST,TYPE
5840: 5f 53 49 5a 45 29 09 09 09 09 5c 0a 20 20 28 28  _SIZE)....\.  ((
5850: 4c 49 53 54 29 2e 66 6c 61 67 73 20 26 20 5f 5f  LIST).flags & __
5860: 41 56 5f 4e 45 58 54 47 43 43 5f 53 54 52 55 43  AV_NEXTGCC_STRUC
5870: 54 5f 52 45 54 55 52 4e 09 09 09 09 5c 0a 20 20  T_RETURN....\.  
5880: 20 3f 20 30 09 09 09 09 09 09 20 2f 2a 20 73 70   ? 0...... /* sp
5890: 65 63 69 61 6c 20 72 65 67 69 73 74 65 72 20 2a  ecial register *
58a0: 2f 09 5c 0a 20 20 20 3a 20 28 2a 28 4c 49 53 54  /.\.   : (*(LIST
58b0: 29 2e 61 70 74 72 2b 2b 20 3d 20 28 5f 5f 61 76  ).aptr++ = (__av
58c0: 77 6f 72 64 29 28 28 4c 49 53 54 29 2e 72 61 64  word)((LIST).rad
58d0: 64 72 29 2c 20 30 29 09 2f 2a 20 66 69 72 73 74  dr), 0)./* first
58e0: 20 61 72 67 20 2a 2f 09 5c 0a 20 20 29 0a 23 65   arg */.\.  ).#e
58f0: 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64  ndif.#if defined
5900: 28 5f 5f 6d 36 38 6b 5f 5f 29 20 7c 7c 20 64 65  (__m68k__) || de
5910: 66 69 6e 65 64 28 5f 5f 68 70 70 61 5f 5f 29 20  fined(__hppa__) 
5920: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 69 61 36  || defined(__ia6
5930: 34 5f 5f 29 0a 2f 2a 20 52 65 74 75 72 6e 20 73  4__)./* Return s
5940: 74 72 75 63 74 75 72 65 20 70 6f 69 6e 74 65 72  tructure pointer
5950: 20 69 73 20 70 61 73 73 65 64 20 69 6e 20 61 20   is passed in a 
5960: 73 70 65 63 69 61 6c 20 72 65 67 69 73 74 65 72  special register
5970: 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f  .. */.#define __
5980: 61 76 5f 73 74 61 72 74 5f 73 74 72 75 63 74 34  av_start_struct4
5990: 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 29  (LIST,TYPE_SIZE)
59a0: 20 20 30 0a 23 65 6e 64 69 66 0a 2f 2a 20 52 65    0.#endif./* Re
59b0: 74 75 72 6e 20 73 74 72 75 63 74 75 72 65 20 70  turn structure p
59c0: 6f 69 6e 74 65 72 20 69 73 20 70 61 73 73 65 64  ointer is passed
59d0: 20 61 73 20 66 69 72 73 74 20 61 72 67 2e 0a 20   as first arg.. 
59e0: 2a 2f 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f  */.#if defined(_
59f0: 5f 61 6c 70 68 61 5f 5f 29 20 7c 7c 20 64 65 66  _alpha__) || def
5a00: 69 6e 65 64 28 5f 5f 61 72 6d 5f 5f 29 20 7c 7c  ined(__arm__) ||
5a10: 20 64 65 66 69 6e 65 64 28 5f 5f 70 6f 77 65 72   defined(__power
5a20: 70 63 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  pc__) || defined
5a30: 28 5f 5f 70 6f 77 65 72 70 63 36 34 5f 5f 29 20  (__powerpc64__) 
5a40: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 63 6f 6e  || defined(__con
5a50: 76 65 78 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65  vex__) || define
5a60: 64 28 5f 5f 73 33 39 30 5f 5f 29 0a 23 64 65 66  d(__s390__).#def
5a70: 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72 74 5f 73  ine __av_start_s
5a80: 74 72 75 63 74 34 28 4c 49 53 54 2c 54 59 50 45  truct4(LIST,TYPE
5a90: 5f 53 49 5a 45 29 09 09 09 09 5c 0a 20 20 20 28  _SIZE)....\.   (
5aa0: 2a 28 4c 49 53 54 29 2e 61 70 74 72 2b 2b 20 3d  *(LIST).aptr++ =
5ab0: 20 28 5f 5f 61 76 77 6f 72 64 29 28 28 4c 49 53   (__avword)((LIS
5ac0: 54 29 2e 72 61 64 64 72 29 2c 20 30 29 0a 23 65  T).raddr), 0).#e
5ad0: 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64  ndif.#if defined
5ae0: 28 5f 5f 6d 69 70 73 5f 5f 29 20 7c 7c 20 64 65  (__mips__) || de
5af0: 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f  fined(__mipsn32_
5b00: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  _) || defined(__
5b10: 6d 69 70 73 36 34 5f 5f 29 20 7c 7c 20 64 65 66  mips64__) || def
5b20: 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f  ined(__sparc64__
5b30: 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73  ).#define __av_s
5b40: 74 61 72 74 5f 73 74 72 75 63 74 34 28 4c 49 53  tart_struct4(LIS
5b50: 54 2c 54 59 50 45 5f 53 49 5a 45 29 09 09 09 09  T,TYPE_SIZE)....
5b60: 5c 0a 20 20 20 28 2a 28 4c 49 53 54 29 2e 61 70  \.   (*(LIST).ap
5b70: 74 72 2b 2b 20 3d 20 28 5f 5f 61 76 77 6f 72 64  tr++ = (__avword
5b80: 29 28 28 4c 49 53 54 29 2e 72 61 64 64 72 29 2c  )((LIST).raddr),
5b90: 09 09 09 09 5c 0a 20 20 20 20 28 4c 49 53 54 29  ....\.    (LIST)
5ba0: 2e 61 6e 75 6d 2b 2b 2c 09 09 09 09 09 09 09 5c  .anum++,.......\
5bb0: 0a 20 20 20 20 30 09 09 09 09 09 09 09 09 09 5c  .    0.........\
5bc0: 0a 20 20 20 29 0a 23 65 6e 64 69 66 0a 23 69 66  .   ).#endif.#if
5bd0: 20 64 65 66 69 6e 65 64 28 5f 5f 78 38 36 5f 36   defined(__x86_6
5be0: 34 5f 5f 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61  4__).#define __a
5bf0: 76 5f 73 74 61 72 74 5f 73 74 72 75 63 74 34 28  v_start_struct4(
5c00: 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 29 09  LIST,TYPE_SIZE).
5c10: 09 09 09 5c 0a 20 20 20 28 2a 28 4c 49 53 54 29  ...\.   (*(LIST)
5c20: 2e 69 61 70 74 72 2b 2b 20 3d 20 28 5f 5f 61 76  .iaptr++ = (__av
5c30: 77 6f 72 64 29 28 28 4c 49 53 54 29 2e 72 61 64  word)((LIST).rad
5c40: 64 72 29 2c 20 30 29 0a 23 65 6e 64 69 66 0a 23  dr), 0).#endif.#
5c50: 65 6e 64 69 66 0a 0a 0a 2f 2a 0a 20 2a 20 61 76  endif.../*. * av
5c60: 5f 3c 74 79 70 65 3e 20 6d 61 63 72 6f 73 20 77  _<type> macros w
5c70: 68 69 63 68 20 73 70 65 63 69 66 79 20 74 68 65  hich specify the
5c80: 20 61 72 67 75 6d 65 6e 74 20 61 6e 64 20 69 74   argument and it
5c90: 73 20 74 79 70 65 0a 20 2a 2f 0a 0a 2f 2a 0a 20  s type. */../*. 
5ca0: 2a 20 73 63 61 6c 61 72 20 61 72 67 75 6d 65 6e  * scalar argumen
5cb0: 74 20 74 79 70 65 73 0a 20 2a 2f 0a 0a 23 69 66  t types. */..#if
5cc0: 20 64 65 66 69 6e 65 64 28 5f 5f 69 33 38 36 5f   defined(__i386_
5cd0: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  _) || defined(__
5ce0: 6d 36 38 6b 5f 5f 29 20 7c 7c 20 28 64 65 66 69  m68k__) || (defi
5cf0: 6e 65 64 28 5f 5f 73 70 61 72 63 5f 5f 29 20 26  ned(__sparc__) &
5d00: 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 73 70 61  & !defined(__spa
5d10: 72 63 36 34 5f 5f 29 29 20 7c 7c 20 64 65 66 69  rc64__)) || defi
5d20: 6e 65 64 28 5f 5f 61 6c 70 68 61 5f 5f 29 20 7c  ned(__alpha__) |
5d30: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 61 72 6d 5f  | defined(__arm_
5d40: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  _) || defined(__
5d50: 70 6f 77 65 72 70 63 5f 5f 29 20 7c 7c 20 64 65  powerpc__) || de
5d60: 66 69 6e 65 64 28 5f 5f 70 6f 77 65 72 70 63 36  fined(__powerpc6
5d70: 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  4__) || defined(
5d80: 5f 5f 6d 38 38 6b 5f 5f 29 20 7c 7c 20 64 65 66  __m88k__) || def
5d90: 69 6e 65 64 28 5f 5f 63 6f 6e 76 65 78 5f 5f 29  ined(__convex__)
5da0: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 69 61   || defined(__ia
5db0: 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  64__) || defined
5dc0: 28 5f 5f 78 38 36 5f 36 34 5f 5f 29 20 7c 7c 20  (__x86_64__) || 
5dd0: 64 65 66 69 6e 65 64 28 5f 5f 73 33 39 30 5f 5f  defined(__s390__
5de0: 29 0a 2f 2a 20 46 6c 6f 61 74 73 20 61 6e 64 20  )./* Floats and 
5df0: 61 6c 6c 20 69 6e 74 65 67 65 72 20 74 79 70 65  all integer type
5e00: 73 20 61 72 65 20 70 61 73 73 65 64 20 61 73 20  s are passed as 
5e10: 77 6f 72 64 73 2c 0a 20 2a 20 64 6f 75 62 6c 65  words,. * double
5e20: 73 20 61 73 20 74 77 6f 20 77 6f 72 64 73 2e 0a  s as two words..
5e30: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76   */.#define __av
5e40: 5f 77 6f 72 64 28 4c 49 53 54 2c 56 41 4c 29 09  _word(LIST,VAL).
5e50: 09 09 09 09 09 5c 0a 20 20 28 2b 2b 28 4c 49 53  .....\.  (++(LIS
5e60: 54 29 2e 61 70 74 72 20 3e 20 5f 5f 61 76 5f 65  T).aptr > __av_e
5e70: 70 74 72 28 4c 49 53 54 29 09 09 09 09 09 5c 0a  ptr(LIST).....\.
5e80: 20 20 20 3f 20 2d 31 20 3a 20 28 28 4c 49 53 54     ? -1 : ((LIST
5e90: 29 2e 61 70 74 72 5b 2d 31 5d 20 3d 20 28 5f 5f  ).aptr[-1] = (__
5ea0: 61 76 77 6f 72 64 29 28 56 41 4c 29 2c 20 30 29  avword)(VAL), 0)
5eb0: 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66  ).#endif.#if def
5ec0: 69 6e 65 64 28 5f 5f 6d 69 70 73 5f 5f 29 20 7c  ined(__mips__) |
5ed0: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73  | defined(__mips
5ee0: 6e 33 32 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65  n32__) || define
5ef0: 64 28 5f 5f 6d 69 70 73 36 34 5f 5f 29 20 7c 7c  d(__mips64__) ||
5f00: 20 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63   defined(__sparc
5f10: 36 34 5f 5f 29 0a 2f 2a 20 4d 6f 73 74 20 74 68  64__)./* Most th
5f20: 69 6e 67 73 20 61 72 65 20 70 61 73 73 65 64 20  ings are passed 
5f30: 61 73 20 69 6e 74 65 67 65 72 73 3a 0a 20 2a 2f  as integers:. */
5f40: 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 77 6f  .#define __av_wo
5f50: 72 64 28 4c 49 53 54 2c 56 41 4c 29 09 09 09 09  rd(LIST,VAL)....
5f60: 09 09 5c 0a 20 20 28 2b 2b 28 4c 49 53 54 29 2e  ..\.  (++(LIST).
5f70: 61 70 74 72 20 3e 20 5f 5f 61 76 5f 65 70 74 72  aptr > __av_eptr
5f80: 28 4c 49 53 54 29 09 09 09 09 09 5c 0a 20 20 20  (LIST).....\.   
5f90: 3f 20 2d 31 20 3a 20 28 28 4c 49 53 54 29 2e 61  ? -1 : ((LIST).a
5fa0: 6e 75 6d 2b 2b 2c 20 28 4c 49 53 54 29 2e 61 70  num++, (LIST).ap
5fb0: 74 72 5b 2d 31 5d 20 3d 20 28 5f 5f 61 76 77 6f  tr[-1] = (__avwo
5fc0: 72 64 29 28 56 41 4c 29 2c 20 30 29 29 0a 23 65  rd)(VAL), 0)).#e
5fd0: 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64  ndif.#if defined
5fe0: 28 5f 5f 68 70 70 61 5f 5f 29 0a 2f 2a 20 46 6c  (__hppa__)./* Fl
5ff0: 6f 61 74 73 20 61 6e 64 20 61 6c 6c 20 69 6e 74  oats and all int
6000: 65 67 65 72 20 74 79 70 65 73 20 61 72 65 20 70  eger types are p
6010: 61 73 73 65 64 20 61 73 20 77 6f 72 64 73 2c 0a  assed as words,.
6020: 20 2a 20 64 6f 75 62 6c 65 73 20 61 73 20 74 77   * doubles as tw
6030: 6f 20 77 6f 72 64 73 2e 0a 20 2a 2f 0a 23 64 65  o words.. */.#de
6040: 66 69 6e 65 20 5f 5f 61 76 5f 77 6f 72 64 28 4c  fine __av_word(L
6050: 49 53 54 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a  IST,VAL)......\.
6060: 20 20 28 2d 2d 28 4c 49 53 54 29 2e 61 70 74 72    (--(LIST).aptr
6070: 20 3c 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53   < __av_eptr(LIS
6080: 54 29 09 09 09 09 09 5c 0a 20 20 20 3f 20 2d 31  T).....\.   ? -1
6090: 20 3a 20 28 2a 28 4c 49 53 54 29 2e 61 70 74 72   : (*(LIST).aptr
60a0: 20 3d 20 28 5f 5f 61 76 77 6f 72 64 29 28 56 41   = (__avword)(VA
60b0: 4c 29 2c 20 30 29 29 0a 23 65 6e 64 69 66 0a 23  L), 0)).#endif.#
60c0: 69 66 20 64 65 66 69 6e 65 64 28 41 4d 49 47 41  if defined(AMIGA
60d0: 29 0a 2f 2a 20 53 6f 6d 65 20 61 72 67 75 6d 65  )./* Some argume
60e0: 6e 74 73 20 61 72 65 20 70 61 73 73 65 64 20 69  nts are passed i
60f0: 6e 20 72 65 67 69 73 74 65 72 73 2e 20 51 75 65  n registers. Que
6100: 72 79 20 74 68 65 20 6d 61 63 72 6f 20 41 56 5f  ry the macro AV_
6110: 41 52 47 5f 52 45 47 4e 55 4d 2e 0a 20 2a 20 54  ARG_REGNUM.. * T
6120: 68 69 73 20 73 68 6f 75 6c 64 20 72 65 61 6c 6c  his should reall
6130: 79 20 62 65 20 61 6e 20 61 72 67 75 6d 65 6e 74  y be an argument
6140: 20 74 6f 20 5f 5f 61 76 5f 77 6f 72 64 2e 0a 20   to __av_word.. 
6150: 2a 2f 0a 23 75 6e 64 65 66 20 5f 5f 61 76 5f 77  */.#undef __av_w
6160: 6f 72 64 20 2f 2a 2a 2f 0a 23 64 65 66 69 6e 65  ord /**/.#define
6170: 20 5f 5f 61 76 5f 77 6f 72 64 28 4c 49 53 54 2c   __av_word(LIST,
6180: 56 41 4c 29 09 09 09 09 09 09 5c 0a 20 20 28 28  VAL)......\.  ((
6190: 41 56 5f 41 52 47 5f 52 45 47 4e 55 4d 29 20 3e  AV_ARG_REGNUM) >
61a0: 3d 20 30 09 09 09 09 09 09 09 5c 0a 20 20 20 3f  = 0.......\.   ?
61b0: 20 28 28 41 56 5f 41 52 47 5f 52 45 47 4e 55 4d   ((AV_ARG_REGNUM
61c0: 29 20 3c 20 38 2b 37 09 09 09 09 09 09 5c 0a 20  ) < 8+7......\. 
61d0: 20 20 20 20 20 3f 20 2d 31 20 3a 20 28 28 4c 49       ? -1 : ((LI
61e0: 53 54 29 2e 72 65 67 61 72 67 73 5b 28 41 56 5f  ST).regargs[(AV_
61f0: 41 52 47 5f 52 45 47 4e 55 4d 29 5d 20 3d 20 28  ARG_REGNUM)] = (
6200: 5f 5f 61 76 77 6f 72 64 29 28 56 41 4c 29 2c 20  __avword)(VAL), 
6210: 30 29 29 09 5c 0a 20 20 20 3a 20 28 2b 2b 28 4c  0)).\.   : (++(L
6220: 49 53 54 29 2e 61 70 74 72 20 3e 20 5f 5f 61 76  IST).aptr > __av
6230: 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09 09 09  _eptr(LIST).....
6240: 5c 0a 20 20 20 20 20 20 3f 20 2d 31 20 3a 20 28  \.      ? -1 : (
6250: 28 4c 49 53 54 29 2e 61 70 74 72 5b 2d 31 5d 20  (LIST).aptr[-1] 
6260: 3d 20 28 5f 5f 61 76 77 6f 72 64 29 28 56 41 4c  = (__avword)(VAL
6270: 29 2c 20 30 29 29 29 0a 23 65 6e 64 69 66 0a 0a  ), 0))).#endif..
6280: 2f 2a 20 69 6e 74 65 67 65 72 20 61 72 67 75 6d  /* integer argum
6290: 65 6e 74 20 74 79 70 65 73 20 2a 2f 0a 0a 23 69  ent types */..#i
62a0: 66 20 64 65 66 69 6e 65 64 28 5f 5f 78 38 36 5f  f defined(__x86_
62b0: 36 34 5f 5f 29 0a 2f 2a 20 54 68 65 20 66 69 72  64__)./* The fir
62c0: 73 74 20 36 20 69 6e 74 65 67 65 72 20 61 72 67  st 6 integer arg
62d0: 75 6d 65 6e 74 73 20 61 72 65 20 70 61 73 73 65  uments are passe
62e0: 64 20 69 6e 20 72 65 67 69 73 74 65 72 73 2e 20  d in registers. 
62f0: 2a 2f 0a 23 64 65 66 69 6e 65 20 61 76 5f 6c 6f  */.#define av_lo
6300: 6e 67 28 4c 49 53 54 2c 56 41 4c 29 09 09 09 09  ng(LIST,VAL)....
6310: 09 09 5c 0a 20 20 28 28 4c 49 53 54 29 2e 69 61  ..\.  ((LIST).ia
6320: 70 74 72 20 3c 20 26 28 4c 49 53 54 29 2e 69 61  ptr < &(LIST).ia
6330: 72 67 73 5b 36 5d 09 09 09 09 09 5c 0a 20 20 20  rgs[6].....\.   
6340: 3f 20 28 2a 28 4c 49 53 54 29 2e 69 61 70 74 72  ? (*(LIST).iaptr
6350: 2b 2b 20 3d 20 28 6c 6f 6e 67 29 28 56 41 4c 29  ++ = (long)(VAL)
6360: 2c 20 30 29 09 09 09 09 09 5c 0a 20 20 20 3a 20  , 0).....\.   : 
6370: 5f 5f 61 76 5f 77 6f 72 64 28 4c 49 53 54 2c 28  __av_word(LIST,(
6380: 6c 6f 6e 67 29 28 56 41 4c 29 29 29 0a 23 65 6c  long)(VAL))).#el
6390: 73 65 0a 23 64 65 66 69 6e 65 20 61 76 5f 6c 6f  se.#define av_lo
63a0: 6e 67 28 4c 49 53 54 2c 56 41 4c 29 09 5f 5f 61  ng(LIST,VAL).__a
63b0: 76 5f 77 6f 72 64 28 4c 49 53 54 2c 28 6c 6f 6e  v_word(LIST,(lon
63c0: 67 29 28 56 41 4c 29 29 0a 23 65 6e 64 69 66 0a  g)(VAL)).#endif.
63d0: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 78  .#if defined(__x
63e0: 38 36 5f 36 34 5f 5f 29 0a 2f 2a 20 54 68 65 20  86_64__)./* The 
63f0: 66 69 72 73 74 20 36 20 69 6e 74 65 67 65 72 20  first 6 integer 
6400: 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 70 61  arguments are pa
6410: 73 73 65 64 20 69 6e 20 72 65 67 69 73 74 65 72  ssed in register
6420: 73 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 61 76  s. */.#define av
6430: 5f 75 6c 6f 6e 67 28 4c 49 53 54 2c 56 41 4c 29  _ulong(LIST,VAL)
6440: 09 09 09 09 09 09 5c 0a 20 20 28 28 4c 49 53 54  ......\.  ((LIST
6450: 29 2e 69 61 70 74 72 20 3c 20 26 28 4c 49 53 54  ).iaptr < &(LIST
6460: 29 2e 69 61 72 67 73 5b 36 5d 09 09 09 09 09 5c  ).iargs[6].....\
6470: 0a 20 20 20 3f 20 28 2a 28 4c 49 53 54 29 2e 69  .   ? (*(LIST).i
6480: 61 70 74 72 2b 2b 20 3d 20 28 75 6e 73 69 67 6e  aptr++ = (unsign
6490: 65 64 20 6c 6f 6e 67 29 28 56 41 4c 29 2c 20 30  ed long)(VAL), 0
64a0: 29 09 09 09 5c 0a 20 20 20 3a 20 5f 5f 61 76 5f  )...\.   : __av_
64b0: 77 6f 72 64 28 4c 49 53 54 2c 28 75 6e 73 69 67  word(LIST,(unsig
64c0: 6e 65 64 20 6c 6f 6e 67 29 28 56 41 4c 29 29 29  ned long)(VAL)))
64d0: 0a 23 65 6c 73 65 0a 23 64 65 66 69 6e 65 20 61  .#else.#define a
64e0: 76 5f 75 6c 6f 6e 67 28 4c 49 53 54 2c 56 41 4c  v_ulong(LIST,VAL
64f0: 29 09 5f 5f 61 76 5f 77 6f 72 64 28 4c 49 53 54  ).__av_word(LIST
6500: 2c 28 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 29  ,(unsigned long)
6510: 28 56 41 4c 29 29 0a 23 65 6e 64 69 66 0a 0a 23  (VAL)).#endif..#
6520: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 78 38 36  if defined(__x86
6530: 5f 36 34 5f 5f 29 0a 2f 2a 20 54 68 65 20 66 69  _64__)./* The fi
6540: 72 73 74 20 36 20 69 6e 74 65 67 65 72 20 61 72  rst 6 integer ar
6550: 67 75 6d 65 6e 74 73 20 61 72 65 20 70 61 73 73  guments are pass
6560: 65 64 20 69 6e 20 72 65 67 69 73 74 65 72 73 2e  ed in registers.
6570: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 61 76 5f 70   */.#define av_p
6580: 74 72 28 4c 49 53 54 2c 54 59 50 45 2c 56 41 4c  tr(LIST,TYPE,VAL
6590: 29 09 09 09 09 09 09 5c 0a 20 20 28 28 4c 49 53  )......\.  ((LIS
65a0: 54 29 2e 69 61 70 74 72 20 3c 20 26 28 4c 49 53  T).iaptr < &(LIS
65b0: 54 29 2e 69 61 72 67 73 5b 36 5d 09 09 09 09 09  T).iargs[6].....
65c0: 5c 0a 20 20 20 3f 20 28 2a 28 4c 49 53 54 29 2e  \.   ? (*(LIST).
65d0: 69 61 70 74 72 2b 2b 20 3d 20 28 5f 5f 61 76 77  iaptr++ = (__avw
65e0: 6f 72 64 29 28 54 59 50 45 29 28 56 41 4c 29 2c  ord)(TYPE)(VAL),
65f0: 20 30 29 09 09 09 5c 0a 20 20 20 3a 20 5f 5f 61   0)...\.   : __a
6600: 76 5f 77 6f 72 64 28 4c 49 53 54 2c 28 54 59 50  v_word(LIST,(TYP
6610: 45 29 28 56 41 4c 29 29 29 0a 23 65 6c 73 65 0a  E)(VAL))).#else.
6620: 23 64 65 66 69 6e 65 20 61 76 5f 70 74 72 28 4c  #define av_ptr(L
6630: 49 53 54 2c 54 59 50 45 2c 56 41 4c 29 09 5f 5f  IST,TYPE,VAL).__
6640: 61 76 5f 77 6f 72 64 28 4c 49 53 54 2c 28 54 59  av_word(LIST,(TY
6650: 50 45 29 28 56 41 4c 29 29 0a 23 65 6e 64 69 66  PE)(VAL)).#endif
6660: 0a 0a 23 64 65 66 69 6e 65 20 61 76 5f 63 68 61  ..#define av_cha
6670: 72 09 09 09 61 76 5f 6c 6f 6e 67 0a 23 64 65 66  r...av_long.#def
6680: 69 6e 65 20 61 76 5f 73 63 68 61 72 09 09 61 76  ine av_schar..av
6690: 5f 6c 6f 6e 67 0a 23 64 65 66 69 6e 65 20 61 76  _long.#define av
66a0: 5f 73 68 6f 72 74 09 09 61 76 5f 6c 6f 6e 67 0a  _short..av_long.
66b0: 23 64 65 66 69 6e 65 20 61 76 5f 69 6e 74 09 09  #define av_int..
66c0: 09 61 76 5f 6c 6f 6e 67 0a 23 64 65 66 69 6e 65  .av_long.#define
66d0: 20 61 76 5f 75 63 68 61 72 09 09 61 76 5f 75 6c   av_uchar..av_ul
66e0: 6f 6e 67 0a 23 64 65 66 69 6e 65 20 61 76 5f 75  ong.#define av_u
66f0: 73 68 6f 72 74 09 09 61 76 5f 75 6c 6f 6e 67 0a  short..av_ulong.
6700: 23 64 65 66 69 6e 65 20 61 76 5f 75 69 6e 74 09  #define av_uint.
6710: 09 09 61 76 5f 75 6c 6f 6e 67 0a 0a 23 69 66 20  ..av_ulong..#if 
6720: 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 36 34  defined(__mips64
6730: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
6740: 5f 73 70 61 72 63 36 34 5f 5f 29 20 7c 7c 20 64  _sparc64__) || d
6750: 65 66 69 6e 65 64 28 5f 5f 61 6c 70 68 61 5f 5f  efined(__alpha__
6760: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 70  ) || defined(__p
6770: 6f 77 65 72 70 63 36 34 5f 5f 29 20 7c 7c 20 64  owerpc64__) || d
6780: 65 66 69 6e 65 64 28 5f 5f 69 61 36 34 5f 5f 29  efined(__ia64__)
6790: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 78 38   || defined(__x8
67a0: 36 5f 36 34 5f 5f 29 0a 2f 2a 20 60 6c 6f 6e 67  6_64__)./* `long
67b0: 20 6c 6f 6e 67 27 20 61 6e 64 20 60 6c 6f 6e 67   long' and `long
67c0: 27 20 61 72 65 20 69 64 65 6e 74 69 63 61 6c 2e  ' are identical.
67d0: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 61 76 5f 6c   */.#define av_l
67e0: 6f 6e 67 6c 6f 6e 67 09 09 61 76 5f 6c 6f 6e 67  onglong..av_long
67f0: 0a 23 64 65 66 69 6e 65 20 61 76 5f 75 6c 6f 6e  .#define av_ulon
6800: 67 6c 6f 6e 67 09 09 61 76 5f 75 6c 6f 6e 67 0a  glong..av_ulong.
6810: 23 65 6c 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  #elif defined(__
6820: 6d 69 70 73 6e 33 32 5f 5f 29 0a 2f 2a 20 60 6c  mipsn32__)./* `l
6830: 6f 6e 67 20 6c 6f 6e 67 27 20 66 69 74 73 20 69  ong long' fits i
6840: 6e 20 5f 5f 61 76 77 6f 72 64 2e 20 2a 2f 0a 23  n __avword. */.#
6850: 64 65 66 69 6e 65 20 61 76 5f 6c 6f 6e 67 6c 6f  define av_longlo
6860: 6e 67 09 09 5f 5f 61 76 5f 77 6f 72 64 0a 23 64  ng..__av_word.#d
6870: 65 66 69 6e 65 20 61 76 5f 75 6c 6f 6e 67 6c 6f  efine av_ulonglo
6880: 6e 67 28 4c 49 53 54 2c 56 41 4c 29 09 5f 5f 61  ng(LIST,VAL).__a
6890: 76 5f 77 6f 72 64 28 4c 49 53 54 2c 28 75 6e 73  v_word(LIST,(uns
68a0: 69 67 6e 65 64 20 6c 6f 6e 67 20 6c 6f 6e 67 29  igned long long)
68b0: 28 56 41 4c 29 29 0a 23 65 6c 69 66 20 64 65 66  (VAL)).#elif def
68c0: 69 6e 65 64 28 5f 5f 69 33 38 36 5f 5f 29 20 7c  ined(__i386__) |
68d0: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b  | defined(__m68k
68e0: 5f 5f 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28  __) || (defined(
68f0: 5f 5f 6d 69 70 73 5f 5f 29 20 26 26 20 21 64 65  __mips__) && !de
6900: 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f  fined(__mipsn32_
6910: 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f  _) && !defined(_
6920: 5f 6d 69 70 73 36 34 5f 5f 29 29 20 7c 7c 20 28  _mips64__)) || (
6930: 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f  defined(__sparc_
6940: 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f  _) && !defined(_
6950: 5f 73 70 61 72 63 36 34 5f 5f 29 29 20 7c 7c 20  _sparc64__)) || 
6960: 64 65 66 69 6e 65 64 28 5f 5f 68 70 70 61 5f 5f  defined(__hppa__
6970: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 61  ) || defined(__a
6980: 72 6d 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  rm__) || defined
6990: 28 5f 5f 70 6f 77 65 72 70 63 5f 5f 29 20 7c 7c  (__powerpc__) ||
69a0: 20 64 65 66 69 6e 65 64 28 5f 5f 6d 38 38 6b 5f   defined(__m88k_
69b0: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  _) || defined(__
69c0: 63 6f 6e 76 65 78 5f 5f 29 20 7c 7c 20 64 65 66  convex__) || def
69d0: 69 6e 65 64 28 5f 5f 73 33 39 30 5f 5f 29 0a 2f  ined(__s390__)./
69e0: 2a 20 60 6c 6f 6e 67 20 6c 6f 6e 67 27 73 20 61  * `long long's a
69f0: 72 65 20 70 61 73 73 65 64 20 65 6d 62 65 64 64  re passed embedd
6a00: 65 64 20 6f 6e 20 74 68 65 20 61 72 67 20 73 74  ed on the arg st
6a10: 61 63 6b 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 20  ack. */.#define 
6a20: 61 76 5f 6c 6f 6e 67 6c 6f 6e 67 28 4c 49 53 54  av_longlong(LIST
6a30: 2c 56 41 4c 29 09 5f 5f 61 76 5f 6c 6f 6e 67 6c  ,VAL).__av_longl
6a40: 6f 6e 67 28 4c 49 53 54 2c 6c 6f 6e 67 20 6c 6f  ong(LIST,long lo
6a50: 6e 67 2c 56 41 4c 29 0a 23 64 65 66 69 6e 65 20  ng,VAL).#define 
6a60: 61 76 5f 75 6c 6f 6e 67 6c 6f 6e 67 28 4c 49 53  av_ulonglong(LIS
6a70: 54 2c 56 41 4c 29 09 5f 5f 61 76 5f 6c 6f 6e 67  T,VAL).__av_long
6a80: 6c 6f 6e 67 28 4c 49 53 54 2c 75 6e 73 69 67 6e  long(LIST,unsign
6a90: 65 64 20 6c 6f 6e 67 20 6c 6f 6e 67 2c 56 41 4c  ed long long,VAL
6aa0: 29 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  ).#if defined(__
6ab0: 69 33 38 36 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  i386__) || defin
6ac0: 65 64 28 5f 5f 6d 36 38 6b 5f 5f 29 20 7c 7c 20  ed(__m68k__) || 
6ad0: 64 65 66 69 6e 65 64 28 5f 5f 61 72 6d 5f 5f 29  defined(__arm__)
6ae0: 20 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f 70   || (defined(__p
6af0: 6f 77 65 72 70 63 5f 5f 29 20 26 26 20 28 64 65  owerpc__) && (de
6b00: 66 69 6e 65 64 28 5f 41 49 58 29 20 7c 7c 20 28  fined(_AIX) || (
6b10: 64 65 66 69 6e 65 64 28 5f 5f 4d 41 43 48 5f 5f  defined(__MACH__
6b20: 29 20 26 26 20 64 65 66 69 6e 65 64 28 5f 5f 41  ) && defined(__A
6b30: 50 50 4c 45 5f 5f 29 29 29 29 20 7c 7c 20 64 65  PPLE__)))) || de
6b40: 66 69 6e 65 64 28 5f 5f 63 6f 6e 76 65 78 5f 5f  fined(__convex__
6b50: 29 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  ).#if defined(__
6b60: 41 52 4d 45 4c 5f 5f 29 0a 2f 2a 20 60 6c 6f 6e  ARMEL__)./* `lon
6b70: 67 20 6c 6f 6e 67 27 73 20 61 72 65 20 38 20 62  g long's are 8 b
6b80: 79 74 65 73 20 61 6c 69 67 6e 65 64 20 6f 6e 20  ytes aligned on 
6b90: 41 52 4d 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 20  ARM. */.#define 
6ba0: 5f 5f 61 76 5f 6c 6f 6e 67 6c 6f 6e 67 28 4c 49  __av_longlong(LI
6bb0: 53 54 2c 54 59 50 45 2c 56 41 4c 29 20 20 20 20  ST,TYPE,VAL)    
6bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6bd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5c                 \
6be0: 0a 20 20 28 28 28 4c 49 53 54 29 2e 61 70 74 72  .  (((LIST).aptr
6bf0: 20 3d 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28 28   = (__avword*)((
6c00: 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29  (__avword)(LIST)
6c10: 2e 61 70 74 72 2b 73 69 7a 65 6f 66 28 54 59 50  .aptr+sizeof(TYP
6c20: 45 29 2b 5f 5f 41 56 5f 61 6c 69 67 6e 6f 66 28  E)+__AV_alignof(
6c30: 54 59 50 45 29 2d 31 29 20 26 20 2d 28 6c 6f 6e  TYPE)-1) & -(lon
6c40: 67 29 5f 5f 41 56 5f 61 6c 69 67 6e 6f 66 28 54  g)__AV_alignof(T
6c50: 59 50 45 29 29 29 20 3e 20 5f 5f 61 76 5f 65 70  YPE))) > __av_ep
6c60: 74 72 28 4c 49 53 54 29 20 20 20 20 20 20 20 20  tr(LIST)        
6c70: 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 28 28 28 54  \.   ? -1 : (((T
6c80: 59 50 45 2a 29 28 4c 49 53 54 29 2e 61 70 74 72  YPE*)(LIST).aptr
6c90: 29 5b 2d 31 5d 20 3d 20 28 54 59 50 45 29 28 56  )[-1] = (TYPE)(V
6ca0: 41 4c 29 2c 20 30 29 29 0a 23 65 6c 73 65 0a 2f  AL), 0)).#else./
6cb0: 2a 20 60 6c 6f 6e 67 20 6c 6f 6e 67 27 73 20 61  * `long long's a
6cc0: 72 65 20 28 61 74 20 6d 6f 73 74 29 20 77 6f 72  re (at most) wor
6cd0: 64 2d 61 6c 69 67 6e 65 64 2e 20 2a 2f 0a 23 64  d-aligned. */.#d
6ce0: 65 66 69 6e 65 20 5f 5f 61 76 5f 6c 6f 6e 67 6c  efine __av_longl
6cf0: 6f 6e 67 28 4c 49 53 54 2c 54 59 50 45 2c 56 41  ong(LIST,TYPE,VA
6d00: 4c 29 09 09 09 09 09 5c 0a 20 20 28 28 28 4c 49  L).....\.  (((LI
6d10: 53 54 29 2e 61 70 74 72 20 2b 3d 20 73 69 7a 65  ST).aptr += size
6d20: 6f 66 28 54 59 50 45 29 2f 73 69 7a 65 6f 66 28  of(TYPE)/sizeof(
6d30: 5f 5f 61 76 77 6f 72 64 29 29 20 3e 20 5f 5f 61  __avword)) > __a
6d40: 76 5f 65 70 74 72 28 4c 49 53 54 29 09 5c 0a 20  v_eptr(LIST).\. 
6d50: 20 20 3f 20 2d 31 20 3a 20 28 28 28 54 59 50 45    ? -1 : (((TYPE
6d60: 2a 29 28 4c 49 53 54 29 2e 61 70 74 72 29 5b 2d  *)(LIST).aptr)[-
6d70: 31 5d 20 3d 20 28 54 59 50 45 29 28 56 41 4c 29  1] = (TYPE)(VAL)
6d80: 2c 20 30 29 29 0a 23 65 6e 64 69 66 0a 23 65 6e  , 0)).#endif.#en
6d90: 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28  dif.#if defined(
6da0: 5f 5f 6d 69 70 73 5f 5f 29 20 7c 7c 20 28 64 65  __mips__) || (de
6db0: 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f 5f 29  fined(__sparc__)
6dc0: 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 73   && !defined(__s
6dd0: 70 61 72 63 36 34 5f 5f 29 29 20 7c 7c 20 64 65  parc64__)) || de
6de0: 66 69 6e 65 64 28 5f 5f 68 70 70 61 5f 5f 29 20  fined(__hppa__) 
6df0: 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f 70 6f  || (defined(__po
6e00: 77 65 72 70 63 5f 5f 29 20 26 26 20 21 28 64 65  werpc__) && !(de
6e10: 66 69 6e 65 64 28 5f 41 49 58 29 20 7c 7c 20 28  fined(_AIX) || (
6e20: 64 65 66 69 6e 65 64 28 5f 5f 4d 41 43 48 5f 5f  defined(__MACH__
6e30: 29 20 26 26 20 64 65 66 69 6e 65 64 28 5f 5f 41  ) && defined(__A
6e40: 50 50 4c 45 5f 5f 29 29 29 29 20 7c 7c 20 64 65  PPLE__)))) || de
6e50: 66 69 6e 65 64 28 5f 5f 6d 38 38 6b 5f 5f 29 20  fined(__m88k__) 
6e60: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 73 33 39  || defined(__s39
6e70: 30 5f 5f 29 0a 2f 2a 20 60 6c 6f 6e 67 20 6c 6f  0__)./* `long lo
6e80: 6e 67 27 73 20 68 61 76 65 20 61 6c 69 67 6e 6d  ng's have alignm
6e90: 65 6e 74 20 38 2e 20 2a 2f 0a 23 69 66 20 64 65  ent 8. */.#if de
6ea0: 66 69 6e 65 64 28 5f 5f 6d 69 70 73 5f 5f 29 0a  fined(__mips__).
6eb0: 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 6c 6f 6e  #define __av_lon
6ec0: 67 6c 6f 6e 67 28 4c 49 53 54 2c 54 59 50 45 2c  glong(LIST,TYPE,
6ed0: 56 41 4c 29 09 09 09 09 09 5c 0a 20 20 28 28 28  VAL).....\.  (((
6ee0: 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 28 5f 5f  LIST).aptr = (__
6ef0: 61 76 77 6f 72 64 2a 29 28 28 28 5f 5f 61 76 77  avword*)(((__avw
6f00: 6f 72 64 29 28 4c 49 53 54 29 2e 61 70 74 72 2b  ord)(LIST).aptr+
6f10: 73 69 7a 65 6f 66 28 54 59 50 45 29 2b 5f 5f 41  sizeof(TYPE)+__A
6f20: 56 5f 61 6c 69 67 6e 6f 66 28 54 59 50 45 29 2d  V_alignof(TYPE)-
6f30: 31 29 20 26 20 2d 28 6c 6f 6e 67 29 5f 5f 41 56  1) & -(long)__AV
6f40: 5f 61 6c 69 67 6e 6f 66 28 54 59 50 45 29 29 29  _alignof(TYPE)))
6f50: 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53   > __av_eptr(LIS
6f60: 54 29 20 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 28  T) \.   ? -1 : (
6f70: 28 4c 49 53 54 29 2e 61 6e 75 6d 2b 2b 2c 20 28  (LIST).anum++, (
6f80: 28 54 59 50 45 2a 29 28 4c 49 53 54 29 2e 61 70  (TYPE*)(LIST).ap
6f90: 74 72 29 5b 2d 31 5d 20 3d 20 28 54 59 50 45 29  tr)[-1] = (TYPE)
6fa0: 28 56 41 4c 29 2c 20 30 29 29 0a 23 65 6e 64 69  (VAL), 0)).#endi
6fb0: 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  f.#if defined(__
6fc0: 73 70 61 72 63 5f 5f 29 20 26 26 20 21 64 65 66  sparc__) && !def
6fd0: 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f  ined(__sparc64__
6fe0: 29 0a 2f 2a 20 57 69 74 68 69 6e 20 74 68 65 20  )./* Within the 
6ff0: 61 72 67 20 73 74 61 63 6b 2c 20 74 68 65 20 61  arg stack, the a
7000: 6c 69 67 6e 6d 65 6e 74 20 69 73 20 6f 6e 6c 79  lignment is only
7010: 20 34 2c 20 6e 6f 74 20 38 2e 20 2a 2f 0a 2f 2a   4, not 8. */./*
7020: 20 54 68 69 73 20 61 73 73 75 6d 65 73 20 73 69   This assumes si
7030: 7a 65 6f 66 28 6c 6f 6e 67 20 6c 6f 6e 67 29 20  zeof(long long) 
7040: 3d 3d 20 32 2a 73 69 7a 65 6f 66 28 5f 5f 61 76  == 2*sizeof(__av
7050: 77 6f 72 64 29 2e 20 2a 2f 0a 23 64 65 66 69 6e  word). */.#defin
7060: 65 20 5f 5f 61 76 5f 6c 6f 6e 67 6c 6f 6e 67 28  e __av_longlong(
7070: 4c 49 53 54 2c 54 59 50 45 2c 56 41 4c 29 09 09  LIST,TYPE,VAL)..
7080: 09 09 09 5c 0a 20 20 28 28 28 4c 49 53 54 29 2e  ...\.  (((LIST).
7090: 61 70 74 72 20 2b 3d 20 73 69 7a 65 6f 66 28 54  aptr += sizeof(T
70a0: 59 50 45 29 2f 73 69 7a 65 6f 66 28 5f 5f 61 76  YPE)/sizeof(__av
70b0: 77 6f 72 64 29 29 20 3e 20 5f 5f 61 76 5f 65 70  word)) > __av_ep
70c0: 74 72 28 4c 49 53 54 29 09 5c 0a 20 20 20 3f 20  tr(LIST).\.   ? 
70d0: 2d 31 20 3a 09 09 09 09 09 09 09 09 5c 0a 20 20  -1 :........\.  
70e0: 20 28 28 4c 49 53 54 29 2e 74 6d 70 2e 5f 6c 6f   ((LIST).tmp._lo
70f0: 6e 67 6c 6f 6e 67 20 3d 20 28 54 59 50 45 29 28  nglong = (TYPE)(
7100: 56 41 4c 29 2c 09 09 09 09 09 5c 0a 20 20 20 20  VAL),.....\.    
7110: 28 4c 49 53 54 29 2e 61 70 74 72 5b 2d 32 5d 20  (LIST).aptr[-2] 
7120: 3d 20 28 4c 49 53 54 29 2e 74 6d 70 2e 77 6f 72  = (LIST).tmp.wor
7130: 64 73 5b 30 5d 2c 09 09 09 09 5c 0a 20 20 20 20  ds[0],....\.    
7140: 28 4c 49 53 54 29 2e 61 70 74 72 5b 2d 31 5d 20  (LIST).aptr[-1] 
7150: 3d 20 28 4c 49 53 54 29 2e 74 6d 70 2e 77 6f 72  = (LIST).tmp.wor
7160: 64 73 5b 31 5d 2c 09 09 09 09 5c 0a 20 20 20 20  ds[1],....\.    
7170: 30 29 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64  0)).#endif.#if d
7180: 65 66 69 6e 65 64 28 5f 5f 68 70 70 61 5f 5f 29  efined(__hppa__)
7190: 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 6c 6f  .#define __av_lo
71a0: 6e 67 6c 6f 6e 67 28 4c 49 53 54 2c 54 59 50 45  nglong(LIST,TYPE
71b0: 2c 56 41 4c 29 09 09 09 09 09 5c 0a 20 20 28 28  ,VAL).....\.  ((
71c0: 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 28 5f  (LIST).aptr = (_
71d0: 5f 61 76 77 6f 72 64 2a 29 28 28 28 5f 5f 61 76  _avword*)(((__av
71e0: 77 6f 72 64 29 28 4c 49 53 54 29 2e 61 70 74 72  word)(LIST).aptr
71f0: 20 26 20 2d 28 6c 6f 6e 67 29 5f 5f 41 56 5f 61   & -(long)__AV_a
7200: 6c 69 67 6e 6f 66 28 54 59 50 45 29 29 20 2d 20  lignof(TYPE)) - 
7210: 73 69 7a 65 6f 66 28 54 59 50 45 29 29 29 20 3c  sizeof(TYPE))) <
7220: 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29   __av_eptr(LIST)
7230: 20 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 28 2a 28   \.   ? -1 : (*(
7240: 54 59 50 45 2a 29 28 4c 49 53 54 29 2e 61 70 74  TYPE*)(LIST).apt
7250: 72 20 3d 20 28 54 59 50 45 29 28 56 41 4c 29 2c  r = (TYPE)(VAL),
7260: 20 30 29 29 0a 23 65 6e 64 69 66 0a 23 69 66 20   0)).#endif.#if 
7270: 28 64 65 66 69 6e 65 64 28 5f 5f 70 6f 77 65 72  (defined(__power
7280: 70 63 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65  pc__) && !define
7290: 64 28 5f 5f 70 6f 77 65 72 70 63 36 34 5f 5f 29  d(__powerpc64__)
72a0: 20 26 26 20 21 28 64 65 66 69 6e 65 64 28 5f 41   && !(defined(_A
72b0: 49 58 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28  IX) || (defined(
72c0: 5f 5f 4d 41 43 48 5f 5f 29 20 26 26 20 64 65 66  __MACH__) && def
72d0: 69 6e 65 64 28 5f 5f 41 50 50 4c 45 5f 5f 29 29  ined(__APPLE__))
72e0: 29 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  )) || defined(__
72f0: 6d 38 38 6b 5f 5f 29 0a 23 64 65 66 69 6e 65 20  m88k__).#define 
7300: 5f 5f 61 76 5f 6c 6f 6e 67 6c 6f 6e 67 28 4c 49  __av_longlong(LI
7310: 53 54 2c 54 59 50 45 2c 56 41 4c 29 09 09 09 09  ST,TYPE,VAL)....
7320: 09 5c 0a 20 20 28 28 28 4c 49 53 54 29 2e 61 70  .\.  (((LIST).ap
7330: 74 72 20 3d 20 28 5f 5f 61 76 77 6f 72 64 2a 29  tr = (__avword*)
7340: 28 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53  (((__avword)(LIS
7350: 54 29 2e 61 70 74 72 2b 73 69 7a 65 6f 66 28 54  T).aptr+sizeof(T
7360: 59 50 45 29 2b 5f 5f 41 56 5f 61 6c 69 67 6e 6f  YPE)+__AV_aligno
7370: 66 28 54 59 50 45 29 2d 31 29 20 26 20 2d 28 6c  f(TYPE)-1) & -(l
7380: 6f 6e 67 29 5f 5f 41 56 5f 61 6c 69 67 6e 6f 66  ong)__AV_alignof
7390: 28 54 59 50 45 29 29 29 20 3e 20 5f 5f 61 76 5f  (TYPE))) > __av_
73a0: 65 70 74 72 28 4c 49 53 54 29 20 5c 0a 20 20 20  eptr(LIST) \.   
73b0: 3f 20 2d 31 20 3a 20 28 28 28 54 59 50 45 2a 29  ? -1 : (((TYPE*)
73c0: 28 4c 49 53 54 29 2e 61 70 74 72 29 5b 2d 31 5d  (LIST).aptr)[-1]
73d0: 20 3d 20 28 54 59 50 45 29 28 56 41 4c 29 2c 20   = (TYPE)(VAL), 
73e0: 30 29 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64  0)).#endif.#if d
73f0: 65 66 69 6e 65 64 28 5f 5f 73 33 39 30 5f 5f 29  efined(__s390__)
7400: 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 6c 6f  .#define __av_lo
7410: 6e 67 6c 6f 6e 67 28 4c 49 53 54 2c 54 59 50 45  nglong(LIST,TYPE
7420: 2c 56 41 4c 29 09 09 09 09 09 5c 0a 20 20 28 28  ,VAL).....\.  ((
7430: 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 28 5f  (LIST).aptr = (_
7440: 5f 61 76 77 6f 72 64 2a 29 28 28 28 5f 5f 61 76  _avword*)(((__av
7450: 77 6f 72 64 29 28 4c 49 53 54 29 2e 61 70 74 72  word)(LIST).aptr
7460: 2b 73 69 7a 65 6f 66 28 54 59 50 45 29 2b 5f 5f  +sizeof(TYPE)+__
7470: 41 56 5f 61 6c 69 67 6e 6f 66 28 54 59 50 45 29  AV_alignof(TYPE)
7480: 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 5f 5f 41  -1) & -(long)__A
7490: 56 5f 61 6c 69 67 6e 6f 66 28 54 59 50 45 29 29  V_alignof(TYPE))
74a0: 29 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49  ) > __av_eptr(LI
74b0: 53 54 29 20 5c 0a 20 20 20 3f 20 2d 31 20 3a 09  ST) \.   ? -1 :.
74c0: 09 09 09 09 09 5c 0a 20 20 20 28 28 28 4c 49 53  .....\.   (((LIS
74d0: 54 29 2e 61 70 74 72 20 2d 20 28 4c 49 53 54 29  T).aptr - (LIST)
74e0: 2e 61 72 67 73 20 2d 20 28 4c 49 53 54 29 2e 66  .args - (LIST).f
74f0: 61 72 67 77 6f 72 64 73 20 3d 3d 20 34 20 3f 20  argwords == 4 ? 
7500: 2b 2b 28 4c 49 53 54 29 2e 61 70 74 72 2c 30 20  ++(LIST).aptr,0 
7510: 3a 20 30 29 2c 20 5c 0a 20 20 20 20 28 28 28 54  : 0), \.    (((T
7520: 59 50 45 2a 29 28 4c 49 53 54 29 2e 61 70 74 72  YPE*)(LIST).aptr
7530: 29 5b 2d 31 5d 20 3d 20 28 54 59 50 45 29 28 56  )[-1] = (TYPE)(V
7540: 41 4c 29 2c 20 30 29 29 29 0a 23 65 6e 64 69 66  AL), 0))).#endif
7550: 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69 66 0a 0a  .#endif.#endif..
7560: 2f 2a 20 66 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e  /* floating-poin
7570: 74 20 61 72 67 75 6d 65 6e 74 20 74 79 70 65 73  t argument types
7580: 20 2a 2f 0a 0a 23 69 66 20 64 65 66 69 6e 65 64   */..#if defined
7590: 28 5f 5f 69 33 38 36 5f 5f 29 20 7c 7c 20 64 65  (__i386__) || de
75a0: 66 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f 5f 29 20  fined(__m68k__) 
75b0: 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f 73 70  || (defined(__sp
75c0: 61 72 63 5f 5f 29 20 26 26 20 21 64 65 66 69 6e  arc__) && !defin
75d0: 65 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29 29  ed(__sparc64__))
75e0: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 61 72   || defined(__ar
75f0: 6d 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  m__) || defined(
7600: 5f 5f 63 6f 6e 76 65 78 5f 5f 29 0a 0a 23 64 65  __convex__)..#de
7610: 66 69 6e 65 20 61 76 5f 66 6c 6f 61 74 28 4c 49  fine av_float(LI
7620: 53 54 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a 20  ST,VAL)......\. 
7630: 20 28 2b 2b 28 4c 49 53 54 29 2e 61 70 74 72 20   (++(LIST).aptr 
7640: 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54  > __av_eptr(LIST
7650: 29 09 09 09 09 09 5c 0a 20 20 20 3f 20 2d 31 20  ).....\.   ? -1 
7660: 3a 20 28 28 28 66 6c 6f 61 74 2a 29 28 4c 49 53  : (((float*)(LIS
7670: 54 29 2e 61 70 74 72 29 5b 2d 31 5d 20 3d 20 28  T).aptr)[-1] = (
7680: 66 6c 6f 61 74 29 28 56 41 4c 29 2c 20 30 29 29  float)(VAL), 0))
7690: 0a 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  ..#if defined(__
76a0: 41 52 4d 45 4c 5f 5f 29 0a 2f 2a 20 41 6c 6d 6f  ARMEL__)./* Almo
76b0: 73 74 20 69 64 65 6e 74 69 63 61 6c 20 6e 6f 72  st identical nor
76c0: 6d 61 6c 20 63 61 73 65 2c 20 62 75 74 20 77 65  mal case, but we
76d0: 20 6d 75 73 74 20 61 6c 69 67 6e 20 6c 6f 63 61   must align loca
76e0: 74 69 6f 6e 20 2a 2f 0a 23 64 65 66 69 6e 65 20  tion */.#define 
76f0: 61 76 5f 64 6f 75 62 6c 65 28 4c 49 53 54 2c 56  av_double(LIST,V
7700: 41 4c 29 20 20 20 20 20 20 20 20 20 20 20 20 20  AL)             
7710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5c                 \
7730: 0a 20 20 20 28 28 28 4c 49 53 54 29 2e 61 70 74  .   (((LIST).apt
7740: 72 20 3d 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28  r = (__avword*)(
7750: 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54  ((__avword)(LIST
7760: 29 2e 61 70 74 72 2b 31 35 29 26 2d 38 29 29 20  ).aptr+15)&-8)) 
7770: 20 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20 3e           \.    >
7780: 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29   __av_eptr(LIST)
7790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
77a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
77b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
77c0: 20 20 20 5c 0a 20 20 20 20 3f 20 2d 31 20 3a 20     \.    ? -1 : 
77d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
77e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
77f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7800: 20 20 20 20 20 20 20 20 20 20 20 20 5c 0a 20 20              \.  
7810: 20 20 28 28 4c 49 53 54 29 2e 74 6d 70 2e 5f 64    ((LIST).tmp._d
7820: 6f 75 62 6c 65 20 3d 20 28 64 6f 75 62 6c 65 29  ouble = (double)
7830: 28 56 41 4c 29 2c 20 20 20 20 20 20 20 20 20 20  (VAL),          
7840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7850: 20 20 20 20 20 5c 0a 20 20 20 20 20 28 4c 49 53       \.     (LIS
7860: 54 29 2e 61 70 74 72 5b 2d 32 5d 20 3d 20 28 4c  T).aptr[-2] = (L
7870: 49 53 54 29 2e 74 6d 70 2e 77 6f 72 64 73 5b 30  IST).tmp.words[0
7880: 5d 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ],              
7890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 0a                \.
78a0: 20 20 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72       (LIST).aptr
78b0: 5b 2d 31 5d 20 3d 20 28 4c 49 53 54 29 2e 74 6d  [-1] = (LIST).tm
78c0: 70 2e 77 6f 72 64 73 5b 31 5d 2c 20 20 20 20 20  p.words[1],     
78d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
78e0: 20 20 20 20 20 20 20 5c 0a 20 20 20 20 20 30 29         \.     0)
78f0: 29 0a 23 65 6c 73 65 0a 2f 2a 20 54 68 69 73 20  ).#else./* This 
7900: 61 73 73 75 6d 65 73 20 73 69 7a 65 6f 66 28 64  assumes sizeof(d
7910: 6f 75 62 6c 65 29 20 3d 3d 20 32 2a 73 69 7a 65  ouble) == 2*size
7920: 6f 66 28 5f 5f 61 76 77 6f 72 64 29 2e 20 2a 2f  of(__avword). */
7930: 0a 23 64 65 66 69 6e 65 20 61 76 5f 64 6f 75 62  .#define av_doub
7940: 6c 65 28 4c 49 53 54 2c 56 41 4c 29 09 09 09 09  le(LIST,VAL)....
7950: 09 09 5c 0a 20 20 20 28 28 28 4c 49 53 54 29 2e  ..\.   (((LIST).
7960: 61 70 74 72 20 2b 3d 20 32 29 20 3e 20 5f 5f 61  aptr += 2) > __a
7970: 76 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09 09  v_eptr(LIST)....
7980: 5c 0a 20 20 20 20 3f 20 2d 31 20 3a 09 09 09 09  \.    ? -1 :....
7990: 09 09 09 09 5c 0a 20 20 20 20 28 28 4c 49 53 54  ....\.    ((LIST
79a0: 29 2e 74 6d 70 2e 5f 64 6f 75 62 6c 65 20 3d 20  ).tmp._double = 
79b0: 28 64 6f 75 62 6c 65 29 28 56 41 4c 29 2c 09 09  (double)(VAL),..
79c0: 09 09 5c 0a 20 20 20 20 20 28 4c 49 53 54 29 2e  ..\.     (LIST).
79d0: 61 70 74 72 5b 2d 32 5d 20 3d 20 28 4c 49 53 54  aptr[-2] = (LIST
79e0: 29 2e 74 6d 70 2e 77 6f 72 64 73 5b 30 5d 2c 09  ).tmp.words[0],.
79f0: 09 09 09 5c 0a 20 20 20 20 20 28 4c 49 53 54 29  ...\.     (LIST)
7a00: 2e 61 70 74 72 5b 2d 31 5d 20 3d 20 28 4c 49 53  .aptr[-1] = (LIS
7a10: 54 29 2e 74 6d 70 2e 77 6f 72 64 73 5b 31 5d 2c  T).tmp.words[1],
7a20: 09 09 09 09 5c 0a 20 20 20 20 20 30 29 29 0a 23  ....\.     0)).#
7a30: 65 6e 64 69 66 0a 23 65 6e 64 69 66 0a 0a 23 69  endif.#endif..#i
7a40: 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73  f defined(__mips
7a50: 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 28  __) && !defined(
7a60: 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 26 26 20  __mipsn32__) && 
7a70: 21 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 36  !defined(__mips6
7a80: 34 5f 5f 29 0a 0a 2f 2a 20 55 70 20 74 6f 20 32  4__)../* Up to 2
7a90: 20 6c 65 61 64 69 6e 67 20 66 6c 6f 61 74 20 6f   leading float o
7aa0: 72 20 64 6f 75 62 6c 65 20 6e 6f 6e 2d 76 61 72  r double non-var
7ab0: 61 72 67 73 20 61 72 67 73 20 63 61 6e 20 62 65  args args can be
7ac0: 20 70 61 73 73 65 64 20 69 6e 0a 20 2a 20 66 6c   passed in. * fl
7ad0: 6f 61 74 20 72 65 67 69 73 74 65 72 73 2c 20 62  oat registers, b
7ae0: 75 74 20 77 65 20 61 6c 73 6f 20 70 75 73 68 20  ut we also push 
7af0: 74 68 65 6d 20 69 6e 74 6f 20 74 68 65 20 63 6f  them into the co
7b00: 72 72 65 73 70 6f 6e 64 69 6e 67 20 69 6e 74 0a  rresponding int.
7b10: 20 2a 20 72 65 67 69 73 74 65 72 73 20 69 6e 20   * registers in 
7b20: 63 61 73 65 20 6f 66 20 76 61 72 61 72 67 73 2e  case of varargs.
7b30: 20 46 6f 72 20 64 6f 75 62 6c 65 73 20 77 65 20   For doubles we 
7b40: 6e 65 65 64 20 74 6f 20 61 6c 69 67 6e 20 74 68  need to align th
7b50: 65 20 61 70 74 72 0a 20 2a 20 74 6f 20 61 6e 20  e aptr. * to an 
7b60: 65 76 65 6e 20 62 6f 75 6e 64 61 72 79 2e 0a 20  even boundary.. 
7b70: 2a 2f 0a 23 64 65 66 69 6e 65 20 61 76 5f 66 6c  */.#define av_fl
7b80: 6f 61 74 28 4c 49 53 54 2c 56 41 4c 29 09 09 09  oat(LIST,VAL)...
7b90: 09 09 09 5c 0a 20 20 28 2b 2b 28 4c 49 53 54 29  ...\.  (++(LIST)
7ba0: 2e 61 70 74 72 20 3e 20 5f 5f 61 76 5f 65 70 74  .aptr > __av_ept
7bb0: 72 28 4c 49 53 54 29 09 09 09 09 09 5c 0a 20 20  r(LIST).....\.  
7bc0: 20 3f 20 2d 31 20 3a 20 28 28 2b 2b 28 4c 49 53   ? -1 : ((++(LIS
7bd0: 54 29 2e 61 6e 75 6d 20 3d 3d 20 31 09 09 09 09  T).anum == 1....
7be0: 09 09 5c 0a 09 20 20 20 20 3f 20 28 28 4c 49 53  ..\..    ? ((LIS
7bf0: 54 29 2e 66 6c 61 67 73 20 7c 3d 20 5f 5f 41 56  T).flags |= __AV
7c00: 5f 46 4c 4f 41 54 5f 31 2c 09 09 09 09 5c 0a 09  _FLOAT_1,....\..
7c10: 20 20 20 20 20 20 20 28 4c 49 53 54 29 2e 66 6c         (LIST).fl
7c20: 6f 61 74 61 72 67 5b 30 5d 20 3d 20 28 28 66 6c  oatarg[0] = ((fl
7c30: 6f 61 74 2a 29 28 4c 49 53 54 29 2e 61 70 74 72  oat*)(LIST).aptr
7c40: 29 5b 2d 31 5d 20 3d 20 28 66 6c 6f 61 74 29 28  )[-1] = (float)(
7c50: 56 41 4c 29 29 5c 0a 09 20 20 20 20 3a 20 28 4c  VAL))\..    : (L
7c60: 49 53 54 29 2e 61 6e 75 6d 20 3d 3d 20 32 20 26  IST).anum == 2 &
7c70: 26 20 28 28 28 4c 49 53 54 29 2e 66 6c 61 67 73  & (((LIST).flags
7c80: 20 26 20 5f 5f 41 56 5f 46 4c 4f 41 54 5f 31 29   & __AV_FLOAT_1)
7c90: 20 7c 7c 20 28 28 4c 49 53 54 29 2e 66 6c 61 67   || ((LIST).flag
7ca0: 73 20 26 20 5f 5f 41 56 5f 44 4f 55 42 4c 45 5f  s & __AV_DOUBLE_
7cb0: 31 29 29 5c 0a 09 20 20 20 20 3f 20 28 28 4c 49  1))\..    ? ((LI
7cc0: 53 54 29 2e 66 6c 61 67 73 20 7c 3d 20 5f 5f 41  ST).flags |= __A
7cd0: 56 5f 46 4c 4f 41 54 5f 32 2c 09 09 09 09 5c 0a  V_FLOAT_2,....\.
7ce0: 09 20 20 20 20 20 20 20 28 4c 49 53 54 29 2e 66  .       (LIST).f
7cf0: 6c 6f 61 74 61 72 67 5b 31 5d 20 3d 20 28 28 66  loatarg[1] = ((f
7d00: 6c 6f 61 74 2a 29 28 4c 49 53 54 29 2e 61 70 74  loat*)(LIST).apt
7d10: 72 29 5b 2d 31 5d 20 3d 20 28 66 6c 6f 61 74 29  r)[-1] = (float)
7d20: 28 56 41 4c 29 29 5c 0a 09 20 20 20 20 3a 20 28  (VAL))\..    : (
7d30: 28 28 66 6c 6f 61 74 2a 29 28 4c 49 53 54 29 2e  ((float*)(LIST).
7d40: 61 70 74 72 29 5b 2d 31 5d 20 3d 20 28 66 6c 6f  aptr)[-1] = (flo
7d50: 61 74 29 28 56 41 4c 29 29 29 2c 09 09 5c 0a 09  at)(VAL))),..\..
7d60: 20 20 20 30 29 29 0a 0a 23 64 65 66 69 6e 65 20     0))..#define 
7d70: 61 76 5f 64 6f 75 62 6c 65 28 4c 49 53 54 2c 56  av_double(LIST,V
7d80: 41 4c 29 09 09 09 09 09 09 5c 0a 20 20 28 28 28  AL)......\.  (((
7d90: 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 28 5f 5f  LIST).aptr = (__
7da0: 61 76 77 6f 72 64 2a 29 28 28 28 5f 5f 61 76 77  avword*)(((__avw
7db0: 6f 72 64 29 28 4c 49 53 54 29 2e 61 70 74 72 2b  ord)(LIST).aptr+
7dc0: 31 35 29 26 2d 38 29 29 09 09 5c 0a 20 20 20 3e  15)&-8))..\.   >
7dd0: 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29   __av_eptr(LIST)
7de0: 09 09 09 09 09 09 09 5c 0a 20 20 20 3f 20 2d 31  .......\.   ? -1
7df0: 20 3a 20 28 28 2b 2b 28 4c 49 53 54 29 2e 61 6e   : ((++(LIST).an
7e00: 75 6d 20 3d 3d 20 31 09 09 09 09 09 09 5c 0a 09  um == 1......\..
7e10: 20 20 20 20 3f 20 28 28 4c 49 53 54 29 2e 66 6c      ? ((LIST).fl
7e20: 61 67 73 20 7c 3d 20 5f 5f 41 56 5f 44 4f 55 42  ags |= __AV_DOUB
7e30: 4c 45 5f 31 2c 09 09 09 09 5c 0a 09 20 20 20 20  LE_1,....\..    
7e40: 20 20 20 28 4c 49 53 54 29 2e 64 6f 75 62 6c 65     (LIST).double
7e50: 61 72 67 5b 30 5d 20 3d 20 28 28 64 6f 75 62 6c  arg[0] = ((doubl
7e60: 65 2a 29 28 4c 49 53 54 29 2e 61 70 74 72 29 5b  e*)(LIST).aptr)[
7e70: 2d 31 5d 20 3d 20 28 64 6f 75 62 6c 65 29 28 56  -1] = (double)(V
7e80: 41 4c 29 29 5c 0a 09 20 20 20 20 3a 20 28 4c 49  AL))\..    : (LI
7e90: 53 54 29 2e 61 6e 75 6d 20 3d 3d 20 32 20 26 26  ST).anum == 2 &&
7ea0: 20 28 28 28 4c 49 53 54 29 2e 66 6c 61 67 73 20   (((LIST).flags 
7eb0: 26 20 5f 5f 41 56 5f 46 4c 4f 41 54 5f 31 29 20  & __AV_FLOAT_1) 
7ec0: 7c 7c 20 28 28 4c 49 53 54 29 2e 66 6c 61 67 73  || ((LIST).flags
7ed0: 20 26 20 5f 5f 41 56 5f 44 4f 55 42 4c 45 5f 31   & __AV_DOUBLE_1
7ee0: 29 29 5c 0a 09 20 20 20 20 3f 20 28 28 4c 49 53  ))\..    ? ((LIS
7ef0: 54 29 2e 66 6c 61 67 73 20 7c 3d 20 5f 5f 41 56  T).flags |= __AV
7f00: 5f 44 4f 55 42 4c 45 5f 32 2c 09 09 09 09 5c 0a  _DOUBLE_2,....\.
7f10: 09 20 20 20 20 20 20 20 28 4c 49 53 54 29 2e 64  .       (LIST).d
7f20: 6f 75 62 6c 65 61 72 67 5b 31 5d 20 3d 20 28 28  oublearg[1] = ((
7f30: 64 6f 75 62 6c 65 2a 29 28 4c 49 53 54 29 2e 61  double*)(LIST).a
7f40: 70 74 72 29 5b 2d 31 5d 20 3d 20 28 64 6f 75 62  ptr)[-1] = (doub
7f50: 6c 65 29 28 56 41 4c 29 29 5c 0a 09 20 20 20 20  le)(VAL))\..    
7f60: 3a 20 28 28 28 64 6f 75 62 6c 65 2a 29 28 4c 49  : (((double*)(LI
7f70: 53 54 29 2e 61 70 74 72 29 5b 2d 31 5d 20 3d 20  ST).aptr)[-1] = 
7f80: 28 64 6f 75 62 6c 65 29 28 56 41 4c 29 29 29 2c  (double)(VAL))),
7f90: 09 09 5c 0a 09 20 20 20 30 29 29 0a 0a 23 65 6e  ..\..   0))..#en
7fa0: 64 69 66 0a 0a 23 69 66 20 64 65 66 69 6e 65 64  dif..#if defined
7fb0: 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 7c 7c  (__mipsn32__) ||
7fc0: 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 36   defined(__mips6
7fd0: 34 5f 5f 29 0a 0a 2f 2a 20 55 70 20 74 6f 20 38  4__)../* Up to 8
7fe0: 20 6c 65 61 64 69 6e 67 20 66 6c 6f 61 74 20 6f   leading float o
7ff0: 72 20 64 6f 75 62 6c 65 20 6e 6f 6e 2d 76 61 72  r double non-var
8000: 61 72 67 73 20 61 72 67 73 20 63 61 6e 20 62 65  args args can be
8010: 20 70 61 73 73 65 64 20 69 6e 0a 20 2a 20 66 6c   passed in. * fl
8020: 6f 61 74 20 72 65 67 69 73 74 65 72 73 2c 20 62  oat registers, b
8030: 75 74 20 77 65 20 61 6c 73 6f 20 70 75 73 68 20  ut we also push 
8040: 74 68 65 6d 20 69 6e 74 6f 20 74 68 65 20 63 6f  them into the co
8050: 72 72 65 73 70 6f 6e 64 69 6e 67 20 69 6e 74 0a  rresponding int.
8060: 20 2a 20 72 65 67 69 73 74 65 72 73 20 69 6e 20   * registers in 
8070: 63 61 73 65 20 6f 66 20 76 61 72 61 72 67 73 2e  case of varargs.
8080: 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 61 76 5f  . */.#define av_
8090: 66 6c 6f 61 74 28 4c 49 53 54 2c 56 41 4c 29 09  float(LIST,VAL).
80a0: 09 09 09 09 09 5c 0a 20 20 28 28 4c 49 53 54 29  .....\.  ((LIST)
80b0: 2e 61 70 74 72 20 3e 3d 20 5f 5f 61 76 5f 65 70  .aptr >= __av_ep
80c0: 74 72 28 4c 49 53 54 29 09 09 09 09 09 5c 0a 20  tr(LIST).....\. 
80d0: 20 20 3f 20 2d 31 20 3a 20 28 28 28 4c 49 53 54    ? -1 : (((LIST
80e0: 29 2e 61 6e 75 6d 20 3c 20 38 09 09 09 09 09 09  ).anum < 8......
80f0: 5c 0a 09 20 20 20 20 3f 20 28 28 4c 49 53 54 29  \..    ? ((LIST)
8100: 2e 66 61 72 67 5f 6d 61 73 6b 20 7c 3d 20 28 31  .farg_mask |= (1
8110: 20 3c 3c 20 28 4c 49 53 54 29 2e 61 6e 75 6d 29   << (LIST).anum)
8120: 2c 09 09 09 5c 0a 09 20 20 20 20 20 20 20 28 4c  ,...\..       (L
8130: 49 53 54 29 2e 66 61 72 67 5b 28 4c 49 53 54 29  IST).farg[(LIST)
8140: 2e 61 6e 75 6d 5d 20 3d 20 2a 28 66 6c 6f 61 74  .anum] = *(float
8150: 2a 29 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20  *)(LIST).aptr = 
8160: 28 66 6c 6f 61 74 29 28 56 41 4c 29 29 20 5c 0a  (float)(VAL)) \.
8170: 09 20 20 20 20 3a 20 28 2a 28 66 6c 6f 61 74 2a  .    : (*(float*
8180: 29 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 28  )(LIST).aptr = (
8190: 66 6c 6f 61 74 29 28 56 41 4c 29 29 29 2c 09 09  float)(VAL))),..
81a0: 09 5c 0a 09 20 20 20 28 4c 49 53 54 29 2e 61 6e  .\..   (LIST).an
81b0: 75 6d 2b 2b 2c 09 09 09 09 09 09 5c 0a 09 20 20  um++,......\..  
81c0: 20 28 4c 49 53 54 29 2e 61 70 74 72 2b 2b 2c 09   (LIST).aptr++,.
81d0: 09 09 09 09 09 5c 0a 09 20 20 20 30 29 29 0a 0a  .....\..   0))..
81e0: 23 64 65 66 69 6e 65 20 61 76 5f 64 6f 75 62 6c  #define av_doubl
81f0: 65 28 4c 49 53 54 2c 56 41 4c 29 09 09 09 09 09  e(LIST,VAL).....
8200: 09 5c 0a 20 20 28 28 4c 49 53 54 29 2e 61 70 74  .\.  ((LIST).apt
8210: 72 20 3e 3d 20 5f 5f 61 76 5f 65 70 74 72 28 4c  r >= __av_eptr(L
8220: 49 53 54 29 09 09 09 09 09 5c 0a 20 20 20 3f 20  IST).....\.   ? 
8230: 2d 31 20 3a 20 28 28 28 4c 49 53 54 29 2e 61 6e  -1 : (((LIST).an
8240: 75 6d 20 3c 20 38 20 26 26 20 28 28 4c 49 53 54  um < 8 && ((LIST
8250: 29 2e 64 61 72 67 5f 6d 61 73 6b 20 7c 3d 20 28  ).darg_mask |= (
8260: 31 20 3c 3c 20 28 4c 49 53 54 29 2e 61 6e 75 6d  1 << (LIST).anum
8270: 29 29 29 2c 20 5c 0a 09 20 20 20 2a 28 64 6f 75  ))), \..   *(dou
8280: 62 6c 65 2a 29 28 4c 49 53 54 29 2e 61 70 74 72  ble*)(LIST).aptr
8290: 20 3d 20 28 64 6f 75 62 6c 65 29 28 56 41 4c 29   = (double)(VAL)
82a0: 2c 09 09 09 5c 0a 09 20 20 20 28 4c 49 53 54 29  ,...\..   (LIST)
82b0: 2e 61 6e 75 6d 2b 2b 2c 09 09 09 09 09 09 5c 0a  .anum++,......\.
82c0: 09 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72 2b  .   (LIST).aptr+
82d0: 2b 2c 09 09 09 09 09 09 5c 0a 09 20 20 20 30 29  +,......\..   0)
82e0: 29 0a 0a 23 65 6e 64 69 66 0a 0a 23 69 66 20 64  )..#endif..#if d
82f0: 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34  efined(__sparc64
8300: 5f 5f 29 0a 0a 2f 2a 20 55 70 20 74 6f 20 31 36  __)../* Up to 16
8310: 20 6c 65 61 64 69 6e 67 20 66 6c 6f 61 74 20 6f   leading float o
8320: 72 20 64 6f 75 62 6c 65 20 6e 6f 6e 2d 76 61 72  r double non-var
8330: 61 72 67 73 20 61 72 67 73 20 63 61 6e 20 62 65  args args can be
8340: 20 70 61 73 73 65 64 20 69 6e 0a 20 2a 20 66 6c   passed in. * fl
8350: 6f 61 74 20 72 65 67 69 73 74 65 72 73 2c 20 62  oat registers, b
8360: 75 74 20 77 65 20 61 6c 73 6f 20 70 75 73 68 20  ut we also push 
8370: 74 68 65 6d 20 69 6e 74 6f 20 74 68 65 20 63 6f  them into the co
8380: 72 72 65 73 70 6f 6e 64 69 6e 67 20 69 6e 74 0a  rresponding int.
8390: 20 2a 20 72 65 67 69 73 74 65 72 73 20 69 6e 20   * registers in 
83a0: 63 61 73 65 20 6f 66 20 76 61 72 61 72 67 73 2e  case of varargs.
83b0: 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 61 76 5f  . */.#define av_
83c0: 66 6c 6f 61 74 28 4c 49 53 54 2c 56 41 4c 29 09  float(LIST,VAL).
83d0: 09 09 09 09 09 5c 0a 20 20 28 28 4c 49 53 54 29  .....\.  ((LIST)
83e0: 2e 61 70 74 72 20 3e 3d 20 5f 5f 61 76 5f 65 70  .aptr >= __av_ep
83f0: 74 72 28 4c 49 53 54 29 09 09 09 09 09 5c 0a 20  tr(LIST).....\. 
8400: 20 20 3f 20 2d 31 20 3a 20 28 28 28 4c 49 53 54    ? -1 : (((LIST
8410: 29 2e 61 6e 75 6d 20 3c 20 31 36 20 26 26 20 28  ).anum < 16 && (
8420: 28 4c 49 53 54 29 2e 66 61 72 67 5f 6d 61 73 6b  (LIST).farg_mask
8430: 20 7c 3d 20 28 31 20 3c 3c 20 28 4c 49 53 54 29   |= (1 << (LIST)
8440: 2e 61 6e 75 6d 29 29 29 2c 20 5c 0a 09 20 20 20  .anum))), \..   
8450: 28 2a 28 66 6c 6f 61 74 2a 29 28 4c 49 53 54 29  (*(float*)(LIST)
8460: 2e 61 70 74 72 20 3d 20 28 66 6c 6f 61 74 29 28  .aptr = (float)(
8470: 56 41 4c 29 29 2c 09 09 09 5c 0a 09 20 20 20 28  VAL)),...\..   (
8480: 4c 49 53 54 29 2e 61 6e 75 6d 2b 2b 2c 09 09 09  LIST).anum++,...
8490: 09 09 09 5c 0a 09 20 20 20 28 4c 49 53 54 29 2e  ...\..   (LIST).
84a0: 61 70 74 72 2b 2b 2c 09 09 09 09 09 09 5c 0a 09  aptr++,......\..
84b0: 20 20 20 30 29 29 0a 0a 23 64 65 66 69 6e 65 20     0))..#define 
84c0: 61 76 5f 64 6f 75 62 6c 65 28 4c 49 53 54 2c 56  av_double(LIST,V
84d0: 41 4c 29 09 09 09 09 09 09 5c 0a 20 20 28 28 4c  AL)......\.  ((L
84e0: 49 53 54 29 2e 61 70 74 72 20 3e 3d 20 5f 5f 61  IST).aptr >= __a
84f0: 76 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09 09  v_eptr(LIST)....
8500: 09 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 28 28 28  .\.   ? -1 : (((
8510: 4c 49 53 54 29 2e 61 6e 75 6d 20 3c 20 31 36 20  LIST).anum < 16 
8520: 26 26 20 28 28 4c 49 53 54 29 2e 64 61 72 67 5f  && ((LIST).darg_
8530: 6d 61 73 6b 20 7c 3d 20 28 31 20 3c 3c 20 28 4c  mask |= (1 << (L
8540: 49 53 54 29 2e 61 6e 75 6d 29 29 29 2c 20 5c 0a  IST).anum))), \.
8550: 09 20 20 20 2a 28 64 6f 75 62 6c 65 2a 29 28 4c  .   *(double*)(L
8560: 49 53 54 29 2e 61 70 74 72 20 3d 20 28 64 6f 75  IST).aptr = (dou
8570: 62 6c 65 29 28 56 41 4c 29 2c 09 09 09 5c 0a 09  ble)(VAL),...\..
8580: 20 20 20 28 4c 49 53 54 29 2e 61 6e 75 6d 2b 2b     (LIST).anum++
8590: 2c 09 09 09 09 09 09 5c 0a 09 20 20 20 28 4c 49  ,......\..   (LI
85a0: 53 54 29 2e 61 70 74 72 2b 2b 2c 09 09 09 09 09  ST).aptr++,.....
85b0: 09 5c 0a 09 20 20 20 30 29 29 0a 0a 23 65 6e 64  .\..   0))..#end
85c0: 69 66 0a 0a 23 69 66 20 64 65 66 69 6e 65 64 28  if..#if defined(
85d0: 5f 5f 61 6c 70 68 61 5f 5f 29 0a 0a 23 64 65 66  __alpha__)..#def
85e0: 69 6e 65 20 61 76 5f 64 6f 75 62 6c 65 28 4c 49  ine av_double(LI
85f0: 53 54 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a 20  ST,VAL)......\. 
8600: 20 28 2b 2b 28 4c 49 53 54 29 2e 61 70 74 72 20   (++(LIST).aptr 
8610: 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54  > __av_eptr(LIST
8620: 29 09 09 09 09 09 5c 0a 20 20 20 3f 20 2d 31 20  ).....\.   ? -1 
8630: 3a 20 28 28 28 64 6f 75 62 6c 65 2a 29 28 4c 49  : (((double*)(LI
8640: 53 54 29 2e 61 70 74 72 29 5b 2d 31 5d 20 3d 20  ST).aptr)[-1] = 
8650: 28 64 6f 75 62 6c 65 29 28 56 41 4c 29 2c 20 30  (double)(VAL), 0
8660: 29 29 0a 0a 23 64 65 66 69 6e 65 20 61 76 5f 66  ))..#define av_f
8670: 6c 6f 61 74 28 4c 49 53 54 2c 56 41 4c 29 09 09  loat(LIST,VAL)..
8680: 09 09 09 09 5c 0a 20 20 28 2b 2b 28 4c 49 53 54  ....\.  (++(LIST
8690: 29 2e 61 70 74 72 20 3e 20 5f 5f 61 76 5f 65 70  ).aptr > __av_ep
86a0: 74 72 28 4c 49 53 54 29 09 09 09 09 09 5c 0a 20  tr(LIST).....\. 
86b0: 20 20 3f 20 2d 31 09 09 09 09 09 09 09 09 09 5c    ? -1.........\
86c0: 0a 20 20 20 3a 20 28 28 28 4c 49 53 54 29 2e 61  .   : (((LIST).a
86d0: 70 74 72 20 3e 20 26 28 4c 49 53 54 29 2e 61 72  ptr > &(LIST).ar
86e0: 67 73 5b 36 5d 09 09 09 09 09 5c 0a 20 20 20 20  gs[6].....\.    
86f0: 20 20 20 3f 20 2f 2a 20 54 68 65 73 65 20 61 72     ? /* These ar
8700: 67 73 20 77 69 6c 6c 20 62 65 20 66 65 74 63 68  gs will be fetch
8710: 65 64 20 66 72 6f 6d 20 6d 65 6d 6f 72 79 20 75  ed from memory u
8720: 73 69 6e 67 20 22 6c 64 73 22 20 69 6e 73 74 72  sing "lds" instr
8730: 75 63 74 69 6f 6e 73 20 2a 2f 20 5c 0a 09 20 2f  uctions */ \.. /
8740: 2a 20 74 68 65 72 65 66 6f 72 65 20 73 74 6f 72  * therefore stor
8750: 65 20 74 68 65 6d 20 61 73 20 66 6c 6f 61 74 73  e them as floats
8760: 20 2a 2f 09 09 09 09 5c 0a 09 20 28 2a 28 66 6c   */....\.. (*(fl
8770: 6f 61 74 2a 29 28 28 4c 49 53 54 29 2e 61 70 74  oat*)((LIST).apt
8780: 72 2d 31 29 20 3d 20 28 66 6c 6f 61 74 29 28 56  r-1) = (float)(V
8790: 41 4c 29 29 09 09 09 5c 0a 20 20 20 20 20 20 20  AL))...\.       
87a0: 3a 20 2f 2a 20 54 68 65 20 66 69 72 73 74 20 36  : /* The first 6
87b0: 20 61 72 67 73 20 77 69 6c 6c 20 62 65 20 70 75   args will be pu
87c0: 74 20 69 6e 74 6f 20 72 65 67 69 73 74 65 72 73  t into registers
87d0: 20 62 79 20 22 6c 64 74 22 20 69 6e 73 74 72 75   by "ldt" instru
87e0: 63 74 69 6f 6e 73 20 2a 2f 20 5c 0a 09 20 2f 2a  ctions */ \.. /*
87f0: 20 28 73 65 65 20 61 76 63 61 6c 6c 2d 61 6c 70   (see avcall-alp
8800: 68 61 2e 63 21 29 2e 20 54 68 65 72 65 66 6f 72  ha.c!). Therefor
8810: 65 20 73 74 6f 72 65 20 74 68 65 6d 20 61 73 20  e store them as 
8820: 64 6f 75 62 6c 65 73 2e 20 2a 2f 09 5c 0a 09 20  doubles. */.\.. 
8830: 2f 2a 20 57 68 65 6e 20 76 69 65 77 65 64 20 61  /* When viewed a
8840: 73 20 66 6c 6f 61 74 73 2c 20 74 68 65 20 76 61  s floats, the va
8850: 6c 75 65 20 77 69 6c 6c 20 62 65 20 74 68 65 20  lue will be the 
8860: 63 6f 72 72 65 63 74 20 6f 6e 65 2e 20 2a 2f 5c  correct one. */\
8870: 0a 09 20 28 2a 28 64 6f 75 62 6c 65 2a 29 28 28  .. (*(double*)((
8880: 4c 49 53 54 29 2e 61 70 74 72 2d 31 29 20 3d 20  LIST).aptr-1) = 
8890: 28 64 6f 75 62 6c 65 29 28 66 6c 6f 61 74 29 28  (double)(float)(
88a0: 56 41 4c 29 29 09 09 5c 0a 20 20 20 20 20 29 2c  VAL))..\.     ),
88b0: 20 30 29 29 0a 0a 23 65 6e 64 69 66 0a 0a 23 69   0))..#endif..#i
88c0: 66 20 64 65 66 69 6e 65 64 28 5f 5f 68 70 70 61  f defined(__hppa
88d0: 5f 5f 29 0a 0a 23 64 65 66 69 6e 65 20 61 76 5f  __)..#define av_
88e0: 66 6c 6f 61 74 28 4c 49 53 54 2c 56 41 4c 29 09  float(LIST,VAL).
88f0: 09 09 09 09 09 5c 0a 20 20 28 2d 2d 28 4c 49 53  .....\.  (--(LIS
8900: 54 29 2e 61 70 74 72 20 3c 20 5f 5f 61 76 5f 65  T).aptr < __av_e
8910: 70 74 72 28 4c 49 53 54 29 09 09 09 09 09 5c 0a  ptr(LIST).....\.
8920: 20 20 20 3f 20 2d 31 20 3a 20 28 2a 28 66 6c 6f     ? -1 : (*(flo
8930: 61 74 2a 29 28 4c 49 53 54 29 2e 61 70 74 72 20  at*)(LIST).aptr 
8940: 3d 20 28 66 6c 6f 61 74 29 28 56 41 4c 29 2c 20  = (float)(VAL), 
8950: 30 29 29 0a 0a 23 64 65 66 69 6e 65 20 61 76 5f  0))..#define av_
8960: 64 6f 75 62 6c 65 28 4c 49 53 54 2c 56 41 4c 29  double(LIST,VAL)
8970: 09 09 09 09 09 09 5c 0a 20 20 28 28 28 4c 49 53  ......\.  (((LIS
8980: 54 29 2e 61 70 74 72 20 3d 20 28 5f 5f 61 76 77  T).aptr = (__avw
8990: 6f 72 64 2a 29 28 28 28 6c 6f 6e 67 29 28 4c 49  ord*)(((long)(LI
89a0: 53 54 29 2e 61 70 74 72 2d 73 69 7a 65 6f 66 28  ST).aptr-sizeof(
89b0: 64 6f 75 62 6c 65 29 29 20 26 20 2d 28 6c 6f 6e  double)) & -(lon
89c0: 67 29 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29  g)sizeof(double)
89d0: 29 29 20 5c 0a 20 20 20 20 3c 20 5f 5f 61 76 5f  )) \.    < __av_
89e0: 65 70 74 72 28 4c 49 53 54 29 09 09 09 09 09 09  eptr(LIST)......
89f0: 09 5c 0a 20 20 20 20 3f 20 2d 31 20 3a 20 28 2a  .\.    ? -1 : (*
8a00: 28 64 6f 75 62 6c 65 2a 29 28 4c 49 53 54 29 2e  (double*)(LIST).
8a10: 61 70 74 72 20 3d 20 28 64 6f 75 62 6c 65 29 28  aptr = (double)(
8a20: 56 41 4c 29 2c 20 30 29 29 0a 0a 23 65 6e 64 69  VAL), 0))..#endi
8a30: 66 0a 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f  f..#if defined(_
8a40: 5f 70 6f 77 65 72 70 63 5f 5f 29 20 26 26 20 21  _powerpc__) && !
8a50: 64 65 66 69 6e 65 64 28 5f 5f 70 6f 77 65 72 70  defined(__powerp
8a60: 63 36 34 5f 5f 29 20 26 26 20 28 64 65 66 69 6e  c64__) && (defin
8a70: 65 64 28 5f 41 49 58 29 20 7c 7c 20 28 64 65 66  ed(_AIX) || (def
8a80: 69 6e 65 64 28 5f 5f 4d 41 43 48 5f 5f 29 20 26  ined(__MACH__) &
8a90: 26 20 64 65 66 69 6e 65 64 28 5f 5f 41 50 50 4c  & defined(__APPL
8aa0: 45 5f 5f 29 29 29 0a 0a 2f 2a 20 55 70 20 74 6f  E__)))../* Up to
8ab0: 20 31 33 20 66 6c 6f 61 74 20 6f 72 20 64 6f 75   13 float or dou
8ac0: 62 6c 65 20 6e 6f 6e 2d 76 61 72 61 72 67 73 20  ble non-varargs 
8ad0: 61 72 67 73 20 63 61 6e 20 62 65 20 70 61 73 73  args can be pass
8ae0: 65 64 20 69 6e 0a 20 2a 20 66 6c 6f 61 74 20 72  ed in. * float r
8af0: 65 67 69 73 74 65 72 73 2c 20 62 75 74 20 77 65  egisters, but we
8b00: 20 61 6c 73 6f 20 70 75 73 68 20 74 68 65 6d 20   also push them 
8b10: 69 6e 74 6f 20 74 68 65 20 63 6f 72 72 65 73 70  into the corresp
8b20: 6f 6e 64 69 6e 67 20 69 6e 74 0a 20 2a 20 72 65  onding int. * re
8b30: 67 69 73 74 65 72 73 20 69 6e 20 63 61 73 65 20  gisters in case 
8b40: 6f 66 20 76 61 72 61 72 67 73 2e 0a 20 2a 2f 0a  of varargs.. */.
8b50: 0a 23 64 65 66 69 6e 65 20 61 76 5f 66 6c 6f 61  .#define av_floa
8b60: 74 28 4c 49 53 54 2c 56 41 4c 29 09 09 09 09 09  t(LIST,VAL).....
8b70: 09 5c 0a 20 20 28 2b 2b 28 4c 49 53 54 29 2e 61  .\.  (++(LIST).a
8b80: 70 74 72 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28  ptr > __av_eptr(
8b90: 4c 49 53 54 29 09 09 09 09 09 5c 0a 20 20 20 3f  LIST).....\.   ?
8ba0: 20 2d 31 20 3a 20 28 28 28 66 6c 6f 61 74 2a 29   -1 : (((float*)
8bb0: 28 4c 49 53 54 29 2e 61 70 74 72 29 5b 2d 31 5d  (LIST).aptr)[-1]
8bc0: 20 3d 20 28 66 6c 6f 61 74 29 28 56 41 4c 29 2c   = (float)(VAL),
8bd0: 09 09 09 5c 0a 09 20 20 20 28 4c 49 53 54 29 2e  ...\..   (LIST).
8be0: 66 61 70 74 72 20 3c 20 26 28 4c 49 53 54 29 2e  faptr < &(LIST).
8bf0: 66 61 72 67 73 5b 31 33 5d 20 26 26 09 09 09 09  fargs[13] &&....
8c00: 5c 0a 09 09 28 2a 28 4c 49 53 54 29 2e 66 61 70  \...(*(LIST).fap
8c10: 74 72 2b 2b 20 3d 20 28 64 6f 75 62 6c 65 29 28  tr++ = (double)(
8c20: 66 6c 6f 61 74 29 28 56 41 4c 29 29 2c 09 09 5c  float)(VAL)),..\
8c30: 0a 09 20 20 20 30 29 29 0a 0a 23 64 65 66 69 6e  ..   0))..#defin
8c40: 65 20 61 76 5f 64 6f 75 62 6c 65 28 4c 49 53 54  e av_double(LIST
8c50: 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a 20 20 20  ,VAL)......\.   
8c60: 28 28 28 4c 49 53 54 29 2e 61 70 74 72 20 2b 3d  (((LIST).aptr +=
8c70: 20 32 29 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28   2) > __av_eptr(
8c80: 4c 49 53 54 29 09 09 09 09 5c 0a 20 20 20 20 3f  LIST)....\.    ?
8c90: 20 2d 31 20 3a 09 09 09 09 09 09 09 09 5c 0a 20   -1 :........\. 
8ca0: 20 20 20 28 28 4c 49 53 54 29 2e 74 6d 70 2e 5f     ((LIST).tmp._
8cb0: 64 6f 75 62 6c 65 20 3d 20 28 64 6f 75 62 6c 65  double = (double
8cc0: 29 28 56 41 4c 29 2c 09 09 09 09 5c 0a 20 20 20  )(VAL),....\.   
8cd0: 20 20 28 4c 49 53 54 29 2e 61 70 74 72 5b 2d 32    (LIST).aptr[-2
8ce0: 5d 20 3d 20 28 4c 49 53 54 29 2e 74 6d 70 2e 77  ] = (LIST).tmp.w
8cf0: 6f 72 64 73 5b 30 5d 2c 09 09 09 09 5c 0a 20 20  ords[0],....\.  
8d00: 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72 5b 2d     (LIST).aptr[-
8d10: 31 5d 20 3d 20 28 4c 49 53 54 29 2e 74 6d 70 2e  1] = (LIST).tmp.
8d20: 77 6f 72 64 73 5b 31 5d 2c 09 09 09 09 5c 0a 20  words[1],....\. 
8d30: 20 20 20 20 28 4c 49 53 54 29 2e 66 61 70 74 72      (LIST).faptr
8d40: 20 3c 20 26 28 4c 49 53 54 29 2e 66 61 72 67 73   < &(LIST).fargs
8d50: 5b 31 33 5d 20 26 26 09 09 09 09 5c 0a 09 28 2a  [13] &&....\..(*
8d60: 28 4c 49 53 54 29 2e 66 61 70 74 72 2b 2b 20 3d  (LIST).faptr++ =
8d70: 20 28 4c 49 53 54 29 2e 74 6d 70 2e 5f 64 6f 75   (LIST).tmp._dou
8d80: 62 6c 65 29 2c 09 09 09 09 5c 0a 20 20 20 20 20  ble),....\.     
8d90: 30 29 29 0a 0a 23 65 6e 64 69 66 0a 0a 23 69 66  0))..#endif..#if
8da0: 20 64 65 66 69 6e 65 64 28 5f 5f 70 6f 77 65 72   defined(__power
8db0: 70 63 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65  pc__) && !define
8dc0: 64 28 5f 5f 70 6f 77 65 72 70 63 36 34 5f 5f 29  d(__powerpc64__)
8dd0: 20 26 26 20 21 28 64 65 66 69 6e 65 64 28 5f 41   && !(defined(_A
8de0: 49 58 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28  IX) || (defined(
8df0: 5f 5f 4d 41 43 48 5f 5f 29 20 26 26 20 64 65 66  __MACH__) && def
8e00: 69 6e 65 64 28 5f 5f 41 50 50 4c 45 5f 5f 29 29  ined(__APPLE__))
8e10: 29 0a 0a 2f 2a 20 55 70 20 74 6f 20 38 20 66 6c  )../* Up to 8 fl
8e20: 6f 61 74 20 6f 72 20 64 6f 75 62 6c 65 20 6e 6f  oat or double no
8e30: 6e 2d 76 61 72 61 72 67 73 20 61 72 67 73 20 63  n-varargs args c
8e40: 61 6e 20 62 65 20 70 61 73 73 65 64 20 69 6e 0a  an be passed in.
8e50: 20 2a 20 66 6c 6f 61 74 20 72 65 67 69 73 74 65   * float registe
8e60: 72 73 2c 20 77 69 74 68 6f 75 74 20 6f 63 63 75  rs, without occu
8e70: 70 79 69 6e 67 20 73 70 61 63 65 20 69 6e 20 74  pying space in t
8e80: 68 65 20 67 65 6e 65 72 61 6c 20 72 65 67 69 73  he general regis
8e90: 74 65 72 73 2e 0a 20 2a 2f 0a 0a 23 64 65 66 69  ters.. */..#defi
8ea0: 6e 65 20 61 76 5f 66 6c 6f 61 74 28 4c 49 53 54  ne av_float(LIST
8eb0: 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a 20 20 28  ,VAL)......\.  (
8ec0: 28 4c 49 53 54 29 2e 66 61 70 74 72 20 3c 20 26  (LIST).faptr < &
8ed0: 28 4c 49 53 54 29 2e 66 61 72 67 73 5b 38 5d 09  (LIST).fargs[8].
8ee0: 09 09 09 09 5c 0a 20 20 20 3f 20 28 28 2a 28 4c  ....\.   ? ((*(L
8ef0: 49 53 54 29 2e 66 61 70 74 72 2b 2b 20 3d 20 28  IST).faptr++ = (
8f00: 64 6f 75 62 6c 65 29 28 66 6c 6f 61 74 29 28 56  double)(float)(V
8f10: 41 4c 29 29 2c 20 30 29 09 09 09 5c 0a 20 20 20  AL)), 0)...\.   
8f20: 3a 20 28 2b 2b 28 4c 49 53 54 29 2e 61 70 74 72  : (++(LIST).aptr
8f30: 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53   > __av_eptr(LIS
8f40: 54 29 09 09 09 09 09 5c 0a 20 20 20 20 20 20 3f  T).....\.      ?
8f50: 20 2d 31 20 3a 20 28 28 28 66 6c 6f 61 74 2a 29   -1 : (((float*)
8f60: 28 4c 49 53 54 29 2e 61 70 74 72 29 5b 2d 31 5d  (LIST).aptr)[-1]
8f70: 20 3d 20 28 66 6c 6f 61 74 29 28 56 41 4c 29 2c   = (float)(VAL),
8f80: 20 30 29 29 29 0a 0a 23 64 65 66 69 6e 65 20 61   0)))..#define a
8f90: 76 5f 64 6f 75 62 6c 65 28 4c 49 53 54 2c 56 41  v_double(LIST,VA
8fa0: 4c 29 09 09 09 09 09 09 5c 0a 20 20 28 28 4c 49  L)......\.  ((LI
8fb0: 53 54 29 2e 66 61 70 74 72 20 3c 20 26 28 4c 49  ST).faptr < &(LI
8fc0: 53 54 29 2e 66 61 72 67 73 5b 38 5d 09 09 09 09  ST).fargs[8]....
8fd0: 09 5c 0a 20 20 20 3f 20 28 28 2a 28 4c 49 53 54  .\.   ? ((*(LIST
8fe0: 29 2e 66 61 70 74 72 2b 2b 20 3d 20 28 64 6f 75  ).faptr++ = (dou
8ff0: 62 6c 65 29 28 56 41 4c 29 29 2c 20 30 29 09 09  ble)(VAL)), 0)..
9000: 09 09 5c 0a 20 20 20 3a 20 28 28 28 4c 49 53 54  ..\.   : (((LIST
9010: 29 2e 61 70 74 72 20 2b 3d 20 32 29 20 3e 20 5f  ).aptr += 2) > _
9020: 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29 09 09  _av_eptr(LIST)..
9030: 09 09 5c 0a 20 20 20 20 20 20 3f 20 2d 31 20 3a  ..\.      ? -1 :
9040: 09 09 09 09 09 09 09 09 5c 0a 20 20 20 20 20 20  ........\.      
9050: 28 28 4c 49 53 54 29 2e 74 6d 70 2e 5f 64 6f 75  ((LIST).tmp._dou
9060: 62 6c 65 20 3d 20 28 64 6f 75 62 6c 65 29 28 56  ble = (double)(V
9070: 41 4c 29 2c 09 09 09 09 5c 0a 20 20 20 20 20 20  AL),....\.      
9080: 20 28 4c 49 53 54 29 2e 61 70 74 72 5b 2d 32 5d   (LIST).aptr[-2]
9090: 20 3d 20 28 4c 49 53 54 29 2e 74 6d 70 2e 77 6f   = (LIST).tmp.wo
90a0: 72 64 73 5b 30 5d 2c 09 09 09 09 5c 0a 20 20 20  rds[0],....\.   
90b0: 20 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72 5b      (LIST).aptr[
90c0: 2d 31 5d 20 3d 20 28 4c 49 53 54 29 2e 74 6d 70  -1] = (LIST).tmp
90d0: 2e 77 6f 72 64 73 5b 31 5d 2c 09 09 09 09 5c 0a  .words[1],....\.
90e0: 20 20 20 20 20 20 20 30 29 29 29 0a 0a 23 65 6e         0)))..#en
90f0: 64 69 66 0a 0a 23 69 66 20 64 65 66 69 6e 65 64  dif..#if defined
9100: 28 5f 5f 70 6f 77 65 72 70 63 36 34 5f 5f 29 0a  (__powerpc64__).
9110: 0a 2f 2a 20 55 70 20 74 6f 20 31 33 20 66 6c 6f  ./* Up to 13 flo
9120: 61 74 20 6f 72 20 64 6f 75 62 6c 65 20 6e 6f 6e  at or double non
9130: 2d 76 61 72 61 72 67 73 20 61 72 67 73 20 63 61  -varargs args ca
9140: 6e 20 62 65 20 70 61 73 73 65 64 20 69 6e 0a 20  n be passed in. 
9150: 2a 20 66 6c 6f 61 74 20 72 65 67 69 73 74 65 72  * float register
9160: 73 2c 20 62 75 74 20 77 65 20 61 6c 73 6f 20 70  s, but we also p
9170: 75 73 68 20 74 68 65 6d 20 69 6e 74 6f 20 74 68  ush them into th
9180: 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20  e corresponding 
9190: 69 6e 74 0a 20 2a 20 72 65 67 69 73 74 65 72 73  int. * registers
91a0: 20 69 6e 20 63 61 73 65 20 6f 66 20 76 61 72 61   in case of vara
91b0: 72 67 73 2e 0a 20 2a 2f 0a 0a 23 64 65 66 69 6e  rgs.. */..#defin
91c0: 65 20 61 76 5f 66 6c 6f 61 74 28 4c 49 53 54 2c  e av_float(LIST,
91d0: 56 41 4c 29 09 09 09 09 09 09 5c 0a 20 20 28 2b  VAL)......\.  (+
91e0: 2b 28 4c 49 53 54 29 2e 61 70 74 72 20 3e 20 5f  +(LIST).aptr > _
91f0: 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29 09 09  _av_eptr(LIST)..
9200: 09 09 09 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 28  ...\.   ? -1 : (
9210: 28 28 66 6c 6f 61 74 2a 29 28 4c 49 53 54 29 2e  ((float*)(LIST).
9220: 61 70 74 72 29 5b 2d 31 5d 20 3d 20 28 66 6c 6f  aptr)[-1] = (flo
9230: 61 74 29 28 56 41 4c 29 2c 09 09 09 5c 0a 09 20  at)(VAL),...\.. 
9240: 20 20 28 4c 49 53 54 29 2e 66 61 70 74 72 20 3c    (LIST).faptr <
9250: 20 26 28 4c 49 53 54 29 2e 66 61 72 67 73 5b 31   &(LIST).fargs[1
9260: 33 5d 20 26 26 09 09 09 09 5c 0a 09 09 28 2a 28  3] &&....\...(*(
9270: 4c 49 53 54 29 2e 66 61 70 74 72 2b 2b 20 3d 20  LIST).faptr++ = 
9280: 28 64 6f 75 62 6c 65 29 28 66 6c 6f 61 74 29 28  (double)(float)(
9290: 56 41 4c 29 29 2c 09 09 5c 0a 09 20 20 20 30 29  VAL)),..\..   0)
92a0: 29 0a 0a 23 64 65 66 69 6e 65 20 61 76 5f 64 6f  )..#define av_do
92b0: 75 62 6c 65 28 4c 49 53 54 2c 56 41 4c 29 09 09  uble(LIST,VAL)..
92c0: 09 09 09 09 5c 0a 20 20 28 2b 2b 28 4c 49 53 54  ....\.  (++(LIST
92d0: 29 2e 61 70 74 72 20 3e 20 5f 5f 61 76 5f 65 70  ).aptr > __av_ep
92e0: 74 72 28 4c 49 53 54 29 09 09 09 09 09 5c 0a 20  tr(LIST).....\. 
92f0: 20 20 3f 20 2d 31 20 3a 20 28 28 28 64 6f 75 62    ? -1 : (((doub
9300: 6c 65 2a 29 28 4c 49 53 54 29 2e 61 70 74 72 29  le*)(LIST).aptr)
9310: 5b 2d 31 5d 20 3d 20 28 64 6f 75 62 6c 65 29 28  [-1] = (double)(
9320: 56 41 4c 29 2c 09 09 09 5c 0a 09 20 20 20 28 4c  VAL),...\..   (L
9330: 49 53 54 29 2e 66 61 70 74 72 20 3c 20 26 28 4c  IST).faptr < &(L
9340: 49 53 54 29 2e 66 61 72 67 73 5b 31 33 5d 20 26  IST).fargs[13] &
9350: 26 09 09 09 09 5c 0a 09 09 28 2a 28 4c 49 53 54  &....\...(*(LIST
9360: 29 2e 66 61 70 74 72 2b 2b 20 3d 20 28 64 6f 75  ).faptr++ = (dou
9370: 62 6c 65 29 28 56 41 4c 29 29 2c 09 09 09 5c 0a  ble)(VAL)),...\.
9380: 09 20 20 20 30 29 29 0a 0a 23 65 6e 64 69 66 0a  .   0))..#endif.
9390: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 73  .#if defined(__s
93a0: 33 39 30 5f 5f 29 0a 0a 2f 2a 20 55 70 20 74 6f  390__)../* Up to
93b0: 20 32 20 66 6c 6f 61 74 20 6f 72 20 64 6f 75 62   2 float or doub
93c0: 6c 65 20 6e 6f 6e 2d 76 61 72 61 72 67 73 20 61  le non-varargs a
93d0: 72 67 73 20 63 61 6e 20 62 65 20 70 61 73 73 65  rgs can be passe
93e0: 64 20 69 6e 0a 20 2a 20 66 6c 6f 61 74 20 72 65  d in. * float re
93f0: 67 69 73 74 65 72 73 2c 20 77 69 74 68 6f 75 74  gisters, without
9400: 20 6f 63 63 75 70 79 69 6e 67 20 73 70 61 63 65   occupying space
9410: 20 69 6e 20 74 68 65 20 67 65 6e 65 72 61 6c 20   in the general 
9420: 72 65 67 69 73 74 65 72 73 2e 0a 20 2a 2f 0a 0a  registers.. */..
9430: 23 64 65 66 69 6e 65 20 61 76 5f 66 6c 6f 61 74  #define av_float
9440: 28 4c 49 53 54 2c 56 41 4c 29 09 09 09 09 09 09  (LIST,VAL)......
9450: 5c 0a 20 20 28 28 4c 49 53 54 29 2e 66 61 70 74  \.  ((LIST).fapt
9460: 72 20 3c 20 26 28 4c 49 53 54 29 2e 66 61 72 67  r < &(LIST).farg
9470: 73 5b 32 5d 09 09 09 09 09 5c 0a 20 20 20 3f 20  s[2].....\.   ? 
9480: 28 4c 49 53 54 29 2e 64 61 70 74 72 2b 2b 2c 20  (LIST).daptr++, 
9490: 2a 28 4c 49 53 54 29 2e 66 61 72 67 73 75 73 65  *(LIST).fargsuse
94a0: 64 70 74 72 2b 2b 20 3d 20 31 2c 20 2a 28 4c 49  dptr++ = 1, *(LI
94b0: 53 54 29 2e 64 61 72 67 73 75 73 65 64 70 74 72  ST).dargsusedptr
94c0: 2b 2b 20 3d 20 30 2c 20 28 28 2a 28 4c 49 53 54  ++ = 0, ((*(LIST
94d0: 29 2e 66 61 70 74 72 2b 2b 20 3d 20 28 66 6c 6f  ).faptr++ = (flo
94e0: 61 74 29 28 56 41 4c 29 29 2c 20 30 29 09 09 5c  at)(VAL)), 0)..\
94f0: 0a 20 20 20 3a 20 28 2b 2b 28 4c 49 53 54 29 2e  .   : (++(LIST).
9500: 61 70 74 72 20 3e 20 5f 5f 61 76 5f 65 70 74 72  aptr > __av_eptr
9510: 28 4c 49 53 54 29 09 09 09 09 09 5c 0a 20 20 20  (LIST).....\.   
9520: 20 20 20 3f 20 2d 31 20 3a 20 28 28 4c 49 53 54     ? -1 : ((LIST
9530: 29 2e 66 61 72 67 77 6f 72 64 73 2b 2b 2c 20 28  ).fargwords++, (
9540: 28 66 6c 6f 61 74 2a 29 28 4c 49 53 54 29 2e 61  (float*)(LIST).a
9550: 70 74 72 29 5b 2d 31 5d 20 3d 20 28 66 6c 6f 61  ptr)[-1] = (floa
9560: 74 29 28 56 41 4c 29 2c 20 30 29 29 29 0a 0a 23  t)(VAL), 0)))..#
9570: 64 65 66 69 6e 65 20 61 76 5f 64 6f 75 62 6c 65  define av_double
9580: 28 4c 49 53 54 2c 56 41 4c 29 09 09 09 09 09 09  (LIST,VAL)......
9590: 5c 0a 20 20 28 28 4c 49 53 54 29 2e 64 61 70 74  \.  ((LIST).dapt
95a0: 72 20 3c 20 26 28 4c 49 53 54 29 2e 64 61 72 67  r < &(LIST).darg
95b0: 73 5b 32 5d 09 09 09 09 09 5c 0a 20 20 20 3f 20  s[2].....\.   ? 
95c0: 28 4c 49 53 54 29 2e 66 61 70 74 72 2b 2b 2c 20  (LIST).faptr++, 
95d0: 2a 28 4c 49 53 54 29 2e 64 61 72 67 73 75 73 65  *(LIST).dargsuse
95e0: 64 70 74 72 2b 2b 20 3d 20 31 2c 20 2a 28 4c 49  dptr++ = 1, *(LI
95f0: 53 54 29 2e 66 61 72 67 73 75 73 65 64 70 74 72  ST).fargsusedptr
9600: 2b 2b 20 3d 20 30 2c 20 28 28 2a 28 4c 49 53 54  ++ = 0, ((*(LIST
9610: 29 2e 64 61 70 74 72 2b 2b 20 3d 20 28 64 6f 75  ).daptr++ = (dou
9620: 62 6c 65 29 28 56 41 4c 29 29 2c 20 30 29 09 09  ble)(VAL)), 0)..
9630: 5c 0a 20 20 20 3a 20 28 28 28 4c 49 53 54 29 2e  \.   : (((LIST).
9640: 61 70 74 72 20 2b 3d 20 32 29 20 3e 20 5f 5f 61  aptr += 2) > __a
9650: 76 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09 09  v_eptr(LIST)....
9660: 5c 0a 20 20 20 20 20 20 3f 20 2d 31 20 3a 09 09  \.      ? -1 :..
9670: 09 09 09 09 09 09 5c 0a 20 20 20 20 20 20 28 28  ......\.      ((
9680: 4c 49 53 54 29 2e 66 61 72 67 77 6f 72 64 73 2b  LIST).fargwords+
9690: 3d 32 2c 20 28 4c 49 53 54 29 2e 74 6d 70 2e 5f  =2, (LIST).tmp._
96a0: 64 6f 75 62 6c 65 20 3d 20 28 64 6f 75 62 6c 65  double = (double
96b0: 29 28 56 41 4c 29 2c 09 09 09 5c 0a 20 20 20 20  )(VAL),...\.    
96c0: 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72 5b 2d     (LIST).aptr[-
96d0: 32 5d 20 3d 20 28 4c 49 53 54 29 2e 74 6d 70 2e  2] = (LIST).tmp.
96e0: 77 6f 72 64 73 5b 30 5d 2c 09 09 09 09 5c 0a 20  words[0],....\. 
96f0: 20 20 20 20 20 20 28 4c 49 53 54 29 2e 61 70 74        (LIST).apt
9700: 72 5b 2d 31 5d 20 3d 20 28 4c 49 53 54 29 2e 74  r[-1] = (LIST).t
9710: 6d 70 2e 77 6f 72 64 73 5b 31 5d 2c 09 09 09 09  mp.words[1],....
9720: 5c 0a 20 20 20 20 20 20 20 30 29 29 29 0a 0a 23  \.       0)))..#
9730: 65 6e 64 69 66 0a 0a 23 69 66 20 64 65 66 69 6e  endif..#if defin
9740: 65 64 28 5f 5f 6d 38 38 6b 5f 5f 29 0a 0a 23 64  ed(__m88k__)..#d
9750: 65 66 69 6e 65 20 61 76 5f 66 6c 6f 61 74 28 4c  efine av_float(L
9760: 49 53 54 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a  IST,VAL)......\.
9770: 20 20 28 2b 2b 28 4c 49 53 54 29 2e 61 70 74 72    (++(LIST).aptr
9780: 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53   > __av_eptr(LIS
9790: 54 29 09 09 09 09 09 5c 0a 20 20 20 3f 20 2d 31  T).....\.   ? -1
97a0: 20 3a 20 28 28 28 66 6c 6f 61 74 2a 29 28 4c 49   : (((float*)(LI
97b0: 53 54 29 2e 61 70 74 72 29 5b 2d 31 5d 20 3d 20  ST).aptr)[-1] = 
97c0: 28 66 6c 6f 61 74 29 28 56 41 4c 29 2c 20 30 29  (float)(VAL), 0)
97d0: 29 0a 0a 23 64 65 66 69 6e 65 20 61 76 5f 64 6f  )..#define av_do
97e0: 75 62 6c 65 28 4c 49 53 54 2c 56 41 4c 29 09 09  uble(LIST,VAL)..
97f0: 09 09 09 09 5c 0a 20 20 20 28 28 28 4c 49 53 54  ....\.   (((LIST
9800: 29 2e 61 70 74 72 20 3d 20 28 5f 5f 61 76 77 6f  ).aptr = (__avwo
9810: 72 64 2a 29 28 28 28 6c 6f 6e 67 29 28 4c 49 53  rd*)(((long)(LIS
9820: 54 29 2e 61 70 74 72 2b 73 69 7a 65 6f 66 28 64  T).aptr+sizeof(d
9830: 6f 75 62 6c 65 29 2b 73 69 7a 65 6f 66 28 64 6f  ouble)+sizeof(do
9840: 75 62 6c 65 29 2d 31 29 20 26 20 2d 28 6c 6f 6e  uble)-1) & -(lon
9850: 67 29 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29  g)sizeof(double)
9860: 29 29 20 5c 0a 20 20 20 20 3e 20 5f 5f 61 76 5f  )) \.    > __av_
9870: 65 70 74 72 28 4c 49 53 54 29 09 09 09 09 09 09  eptr(LIST)......
9880: 09 5c 0a 20 20 20 20 3f 20 2d 31 20 3a 20 28 28  .\.    ? -1 : ((
9890: 28 64 6f 75 62 6c 65 2a 29 28 4c 49 53 54 29 2e  (double*)(LIST).
98a0: 61 70 74 72 29 5b 2d 31 5d 20 3d 20 28 64 6f 75  aptr)[-1] = (dou
98b0: 62 6c 65 29 28 56 41 4c 29 2c 20 30 29 29 0a 0a  ble)(VAL), 0))..
98c0: 23 65 6e 64 69 66 0a 0a 23 69 66 20 64 65 66 69  #endif..#if defi
98d0: 6e 65 64 28 5f 5f 69 61 36 34 5f 5f 29 0a 0a 2f  ned(__ia64__)../
98e0: 2a 20 55 70 20 74 6f 20 38 20 6c 65 61 64 69 6e  * Up to 8 leadin
98f0: 67 20 66 6c 6f 61 74 20 6f 72 20 64 6f 75 62 6c  g float or doubl
9900: 65 20 6e 6f 6e 2d 76 61 72 61 72 67 73 20 61 72  e non-varargs ar
9910: 67 73 20 63 61 6e 20 62 65 20 70 61 73 73 65 64  gs can be passed
9920: 20 69 6e 0a 20 2a 20 66 6c 6f 61 74 20 72 65 67   in. * float reg
9930: 69 73 74 65 72 73 2c 20 62 75 74 20 77 65 20 61  isters, but we a
9940: 6c 73 6f 20 70 75 73 68 20 74 68 65 6d 20 69 6e  lso push them in
9950: 74 6f 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e  to the correspon
9960: 64 69 6e 67 20 69 6e 74 0a 20 2a 20 72 65 67 69  ding int. * regi
9970: 73 74 65 72 73 20 69 6e 20 63 61 73 65 20 6f 66  sters in case of
9980: 20 76 61 72 61 72 67 73 2e 0a 20 2a 2f 0a 23 64   varargs.. */.#d
9990: 65 66 69 6e 65 20 61 76 5f 66 6c 6f 61 74 28 4c  efine av_float(L
99a0: 49 53 54 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a  IST,VAL)......\.
99b0: 20 20 28 28 4c 49 53 54 29 2e 61 70 74 72 20 3e    ((LIST).aptr >
99c0: 3d 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54  = __av_eptr(LIST
99d0: 29 09 09 09 09 09 5c 0a 20 20 20 3f 20 2d 31 20  ).....\.   ? -1 
99e0: 3a 20 28 28 2a 28 66 6c 6f 61 74 2a 29 28 4c 49  : ((*(float*)(LI
99f0: 53 54 29 2e 61 70 74 72 20 3d 20 28 66 6c 6f 61  ST).aptr = (floa
9a00: 74 29 28 56 41 4c 29 29 2c 09 09 09 5c 0a 09 20  t)(VAL)),...\.. 
9a10: 20 20 28 28 4c 49 53 54 29 2e 66 61 70 74 72 20    ((LIST).faptr 
9a20: 3c 20 26 28 4c 49 53 54 29 2e 66 61 72 67 73 5b  < &(LIST).fargs[
9a30: 38 5d 20 26 26 20 28 2a 28 4c 49 53 54 29 2e 66  8] && (*(LIST).f
9a40: 61 70 74 72 20 3d 20 2a 28 66 6c 6f 61 74 2a 29  aptr = *(float*)
9a50: 28 4c 49 53 54 29 2e 61 70 74 72 2c 20 28 4c 49  (LIST).aptr, (LI
9a60: 53 54 29 2e 66 61 70 74 72 2b 2b 29 29 2c 20 5c  ST).faptr++)), \
9a70: 0a 09 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72  ..   (LIST).aptr
9a80: 2b 2b 2c 09 09 09 09 09 09 5c 0a 09 20 20 20 30  ++,......\..   0
9a90: 29 29 0a 0a 23 64 65 66 69 6e 65 20 61 76 5f 64  ))..#define av_d
9aa0: 6f 75 62 6c 65 28 4c 49 53 54 2c 56 41 4c 29 09  ouble(LIST,VAL).
9ab0: 09 09 09 09 09 5c 0a 20 20 28 28 4c 49 53 54 29  .....\.  ((LIST)
9ac0: 2e 61 70 74 72 20 3e 3d 20 5f 5f 61 76 5f 65 70  .aptr >= __av_ep
9ad0: 74 72 28 4c 49 53 54 29 09 09 09 09 09 5c 0a 20  tr(LIST).....\. 
9ae0: 20 20 3f 20 2d 31 20 3a 20 28 2a 28 64 6f 75 62    ? -1 : (*(doub
9af0: 6c 65 2a 29 28 4c 49 53 54 29 2e 61 70 74 72 20  le*)(LIST).aptr 
9b00: 3d 20 28 64 6f 75 62 6c 65 29 28 56 41 4c 29 2c  = (double)(VAL),
9b10: 09 09 09 5c 0a 09 20 20 20 28 28 4c 49 53 54 29  ...\..   ((LIST)
9b20: 2e 66 61 70 74 72 20 3c 20 26 28 4c 49 53 54 29  .faptr < &(LIST)
9b30: 2e 66 61 72 67 73 5b 38 5d 20 26 26 20 28 2a 28  .fargs[8] && (*(
9b40: 4c 49 53 54 29 2e 66 61 70 74 72 20 3d 20 2a 28  LIST).faptr = *(
9b50: 64 6f 75 62 6c 65 2a 29 28 4c 49 53 54 29 2e 61  double*)(LIST).a
9b60: 70 74 72 2c 20 28 4c 49 53 54 29 2e 66 61 70 74  ptr, (LIST).fapt
9b70: 72 2b 2b 29 29 2c 20 5c 0a 09 20 20 20 28 4c 49  r++)), \..   (LI
9b80: 53 54 29 2e 61 70 74 72 2b 2b 2c 09 09 09 09 09  ST).aptr++,.....
9b90: 09 5c 0a 09 20 20 20 30 29 29 0a 0a 23 65 6e 64  .\..   0))..#end
9ba0: 69 66 0a 0a 23 69 66 20 64 65 66 69 6e 65 64 28  if..#if defined(
9bb0: 5f 5f 78 38 36 5f 36 34 5f 5f 29 0a 0a 2f 2a 20  __x86_64__)../* 
9bc0: 55 70 20 74 6f 20 38 20 6c 65 61 64 69 6e 67 20  Up to 8 leading 
9bd0: 66 6c 6f 61 74 20 6f 72 20 64 6f 75 62 6c 65 20  float or double 
9be0: 61 72 67 73 20 63 61 6e 20 62 65 20 70 61 73 73  args can be pass
9bf0: 65 64 20 69 6e 20 66 6c 6f 61 74 20 72 65 67 69  ed in float regi
9c00: 73 74 65 72 73 2e 0a 20 2a 2f 0a 23 64 65 66 69  sters.. */.#defi
9c10: 6e 65 20 61 76 5f 66 6c 6f 61 74 28 4c 49 53 54  ne av_float(LIST
9c20: 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a 20 20 28  ,VAL)......\.  (
9c30: 28 4c 49 53 54 29 2e 66 61 70 74 72 20 3c 20 26  (LIST).faptr < &
9c40: 28 4c 49 53 54 29 2e 66 61 72 67 73 5b 38 5d 09  (LIST).fargs[8].
9c50: 09 09 09 09 5c 0a 20 20 20 3f 20 28 2a 28 4c 49  ....\.   ? (*(LI
9c60: 53 54 29 2e 66 61 70 74 72 20 3d 20 30 2e 30 2c  ST).faptr = 0.0,
9c70: 20 2a 28 66 6c 6f 61 74 2a 29 28 4c 49 53 54 29   *(float*)(LIST)
9c80: 2e 66 61 70 74 72 20 3d 20 28 66 6c 6f 61 74 29  .faptr = (float)
9c90: 28 56 41 4c 29 2c 09 5c 0a 20 20 20 20 20 20 28  (VAL),.\.      (
9ca0: 4c 49 53 54 29 2e 66 61 70 74 72 2b 2b 2c 09 09  LIST).faptr++,..
9cb0: 09 09 09 09 09 5c 0a 20 20 20 20 20 20 30 29 09  .....\.      0).
9cc0: 09 09 09 09 09 09 09 5c 0a 20 20 20 3a 20 28 28  .......\.   : ((
9cd0: 4c 49 53 54 29 2e 61 70 74 72 20 3e 3d 20 5f 5f  LIST).aptr >= __
9ce0: 61 76 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09  av_eptr(LIST)...
9cf0: 09 09 5c 0a 20 20 20 20 20 20 3f 20 2d 31 20 3a  ..\.      ? -1 :
9d00: 20 28 28 2a 28 66 6c 6f 61 74 2a 29 28 4c 49 53   ((*(float*)(LIS
9d10: 54 29 2e 61 70 74 72 20 3d 20 28 66 6c 6f 61 74  T).aptr = (float
9d20: 29 28 56 41 4c 29 29 2c 09 09 09 5c 0a 09 20 20  )(VAL)),...\..  
9d30: 20 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72 2b      (LIST).aptr+
9d40: 2b 2c 09 09 09 09 09 09 5c 0a 09 20 20 20 20 20  +,......\..     
9d50: 20 30 29 29 29 0a 0a 23 64 65 66 69 6e 65 20 61   0)))..#define a
9d60: 76 5f 64 6f 75 62 6c 65 28 4c 49 53 54 2c 56 41  v_double(LIST,VA
9d70: 4c 29 09 09 09 09 09 09 5c 0a 20 20 28 28 4c 49  L)......\.  ((LI
9d80: 53 54 29 2e 66 61 70 74 72 20 3c 20 26 28 4c 49  ST).faptr < &(LI
9d90: 53 54 29 2e 66 61 72 67 73 5b 38 5d 09 09 09 09  ST).fargs[8]....
9da0: 09 5c 0a 20 20 20 3f 20 28 2a 28 4c 49 53 54 29  .\.   ? (*(LIST)
9db0: 2e 66 61 70 74 72 20 3d 20 28 64 6f 75 62 6c 65  .faptr = (double
9dc0: 29 28 56 41 4c 29 2c 09 09 09 09 09 5c 0a 20 20  )(VAL),.....\.  
9dd0: 20 20 20 20 28 4c 49 53 54 29 2e 66 61 70 74 72      (LIST).faptr
9de0: 2b 2b 2c 09 09 09 09 09 09 09 5c 0a 20 20 20 20  ++,.......\.    
9df0: 20 20 30 29 09 09 09 09 09 09 09 09 5c 0a 20 20    0)........\.  
9e00: 20 3a 20 28 28 4c 49 53 54 29 2e 61 70 74 72 20   : ((LIST).aptr 
9e10: 3e 3d 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53  >= __av_eptr(LIS
9e20: 54 29 09 09 09 09 09 5c 0a 20 20 20 20 20 20 3f  T).....\.      ?
9e30: 20 2d 31 20 3a 20 28 28 2a 28 64 6f 75 62 6c 65   -1 : ((*(double
9e40: 2a 29 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20  *)(LIST).aptr = 
9e50: 28 64 6f 75 62 6c 65 29 28 56 41 4c 29 29 2c 09  (double)(VAL)),.
9e60: 09 09 5c 0a 09 20 20 20 20 20 20 28 4c 49 53 54  ..\..      (LIST
9e70: 29 2e 61 70 74 72 2b 2b 2c 09 09 09 09 09 09 5c  ).aptr++,......\
9e80: 0a 09 20 20 20 20 20 20 30 29 29 29 0a 0a 23 65  ..      0)))..#e
9e90: 6e 64 69 66 0a 0a 2f 2a 0a 20 2a 20 73 74 72 75  ndif../*. * stru
9ea0: 63 74 75 72 65 20 61 72 67 75 6d 65 6e 74 20 74  cture argument t
9eb0: 79 70 65 73 0a 20 2a 2f 0a 0a 23 64 65 66 69 6e  ypes. */..#defin
9ec0: 65 20 61 76 5f 73 74 72 75 63 74 28 4c 49 53 54  e av_struct(LIST
9ed0: 2c 54 59 50 45 2c 56 41 4c 29 09 09 09 09 09 5c  ,TYPE,VAL).....\
9ee0: 0a 20 20 5f 5f 61 76 5f 73 74 72 75 63 74 28 4c  .  __av_struct(L
9ef0: 49 53 54 2c 54 59 50 45 2c 73 69 7a 65 6f 66 28  IST,TYPE,sizeof(
9f00: 54 59 50 45 29 2c 5f 5f 41 56 5f 61 6c 69 67 6e  TYPE),__AV_align
9f10: 6f 66 28 54 59 50 45 29 2c 5f 5f 61 76 5f 73 74  of(TYPE),__av_st
9f20: 72 75 63 74 5f 61 73 73 69 67 6e 2c 56 41 4c 29  ruct_assign,VAL)
9f30: 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74  .#define __av_st
9f40: 72 75 63 74 5f 61 73 73 69 67 6e 28 54 59 50 45  ruct_assign(TYPE
9f50: 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f  ,TYPE_SIZE,TYPE_
9f60: 41 4c 49 47 4e 2c 50 4c 41 43 45 2c 56 41 4c 29  ALIGN,PLACE,VAL)
9f70: 09 09 5c 0a 20 20 2a 28 54 59 50 45 2a 29 28 50  ..\.  *(TYPE*)(P
9f80: 4c 41 43 45 29 20 3d 20 28 56 41 4c 29 0a 2f 2a  LACE) = (VAL)./*
9f90: 20 5f 61 76 5f 73 74 72 75 63 74 28 29 20 69 73   _av_struct() is
9fa0: 20 6c 69 6b 65 20 61 76 5f 73 74 72 75 63 74 28   like av_struct(
9fb0: 29 2c 20 65 78 63 65 70 74 20 74 68 61 74 20 79  ), except that y
9fc0: 6f 75 20 70 61 73 73 20 74 68 65 20 74 79 70 65  ou pass the type
9fd0: 27 73 20 73 69 7a 65 20 61 6e 64 20 61 6c 69 67  's size and alig
9fe0: 6e 6d 65 6e 74 0a 20 2a 20 61 6e 64 20 74 68 65  nment. * and the
9ff0: 20 76 61 6c 75 65 27 73 20 61 64 64 72 65 73 73   value's address
a000: 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20   instead of the 
a010: 74 79 70 65 20 61 6e 64 20 74 68 65 20 76 61 6c  type and the val
a020: 75 65 20 74 68 65 6d 73 65 6c 76 65 73 2e 0a 20  ue themselves.. 
a030: 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 61 76 5f 73  */.#define _av_s
a040: 74 72 75 63 74 28 4c 49 53 54 2c 54 59 50 45 5f  truct(LIST,TYPE_
a050: 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c  SIZE,TYPE_ALIGN,
a060: 56 41 4c 5f 41 44 44 52 29 09 09 09 5c 0a 20 20  VAL_ADDR)...\.  
a070: 5f 5f 61 76 5f 73 74 72 75 63 74 28 4c 49 53 54  __av_struct(LIST
a080: 2c 75 6e 6b 6e 6f 77 6e 2c 54 59 50 45 5f 53 49  ,unknown,TYPE_SI
a090: 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 5f 5f  ZE,TYPE_ALIGN,__
a0a0: 61 76 5f 73 74 72 75 63 74 5f 63 6f 70 79 2c 56  av_struct_copy,V
a0b0: 41 4c 5f 41 44 44 52 29 0a 23 64 65 66 69 6e 65  AL_ADDR).#define
a0c0: 20 5f 5f 61 76 5f 73 74 72 75 63 74 5f 63 6f 70   __av_struct_cop
a0d0: 79 28 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45  y(TYPE,TYPE_SIZE
a0e0: 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 50 4c 41 43  ,TYPE_ALIGN,PLAC
a0f0: 45 2c 56 41 4c 5f 41 44 44 52 29 09 5c 0a 20 20  E,VAL_ADDR).\.  
a100: 5f 5f 73 74 72 75 63 74 63 70 79 28 50 4c 41 43  __structcpy(PLAC
a110: 45 2c 56 41 4c 5f 41 44 44 52 2c 54 59 50 45 5f  E,VAL_ADDR,TYPE_
a120: 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29  SIZE,TYPE_ALIGN)
a130: 0a 2f 2a 20 53 74 72 75 63 74 75 72 65 20 61 72  ./* Structure ar
a140: 67 75 6d 65 6e 74 20 61 6c 69 67 6e 6d 65 6e 74  gument alignment
a150: 2e 20 2a 2f 0a 23 69 66 20 64 65 66 69 6e 65 64  . */.#if defined
a160: 28 5f 5f 69 33 38 36 5f 5f 29 20 26 26 20 64 65  (__i386__) && de
a170: 66 69 6e 65 64 28 5f 4d 53 43 5f 56 45 52 29 0a  fined(_MSC_VER).
a180: 2f 2a 20 49 6e 20 4d 53 56 43 2c 20 64 6f 75 62  /* In MSVC, doub
a190: 6c 65 73 20 69 6e 73 69 64 65 20 73 74 72 75 63  les inside struc
a1a0: 74 75 72 65 73 20 68 61 76 65 20 61 6c 69 67 6e  tures have align
a1b0: 6d 65 6e 74 20 38 2c 20 69 2e 65 2e 0a 20 2a 20  ment 8, i.e.. * 
a1c0: 5f 5f 41 56 5f 61 6c 69 67 6e 6f 66 28 64 6f 75  __AV_alignof(dou
a1d0: 62 6c 65 29 20 3d 20 38 2c 20 62 75 74 20 64 6f  ble) = 8, but do
a1e0: 75 62 6c 65 73 20 28 61 6e 64 20 61 6c 73 6f 20  ubles (and also 
a1f0: 73 74 72 75 63 74 75 72 65 73 20 63 6f 6e 74 61  structures conta
a200: 69 6e 69 6e 67 0a 20 2a 20 64 6f 75 62 6c 65 73  ining. * doubles
a210: 29 20 61 72 65 20 70 61 73 73 65 64 20 6f 6e 20  ) are passed on 
a220: 74 68 65 20 73 74 61 63 6b 20 77 69 74 68 20 61  the stack with a
a230: 6c 69 67 6e 6d 65 6e 74 20 34 2e 20 4c 6f 6f 6b  lignment 4. Look
a240: 73 20 72 65 61 6c 6c 79 20 77 65 69 72 64 2e 0a  s really weird..
a250: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76   */.#define __av
a260: 5f 73 74 72 75 63 74 5f 61 6c 69 67 6e 6d 65 6e  _struct_alignmen
a270: 74 28 54 59 50 45 5f 41 4c 49 47 4e 29 20 20 5c  t(TYPE_ALIGN)  \
a280: 0a 20 20 28 28 54 59 50 45 5f 41 4c 49 47 4e 29  .  ((TYPE_ALIGN)
a290: 20 3c 3d 20 34 20 3f 20 28 54 59 50 45 5f 41 4c   <= 4 ? (TYPE_AL
a2a0: 49 47 4e 29 20 3a 20 34 29 0a 23 65 6c 73 65 0a  IGN) : 4).#else.
a2b0: 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 72  #define __av_str
a2c0: 75 63 74 5f 61 6c 69 67 6e 6d 65 6e 74 28 54 59  uct_alignment(TY
a2d0: 50 45 5f 41 4c 49 47 4e 29 20 20 5c 0a 20 20 28  PE_ALIGN)  \.  (
a2e0: 54 59 50 45 5f 41 4c 49 47 4e 29 0a 23 65 6e 64  TYPE_ALIGN).#end
a2f0: 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f  if.#if defined(_
a300: 5f 69 33 38 36 5f 5f 29 20 7c 7c 20 64 65 66 69  _i386__) || defi
a310: 6e 65 64 28 5f 5f 6d 69 70 73 5f 5f 29 20 7c 7c  ned(__mips__) ||
a320: 20 64 65 66 69 6e 65 64 28 5f 5f 41 52 4d 45 4c   defined(__ARMEL
a330: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
a340: 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 7c 7c 20 64  _mipsn32__) || d
a350: 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 36 34 5f  efined(__mips64_
a360: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  _) || defined(__
a370: 61 6c 70 68 61 5f 5f 29 20 7c 7c 20 28 64 65 66  alpha__) || (def
a380: 69 6e 65 64 28 5f 5f 70 6f 77 65 72 70 63 5f 5f  ined(__powerpc__
a390: 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f  ) && !defined(__
a3a0: 70 6f 77 65 72 70 63 36 34 5f 5f 29 20 26 26 20  powerpc64__) && 
a3b0: 28 64 65 66 69 6e 65 64 28 5f 41 49 58 29 20 7c  (defined(_AIX) |
a3c0: 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f 4d 41 43  | (defined(__MAC
a3d0: 48 5f 5f 29 20 26 26 20 64 65 66 69 6e 65 64 28  H__) && defined(
a3e0: 5f 5f 41 50 50 4c 45 5f 5f 29 29 29 29 20 7c 7c  __APPLE__)))) ||
a3f0: 20 64 65 66 69 6e 65 64 28 5f 5f 70 6f 77 65 72   defined(__power
a400: 70 63 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  pc64__) || defin
a410: 65 64 28 5f 5f 6d 38 38 6b 5f 5f 29 20 7c 7c 20  ed(__m88k__) || 
a420: 64 65 66 69 6e 65 64 28 5f 5f 69 61 36 34 5f 5f  defined(__ia64__
a430: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 73  ) || defined(__s
a440: 33 39 30 5f 5f 29 0a 2f 2a 20 53 74 72 75 63 74  390__)./* Struct
a450: 75 72 65 73 20 61 72 65 20 70 61 73 73 65 64 20  ures are passed 
a460: 61 73 20 66 75 6c 6c 79 20 61 6c 69 67 6e 65 64  as fully aligned
a470: 20 73 74 72 75 63 74 75 72 65 73 20 6f 6e 20 74   structures on t
a480: 68 65 20 61 72 67 20 73 74 61 63 6b 2e 0a 20 2a  he arg stack.. *
a490: 20 57 65 20 61 6c 69 67 6e 20 74 68 65 20 61 70   We align the ap
a4a0: 74 72 2c 20 73 74 6f 72 65 20 74 68 65 20 73 74  tr, store the st
a4b0: 72 75 63 74 75 72 65 2c 20 74 68 65 6e 20 66 69  ructure, then fi
a4c0: 6c 6c 20 74 6f 20 77 6f 72 64 20 61 6c 69 67 6e  ll to word align
a4d0: 6d 65 6e 74 2e 0a 20 2a 20 53 69 6e 67 6c 65 2d  ment.. * Single-
a4e0: 73 6d 61 6c 6c 2d 69 6e 74 65 67 65 72 20 73 74  small-integer st
a4f0: 72 75 63 74 75 72 65 73 20 61 72 65 20 4e 4f 54  ructures are NOT
a500: 20 70 72 6f 6d 6f 74 65 64 20 74 6f 20 69 6e 74   promoted to int
a510: 65 67 65 72 73 20 61 6e 64 20 68 61 76 65 0a 20  egers and have. 
a520: 2a 20 64 69 66 66 65 72 65 6e 74 20 61 6c 69 67  * different alig
a530: 6e 6d 65 6e 74 2e 0a 20 2a 2f 0a 2f 2a 20 6c 69  nment.. */./* li
a540: 74 74 6c 65 20 65 6e 64 69 61 6e 20 2d 3e 20 73  ttle endian -> s
a550: 6d 61 6c 6c 20 73 74 72 75 63 74 75 72 65 73 20  mall structures 
a560: 3c 20 31 20 77 6f 72 64 20 61 72 65 20 61 64 6a  < 1 word are adj
a570: 75 73 74 65 64 20 74 6f 20 74 68 65 20 6c 65 66  usted to the lef
a580: 74 20 2a 2f 0a 23 69 66 20 64 65 66 69 6e 65 64  t */.#if defined
a590: 28 5f 5f 69 33 38 36 5f 5f 29 20 7c 7c 20 64 65  (__i386__) || de
a5a0: 66 69 6e 65 64 28 5f 5f 61 6c 70 68 61 5f 5f 29  fined(__alpha__)
a5b0: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 78 38   || defined(__x8
a5c0: 36 5f 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  6_64__) || defin
a5d0: 65 64 28 5f 5f 41 52 4d 45 4c 5f 5f 29 20 7c 7c  ed(__ARMEL__) ||
a5e0: 20 28 64 65 66 69 6e 65 64 28 5f 5f 69 61 36 34   (defined(__ia64
a5f0: 5f 5f 29 20 26 26 20 64 65 66 69 6e 65 64 28 5f  __) && defined(_
a600: 5f 47 4e 55 43 5f 5f 29 20 26 26 20 28 5f 5f 47  _GNUC__) && (__G
a610: 4e 55 43 5f 5f 20 3e 3d 20 33 29 29 0a 23 64 65  NUC__ >= 3)).#de
a620: 66 69 6e 65 20 5f 5f 61 76 5f 73 74 72 75 63 74  fine __av_struct
a630: 28 4c 49 53 54 2c 54 59 50 45 2c 54 59 50 45 5f  (LIST,TYPE,TYPE_
a640: 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c  SIZE,TYPE_ALIGN,
a650: 41 53 53 49 47 4e 2c 56 41 4c 29 09 09 5c 0a 20  ASSIGN,VAL)..\. 
a660: 20 28 28 28 4c 49 53 54 29 2e 61 70 74 72 20 3d   (((LIST).aptr =
a670: 09 09 09 09 09 09 09 5c 0a 20 20 20 20 28 5f 5f  .......\.    (__
a680: 61 76 77 6f 72 64 2a 29 28 28 28 5f 5f 61 76 77  avword*)(((__avw
a690: 6f 72 64 29 28 4c 49 53 54 29 2e 61 70 74 72 2b  ord)(LIST).aptr+
a6a0: 28 54 59 50 45 5f 53 49 5a 45 29 2b 5f 5f 61 76  (TYPE_SIZE)+__av
a6b0: 5f 73 74 72 75 63 74 5f 61 6c 69 67 6e 6d 65 6e  _struct_alignmen
a6c0: 74 28 54 59 50 45 5f 41 4c 49 47 4e 29 2d 31 29  t(TYPE_ALIGN)-1)
a6d0: 20 26 20 2d 28 6c 6f 6e 67 29 5f 5f 61 76 5f 73   & -(long)__av_s
a6e0: 74 72 75 63 74 5f 61 6c 69 67 6e 6d 65 6e 74 28  truct_alignment(
a6f0: 54 59 50 45 5f 41 4c 49 47 4e 29 29 29 5c 0a 20  TYPE_ALIGN)))\. 
a700: 20 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49    > __av_eptr(LI
a710: 53 54 29 09 09 09 09 09 09 09 5c 0a 20 20 20 3f  ST).......\.   ?
a720: 20 2d 31 20 3a 20 28 41 53 53 49 47 4e 28 54 59   -1 : (ASSIGN(TY
a730: 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50  PE,TYPE_SIZE,TYP
a740: 45 5f 41 4c 49 47 4e 2c 28 76 6f 69 64 2a 29 28  E_ALIGN,(void*)(
a750: 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29  (__avword)(LIST)
a760: 2e 61 70 74 72 2d 28 54 59 50 45 5f 53 49 5a 45  .aptr-(TYPE_SIZE
a770: 29 29 2c 56 41 4c 29 2c 5c 0a 09 20 20 20 28 4c  )),VAL),\..   (L
a780: 49 53 54 29 2e 61 70 74 72 20 3d 20 28 5f 5f 61  IST).aptr = (__a
a790: 76 77 6f 72 64 2a 29 28 28 28 5f 5f 61 76 77 6f  vword*)(((__avwo
a7a0: 72 64 29 28 4c 49 53 54 29 2e 61 70 74 72 2b 73  rd)(LIST).aptr+s
a7b0: 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 2d  izeof(__avword)-
a7c0: 31 29 20 26 20 2d 28 6c 6f 6e 67 29 73 69 7a 65  1) & -(long)size
a7d0: 6f 66 28 5f 5f 61 76 77 6f 72 64 29 29 2c 5c 0a  of(__avword)),\.
a7e0: 09 20 20 20 30 29 29 0a 23 65 6e 64 69 66 0a 23  .   0)).#endif.#
a7f0: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 69 61 36  if defined(__ia6
a800: 34 5f 5f 29 20 26 26 20 28 21 64 65 66 69 6e 65  4__) && (!define
a810: 64 28 5f 5f 47 4e 55 43 5f 5f 29 20 7c 7c 20 28  d(__GNUC__) || (
a820: 5f 5f 47 4e 55 43 5f 5f 20 3c 20 33 29 29 0a 2f  __GNUC__ < 3))./
a830: 2a 20 54 79 70 65 73 20 6c 61 72 67 65 72 20 74  * Types larger t
a840: 68 61 6e 20 61 20 77 6f 72 64 20 68 61 76 65 20  han a word have 
a850: 32 2d 77 6f 72 64 20 61 6c 69 67 6e 6d 65 6e 74  2-word alignment
a860: 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 61  . */.#define __a
a870: 76 5f 73 74 72 75 63 74 28 4c 49 53 54 2c 54 59  v_struct(LIST,TY
a880: 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50  PE,TYPE_SIZE,TYP
a890: 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e 2c 56  E_ALIGN,ASSIGN,V
a8a0: 41 4c 29 09 09 5c 0a 20 20 28 28 4c 49 53 54 29  AL)..\.  ((LIST)
a8b0: 2e 61 70 74 72 20 3d 20 28 5f 5f 61 76 77 6f 72  .aptr = (__avwor
a8c0: 64 2a 29 28 28 28 5f 5f 61 76 77 6f 72 64 29 28  d*)(((__avword)(
a8d0: 4c 49 53 54 29 2e 61 70 74 72 2b 28 54 59 50 45  LIST).aptr+(TYPE
a8e0: 5f 53 49 5a 45 29 2b 5f 5f 61 76 5f 73 74 72 75  _SIZE)+__av_stru
a8f0: 63 74 5f 61 6c 69 67 6e 6d 65 6e 74 28 54 59 50  ct_alignment(TYP
a900: 45 5f 41 4c 49 47 4e 29 2d 31 29 20 26 20 2d 28  E_ALIGN)-1) & -(
a910: 6c 6f 6e 67 29 5f 5f 61 76 5f 73 74 72 75 63 74  long)__av_struct
a920: 5f 61 6c 69 67 6e 6d 65 6e 74 28 54 59 50 45 5f  _alignment(TYPE_
a930: 41 4c 49 47 4e 29 29 2c 20 5c 0a 20 20 20 28 28  ALIGN)), \.   ((
a940: 54 59 50 45 5f 53 49 5a 45 29 20 3e 20 73 69 7a  TYPE_SIZE) > siz
a950: 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 20 26 26  eof(__avword) &&
a960: 20 28 28 28 4c 49 53 54 29 2e 61 70 74 72 20 2d   (((LIST).aptr -
a970: 20 26 28 4c 49 53 54 29 2e 61 72 67 73 5b 30 5d   &(LIST).args[0]
a980: 29 20 26 20 31 29 20 3f 20 2b 2b 28 4c 49 53 54  ) & 1) ? ++(LIST
a990: 29 2e 61 70 74 72 20 3a 20 30 29 2c 20 5c 0a 20  ).aptr : 0), \. 
a9a0: 20 20 28 28 4c 49 53 54 29 2e 61 70 74 72 20 3e    ((LIST).aptr >
a9b0: 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29   __av_eptr(LIST)
a9c0: 09 09 09 09 09 5c 0a 20 20 20 20 3f 20 2d 31 20  .....\.    ? -1 
a9d0: 3a 20 28 41 53 53 49 47 4e 28 54 59 50 45 2c 54  : (ASSIGN(TYPE,T
a9e0: 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c  YPE_SIZE,TYPE_AL
a9f0: 49 47 4e 2c 28 76 6f 69 64 2a 29 28 28 5f 5f 61  IGN,(void*)((__a
aa00: 76 77 6f 72 64 29 28 4c 49 53 54 29 2e 61 70 74  vword)(LIST).apt
aa10: 72 2d 28 54 59 50 45 5f 53 49 5a 45 29 29 2c 56  r-(TYPE_SIZE)),V
aa20: 41 4c 29 2c 5c 0a 09 20 20 20 20 28 4c 49 53 54  AL),\..    (LIST
aa30: 29 2e 61 70 74 72 20 3d 20 28 5f 5f 61 76 77 6f  ).aptr = (__avwo
aa40: 72 64 2a 29 28 28 28 5f 5f 61 76 77 6f 72 64 29  rd*)(((__avword)
aa50: 28 4c 49 53 54 29 2e 61 70 74 72 2b 73 69 7a 65  (LIST).aptr+size
aa60: 6f 66 28 5f 5f 61 76 77 6f 72 64 29 2d 31 29 20  of(__avword)-1) 
aa70: 26 20 2d 28 6c 6f 6e 67 29 73 69 7a 65 6f 66 28  & -(long)sizeof(
aa80: 5f 5f 61 76 77 6f 72 64 29 29 2c 5c 0a 09 20 20  __avword)),\..  
aa90: 20 20 30 29 29 29 0a 23 65 6e 64 69 66 0a 2f 2a    0))).#endif./*
aaa0: 20 73 6d 61 6c 6c 20 73 74 72 75 63 74 75 72 65   small structure
aab0: 73 20 3c 20 31 20 77 6f 72 64 20 61 72 65 20 61  s < 1 word are a
aac0: 64 6a 75 73 74 65 64 20 64 65 70 65 6e 64 69 6e  djusted dependin
aad0: 67 20 6f 6e 20 63 6f 6d 70 69 6c 65 72 20 2a 2f  g on compiler */
aae0: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d  .#if defined(__m
aaf0: 69 70 73 5f 5f 29 20 26 26 20 21 64 65 66 69 6e  ips__) && !defin
ab00: 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20  ed(__mipsn32__) 
ab10: 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 6d 69  && !defined(__mi
ab20: 70 73 36 34 5f 5f 29 0a 23 64 65 66 69 6e 65 20  ps64__).#define 
ab30: 5f 5f 61 76 5f 73 74 72 75 63 74 5f 6c 65 66 74  __av_struct_left
ab40: 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c 54 59  adjusted(LIST,TY
ab50: 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50  PE,TYPE_SIZE,TYP
ab60: 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e 2c 56  E_ALIGN,ASSIGN,V
ab70: 41 4c 29 20 5c 0a 20 20 28 28 28 4c 49 53 54 29  AL) \.  (((LIST)
ab80: 2e 61 70 74 72 20 3d 09 09 09 09 09 09 09 5c 0a  .aptr =.......\.
ab90: 20 20 20 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28      (__avword*)(
aba0: 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54  ((__avword)(LIST
abb0: 29 2e 61 70 74 72 2b 28 54 59 50 45 5f 53 49 5a  ).aptr+(TYPE_SIZ
abc0: 45 29 2b 28 54 59 50 45 5f 41 4c 49 47 4e 29 2d  E)+(TYPE_ALIGN)-
abd0: 31 29 20 26 20 2d 28 6c 6f 6e 67 29 28 54 59 50  1) & -(long)(TYP
abe0: 45 5f 41 4c 49 47 4e 29 29 29 5c 0a 20 20 20 3e  E_ALIGN)))\.   >
abf0: 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29   __av_eptr(LIST)
ac00: 09 09 09 09 09 09 09 5c 0a 20 20 20 3f 20 2d 31  .......\.   ? -1
ac10: 20 3a 20 28 2b 2b 28 4c 49 53 54 29 2e 61 6e 75   : (++(LIST).anu
ac20: 6d 2c 09 09 09 09 09 09 5c 0a 09 20 20 20 41 53  m,......\..   AS
ac30: 53 49 47 4e 28 54 59 50 45 2c 54 59 50 45 5f 53  SIGN(TYPE,TYPE_S
ac40: 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 28  IZE,TYPE_ALIGN,(
ac50: 76 6f 69 64 2a 29 28 28 5f 5f 61 76 77 6f 72 64  void*)((__avword
ac60: 29 28 4c 49 53 54 29 2e 61 70 74 72 2d 28 54 59  )(LIST).aptr-(TY
ac70: 50 45 5f 53 49 5a 45 29 29 2c 56 41 4c 29 2c 5c  PE_SIZE)),VAL),\
ac80: 0a 09 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72  ..   (LIST).aptr
ac90: 20 3d 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28 28   = (__avword*)((
aca0: 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29  (__avword)(LIST)
acb0: 2e 61 70 74 72 2b 73 69 7a 65 6f 66 28 5f 5f 61  .aptr+sizeof(__a
acc0: 76 77 6f 72 64 29 2d 31 29 20 26 20 2d 28 6c 6f  vword)-1) & -(lo
acd0: 6e 67 29 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f  ng)sizeof(__avwo
ace0: 72 64 29 29 2c 5c 0a 09 20 20 20 30 29 29 0a 23  rd)),\..   0)).#
acf0: 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 72 75  define __av_stru
ad00: 63 74 5f 72 69 67 68 74 61 64 6a 75 73 74 65 64  ct_rightadjusted
ad10: 28 4c 49 53 54 2c 54 59 50 45 2c 54 59 50 45 5f  (LIST,TYPE,TYPE_
ad20: 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c  SIZE,TYPE_ALIGN,
ad30: 41 53 53 49 47 4e 2c 56 41 4c 29 20 5c 0a 20 20  ASSIGN,VAL) \.  
ad40: 28 28 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 09  (((LIST).aptr =.
ad50: 09 09 09 09 09 09 5c 0a 20 20 20 20 28 5f 5f 61  ......\.    (__a
ad60: 76 77 6f 72 64 2a 29 28 28 28 28 28 5f 5f 61 76  vword*)(((((__av
ad70: 77 6f 72 64 29 28 4c 49 53 54 29 2e 61 70 74 72  word)(LIST).aptr
ad80: 2b 28 54 59 50 45 5f 53 49 5a 45 29 2b 28 54 59  +(TYPE_SIZE)+(TY
ad90: 50 45 5f 41 4c 49 47 4e 29 2d 31 29 20 26 20 2d  PE_ALIGN)-1) & -
ada0: 28 6c 6f 6e 67 29 28 54 59 50 45 5f 41 4c 49 47  (long)(TYPE_ALIG
adb0: 4e 29 29 5c 0a 09 09 20 2b 73 69 7a 65 6f 66 28  N))\... +sizeof(
adc0: 5f 5f 61 76 77 6f 72 64 29 2d 31 29 20 26 20 2d  __avword)-1) & -
add0: 28 6c 6f 6e 67 29 73 69 7a 65 6f 66 28 5f 5f 61  (long)sizeof(__a
ade0: 76 77 6f 72 64 29 29 29 09 5c 0a 20 20 20 3e 20  vword))).\.   > 
adf0: 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29 09  __av_eptr(LIST).
ae00: 09 09 09 09 09 09 5c 0a 20 20 20 3f 20 2d 31 20  ......\.   ? -1 
ae10: 3a 20 28 2b 2b 28 4c 49 53 54 29 2e 61 6e 75 6d  : (++(LIST).anum
ae20: 2c 09 09 09 09 09 09 5c 0a 09 20 20 20 41 53 53  ,......\..   ASS
ae30: 49 47 4e 28 54 59 50 45 2c 54 59 50 45 5f 53 49  IGN(TYPE,TYPE_SI
ae40: 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 28 76  ZE,TYPE_ALIGN,(v
ae50: 6f 69 64 2a 29 28 28 5f 5f 61 76 77 6f 72 64 29  oid*)((__avword)
ae60: 28 4c 49 53 54 29 2e 61 70 74 72 2d 28 54 59 50  (LIST).aptr-(TYP
ae70: 45 5f 53 49 5a 45 29 29 2c 56 41 4c 29 2c 5c 0a  E_SIZE)),VAL),\.
ae80: 09 20 20 20 30 29 29 0a 23 64 65 66 69 6e 65 20  .   0)).#define 
ae90: 5f 5f 61 76 5f 73 74 72 75 63 74 28 4c 49 53 54  __av_struct(LIST
aea0: 2c 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c  ,TYPE,TYPE_SIZE,
aeb0: 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47  TYPE_ALIGN,ASSIG
aec0: 4e 2c 56 41 4c 29 09 09 5c 0a 20 20 28 28 4c 49  N,VAL)..\.  ((LI
aed0: 53 54 29 2e 66 6c 61 67 73 20 26 20 5f 5f 41 56  ST).flags & __AV
aee0: 5f 53 47 49 43 43 5f 53 54 52 55 43 54 5f 41 52  _SGICC_STRUCT_AR
aef0: 47 53 09 09 09 09 5c 0a 20 20 20 3f 20 2f 2a 20  GS....\.   ? /* 
af00: 53 47 49 20 4d 49 50 53 20 63 63 20 70 61 73 73  SGI MIPS cc pass
af10: 65 73 20 73 6d 61 6c 6c 20 73 74 72 75 63 74 75  es small structu
af20: 72 65 73 20 6c 65 66 74 2d 61 64 6a 75 73 74 65  res left-adjuste
af30: 64 2c 20 61 6c 74 68 6f 75 67 68 20 62 69 67 2d  d, although big-
af40: 65 6e 64 69 61 6e 21 20 2a 2f 5c 0a 20 20 20 20  endian! */\.    
af50: 20 5f 5f 61 76 5f 73 74 72 75 63 74 5f 6c 65 66   __av_struct_lef
af60: 74 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c 54  tadjusted(LIST,T
af70: 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59  YPE,TYPE_SIZE,TY
af80: 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e 2c  PE_ALIGN,ASSIGN,
af90: 56 41 4c 29 20 5c 0a 20 20 20 3a 20 2f 2a 20 53  VAL) \.   : /* S
afa0: 47 49 20 4d 49 50 53 20 67 63 63 20 70 61 73 73  GI MIPS gcc pass
afb0: 65 73 20 73 6d 61 6c 6c 20 73 74 72 75 63 74 75  es small structu
afc0: 72 65 73 20 77 69 74 68 69 6e 20 74 68 65 20 66  res within the f
afd0: 69 72 73 74 20 66 6f 75 72 20 77 6f 72 64 73 20  irst four words 
afe0: 6c 65 66 74 2d 09 20 20 5c 0a 20 20 20 20 20 20  left-.  \.      
aff0: 2a 20 61 64 6a 75 73 74 65 64 2c 20 66 6f 72 20  * adjusted, for 
b000: 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 77 69  compatibility wi
b010: 74 68 20 63 63 2e 20 42 75 74 20 73 74 72 75 63  th cc. But struc
b020: 74 75 72 65 73 20 69 6e 20 6d 65 6d 6f 72 79 20  tures in memory 
b030: 61 72 65 20 70 61 73 73 65 64 20 20 5c 0a 20 20  are passed  \.  
b040: 20 20 20 20 2a 20 72 69 67 68 74 2d 61 64 6a 75      * right-adju
b050: 73 74 65 64 21 21 20 53 65 65 20 67 63 63 2d 32  sted!! See gcc-2
b060: 2e 36 2e 33 2f 63 6f 6e 66 69 67 2f 6d 69 70 73  .6.3/config/mips
b070: 2f 6d 69 70 73 2e 63 3a 66 75 6e 63 74 69 6f 6e  /mips.c:function
b080: 5f 61 72 67 28 29 2e 09 20 20 5c 0a 20 20 20 20  _arg()..  \.    
b090: 20 20 2a 2f 09 09 09 09 09 09 09 09 09 20 20 5c    */.........  \
b0a0: 0a 20 20 20 20 20 28 28 4c 49 53 54 29 2e 61 70  .     ((LIST).ap
b0b0: 74 72 20 3c 20 26 28 4c 49 53 54 29 2e 61 72 67  tr < &(LIST).arg
b0c0: 73 5b 34 5d 09 09 09 09 09 09 5c 0a 20 20 20 20  s[4]......\.    
b0d0: 20 20 3f 20 5f 5f 61 76 5f 73 74 72 75 63 74 5f    ? __av_struct_
b0e0: 6c 65 66 74 61 64 6a 75 73 74 65 64 28 4c 49 53  leftadjusted(LIS
b0f0: 54 2c 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45  T,TYPE,TYPE_SIZE
b100: 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49  ,TYPE_ALIGN,ASSI
b110: 47 4e 2c 56 41 4c 29 09 5c 0a 20 20 20 20 20 20  GN,VAL).\.      
b120: 3a 20 5f 5f 61 76 5f 73 74 72 75 63 74 5f 72 69  : __av_struct_ri
b130: 67 68 74 61 64 6a 75 73 74 65 64 28 4c 49 53 54  ghtadjusted(LIST
b140: 2c 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c  ,TYPE,TYPE_SIZE,
b150: 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47  TYPE_ALIGN,ASSIG
b160: 4e 2c 56 41 4c 29 29 29 0a 23 65 6e 64 69 66 0a  N,VAL))).#endif.
b170: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69  #if defined(__mi
b180: 70 73 6e 33 32 5f 5f 29 20 7c 7c 20 64 65 66 69  psn32__) || defi
b190: 6e 65 64 28 5f 5f 6d 69 70 73 36 34 5f 5f 29 0a  ned(__mips64__).
b1a0: 2f 2a 20 57 68 65 6e 20 61 20 73 74 72 75 63 74  /* When a struct
b1b0: 75 72 65 20 69 73 20 70 61 73 73 65 64 20 28 70  ure is passed (p
b1c0: 61 72 74 69 61 6c 6c 79 29 20 69 6e 20 72 65 67  artially) in reg
b1d0: 69 73 74 65 72 73 2c 20 69 74 20 69 73 20 70 61  isters, it is pa
b1e0: 73 73 65 64 20 69 6e 20 74 68 65 0a 20 2a 20 69  ssed in the. * i
b1f0: 6e 74 65 67 65 72 20 72 65 67 69 73 74 65 72 73  nteger registers
b200: 2c 20 65 78 63 65 70 74 20 74 68 61 74 20 64 6f  , except that do
b210: 75 62 6c 65 73 20 77 69 74 68 69 6e 20 74 68 65  ubles within the
b220: 20 73 74 72 75 63 74 75 72 65 20 61 72 65 20 70   structure are p
b230: 61 73 73 65 64 20 69 6e 0a 20 2a 20 74 68 65 20  assed in. * the 
b240: 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 72  floating point r
b250: 65 67 69 73 74 65 72 73 2e 20 49 6e 73 74 65 61  egisters. Instea
b260: 64 20 6f 66 20 64 69 73 74 69 6e 67 75 69 73 68  d of distinguish
b270: 69 6e 67 20 74 68 65 73 65 20 63 61 73 65 73 2c  ing these cases,
b280: 20 77 65 0a 20 2a 20 61 6c 77 61 79 73 20 70 61   we. * always pa
b290: 73 73 20 74 68 65 20 73 74 72 75 63 74 75 72 65  ss the structure
b2a0: 20 69 6e 20 62 6f 74 68 20 74 68 65 20 69 6e 74   in both the int
b2b0: 65 67 65 72 20 61 6e 64 20 74 68 65 20 66 6c 6f  eger and the flo
b2c0: 61 74 69 6e 67 20 70 6f 69 6e 74 0a 20 2a 20 72  ating point. * r
b2d0: 65 67 69 73 74 65 72 73 2e 0a 20 2a 2f 0a 23 64  egisters.. */.#d
b2e0: 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 72 75 63  efine __av_struc
b2f0: 74 5f 6c 65 66 74 61 64 6a 75 73 74 65 64 28 4c  t_leftadjusted(L
b300: 49 53 54 2c 54 59 50 45 2c 54 59 50 45 5f 53 49  IST,TYPE,TYPE_SI
b310: 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53  ZE,TYPE_ALIGN,AS
b320: 53 49 47 4e 2c 56 41 4c 29 20 5c 0a 20 20 28 28  SIGN,VAL) \.  ((
b330: 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 09 09 09  (LIST).aptr =...
b340: 09 09 09 09 5c 0a 20 20 20 20 28 5f 5f 61 76 77  ....\.    (__avw
b350: 6f 72 64 2a 29 28 28 28 5f 5f 61 76 77 6f 72 64  ord*)(((__avword
b360: 29 28 4c 49 53 54 29 2e 61 70 74 72 2b 28 54 59  )(LIST).aptr+(TY
b370: 50 45 5f 53 49 5a 45 29 2b 28 54 59 50 45 5f 41  PE_SIZE)+(TYPE_A
b380: 4c 49 47 4e 29 2d 31 29 20 26 20 2d 28 6c 6f 6e  LIGN)-1) & -(lon
b390: 67 29 28 54 59 50 45 5f 41 4c 49 47 4e 29 29 29  g)(TYPE_ALIGN)))
b3a0: 5c 0a 20 20 20 3e 20 5f 5f 61 76 5f 65 70 74 72  \.   > __av_eptr
b3b0: 28 4c 49 53 54 29 09 09 09 09 09 09 09 5c 0a 20  (LIST).......\. 
b3c0: 20 20 3f 20 2d 31 20 3a 20 28 41 53 53 49 47 4e    ? -1 : (ASSIGN
b3d0: 28 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c  (TYPE,TYPE_SIZE,
b3e0: 54 59 50 45 5f 41 4c 49 47 4e 2c 28 76 6f 69 64  TYPE_ALIGN,(void
b3f0: 2a 29 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49  *)((__avword)(LI
b400: 53 54 29 2e 61 70 74 72 2d 28 54 59 50 45 5f 53  ST).aptr-(TYPE_S
b410: 49 5a 45 29 29 2c 56 41 4c 29 2c 5c 0a 09 20 20  IZE)),VAL),\..  
b420: 20 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 28   (LIST).aptr = (
b430: 5f 5f 61 76 77 6f 72 64 2a 29 28 28 28 5f 5f 61  __avword*)(((__a
b440: 76 77 6f 72 64 29 28 4c 49 53 54 29 2e 61 70 74  vword)(LIST).apt
b450: 72 2b 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72  r+sizeof(__avwor
b460: 64 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 73  d)-1) & -(long)s
b470: 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 29  izeof(__avword))
b480: 2c 5c 0a 09 20 20 20 28 28 4c 49 53 54 29 2e 61  ,\..   ((LIST).a
b490: 6e 75 6d 20 3c 20 38 20 26 26 20 28 28 4c 49 53  num < 8 && ((LIS
b4a0: 54 29 2e 64 61 72 67 5f 6d 61 73 6b 20 7c 3d 20  T).darg_mask |= 
b4b0: 28 2d 31 20 3c 3c 20 28 4c 49 53 54 29 2e 61 6e  (-1 << (LIST).an
b4c0: 75 6d 29 29 29 2c 20 5c 0a 09 20 20 20 28 4c 49  um))), \..   (LI
b4d0: 53 54 29 2e 61 6e 75 6d 20 2b 3d 20 28 28 28 28  ST).anum += ((((
b4e0: 28 54 59 50 45 5f 53 49 5a 45 29 2b 28 54 59 50  (TYPE_SIZE)+(TYP
b4f0: 45 5f 41 4c 49 47 4e 29 2d 31 29 20 26 20 2d 28  E_ALIGN)-1) & -(
b500: 6c 6f 6e 67 29 28 54 59 50 45 5f 41 4c 49 47 4e  long)(TYPE_ALIGN
b510: 29 29 20 2b 20 73 69 7a 65 6f 66 28 5f 5f 61 76  )) + sizeof(__av
b520: 77 6f 72 64 29 2d 31 29 20 26 20 2d 28 6c 6f 6e  word)-1) & -(lon
b530: 67 29 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72  g)sizeof(__avwor
b540: 64 29 29 2f 73 69 7a 65 6f 66 28 5f 5f 61 76 77  d))/sizeof(__avw
b550: 6f 72 64 29 2c 5c 0a 09 20 20 20 28 4c 49 53 54  ord),\..   (LIST
b560: 29 2e 64 61 72 67 5f 6d 61 73 6b 20 26 3d 20 28  ).darg_mask &= (
b570: 31 20 3c 3c 20 28 28 4c 49 53 54 29 2e 61 6e 75  1 << ((LIST).anu
b580: 6d 20 3c 20 38 20 3f 20 28 4c 49 53 54 29 2e 61  m < 8 ? (LIST).a
b590: 6e 75 6d 20 3a 20 38 29 29 20 2d 20 31 2c 20 5c  num : 8)) - 1, \
b5a0: 0a 09 20 20 20 30 29 29 0a 23 64 65 66 69 6e 65  ..   0)).#define
b5b0: 20 5f 5f 61 76 5f 73 74 72 75 63 74 5f 72 69 67   __av_struct_rig
b5c0: 68 74 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c  htadjusted(LIST,
b5d0: 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54  TYPE,TYPE_SIZE,T
b5e0: 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e  YPE_ALIGN,ASSIGN
b5f0: 2c 56 41 4c 29 20 5c 0a 20 20 28 28 28 4c 49 53  ,VAL) \.  (((LIS
b600: 54 29 2e 61 70 74 72 20 3d 09 09 09 09 09 09 09  T).aptr =.......
b610: 5c 0a 20 20 20 20 28 5f 5f 61 76 77 6f 72 64 2a  \.    (__avword*
b620: 29 28 28 28 28 28 5f 5f 61 76 77 6f 72 64 29 28  )(((((__avword)(
b630: 4c 49 53 54 29 2e 61 70 74 72 2b 28 54 59 50 45  LIST).aptr+(TYPE
b640: 5f 53 49 5a 45 29 2b 28 54 59 50 45 5f 41 4c 49  _SIZE)+(TYPE_ALI
b650: 47 4e 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29  GN)-1) & -(long)
b660: 28 54 59 50 45 5f 41 4c 49 47 4e 29 29 5c 0a 09  (TYPE_ALIGN))\..
b670: 09 20 2b 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f  . +sizeof(__avwo
b680: 72 64 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29  rd)-1) & -(long)
b690: 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29  sizeof(__avword)
b6a0: 29 29 09 5c 0a 20 20 20 3e 20 5f 5f 61 76 5f 65  )).\.   > __av_e
b6b0: 70 74 72 28 4c 49 53 54 29 09 09 09 09 09 09 09  ptr(LIST).......
b6c0: 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 28 41 53 53  \.   ? -1 : (ASS
b6d0: 49 47 4e 28 54 59 50 45 2c 54 59 50 45 5f 53 49  IGN(TYPE,TYPE_SI
b6e0: 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 28 76  ZE,TYPE_ALIGN,(v
b6f0: 6f 69 64 2a 29 28 28 5f 5f 61 76 77 6f 72 64 29  oid*)((__avword)
b700: 28 4c 49 53 54 29 2e 61 70 74 72 2d 28 54 59 50  (LIST).aptr-(TYP
b710: 45 5f 53 49 5a 45 29 29 2c 56 41 4c 29 2c 5c 0a  E_SIZE)),VAL),\.
b720: 09 20 20 20 28 28 4c 49 53 54 29 2e 61 6e 75 6d  .   ((LIST).anum
b730: 20 3c 20 38 20 26 26 20 28 28 4c 49 53 54 29 2e   < 8 && ((LIST).
b740: 64 61 72 67 5f 6d 61 73 6b 20 7c 3d 20 28 2d 31  darg_mask |= (-1
b750: 20 3c 3c 20 28 4c 49 53 54 29 2e 61 6e 75 6d 29   << (LIST).anum)
b760: 29 29 2c 20 5c 0a 09 20 20 20 28 4c 49 53 54 29  )), \..   (LIST)
b770: 2e 61 6e 75 6d 20 2b 3d 20 28 28 28 28 28 54 59  .anum += (((((TY
b780: 50 45 5f 53 49 5a 45 29 2b 28 54 59 50 45 5f 41  PE_SIZE)+(TYPE_A
b790: 4c 49 47 4e 29 2d 31 29 20 26 20 2d 28 6c 6f 6e  LIGN)-1) & -(lon
b7a0: 67 29 28 54 59 50 45 5f 41 4c 49 47 4e 29 29 20  g)(TYPE_ALIGN)) 
b7b0: 2b 20 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72  + sizeof(__avwor
b7c0: 64 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 73  d)-1) & -(long)s
b7d0: 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 29  izeof(__avword))
b7e0: 2f 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64  /sizeof(__avword
b7f0: 29 2c 5c 0a 09 20 20 20 28 4c 49 53 54 29 2e 64  ),\..   (LIST).d
b800: 61 72 67 5f 6d 61 73 6b 20 26 3d 20 28 31 20 3c  arg_mask &= (1 <
b810: 3c 20 28 28 4c 49 53 54 29 2e 61 6e 75 6d 20 3c  < ((LIST).anum <
b820: 20 38 20 3f 20 28 4c 49 53 54 29 2e 61 6e 75 6d   8 ? (LIST).anum
b830: 20 3a 20 38 29 29 20 2d 20 31 2c 20 5c 0a 09 20   : 8)) - 1, \.. 
b840: 20 20 30 29 29 0a 23 64 65 66 69 6e 65 20 5f 5f    0)).#define __
b850: 61 76 5f 73 74 72 75 63 74 28 4c 49 53 54 2c 54  av_struct(LIST,T
b860: 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59  YPE,TYPE_SIZE,TY
b870: 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e 2c  PE_ALIGN,ASSIGN,
b880: 56 41 4c 29 09 09 5c 0a 20 20 28 28 4c 49 53 54  VAL)..\.  ((LIST
b890: 29 2e 66 6c 61 67 73 20 26 20 5f 5f 41 56 5f 53  ).flags & __AV_S
b8a0: 47 49 43 43 5f 53 54 52 55 43 54 5f 41 52 47 53  GICC_STRUCT_ARGS
b8b0: 09 09 09 09 5c 0a 20 20 20 3f 20 2f 2a 20 53 47  ....\.   ? /* SG
b8c0: 49 20 4d 49 50 53 20 63 63 20 70 61 73 73 65 73  I MIPS cc passes
b8d0: 20 73 6d 61 6c 6c 20 73 74 72 75 63 74 75 72 65   small structure
b8e0: 73 20 6c 65 66 74 2d 61 64 6a 75 73 74 65 64 2c  s left-adjusted,
b8f0: 20 61 6c 74 68 6f 75 67 68 20 62 69 67 2d 65 6e   although big-en
b900: 64 69 61 6e 21 20 2a 2f 5c 0a 20 20 20 20 20 5f  dian! */\.     _
b910: 5f 61 76 5f 73 74 72 75 63 74 5f 6c 65 66 74 61  _av_struct_lefta
b920: 64 6a 75 73 74 65 64 28 4c 49 53 54 2c 54 59 50  djusted(LIST,TYP
b930: 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45  E,TYPE_SIZE,TYPE
b940: 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e 2c 56 41  _ALIGN,ASSIGN,VA
b950: 4c 29 20 5c 0a 20 20 20 3a 20 2f 2a 20 53 47 49  L) \.   : /* SGI
b960: 20 4d 49 50 53 20 67 63 63 20 70 61 73 73 65 73   MIPS gcc passes
b970: 20 73 6d 61 6c 6c 20 73 74 72 75 63 74 75 72 65   small structure
b980: 73 20 72 69 67 68 74 2d 61 64 6a 75 73 74 65 64  s right-adjusted
b990: 2e 20 2a 2f 09 09 5c 0a 20 20 20 20 20 5f 5f 61  . */..\.     __a
b9a0: 76 5f 73 74 72 75 63 74 5f 72 69 67 68 74 61 64  v_struct_rightad
b9b0: 6a 75 73 74 65 64 28 4c 49 53 54 2c 54 59 50 45  justed(LIST,TYPE
b9c0: 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f  ,TYPE_SIZE,TYPE_
b9d0: 41 4c 49 47 4e 2c 41 53 53 49 47 4e 2c 56 41 4c  ALIGN,ASSIGN,VAL
b9e0: 29 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65  )).#endif.#if de
b9f0: 66 69 6e 65 64 28 5f 5f 70 6f 77 65 72 70 63 5f  fined(__powerpc_
ba00: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  _) || defined(__
ba10: 70 6f 77 65 72 70 63 36 34 5f 5f 29 0a 23 64 65  powerpc64__).#de
ba20: 66 69 6e 65 20 5f 5f 61 76 5f 73 74 72 75 63 74  fine __av_struct
ba30: 5f 6c 65 66 74 61 64 6a 75 73 74 65 64 28 4c 49  _leftadjusted(LI
ba40: 53 54 2c 54 59 50 45 2c 54 59 50 45 5f 53 49 5a  ST,TYPE,TYPE_SIZ
ba50: 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53  E,TYPE_ALIGN,ASS
ba60: 49 47 4e 2c 56 41 4c 29 5c 0a 20 20 28 28 28 4c  IGN,VAL)\.  (((L
ba70: 49 53 54 29 2e 61 70 74 72 20 3d 09 09 09 09 09  IST).aptr =.....
ba80: 09 09 5c 0a 20 20 20 20 28 5f 5f 61 76 77 6f 72  ..\.    (__avwor
ba90: 64 2a 29 28 28 28 5f 5f 61 76 77 6f 72 64 29 28  d*)(((__avword)(
baa0: 4c 49 53 54 29 2e 61 70 74 72 2b 28 54 59 50 45  LIST).aptr+(TYPE
bab0: 5f 53 49 5a 45 29 2b 28 54 59 50 45 5f 41 4c 49  _SIZE)+(TYPE_ALI
bac0: 47 4e 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29  GN)-1) & -(long)
bad0: 28 54 59 50 45 5f 41 4c 49 47 4e 29 29 29 5c 0a  (TYPE_ALIGN)))\.
bae0: 20 20 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c     > __av_eptr(L
baf0: 49 53 54 29 09 09 09 09 09 09 09 5c 0a 20 20 20  IST).......\.   
bb00: 3f 20 2d 31 20 3a 20 28 41 53 53 49 47 4e 28 54  ? -1 : (ASSIGN(T
bb10: 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59  YPE,TYPE_SIZE,TY
bb20: 50 45 5f 41 4c 49 47 4e 2c 28 76 6f 69 64 2a 29  PE_ALIGN,(void*)
bb30: 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54  ((__avword)(LIST
bb40: 29 2e 61 70 74 72 2d 28 54 59 50 45 5f 53 49 5a  ).aptr-(TYPE_SIZ
bb50: 45 29 29 2c 56 41 4c 29 2c 5c 0a 09 20 20 20 28  E)),VAL),\..   (
bb60: 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 28 5f 5f  LIST).aptr = (__
bb70: 61 76 77 6f 72 64 2a 29 28 28 28 5f 5f 61 76 77  avword*)(((__avw
bb80: 6f 72 64 29 28 4c 49 53 54 29 2e 61 70 74 72 2b  ord)(LIST).aptr+
bb90: 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29  sizeof(__avword)
bba0: 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 73 69 7a  -1) & -(long)siz
bbb0: 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 29 2c 5c  eof(__avword)),\
bbc0: 0a 09 20 20 20 30 29 29 0a 23 64 65 66 69 6e 65  ..   0)).#define
bbd0: 20 5f 5f 61 76 5f 73 74 72 75 63 74 5f 72 69 67   __av_struct_rig
bbe0: 68 74 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c  htadjusted(LIST,
bbf0: 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54  TYPE,TYPE_SIZE,T
bc00: 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e  YPE_ALIGN,ASSIGN
bc10: 2c 56 41 4c 29 5c 0a 20 20 28 28 28 4c 49 53 54  ,VAL)\.  (((LIST
bc20: 29 2e 61 70 74 72 20 3d 09 09 09 09 09 09 09 5c  ).aptr =.......\
bc30: 0a 20 20 20 20 28 5f 5f 61 76 77 6f 72 64 2a 29  .    (__avword*)
bc40: 28 28 28 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c  (((((__avword)(L
bc50: 49 53 54 29 2e 61 70 74 72 2b 28 54 59 50 45 5f  IST).aptr+(TYPE_
bc60: 53 49 5a 45 29 2b 28 54 59 50 45 5f 41 4c 49 47  SIZE)+(TYPE_ALIG
bc70: 4e 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 28  N)-1) & -(long)(
bc80: 54 59 50 45 5f 41 4c 49 47 4e 29 29 5c 0a 09 09  TYPE_ALIGN))\...
bc90: 20 2b 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72   +sizeof(__avwor
bca0: 64 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 73  d)-1) & -(long)s
bcb0: 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 29  izeof(__avword))
bcc0: 29 09 5c 0a 20 20 20 3e 20 5f 5f 61 76 5f 65 70  ).\.   > __av_ep
bcd0: 74 72 28 4c 49 53 54 29 09 09 09 09 09 09 09 5c  tr(LIST).......\
bce0: 0a 20 20 20 3f 20 2d 31 20 3a 20 28 41 53 53 49  .   ? -1 : (ASSI
bcf0: 47 4e 28 54 59 50 45 2c 54 59 50 45 5f 53 49 5a  GN(TYPE,TYPE_SIZ
bd00: 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 28 76 6f  E,TYPE_ALIGN,(vo
bd10: 69 64 2a 29 28 28 5f 5f 61 76 77 6f 72 64 29 28  id*)((__avword)(
bd20: 4c 49 53 54 29 2e 61 70 74 72 2d 28 54 59 50 45  LIST).aptr-(TYPE
bd30: 5f 53 49 5a 45 29 29 2c 56 41 4c 29 2c 5c 0a 09  _SIZE)),VAL),\..
bd40: 20 20 20 30 29 29 0a 23 69 66 20 21 64 65 66 69     0)).#if !defi
bd50: 6e 65 64 28 5f 5f 70 6f 77 65 72 70 63 36 34 5f  ned(__powerpc64_
bd60: 5f 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f  _).#define __av_
bd70: 73 74 72 75 63 74 28 4c 49 53 54 2c 54 59 50 45  struct(LIST,TYPE
bd80: 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f  ,TYPE_SIZE,TYPE_
bd90: 41 4c 49 47 4e 2c 41 53 53 49 47 4e 2c 56 41 4c  ALIGN,ASSIGN,VAL
bda0: 29 09 09 5c 0a 20 20 28 28 4c 49 53 54 29 2e 66  )..\.  ((LIST).f
bdb0: 6c 61 67 73 20 26 20 5f 5f 41 56 5f 41 49 58 43  lags & __AV_AIXC
bdc0: 43 5f 53 54 52 55 43 54 5f 41 52 47 53 09 09 09  C_STRUCT_ARGS...
bdd0: 09 5c 0a 20 20 20 3f 20 2f 2a 20 41 49 58 20 63  .\.   ? /* AIX c
bde0: 63 20 61 6e 64 20 78 6c 63 20 70 61 73 73 20 73  c and xlc pass s
bdf0: 6d 61 6c 6c 20 73 74 72 75 63 74 75 72 65 73 20  mall structures 
be00: 6c 65 66 74 2d 61 64 6a 75 73 74 65 64 2c 20 61  left-adjusted, a
be10: 6c 74 68 6f 75 67 68 20 62 69 67 2d 65 6e 64 69  lthough big-endi
be20: 61 6e 21 20 2a 2f 5c 0a 20 20 20 20 20 5f 5f 61  an! */\.     __a
be30: 76 5f 73 74 72 75 63 74 5f 6c 65 66 74 61 64 6a  v_struct_leftadj
be40: 75 73 74 65 64 28 4c 49 53 54 2c 54 59 50 45 2c  usted(LIST,TYPE,
be50: 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41  TYPE_SIZE,TYPE_A
be60: 4c 49 47 4e 2c 41 53 53 49 47 4e 2c 56 41 4c 29  LIGN,ASSIGN,VAL)
be70: 20 5c 0a 20 20 20 3a 20 2f 2a 20 67 63 63 20 70   \.   : /* gcc p
be80: 61 73 73 65 73 20 73 6d 61 6c 6c 20 73 74 72 75  asses small stru
be90: 63 74 75 72 65 73 20 72 69 67 68 74 2d 61 64 6a  ctures right-adj
bea0: 75 73 74 65 64 2e 20 2a 2f 09 09 09 5c 0a 20 20  usted. */...\.  
beb0: 20 20 20 5f 5f 61 76 5f 73 74 72 75 63 74 5f 72     __av_struct_r
bec0: 69 67 68 74 61 64 6a 75 73 74 65 64 28 4c 49 53  ightadjusted(LIS
bed0: 54 2c 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45  T,TYPE,TYPE_SIZE
bee0: 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49  ,TYPE_ALIGN,ASSI
bef0: 47 4e 2c 56 41 4c 29 29 0a 23 65 6e 64 69 66 0a  GN,VAL)).#endif.
bf00: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 70 6f  #if defined(__po
bf10: 77 65 72 70 63 36 34 5f 5f 29 0a 23 64 65 66 69  werpc64__).#defi
bf20: 6e 65 20 5f 5f 61 76 5f 73 74 72 75 63 74 28 4c  ne __av_struct(L
bf30: 49 53 54 2c 54 59 50 45 2c 54 59 50 45 5f 53 49  IST,TYPE,TYPE_SI
bf40: 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53  ZE,TYPE_ALIGN,AS
bf50: 53 49 47 4e 2c 56 41 4c 29 09 09 5c 0a 20 20 5f  SIGN,VAL)..\.  _
bf60: 5f 61 76 5f 73 74 72 75 63 74 5f 72 69 67 68 74  _av_struct_right
bf70: 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c 54 59  adjusted(LIST,TY
bf80: 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50  PE,TYPE_SIZE,TYP
bf90: 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e 2c 56  E_ALIGN,ASSIGN,V
bfa0: 41 4c 29 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69  AL).#endif.#endi
bfb0: 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  f.#if defined(__
bfc0: 73 33 39 30 5f 5f 29 0a 23 64 65 66 69 6e 65 20  s390__).#define 
bfd0: 5f 5f 61 76 5f 73 74 72 75 63 74 5f 72 69 67 68  __av_struct_righ
bfe0: 74 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c 54  tadjusted(LIST,T
bff0: 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59  YPE,TYPE_SIZE,TY
c000: 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e 2c  PE_ALIGN,ASSIGN,
c010: 56 41 4c 29 5c 0a 20 20 28 28 28 4c 49 53 54 29  VAL)\.  (((LIST)
c020: 2e 61 70 74 72 20 3d 09 09 09 09 09 09 09 5c 0a  .aptr =.......\.
c030: 20 20 20 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28      (__avword*)(
c040: 28 28 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49  ((((__avword)(LI
c050: 53 54 29 2e 61 70 74 72 2b 28 54 59 50 45 5f 53  ST).aptr+(TYPE_S
c060: 49 5a 45 29 2b 28 54 59 50 45 5f 41 4c 49 47 4e  IZE)+(TYPE_ALIGN
c070: 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 28 54  )-1) & -(long)(T
c080: 59 50 45 5f 41 4c 49 47 4e 29 29 5c 0a 09 09 20  YPE_ALIGN))\... 
c090: 2b 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64  +sizeof(__avword
c0a0: 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 73 69  )-1) & -(long)si
c0b0: 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 29 29  zeof(__avword)))
c0c0: 09 5c 0a 20 20 20 3e 20 5f 5f 61 76 5f 65 70 74  .\.   > __av_ept
c0d0: 72 28 4c 49 53 54 29 09 09 09 09 09 09 09 5c 0a  r(LIST).......\.
c0e0: 20 20 20 3f 20 2d 31 20 3a 20 28 41 53 53 49 47     ? -1 : (ASSIG
c0f0: 4e 28 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45  N(TYPE,TYPE_SIZE
c100: 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 28 76 6f 69  ,TYPE_ALIGN,(voi
c110: 64 2a 29 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c  d*)((__avword)(L
c120: 49 53 54 29 2e 61 70 74 72 2d 28 54 59 50 45 5f  IST).aptr-(TYPE_
c130: 53 49 5a 45 29 29 2c 56 41 4c 29 2c 5c 0a 09 20  SIZE)),VAL),\.. 
c140: 20 20 30 29 29 0a 23 64 65 66 69 6e 65 20 5f 5f    0)).#define __
c150: 61 76 5f 73 74 72 75 63 74 28 4c 49 53 54 2c 54  av_struct(LIST,T
c160: 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59  YPE,TYPE_SIZE,TY
c170: 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e 2c  PE_ALIGN,ASSIGN,
c180: 56 41 4c 29 09 09 5c 0a 28 28 54 59 50 45 5f 53  VAL)..\.((TYPE_S
c190: 49 5a 45 29 20 21 3d 20 31 20 26 26 20 28 54 59  IZE) != 1 && (TY
c1a0: 50 45 5f 53 49 5a 45 29 20 21 3d 20 32 20 26 26  PE_SIZE) != 2 &&
c1b0: 20 28 54 59 50 45 5f 53 49 5a 45 29 20 21 3d 20   (TYPE_SIZE) != 
c1c0: 34 20 26 26 20 28 54 59 50 45 5f 53 49 5a 45 29  4 && (TYPE_SIZE)
c1d0: 20 21 3d 20 38 20 5c 0a 20 3f 20 28 2b 2b 28 4c   != 8 \. ? (++(L
c1e0: 49 53 54 29 2e 61 70 74 72 09 09 09 09 09 09 09  IST).aptr.......
c1f0: 5c 0a 20 20 20 20 3e 20 28 28 4c 49 53 54 29 2e  \.    > ((LIST).
c200: 65 70 74 72 20 3d 20 28 5f 5f 61 76 77 6f 72 64  eptr = (__avword
c210: 2a 29 28 28 6c 6f 6e 67 29 28 4c 49 53 54 29 2e  *)((long)(LIST).
c220: 65 70 74 72 20 2d 20 28 28 28 54 59 50 45 5f 53  eptr - (((TYPE_S
c230: 49 5a 45 29 2b 37 29 26 2d 38 29 29 29 5c 0a 20  IZE)+7)&-8)))\. 
c240: 20 20 20 3f 20 2d 31 20 3a 09 09 09 09 09 09 09     ? -1 :.......
c250: 09 5c 0a 20 20 20 20 28 41 53 53 49 47 4e 28 54  .\.    (ASSIGN(T
c260: 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59  YPE,TYPE_SIZE,TY
c270: 50 45 5f 41 4c 49 47 4e 2c 28 76 6f 69 64 2a 29  PE_ALIGN,(void*)
c280: 28 4c 49 53 54 29 2e 65 70 74 72 2c 56 41 4c 29  (LIST).eptr,VAL)
c290: 2c 09 09 5c 0a 20 20 20 20 20 28 4c 49 53 54 29  ,..\.     (LIST)
c2a0: 2e 61 70 74 72 5b 2d 31 5d 20 3d 20 28 5f 5f 61  .aptr[-1] = (__a
c2b0: 76 77 6f 72 64 29 28 4c 49 53 54 29 2e 65 70 74  vword)(LIST).ept
c2c0: 72 2c 09 09 09 09 5c 0a 20 20 20 20 20 30 29 29  r,....\.     0))
c2d0: 09 09 09 09 09 09 09 09 5c 0a 20 3a 20 28 28 28  ........\. : (((
c2e0: 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 38 20  TYPE_SIZE) == 8 
c2f0: 26 26 20 28 4c 49 53 54 29 2e 61 70 74 72 20 2d  && (LIST).aptr -
c300: 20 28 4c 49 53 54 29 2e 61 72 67 73 20 2d 20 28   (LIST).args - (
c310: 4c 49 53 54 29 2e 66 61 72 67 77 6f 72 64 73 20  LIST).fargwords 
c320: 3d 3d 20 34 20 3f 20 2b 2b 28 4c 49 53 54 29 2e  == 4 ? ++(LIST).
c330: 61 70 74 72 2c 30 20 3a 20 30 29 2c 20 5c 0a 20  aptr,0 : 0), \. 
c340: 20 20 20 5f 5f 61 76 5f 73 74 72 75 63 74 5f 72     __av_struct_r
c350: 69 67 68 74 61 64 6a 75 73 74 65 64 28 4c 49 53  ightadjusted(LIS
c360: 54 2c 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45  T,TYPE,TYPE_SIZE
c370: 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49  ,TYPE_ALIGN,ASSI
c380: 47 4e 2c 56 41 4c 29 29 29 0a 23 65 6e 64 69 66  GN,VAL))).#endif
c390: 0a 2f 2a 20 62 69 67 20 65 6e 64 69 61 6e 20 2d  ./* big endian -
c3a0: 3e 20 73 6d 61 6c 6c 20 73 74 72 75 63 74 75 72  > small structur
c3b0: 65 73 20 3c 20 31 20 77 6f 72 64 20 61 72 65 20  es < 1 word are 
c3c0: 61 64 6a 75 73 74 65 64 20 74 6f 20 74 68 65 20  adjusted to the 
c3d0: 72 69 67 68 74 20 2a 2f 0a 23 69 66 20 64 65 66  right */.#if def
c3e0: 69 6e 65 64 28 5f 5f 6d 38 38 6b 5f 5f 29 0a 23  ined(__m88k__).#
c3f0: 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 72 75  define __av_stru
c400: 63 74 28 4c 49 53 54 2c 54 59 50 45 2c 54 59 50  ct(LIST,TYPE,TYP
c410: 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47  E_SIZE,TYPE_ALIG
c420: 4e 2c 41 53 53 49 47 4e 2c 56 41 4c 29 09 09 5c  N,ASSIGN,VAL)..\
c430: 0a 20 20 28 28 28 4c 49 53 54 29 2e 61 70 74 72  .  (((LIST).aptr
c440: 20 3d 09 09 09 09 09 09 09 5c 0a 20 20 20 20 28   =.......\.    (
c450: 5f 5f 61 76 77 6f 72 64 2a 29 28 28 28 28 28 5f  __avword*)(((((_
c460: 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e 61  _avword)(LIST).a
c470: 70 74 72 2b 28 54 59 50 45 5f 53 49 5a 45 29 2b  ptr+(TYPE_SIZE)+
c480: 28 54 59 50 45 5f 41 4c 49 47 4e 29 2d 31 29 20  (TYPE_ALIGN)-1) 
c490: 26 20 2d 28 6c 6f 6e 67 29 28 54 59 50 45 5f 41  & -(long)(TYPE_A
c4a0: 4c 49 47 4e 29 29 5c 0a 09 09 20 2b 73 69 7a 65  LIGN))\... +size
c4b0: 6f 66 28 5f 5f 61 76 77 6f 72 64 29 2d 31 29 20  of(__avword)-1) 
c4c0: 26 20 2d 28 6c 6f 6e 67 29 73 69 7a 65 6f 66 28  & -(long)sizeof(
c4d0: 5f 5f 61 76 77 6f 72 64 29 29 29 09 5c 0a 20 20  __avword))).\.  
c4e0: 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53   > __av_eptr(LIS
c4f0: 54 29 09 09 09 09 09 09 09 5c 0a 20 20 20 3f 20  T).......\.   ? 
c500: 2d 31 20 3a 20 28 41 53 53 49 47 4e 28 54 59 50  -1 : (ASSIGN(TYP
c510: 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45  E,TYPE_SIZE,TYPE
c520: 5f 41 4c 49 47 4e 2c 28 76 6f 69 64 2a 29 28 28  _ALIGN,(void*)((
c530: 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e  __avword)(LIST).
c540: 61 70 74 72 2d 28 54 59 50 45 5f 53 49 5a 45 29  aptr-(TYPE_SIZE)
c550: 29 2c 56 41 4c 29 2c 5c 0a 09 20 20 20 30 29 29  ),VAL),\..   0))
c560: 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69 66 0a 23  .#endif.#endif.#
c570: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 36 38  if defined(__m68
c580: 6b 5f 5f 29 20 7c 7c 20 28 64 65 66 69 6e 65 64  k__) || (defined
c590: 28 5f 5f 61 72 6d 5f 5f 29 20 26 26 20 21 64 65  (__arm__) && !de
c5a0: 66 69 6e 65 64 28 5f 5f 41 52 4d 45 4c 5f 5f 29  fined(__ARMEL__)
c5b0: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 63  ) || defined(__c
c5c0: 6f 6e 76 65 78 5f 5f 29 0a 2f 2a 20 53 74 72 75  onvex__)./* Stru
c5d0: 63 74 75 72 65 73 20 61 72 65 20 70 61 73 73 65  ctures are passe
c5e0: 64 20 61 73 20 65 6d 62 65 64 64 65 64 20 63 6f  d as embedded co
c5f0: 70 69 65 73 20 6f 6e 20 74 68 65 20 61 72 67 20  pies on the arg 
c600: 73 74 61 63 6b 2e 0a 20 2a 2f 0a 23 64 65 66 69  stack.. */.#defi
c610: 6e 65 20 5f 5f 61 76 5f 73 74 72 75 63 74 28 4c  ne __av_struct(L
c620: 49 53 54 2c 54 59 50 45 2c 54 59 50 45 5f 53 49  IST,TYPE,TYPE_SI
c630: 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53  ZE,TYPE_ALIGN,AS
c640: 53 49 47 4e 2c 56 41 4c 29 09 09 5c 0a 20 20 28  SIGN,VAL)..\.  (
c650: 28 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 28  ((LIST).aptr = (
c660: 5f 5f 61 76 77 6f 72 64 2a 29 28 28 28 6c 6f 6e  __avword*)(((lon
c670: 67 29 28 4c 49 53 54 29 2e 61 70 74 72 2b 28 54  g)(LIST).aptr+(T
c680: 59 50 45 5f 53 49 5a 45 29 2b 73 69 7a 65 6f 66  YPE_SIZE)+sizeof
c690: 28 5f 5f 61 76 77 6f 72 64 29 2d 31 29 20 26 20  (__avword)-1) & 
c6a0: 2d 28 6c 6f 6e 67 29 73 69 7a 65 6f 66 28 5f 5f  -(long)sizeof(__
c6b0: 61 76 77 6f 72 64 29 29 29 20 5c 0a 20 20 20 20  avword))) \.    
c6c0: 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54  > __av_eptr(LIST
c6d0: 29 09 09 09 09 09 09 09 5c 0a 20 20 20 20 3f 20  ).......\.    ? 
c6e0: 2d 31 20 3a 20 28 41 53 53 49 47 4e 28 54 59 50  -1 : (ASSIGN(TYP
c6f0: 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45  E,TYPE_SIZE,TYPE
c700: 5f 41 4c 49 47 4e 2c 28 76 6f 69 64 2a 29 28 28  _ALIGN,(void*)((
c710: 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e  __avword)(LIST).
c720: 61 70 74 72 2d 28 54 59 50 45 5f 53 49 5a 45 29  aptr-(TYPE_SIZE)
c730: 29 2c 56 41 4c 29 2c 5c 0a 09 20 20 20 20 30 29  ),VAL),\..    0)
c740: 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 28 64 65  ).#endif.#if (de
c750: 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f 5f 29  fined(__sparc__)
c760: 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 73   && !defined(__s
c770: 70 61 72 63 36 34 5f 5f 29 29 20 7c 7c 20 28 64  parc64__)) || (d
c780: 65 66 69 6e 65 64 28 5f 5f 70 6f 77 65 72 70 63  efined(__powerpc
c790: 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 28  __) && !defined(
c7a0: 5f 5f 70 6f 77 65 72 70 63 36 34 5f 5f 29 20 26  __powerpc64__) &
c7b0: 26 20 21 28 64 65 66 69 6e 65 64 28 5f 41 49 58  & !(defined(_AIX
c7c0: 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f  ) || (defined(__
c7d0: 4d 41 43 48 5f 5f 29 20 26 26 20 64 65 66 69 6e  MACH__) && defin
c7e0: 65 64 28 5f 5f 41 50 50 4c 45 5f 5f 29 29 29 29  ed(__APPLE__))))
c7f0: 0a 2f 2a 20 53 74 72 75 63 74 75 72 65 73 20 61  ./* Structures a
c800: 72 65 20 70 61 73 73 65 64 20 61 73 20 70 6f 69  re passed as poi
c810: 6e 74 65 72 73 20 74 6f 20 63 61 6c 6c 65 72 2d  nters to caller-
c820: 6d 61 64 65 20 6c 6f 63 61 6c 20 63 6f 70 69 65  made local copie
c830: 73 2e 20 57 65 0a 20 2a 20 67 72 61 62 20 73 70  s. We. * grab sp
c840: 61 63 65 20 66 6f 72 20 74 68 65 20 63 6f 70 69  ace for the copi
c850: 65 73 20 66 72 6f 6d 20 74 68 65 20 65 6e 64 20  es from the end 
c860: 6f 66 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20  of the argument 
c870: 6c 69 73 74 20 73 70 61 63 65 0a 20 2a 20 61 6e  list space. * an
c880: 64 20 61 6c 77 61 79 73 20 75 73 65 20 6d 61 78  d always use max
c890: 69 6d 61 6c 20 28 64 6f 75 62 6c 65 29 20 61 6c  imal (double) al
c8a0: 69 67 6e 6d 65 6e 74 2e 0a 20 2a 2f 0a 23 64 65  ignment.. */.#de
c8b0: 66 69 6e 65 20 5f 5f 61 76 5f 73 74 72 75 63 74  fine __av_struct
c8c0: 28 4c 49 53 54 2c 54 59 50 45 2c 54 59 50 45 5f  (LIST,TYPE,TYPE_
c8d0: 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c  SIZE,TYPE_ALIGN,
c8e0: 41 53 53 49 47 4e 2c 56 41 4c 29 09 09 5c 0a 20  ASSIGN,VAL)..\. 
c8f0: 20 20 28 2b 2b 28 4c 49 53 54 29 2e 61 70 74 72    (++(LIST).aptr
c900: 09 09 09 09 09 09 09 5c 0a 20 20 20 20 3e 20 28  .......\.    > (
c910: 28 4c 49 53 54 29 2e 65 70 74 72 20 3d 20 28 5f  (LIST).eptr = (_
c920: 5f 61 76 77 6f 72 64 2a 29 28 28 6c 6f 6e 67 29  _avword*)((long)
c930: 28 4c 49 53 54 29 2e 65 70 74 72 20 2d 20 28 28  (LIST).eptr - ((
c940: 28 54 59 50 45 5f 53 49 5a 45 29 2b 37 29 26 2d  (TYPE_SIZE)+7)&-
c950: 38 29 29 29 5c 0a 20 20 20 20 3f 20 2d 31 20 3a  8)))\.    ? -1 :
c960: 09 09 09 09 09 09 09 09 5c 0a 20 20 20 20 28 41  ........\.    (A
c970: 53 53 49 47 4e 28 54 59 50 45 2c 54 59 50 45 5f  SSIGN(TYPE,TYPE_
c980: 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c  SIZE,TYPE_ALIGN,
c990: 28 76 6f 69 64 2a 29 28 4c 49 53 54 29 2e 65 70  (void*)(LIST).ep
c9a0: 74 72 2c 56 41 4c 29 2c 09 09 5c 0a 20 20 20 20  tr,VAL),..\.    
c9b0: 20 28 4c 49 53 54 29 2e 61 70 74 72 5b 2d 31 5d   (LIST).aptr[-1]
c9c0: 20 3d 20 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49   = (__avword)(LI
c9d0: 53 54 29 2e 65 70 74 72 2c 09 09 09 09 5c 0a 20  ST).eptr,....\. 
c9e0: 20 20 20 20 30 29 29 0a 23 65 6e 64 69 66 0a 23      0)).#endif.#
c9f0: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 73 70 61  if defined(__spa
ca00: 72 63 36 34 5f 5f 29 0a 2f 2a 20 53 74 72 75 63  rc64__)./* Struc
ca10: 74 75 72 65 73 20 3c 3d 20 31 36 20 62 79 74 65  tures <= 16 byte
ca20: 73 20 61 72 65 20 70 61 73 73 65 64 20 61 73 20  s are passed as 
ca30: 65 6d 62 65 64 64 65 64 20 63 6f 70 69 65 73 20  embedded copies 
ca40: 6f 6e 20 74 68 65 20 61 72 67 20 73 74 61 63 6b  on the arg stack
ca50: 2c 0a 20 2a 20 6c 65 66 74 2d 61 64 6a 75 73 74  ,. * left-adjust
ca60: 65 64 20 28 61 6c 74 68 6f 75 67 68 20 62 69 67  ed (although big
ca70: 2d 65 6e 64 69 61 6e 21 29 2e 0a 20 2a 20 57 68  -endian!).. * Wh
ca80: 65 6e 20 61 20 73 74 72 75 63 74 75 72 65 20 69  en a structure i
ca90: 73 20 70 61 73 73 65 64 20 28 70 61 72 74 69 61  s passed (partia
caa0: 6c 6c 79 29 20 69 6e 20 72 65 67 69 73 74 65 72  lly) in register
cab0: 73 2c 20 69 74 20 69 73 20 70 61 73 73 65 64 20  s, it is passed 
cac0: 69 6e 20 74 68 65 0a 20 2a 20 69 6e 74 65 67 65  in the. * intege
cad0: 72 20 72 65 67 69 73 74 65 72 73 2c 20 65 78 63  r registers, exc
cae0: 65 70 74 20 74 68 61 74 20 66 6c 6f 61 74 73 20  ept that floats 
caf0: 61 6e 64 20 64 6f 75 62 6c 65 73 20 77 69 74 68  and doubles with
cb00: 69 6e 20 74 68 65 20 73 74 72 75 63 74 75 72 65  in the structure
cb10: 0a 20 2a 20 61 72 65 20 70 61 73 73 65 64 20 69  . * are passed i
cb20: 6e 20 74 68 65 20 66 6c 6f 61 74 69 6e 67 20 70  n the floating p
cb30: 6f 69 6e 74 20 72 65 67 69 73 74 65 72 73 2e 20  oint registers. 
cb40: 49 6e 73 74 65 61 64 20 6f 66 20 64 69 73 74 69  Instead of disti
cb50: 6e 67 75 69 73 68 69 6e 67 0a 20 2a 20 74 68 65  nguishing. * the
cb60: 73 65 20 63 61 73 65 73 2c 20 77 65 20 61 6c 77  se cases, we alw
cb70: 61 79 73 20 70 61 73 73 20 74 68 65 20 73 74 72  ays pass the str
cb80: 75 63 74 75 72 65 20 69 6e 20 62 6f 74 68 20 74  ucture in both t
cb90: 68 65 20 69 6e 74 65 67 65 72 20 61 6e 64 20 74  he integer and t
cba0: 68 65 0a 20 2a 20 66 6c 6f 61 74 69 6e 67 20 70  he. * floating p
cbb0: 6f 69 6e 74 20 72 65 67 69 73 74 65 72 73 2e 0a  oint registers..
cbc0: 20 2a 20 42 69 67 20 73 74 72 75 63 74 75 72 65   * Big structure
cbd0: 73 20 61 72 65 20 70 61 73 73 65 64 20 61 73 20  s are passed as 
cbe0: 70 6f 69 6e 74 65 72 73 20 74 6f 20 63 61 6c 6c  pointers to call
cbf0: 65 72 2d 6d 61 64 65 20 6c 6f 63 61 6c 20 63 6f  er-made local co
cc00: 70 69 65 73 2e 0a 20 2a 20 46 49 58 4d 45 3a 20  pies.. * FIXME: 
cc10: 53 68 6f 75 6c 64 6e 27 74 20 28 4c 49 53 54 29  Shouldn't (LIST)
cc20: 2e 61 6e 75 6d 20 62 65 20 69 6e 63 72 65 6d 65  .anum be increme
cc30: 6e 74 65 64 20 69 6e 20 73 79 6e 63 20 77 69 74  nted in sync wit
cc40: 68 20 28 4c 49 53 54 29 2e 61 70 74 72 20 3f 0a  h (LIST).aptr ?.
cc50: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76   */.#define __av
cc60: 5f 73 74 72 75 63 74 28 4c 49 53 54 2c 54 59 50  _struct(LIST,TYP
cc70: 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45  E,TYPE_SIZE,TYPE
cc80: 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e 2c 56 41  _ALIGN,ASSIGN,VA
cc90: 4c 29 09 09 5c 0a 20 20 28 28 54 59 50 45 5f 53  L)..\.  ((TYPE_S
cca0: 49 5a 45 29 20 3e 20 31 36 09 09 09 09 09 09 09  IZE) > 16.......
ccb0: 5c 0a 20 20 20 3f 20 28 2b 2b 28 4c 49 53 54 29  \.   ? (++(LIST)
ccc0: 2e 61 70 74 72 09 09 09 09 09 09 09 5c 0a 20 20  .aptr.......\.  
ccd0: 20 20 20 20 3e 20 28 28 4c 49 53 54 29 2e 65 70      > ((LIST).ep
cce0: 74 72 20 3d 20 28 5f 5f 61 76 77 6f 72 64 2a 29  tr = (__avword*)
ccf0: 28 28 6c 6f 6e 67 29 28 4c 49 53 54 29 2e 65 70  ((long)(LIST).ep
cd00: 74 72 20 2d 20 28 28 28 54 59 50 45 5f 53 49 5a  tr - (((TYPE_SIZ
cd10: 45 29 2b 37 29 26 2d 38 29 29 29 5c 0a 20 20 20  E)+7)&-8)))\.   
cd20: 20 20 20 3f 20 2d 31 20 3a 09 09 09 09 09 09 09     ? -1 :.......
cd30: 09 5c 0a 20 20 20 20 20 20 28 41 53 53 49 47 4e  .\.      (ASSIGN
cd40: 28 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c  (TYPE,TYPE_SIZE,
cd50: 54 59 50 45 5f 41 4c 49 47 4e 2c 28 76 6f 69 64  TYPE_ALIGN,(void
cd60: 2a 29 28 4c 49 53 54 29 2e 65 70 74 72 2c 56 41  *)(LIST).eptr,VA
cd70: 4c 29 2c 09 5c 0a 20 20 20 20 20 20 20 28 4c 49  L),.\.       (LI
cd80: 53 54 29 2e 61 70 74 72 5b 2d 31 5d 20 3d 20 28  ST).aptr[-1] = (
cd90: 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e  __avword)(LIST).
cda0: 65 70 74 72 2c 09 09 09 09 5c 0a 20 20 20 20 20  eptr,....\.     
cdb0: 20 20 30 29 29 09 09 09 09 09 09 09 09 5c 0a 20    0))........\. 
cdc0: 20 20 3a 20 28 28 28 4c 49 53 54 29 2e 61 70 74    : (((LIST).apt
cdd0: 72 20 3d 09 09 09 09 09 09 09 5c 0a 20 20 20 20  r =.......\.    
cde0: 20 20 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28 28     (__avword*)((
cdf0: 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29  (__avword)(LIST)
ce00: 2e 61 70 74 72 2b 28 54 59 50 45 5f 53 49 5a 45  .aptr+(TYPE_SIZE
ce10: 29 2b 28 54 59 50 45 5f 41 4c 49 47 4e 29 2d 31  )+(TYPE_ALIGN)-1
ce20: 29 20 26 20 2d 28 6c 6f 6e 67 29 28 54 59 50 45  ) & -(long)(TYPE
ce30: 5f 41 4c 49 47 4e 29 29 29 5c 0a 20 20 20 20 20  _ALIGN)))\.     
ce40: 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53   > __av_eptr(LIS
ce50: 54 29 09 09 09 09 09 09 09 5c 0a 20 20 20 20 20  T).......\.     
ce60: 20 3f 20 2d 31 20 3a 20 28 41 53 53 49 47 4e 28   ? -1 : (ASSIGN(
ce70: 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54  TYPE,TYPE_SIZE,T
ce80: 59 50 45 5f 41 4c 49 47 4e 2c 28 76 6f 69 64 2a  YPE_ALIGN,(void*
ce90: 29 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53  )((__avword)(LIS
cea0: 54 29 2e 61 70 74 72 2d 28 54 59 50 45 5f 53 49  T).aptr-(TYPE_SI
ceb0: 5a 45 29 29 2c 56 41 4c 29 2c 5c 0a 09 20 20 20  ZE)),VAL),\..   
cec0: 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72 20 3d     (LIST).aptr =
ced0: 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28 28 28 5f   (__avword*)(((_
cee0: 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e 61  _avword)(LIST).a
cef0: 70 74 72 2b 73 69 7a 65 6f 66 28 5f 5f 61 76 77  ptr+sizeof(__avw
cf00: 6f 72 64 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67  ord)-1) & -(long
cf10: 29 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64  )sizeof(__avword
cf20: 29 29 2c 5c 0a 09 20 20 20 20 20 20 28 28 4c 49  )),\..      ((LI
cf30: 53 54 29 2e 61 6e 75 6d 20 3c 20 31 36 09 09 09  ST).anum < 16...
cf40: 09 09 09 5c 0a 09 09 26 26 20 28 28 4c 49 53 54  ...\...&& ((LIST
cf50: 29 2e 66 61 72 67 5f 6d 61 73 6b 20 7c 3d 20 28  ).farg_mask |= (
cf60: 2d 31 20 3c 3c 20 28 4c 49 53 54 29 2e 61 6e 75  -1 << (LIST).anu
cf70: 6d 29 2c 09 09 5c 0a 09 09 20 20 20 20 28 4c 49  m),..\...    (LI
cf80: 53 54 29 2e 64 61 72 67 5f 6d 61 73 6b 20 7c 3d  ST).darg_mask |=
cf90: 20 28 2d 31 20 3c 3c 20 28 4c 49 53 54 29 2e 61   (-1 << (LIST).a
cfa0: 6e 75 6d 29 29 29 2c 09 09 5c 0a 09 20 20 20 20  num))),..\..    
cfb0: 20 20 28 4c 49 53 54 29 2e 61 6e 75 6d 20 2b 3d    (LIST).anum +=
cfc0: 20 28 28 28 28 28 54 59 50 45 5f 53 49 5a 45 29   (((((TYPE_SIZE)
cfd0: 2b 28 54 59 50 45 5f 41 4c 49 47 4e 29 2d 31 29  +(TYPE_ALIGN)-1)
cfe0: 20 26 20 2d 28 6c 6f 6e 67 29 28 54 59 50 45 5f   & -(long)(TYPE_
cff0: 41 4c 49 47 4e 29 29 20 2b 20 73 69 7a 65 6f 66  ALIGN)) + sizeof
d000: 28 5f 5f 61 76 77 6f 72 64 29 2d 31 29 20 26 20  (__avword)-1) & 
d010: 2d 28 6c 6f 6e 67 29 73 69 7a 65 6f 66 28 5f 5f  -(long)sizeof(__
d020: 61 76 77 6f 72 64 29 29 2f 73 69 7a 65 6f 66 28  avword))/sizeof(
d030: 5f 5f 61 76 77 6f 72 64 29 2c 5c 0a 09 20 20 20  __avword),\..   
d040: 20 20 20 28 4c 49 53 54 29 2e 66 61 72 67 5f 6d     (LIST).farg_m
d050: 61 73 6b 20 26 3d 20 28 31 20 3c 3c 20 28 28 4c  ask &= (1 << ((L
d060: 49 53 54 29 2e 61 6e 75 6d 20 3c 20 31 36 20 3f  IST).anum < 16 ?
d070: 20 28 4c 49 53 54 29 2e 61 6e 75 6d 20 3a 20 31   (LIST).anum : 1
d080: 36 29 29 20 2d 20 31 2c 20 5c 0a 09 20 20 20 20  6)) - 1, \..    
d090: 20 20 28 4c 49 53 54 29 2e 64 61 72 67 5f 6d 61    (LIST).darg_ma
d0a0: 73 6b 20 26 3d 20 28 31 20 3c 3c 20 28 28 4c 49  sk &= (1 << ((LI
d0b0: 53 54 29 2e 61 6e 75 6d 20 3c 20 31 36 20 3f 20  ST).anum < 16 ? 
d0c0: 28 4c 49 53 54 29 2e 61 6e 75 6d 20 3a 20 31 36  (LIST).anum : 16
d0d0: 29 29 20 2d 20 31 2c 20 5c 0a 09 20 20 20 20 20  )) - 1, \..     
d0e0: 20 30 29 29 29 0a 23 65 6e 64 69 66 0a 23 69 66   0))).#endif.#if
d0f0: 20 64 65 66 69 6e 65 64 28 5f 5f 68 70 70 61 5f   defined(__hppa_
d100: 5f 29 0a 2f 2a 20 53 74 72 75 63 74 75 72 65 73  _)./* Structures
d110: 20 3c 3d 20 38 20 62 79 74 65 73 20 61 72 65 20   <= 8 bytes are 
d120: 70 61 73 73 65 64 20 61 73 20 65 6d 62 65 64 64  passed as embedd
d130: 65 64 20 63 6f 70 69 65 73 20 6f 6e 20 74 68 65  ed copies on the
d140: 20 61 72 67 20 73 74 61 63 6b 2e 0a 20 2a 20 42   arg stack.. * B
d150: 69 67 20 73 74 72 75 63 74 75 72 65 73 20 61 72  ig structures ar
d160: 65 20 70 61 73 73 65 64 20 61 73 20 70 6f 69 6e  e passed as poin
d170: 74 65 72 73 20 74 6f 20 63 61 6c 6c 65 72 2d 6d  ters to caller-m
d180: 61 64 65 20 6c 6f 63 61 6c 20 63 6f 70 69 65 73  ade local copies
d190: 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f  .. */.#define __
d1a0: 61 76 5f 73 74 72 75 63 74 28 4c 49 53 54 2c 54  av_struct(LIST,T
d1b0: 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59  YPE,TYPE_SIZE,TY
d1c0: 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e 2c  PE_ALIGN,ASSIGN,
d1d0: 56 41 4c 29 09 09 09 5c 0a 20 20 28 28 54 59 50  VAL)...\.  ((TYP
d1e0: 45 5f 53 49 5a 45 29 20 3e 20 38 09 09 09 09 09  E_SIZE) > 8.....
d1f0: 09 09 09 5c 0a 20 20 20 3f 20 28 2d 2d 28 4c 49  ...\.   ? (--(LI
d200: 53 54 29 2e 61 70 74 72 09 09 09 09 09 09 09 09  ST).aptr........
d210: 5c 0a 20 20 20 20 20 20 3c 20 28 28 4c 49 53 54  \.      < ((LIST
d220: 29 2e 65 70 74 72 20 3d 20 28 5f 5f 61 76 77 6f  ).eptr = (__avwo
d230: 72 64 2a 29 28 28 6c 6f 6e 67 29 28 4c 49 53 54  rd*)((long)(LIST
d240: 29 2e 65 70 74 72 20 2b 20 28 28 28 54 59 50 45  ).eptr + (((TYPE
d250: 5f 53 49 5a 45 29 20 2b 20 37 29 20 26 20 2d 38  _SIZE) + 7) & -8
d260: 29 29 29 20 5c 0a 20 20 20 20 20 20 3f 20 2d 31  ))) \.      ? -1
d270: 09 09 09 09 09 09 09 09 09 5c 0a 20 20 20 20 20  .........\.     
d280: 20 3a 20 28 41 53 53 49 47 4e 28 54 59 50 45 2c   : (ASSIGN(TYPE,
d290: 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41  TYPE_SIZE,TYPE_A
d2a0: 4c 49 47 4e 2c 28 76 6f 69 64 2a 29 28 28 6c 6f  LIGN,(void*)((lo
d2b0: 6e 67 29 28 4c 49 53 54 29 2e 65 70 74 72 20 2d  ng)(LIST).eptr -
d2c0: 20 28 28 28 54 59 50 45 5f 53 49 5a 45 29 20 2b   (((TYPE_SIZE) +
d2d0: 20 37 29 20 26 20 2d 38 29 29 2c 20 56 41 4c 29   7) & -8)), VAL)
d2e0: 2c 20 5c 0a 09 20 2a 28 4c 49 53 54 29 2e 61 70  , \.. *(LIST).ap
d2f0: 74 72 20 3d 20 28 5f 5f 61 76 77 6f 72 64 29 28  tr = (__avword)(
d300: 28 6c 6f 6e 67 29 28 4c 49 53 54 29 2e 65 70 74  (long)(LIST).ept
d310: 72 20 2d 20 28 28 28 54 59 50 45 5f 53 49 5a 45  r - (((TYPE_SIZE
d320: 29 20 2b 20 37 29 20 26 20 2d 38 29 29 2c 20 5c  ) + 7) & -8)), \
d330: 0a 09 20 30 29 29 09 09 09 09 09 09 09 09 09 5c  .. 0)).........\
d340: 0a 20 20 20 3a 20 28 28 54 59 50 45 5f 53 49 5a  .   : ((TYPE_SIZ
d350: 45 29 20 3e 20 34 09 09 09 09 09 09 09 09 5c 0a  E) > 4........\.
d360: 20 20 20 20 20 20 3f 20 28 28 28 4c 49 53 54 29        ? (((LIST)
d370: 2e 61 70 74 72 20 3d 20 28 5f 5f 61 76 77 6f 72  .aptr = (__avwor
d380: 64 2a 29 28 28 28 28 6c 6f 6e 67 29 28 4c 49 53  d*)((((long)(LIS
d390: 54 29 2e 61 70 74 72 20 26 20 2d 38 29 20 2d 20  T).aptr & -8) - 
d3a0: 28 6c 6f 6e 67 29 28 54 59 50 45 5f 53 49 5a 45  (long)(TYPE_SIZE
d3b0: 29 29 20 26 20 2d 38 29 29 20 5c 0a 09 20 20 3c  )) & -8)) \..  <
d3c0: 20 26 28 4c 49 53 54 29 2e 61 72 67 73 5b 30 5d   &(LIST).args[0]
d3d0: 09 09 09 09 09 09 09 5c 0a 09 20 20 3f 20 2d 31  .......\..  ? -1
d3e0: 20 3a 20 28 41 53 53 49 47 4e 28 54 59 50 45 2c   : (ASSIGN(TYPE,
d3f0: 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41  TYPE_SIZE,TYPE_A
d400: 4c 49 47 4e 2c 28 76 6f 69 64 2a 29 28 4c 49 53  LIGN,(void*)(LIS
d410: 54 29 2e 61 70 74 72 2c 56 41 4c 29 2c 20 30 29  T).aptr,VAL), 0)
d420: 29 09 5c 0a 20 20 20 20 20 20 3a 20 2f 2a 20 46  ).\.      : /* F
d430: 49 58 4d 45 3a 20 67 63 63 2d 32 2e 36 2e 33 20  IXME: gcc-2.6.3 
d440: 70 61 73 73 65 73 20 73 74 72 75 63 74 75 72 65  passes structure
d450: 73 20 3c 3d 20 34 20 62 79 74 65 73 20 69 6e 20  s <= 4 bytes in 
d460: 6d 65 6d 6f 72 79 20 6c 65 66 74 2d 61 64 6a 75  memory left-adju
d470: 73 74 65 64 21 20 3f 3f 20 2a 2f 5c 0a 20 20 20  sted! ?? */\.   
d480: 20 20 20 20 20 28 28 28 4c 49 53 54 29 2e 61 70       (((LIST).ap
d490: 74 72 20 3d 20 28 5f 5f 61 76 77 6f 72 64 2a 29  tr = (__avword*)
d4a0: 28 28 28 6c 6f 6e 67 29 28 4c 49 53 54 29 2e 61  (((long)(LIST).a
d4b0: 70 74 72 20 26 20 2d 34 29 20 2d 20 28 6c 6f 6e  ptr & -4) - (lon
d4c0: 67 29 28 54 59 50 45 5f 53 49 5a 45 29 29 29 20  g)(TYPE_SIZE))) 
d4d0: 5c 0a 09 20 20 3c 20 26 28 4c 49 53 54 29 2e 61  \..  < &(LIST).a
d4e0: 72 67 73 5b 30 5d 09 09 09 09 09 09 09 5c 0a 09  rgs[0].......\..
d4f0: 20 20 3f 20 2d 31 20 3a 20 28 41 53 53 49 47 4e    ? -1 : (ASSIGN
d500: 28 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c  (TYPE,TYPE_SIZE,
d510: 54 59 50 45 5f 41 4c 49 47 4e 2c 28 76 6f 69 64  TYPE_ALIGN,(void
d520: 2a 29 28 4c 49 53 54 29 2e 61 70 74 72 2c 56 41  *)(LIST).aptr,VA
d530: 4c 29 2c 09 5c 0a 09 09 20 20 28 4c 49 53 54 29  L),.\...  (LIST)
d540: 2e 61 70 74 72 20 3d 20 28 5f 5f 61 76 77 6f 72  .aptr = (__avwor
d550: 64 2a 29 28 28 6c 6f 6e 67 29 28 4c 49 53 54 29  d*)((long)(LIST)
d560: 2e 61 70 74 72 20 26 20 2d 34 29 2c 09 09 5c 0a  .aptr & -4),..\.
d570: 09 09 20 20 30 29 29 29 29 0a 23 65 6e 64 69 66  ..  0)))).#endif
d580: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 78  .#if defined(__x
d590: 38 36 5f 36 34 5f 5f 29 0a 2f 2a 20 53 74 72 75  86_64__)./* Stru
d5a0: 63 74 75 72 65 73 20 3c 3d 20 31 36 20 62 79 74  ctures <= 16 byt
d5b0: 65 73 20 63 61 6e 20 62 65 20 70 61 73 73 65 64  es can be passed
d5c0: 20 69 6e 20 69 6e 74 65 67 65 72 20 6f 72 20 66   in integer or f
d5d0: 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e 74 20 72 65  loating-point re
d5e0: 67 69 73 74 65 72 73 0a 20 20 20 69 66 20 74 68  gisters.   if th
d5f0: 65 72 65 20 69 73 20 65 6e 6f 75 67 68 20 72 6f  ere is enough ro
d600: 6f 6d 20 66 6f 72 20 74 68 65 20 77 68 6f 6c 65  om for the whole
d610: 20 6e 75 6d 62 65 72 20 6f 66 20 77 6f 72 64 73   number of words
d620: 20 6e 65 65 64 65 64 20 62 79 20 74 68 65 20 73   needed by the s
d630: 74 72 75 63 74 75 72 65 0a 20 20 20 69 6e 20 74  tructure.   in t
d640: 68 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67  he corresponding
d650: 20 69 61 72 67 73 2f 66 61 72 67 73 20 62 6c 6f   iargs/fargs blo
d660: 63 6b 2e 20 57 65 20 63 61 6e 27 74 20 64 69 73  ck. We can't dis
d670: 74 69 6e 67 75 69 73 68 20 74 68 65 20 74 77 6f  tinguish the two
d680: 20 63 61 73 65 73 0a 20 20 20 61 6e 64 20 73 75   cases.   and su
d690: 70 70 6f 72 74 20 6f 6e 6c 79 20 70 61 73 73 69  pport only passi
d6a0: 6e 67 20 69 6e 20 69 6e 74 65 67 65 72 20 72 65  ng in integer re
d6b0: 67 69 73 74 65 72 73 2e 20 4f 74 68 65 72 20 73  gisters. Other s
d6c0: 74 72 75 63 74 75 72 65 73 20 61 72 65 20 70 61  tructures are pa
d6d0: 73 73 65 64 0a 20 20 20 6f 6e 20 74 68 65 20 61  ssed.   on the a
d6e0: 72 67 20 73 74 61 63 6b 2e 20 2a 2f 0a 23 64 65  rg stack. */.#de
d6f0: 66 69 6e 65 20 5f 5f 61 76 5f 73 74 72 75 63 74  fine __av_struct
d700: 28 4c 49 53 54 2c 54 59 50 45 2c 54 59 50 45 5f  (LIST,TYPE,TYPE_
d710: 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c  SIZE,TYPE_ALIGN,
d720: 41 53 53 49 47 4e 2c 56 41 4c 29 09 09 09 5c 0a  ASSIGN,VAL)...\.
d730: 20 20 28 28 4c 49 53 54 29 2e 69 61 70 74 72 20    ((LIST).iaptr 
d740: 2b 20 28 28 54 59 50 45 5f 53 49 5a 45 29 20 2b  + ((TYPE_SIZE) +
d750: 20 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64   sizeof(__avword
d760: 29 2d 31 29 20 2f 20 73 69 7a 65 6f 66 28 5f 5f  )-1) / sizeof(__
d770: 61 76 77 6f 72 64 29 20 3c 3d 20 26 28 4c 49 53  avword) <= &(LIS
d780: 54 29 2e 69 61 72 67 73 5b 36 5d 20 5c 0a 20 20  T).iargs[6] \.  
d790: 20 3f 20 28 41 53 53 49 47 4e 28 54 59 50 45 2c   ? (ASSIGN(TYPE,
d7a0: 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41  TYPE_SIZE,TYPE_A
d7b0: 4c 49 47 4e 2c 28 76 6f 69 64 2a 29 28 4c 49 53  LIGN,(void*)(LIS
d7c0: 54 29 2e 69 61 70 74 72 2c 56 41 4c 29 2c 09 09  T).iaptr,VAL),..
d7d0: 5c 0a 20 20 20 20 20 20 28 4c 49 53 54 29 2e 69  \.      (LIST).i
d7e0: 61 70 74 72 20 2b 3d 20 28 28 54 59 50 45 5f 53  aptr += ((TYPE_S
d7f0: 49 5a 45 29 20 2b 20 73 69 7a 65 6f 66 28 5f 5f  IZE) + sizeof(__
d800: 61 76 77 6f 72 64 29 2d 31 29 20 2f 20 73 69 7a  avword)-1) / siz
d810: 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 2c 09 5c  eof(__avword),.\
d820: 0a 20 20 20 20 20 20 30 29 09 09 09 09 09 09 09  .      0).......
d830: 09 09 5c 0a 20 20 20 3a 20 28 28 4c 49 53 54 29  ..\.   : ((LIST)
d840: 2e 61 70 74 72 20 3d 20 28 5f 5f 61 76 77 6f 72  .aptr = (__avwor
d850: 64 2a 29 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c  d*)((__avword)(L
d860: 49 53 54 29 2e 61 70 74 72 20 2b 20 28 28 28 54  IST).aptr + (((T
d870: 59 50 45 5f 53 49 5a 45 29 2b 5f 5f 61 76 5f 73  YPE_SIZE)+__av_s
d880: 74 72 75 63 74 5f 61 6c 69 67 6e 6d 65 6e 74 28  truct_alignment(
d890: 54 59 50 45 5f 41 4c 49 47 4e 29 2d 31 29 20 26  TYPE_ALIGN)-1) &
d8a0: 20 2d 28 6c 6f 6e 67 29 5f 5f 61 76 5f 73 74 72   -(long)__av_str
d8b0: 75 63 74 5f 61 6c 69 67 6e 6d 65 6e 74 28 54 59  uct_alignment(TY
d8c0: 50 45 5f 41 4c 49 47 4e 29 29 29 2c 20 5c 0a 20  PE_ALIGN))), \. 
d8d0: 20 20 20 20 20 28 28 4c 49 53 54 29 2e 61 70 74       ((LIST).apt
d8e0: 72 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49  r > __av_eptr(LI
d8f0: 53 54 29 09 09 09 09 09 09 5c 0a 20 20 20 20 20  ST)......\.     
d900: 20 20 3f 20 2d 31 20 3a 20 28 41 53 53 49 47 4e    ? -1 : (ASSIGN
d910: 28 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c  (TYPE,TYPE_SIZE,
d920: 54 59 50 45 5f 41 4c 49 47 4e 2c 28 76 6f 69 64  TYPE_ALIGN,(void
d930: 2a 29 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49  *)((__avword)(LI
d940: 53 54 29 2e 61 70 74 72 20 2d 20 28 28 28 54 59  ST).aptr - (((TY
d950: 50 45 5f 53 49 5a 45 29 2b 5f 5f 61 76 5f 73 74  PE_SIZE)+__av_st
d960: 72 75 63 74 5f 61 6c 69 67 6e 6d 65 6e 74 28 54  ruct_alignment(T
d970: 59 50 45 5f 41 4c 49 47 4e 29 2d 31 29 20 26 20  YPE_ALIGN)-1) & 
d980: 2d 28 6c 6f 6e 67 29 5f 5f 61 76 5f 73 74 72 75  -(long)__av_stru
d990: 63 74 5f 61 6c 69 67 6e 6d 65 6e 74 28 54 59 50  ct_alignment(TYP
d9a0: 45 5f 41 4c 49 47 4e 29 29 29 2c 56 41 4c 29 2c  E_ALIGN))),VAL),
d9b0: 5c 0a 09 20 20 20 20 20 20 20 30 29 29 29 29 0a  \..       0)))).
d9c0: 23 65 6e 64 69 66 0a 0a 2f 2a 0a 20 2a 20 63 61  #endif../*. * ca
d9d0: 6c 6c 69 6e 67 20 74 68 65 20 66 75 6e 63 74 69  lling the functi
d9e0: 6f 6e 0a 20 2a 2f 0a 0a 23 64 65 66 69 6e 65 20  on. */..#define 
d9f0: 61 76 5f 63 61 6c 6c 28 4c 49 53 54 29 20 5f 5f  av_call(LIST) __
da00: 62 75 69 6c 74 69 6e 5f 61 76 63 61 6c 6c 28 26  builtin_avcall(&
da10: 28 4c 49 53 54 29 29 0a 0a 2f 2a 20 44 65 74 65  (LIST))../* Dete
da20: 72 6d 69 6e 65 20 77 68 65 74 68 65 72 20 61 20  rmine whether a 
da30: 73 74 72 75 63 74 20 74 79 70 65 20 69 73 20 77  struct type is w
da40: 6f 72 64 2d 73 70 6c 69 74 74 61 62 6c 65 2c 20  ord-splittable, 
da50: 69 2e 65 2e 20 77 68 65 74 68 65 72 20 65 61 63  i.e. whether eac
da60: 68 20 6f 66 0a 20 2a 20 69 74 73 20 63 6f 6d 70  h of. * its comp
da70: 6f 6e 65 6e 74 73 20 66 69 74 20 69 6e 74 6f 20  onents fit into 
da80: 61 20 72 65 67 69 73 74 65 72 2e 0a 20 2a 20 54  a register.. * T
da90: 68 65 20 65 6e 74 69 72 65 20 63 6f 6d 70 75 74  he entire comput
daa0: 61 74 69 6f 6e 20 69 73 20 64 6f 6e 65 20 61 74  ation is done at
dab0: 20 63 6f 6d 70 69 6c 65 20 74 69 6d 65 2e 0a 20   compile time.. 
dac0: 2a 2f 0a 23 64 65 66 69 6e 65 20 61 76 5f 77 6f  */.#define av_wo
dad0: 72 64 5f 73 70 6c 69 74 74 61 62 6c 65 5f 31 28  rd_splittable_1(
dae0: 73 6c 6f 74 31 29 20 20 5c 0a 20 20 28 5f 5f 61  slot1)  \.  (__a
daf0: 76 5f 6f 66 66 73 65 74 31 28 73 6c 6f 74 31 29  v_offset1(slot1)
db00: 2f 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64  /sizeof(__avword
db10: 29 20 3d 3d 20 28 5f 5f 61 76 5f 6f 66 66 73 65  ) == (__av_offse
db20: 74 31 28 73 6c 6f 74 31 29 2b 73 69 7a 65 6f 66  t1(slot1)+sizeof
db30: 28 73 6c 6f 74 31 29 2d 31 29 2f 73 69 7a 65 6f  (slot1)-1)/sizeo
db40: 66 28 5f 5f 61 76 77 6f 72 64 29 29 0a 23 64 65  f(__avword)).#de
db50: 66 69 6e 65 20 61 76 5f 77 6f 72 64 5f 73 70 6c  fine av_word_spl
db60: 69 74 74 61 62 6c 65 5f 32 28 73 6c 6f 74 31 2c  ittable_2(slot1,
db70: 73 6c 6f 74 32 29 20 20 5c 0a 20 20 28 28 5f 5f  slot2)  \.  ((__
db80: 61 76 5f 6f 66 66 73 65 74 31 28 73 6c 6f 74 31  av_offset1(slot1
db90: 29 2f 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72  )/sizeof(__avwor
dba0: 64 29 20 3d 3d 20 28 5f 5f 61 76 5f 6f 66 66 73  d) == (__av_offs
dbb0: 65 74 31 28 73 6c 6f 74 31 29 2b 73 69 7a 65 6f  et1(slot1)+sizeo
dbc0: 66 28 73 6c 6f 74 31 29 2d 31 29 2f 73 69 7a 65  f(slot1)-1)/size
dbd0: 6f 66 28 5f 5f 61 76 77 6f 72 64 29 29 20 5c 0a  of(__avword)) \.
dbe0: 20 20 20 26 26 20 28 5f 5f 61 76 5f 6f 66 66 73     && (__av_offs
dbf0: 65 74 32 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 29  et2(slot1,slot2)
dc00: 2f 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64  /sizeof(__avword
dc10: 29 20 3d 3d 20 28 5f 5f 61 76 5f 6f 66 66 73 65  ) == (__av_offse
dc20: 74 32 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 29 2b  t2(slot1,slot2)+
dc30: 73 69 7a 65 6f 66 28 73 6c 6f 74 32 29 2d 31 29  sizeof(slot2)-1)
dc40: 2f 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64  /sizeof(__avword
dc50: 29 29 20 5c 0a 20 20 29 0a 23 64 65 66 69 6e 65  )) \.  ).#define
dc60: 20 61 76 5f 77 6f 72 64 5f 73 70 6c 69 74 74 61   av_word_splitta
dc70: 62 6c 65 5f 33 28 73 6c 6f 74 31 2c 73 6c 6f 74  ble_3(slot1,slot
dc80: 32 2c 73 6c 6f 74 33 29 20 20 5c 0a 20 20 28 28  2,slot3)  \.  ((
dc90: 5f 5f 61 76 5f 6f 66 66 73 65 74 31 28 73 6c 6f  __av_offset1(slo
dca0: 74 31 29 2f 73 69 7a 65 6f 66 28 5f 5f 61 76 77  t1)/sizeof(__avw
dcb0: 6f 72 64 29 20 3d 3d 20 28 5f 5f 61 76 5f 6f 66  ord) == (__av_of
dcc0: 66 73 65 74 31 28 73 6c 6f 74 31 29 2b 73 69 7a  fset1(slot1)+siz
dcd0: 65 6f 66 28 73 6c 6f 74 31 29 2d 31 29 2f 73 69  eof(slot1)-1)/si
dce0: 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 29 20  zeof(__avword)) 
dcf0: 5c 0a 20 20 20 26 26 20 28 5f 5f 61 76 5f 6f 66  \.   && (__av_of
dd00: 66 73 65 74 32 28 73 6c 6f 74 31 2c 73 6c 6f 74  fset2(slot1,slot
dd10: 32 29 2f 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f  2)/sizeof(__avwo
dd20: 72 64 29 20 3d 3d 20 28 5f 5f 61 76 5f 6f 66 66  rd) == (__av_off
dd30: 73 65 74 32 28 73 6c 6f 74 31 2c 73 6c 6f 74 32  set2(slot1,slot2
dd40: 29 2b 73 69 7a 65 6f 66 28 73 6c 6f 74 32 29 2d  )+sizeof(slot2)-
dd50: 31 29 2f 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f  1)/sizeof(__avwo
dd60: 72 64 29 29 20 5c 0a 20 20 20 26 26 20 28 5f 5f  rd)) \.   && (__
dd70: 61 76 5f 6f 66 66 73 65 74 33 28 73 6c 6f 74 31  av_offset3(slot1
dd80: 2c 73 6c 6f 74 32 2c 73 6c 6f 74 33 29 2f 73 69  ,slot2,slot3)/si
dd90: 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 20 3d  zeof(__avword) =
dda0: 3d 20 28 5f 5f 61 76 5f 6f 66 66 73 65 74 33 28  = (__av_offset3(
ddb0: 73 6c 6f 74 31 2c 73 6c 6f 74 32 2c 73 6c 6f 74  slot1,slot2,slot
ddc0: 33 29 2b 73 69 7a 65 6f 66 28 73 6c 6f 74 33 29  3)+sizeof(slot3)
ddd0: 2d 31 29 2f 73 69 7a 65 6f 66 28 5f 5f 61 76 77  -1)/sizeof(__avw
dde0: 6f 72 64 29 29 20 5c 0a 20 20 29 0a 23 64 65 66  ord)) \.  ).#def
ddf0: 69 6e 65 20 61 76 5f 77 6f 72 64 5f 73 70 6c 69  ine av_word_spli
de00: 74 74 61 62 6c 65 5f 34 28 73 6c 6f 74 31 2c 73  ttable_4(slot1,s
de10: 6c 6f 74 32 2c 73 6c 6f 74 33 2c 73 6c 6f 74 34  lot2,slot3,slot4
de20: 29 20 20 5c 0a 20 20 28 28 5f 5f 61 76 5f 6f 66  )  \.  ((__av_of
de30: 66 73 65 74 31 28 73 6c 6f 74 31 29 2f 73 69 7a  fset1(slot1)/siz
de40: 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 20 3d 3d  eof(__avword) ==
de50: 20 28 5f 5f 61 76 5f 6f 66 66 73 65 74 31 28 73   (__av_offset1(s
de60: 6c 6f 74 31 29 2b 73 69 7a 65 6f 66 28 73 6c 6f  lot1)+sizeof(slo
de70: 74 31 29 2d 31 29 2f 73 69 7a 65 6f 66 28 5f 5f  t1)-1)/sizeof(__
de80: 61 76 77 6f 72 64 29 29 20 5c 0a 20 20 20 26 26  avword)) \.   &&
de90: 20 28 5f 5f 61 76 5f 6f 66 66 73 65 74 32 28 73   (__av_offset2(s
dea0: 6c 6f 74 31 2c 73 6c 6f 74 32 29 2f 73 69 7a 65  lot1,slot2)/size
deb0: 6f 66 28 5f 5f 61 76 77 6f 72 64 29 20 3d 3d 20  of(__avword) == 
dec0: 28 5f 5f 61 76 5f 6f 66 66 73 65 74 32 28 73 6c  (__av_offset2(sl
ded0: 6f 74 31 2c 73 6c 6f 74 32 29 2b 73 69 7a 65 6f  ot1,slot2)+sizeo
dee0: 66 28 73 6c 6f 74 32 29 2d 31 29 2f 73 69 7a 65  f(slot2)-1)/size
def0: 6f 66 28 5f 5f 61 76 77 6f 72 64 29 29 20 5c 0a  of(__avword)) \.
df00: 20 20 20 26 26 20 28 5f 5f 61 76 5f 6f 66 66 73     && (__av_offs
df10: 65 74 33 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 2c  et3(slot1,slot2,
df20: 73 6c 6f 74 33 29 2f 73 69 7a 65 6f 66 28 5f 5f  slot3)/sizeof(__
df30: 61 76 77 6f 72 64 29 20 3d 3d 20 28 5f 5f 61 76  avword) == (__av
df40: 5f 6f 66 66 73 65 74 33 28 73 6c 6f 74 31 2c 73  _offset3(slot1,s
df50: 6c 6f 74 32 2c 73 6c 6f 74 33 29 2b 73 69 7a 65  lot2,slot3)+size
df60: 6f 66 28 73 6c 6f 74 33 29 2d 31 29 2f 73 69 7a  of(slot3)-1)/siz
df70: 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 29 20 5c  eof(__avword)) \
df80: 0a 20 20 20 26 26 20 28 5f 5f 61 76 5f 6f 66 66  .   && (__av_off
df90: 73 65 74 34 28 73 6c 6f 74 31 2c 73 6c 6f 74 32  set4(slot1,slot2
dfa0: 2c 73 6c 6f 74 33 2c 73 6c 6f 74 34 29 2f 73 69  ,slot3,slot4)/si
dfb0: 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 20 3d  zeof(__avword) =
dfc0: 3d 20 28 5f 5f 61 76 5f 6f 66 66 73 65 74 34 28  = (__av_offset4(
dfd0: 73 6c 6f 74 31 2c 73 6c 6f 74 32 2c 73 6c 6f 74  slot1,slot2,slot
dfe0: 33 2c 73 6c 6f 74 34 29 2b 73 69 7a 65 6f 66 28  3,slot4)+sizeof(
dff0: 73 6c 6f 74 34 29 2d 31 29 2f 73 69 7a 65 6f 66  slot4)-1)/sizeof
e000: 28 5f 5f 61 76 77 6f 72 64 29 29 20 5c 0a 20 20  (__avword)) \.  
e010: 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 6f  ).#define __av_o
e020: 66 66 73 65 74 31 28 73 6c 6f 74 31 29 20 20 5c  ffset1(slot1)  \
e030: 0a 20 20 30 0a 23 64 65 66 69 6e 65 20 5f 5f 61  .  0.#define __a
e040: 76 5f 6f 66 66 73 65 74 32 28 73 6c 6f 74 31 2c  v_offset2(slot1,
e050: 73 6c 6f 74 32 29 20 20 5c 0a 20 20 28 28 5f 5f  slot2)  \.  ((__
e060: 61 76 5f 6f 66 66 73 65 74 31 28 73 6c 6f 74 31  av_offset1(slot1
e070: 29 2b 73 69 7a 65 6f 66 28 73 6c 6f 74 31 29 2b  )+sizeof(slot1)+
e080: 5f 5f 41 56 5f 61 6c 69 67 6e 6f 66 28 73 6c 6f  __AV_alignof(slo
e090: 74 32 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29  t2)-1) & -(long)
e0a0: 5f 5f 41 56 5f 61 6c 69 67 6e 6f 66 28 73 6c 6f  __AV_alignof(slo
e0b0: 74 32 29 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61  t2)).#define __a
e0c0: 76 5f 6f 66 66 73 65 74 33 28 73 6c 6f 74 31 2c  v_offset3(slot1,
e0d0: 73 6c 6f 74 32 2c 73 6c 6f 74 33 29 20 20 5c 0a  slot2,slot3)  \.
e0e0: 20 20 28 28 5f 5f 61 76 5f 6f 66 66 73 65 74 32    ((__av_offset2
e0f0: 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 29 2b 73 69  (slot1,slot2)+si
e100: 7a 65 6f 66 28 73 6c 6f 74 32 29 2b 5f 5f 41 56  zeof(slot2)+__AV
e110: 5f 61 6c 69 67 6e 6f 66 28 73 6c 6f 74 33 29 2d  _alignof(slot3)-
e120: 31 29 20 26 20 2d 28 6c 6f 6e 67 29 5f 5f 41 56  1) & -(long)__AV
e130: 5f 61 6c 69 67 6e 6f 66 28 73 6c 6f 74 33 29 29  _alignof(slot3))
e140: 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 6f 66  .#define __av_of
e150: 66 73 65 74 34 28 73 6c 6f 74 31 2c 73 6c 6f 74  fset4(slot1,slot
e160: 32 2c 73 6c 6f 74 33 2c 73 6c 6f 74 34 29 20 20  2,slot3,slot4)  
e170: 5c 0a 20 20 28 28 5f 5f 61 76 5f 6f 66 66 73 65  \.  ((__av_offse
e180: 74 33 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 2c 73  t3(slot1,slot2,s
e190: 6c 6f 74 33 29 2b 73 69 7a 65 6f 66 28 73 6c 6f  lot3)+sizeof(slo
e1a0: 74 33 29 2b 5f 5f 41 56 5f 61 6c 69 67 6e 6f 66  t3)+__AV_alignof
e1b0: 28 73 6c 6f 74 34 29 2d 31 29 20 26 20 2d 28 6c  (slot4)-1) & -(l
e1c0: 6f 6e 67 29 5f 5f 41 56 5f 61 6c 69 67 6e 6f 66  ong)__AV_alignof
e1d0: 28 73 6c 6f 74 34 29 29 0a 0a 2f 2a 0a 20 2a 20  (slot4))../*. * 
e1e0: 4d 69 73 63 65 6c 6c 61 6e 65 6f 75 73 20 64 65  Miscellaneous de
e1f0: 63 6c 61 72 61 74 69 6f 6e 73 2e 0a 20 2a 2f 0a  clarations.. */.
e200: 0a 65 78 74 65 72 6e 20 69 6e 74 20 5f 5f 62 75  .extern int __bu
e210: 69 6c 74 69 6e 5f 61 76 63 61 6c 6c 20 28 61 76  iltin_avcall (av
e220: 5f 61 6c 69 73 74 2a 20 6c 29 3b 0a 65 78 74 65  _alist* l);.exte
e230: 72 6e 20 76 6f 69 64 20 5f 5f 73 74 72 75 63 74  rn void __struct
e240: 63 70 79 20 28 76 6f 69 64 2a 20 64 65 73 74 2c  cpy (void* dest,
e250: 20 63 6f 6e 73 74 20 76 6f 69 64 2a 20 73 72 63   const void* src
e260: 2c 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20  , unsigned long 
e270: 73 69 7a 65 2c 20 75 6e 73 69 67 6e 65 64 20 6c  size, unsigned l
e280: 6f 6e 67 20 61 6c 69 67 6e 6d 65 6e 74 29 3b 0a  ong alignment);.
e290: 0a 23 65 6e 64 69 66 20 2f 2a 5f 61 76 63 61 6c  .#endif /*_avcal
e2a0: 6c 5f 68 20 2a 2f 0a                             l_h */.