Artifact 27523837a4dfad37f5c323ab46284d7bbefb8fe6:


0000: 23 69 66 6e 64 65 66 20 5f 61 76 63 61 6c 6c 5f  #ifndef _avcall_
0010: 68 09 09 09 09 2f 2a 2d 2a 2d 20 43 20 2d 2a 2d  h..../*-*- C -*-
0020: 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 61 76 63 61  */.#define _avca
0030: 6c 6c 5f 68 0a 2f 2a 2a 0a 20 20 43 6f 70 79 72  ll_h./**.  Copyr
0040: 69 67 68 74 20 31 39 39 33 20 42 69 6c 6c 20 54  ight 1993 Bill T
0050: 72 69 67 67 73 2c 20 3c 42 69 6c 6c 2e 54 72 69  riggs, <Bill.Tri
0060: 67 67 73 40 69 6e 72 69 61 6c 70 65 73 2e 66 72  ggs@inrialpes.fr
0070: 3e 0a 0a 20 20 43 6f 70 79 72 69 67 68 74 20 31  >..  Copyright 1
0080: 39 39 35 2d 32 30 30 34 20 42 72 75 6e 6f 20 48  995-2004 Bruno H
0090: 61 69 62 6c 65 2c 20 3c 62 72 75 6e 6f 40 63 6c  aible, <bruno@cl
00a0: 69 73 70 2e 6f 72 67 3e 0a 0a 20 20 54 68 69 73  isp.org>..  This
00b0: 20 69 73 20 66 72 65 65 20 73 6f 66 74 77 61 72   is free softwar
00c0: 65 20 64 69 73 74 72 69 62 75 74 65 64 20 75 6e  e distributed un
00d0: 64 65 72 20 74 68 65 20 47 4e 55 20 47 65 6e 65  der the GNU Gene
00e0: 72 61 6c 20 50 75 62 6c 69 63 0a 20 20 4c 69 63  ral Public.  Lic
00f0: 65 6e 63 65 20 64 65 73 63 72 69 62 65 64 20 69  ence described i
0100: 6e 20 74 68 65 20 66 69 6c 65 20 43 4f 50 59 49  n the file COPYI
0110: 4e 47 2e 20 43 6f 6e 74 61 63 74 20 74 68 65 20  NG. Contact the 
0120: 61 75 74 68 6f 72 20 69 66 0a 20 20 79 6f 75 20  author if.  you 
0130: 64 6f 6e 27 74 20 68 61 76 65 20 74 68 69 73 20  don't have this 
0140: 6f 72 20 63 61 6e 27 74 20 6c 69 76 65 20 77 69  or can't live wi
0150: 74 68 20 69 74 2e 20 54 68 65 72 65 20 69 73 20  th it. There is 
0160: 41 42 53 4f 4c 55 54 45 4c 59 0a 20 20 4e 4f 20  ABSOLUTELY.  NO 
0170: 57 41 52 52 41 4e 54 59 2c 20 65 78 70 6c 69 63  WARRANTY, explic
0180: 69 74 20 6f 72 20 69 6d 70 6c 69 65 64 2c 20 6f  it or implied, o
0190: 6e 20 74 68 69 73 20 73 6f 66 74 77 61 72 65 2e  n this software.
01a0: 0a 2a 2a 2f 0a 2f 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d  .**/./*---------
01b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
01c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
01d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
01e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20  -------------.  
01f0: 61 76 5f 63 61 6c 6c 28 29 20 66 6f 72 65 69 67  av_call() foreig
0200: 6e 20 66 75 6e 63 74 69 6f 6e 20 69 6e 74 65 72  n function inter
0210: 66 61 63 65 2e 0a 0a 20 20 56 61 72 61 72 67 73  face...  Varargs
0220: 2d 73 74 79 6c 65 20 6d 61 63 72 6f 73 20 74 6f  -style macros to
0230: 20 62 75 69 6c 64 20 61 20 43 20 61 72 67 75 6d   build a C argum
0240: 65 6e 74 20 6c 69 73 74 20 69 6e 63 72 65 6d 65  ent list increme
0250: 6e 74 61 6c 6c 79 0a 20 20 61 6e 64 20 63 61 6c  ntally.  and cal
0260: 6c 20 61 20 66 75 6e 63 74 69 6f 6e 20 6f 6e 20  l a function on 
0270: 69 74 2e 0a 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  it.. -----------
0280: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0290: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
02a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
02b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2a 2f 0a 0a 0a  -----------*/...
02c0: 2f 2a 20 54 68 65 73 65 20 64 65 66 69 6e 69 74  /* These definit
02d0: 69 6f 6e 73 20 61 72 65 20 61 64 6a 75 73 74 65  ions are adjuste
02e0: 64 20 62 79 20 60 63 6f 6e 66 69 67 75 72 65 27  d by `configure'
02f0: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e 20   automatically. 
0300: 2a 2f 0a 0a 2f 2a 20 43 50 55 20 2a 2f 0a 23 69  */../* CPU */.#i
0310: 66 6e 64 65 66 20 5f 5f 69 33 38 36 5f 5f 0a 23  fndef __i386__.#
0320: 64 65 66 69 6e 65 20 5f 5f 69 33 38 36 5f 5f 20  define __i386__ 
0330: 31 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64 65 66  1.#endif.#ifndef
0340: 20 5f 5f 6d 36 38 6b 5f 5f 0a 23 75 6e 64 65 66   __m68k__.#undef
0350: 20 5f 5f 6d 36 38 6b 5f 5f 0a 23 65 6e 64 69 66   __m68k__.#endif
0360: 0a 23 69 66 6e 64 65 66 20 5f 5f 6d 69 70 73 5f  .#ifndef __mips_
0370: 5f 0a 23 75 6e 64 65 66 20 5f 5f 6d 69 70 73 5f  _.#undef __mips_
0380: 5f 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64 65 66  _.#endif.#ifndef
0390: 20 5f 5f 6d 69 70 73 6e 33 32 5f 5f 0a 23 75 6e   __mipsn32__.#un
03a0: 64 65 66 20 5f 5f 6d 69 70 73 6e 33 32 5f 5f 0a  def __mipsn32__.
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 36 34 5f 5f 0a 23 75 6e 64 65 66  _mips64__.#undef
03d0: 20 5f 5f 6d 69 70 73 36 34 5f 5f 0a 23 65 6e 64   __mips64__.#end
03e0: 69 66 0a 23 69 66 6e 64 65 66 20 5f 5f 73 70 61  if.#ifndef __spa
03f0: 72 63 5f 5f 0a 23 75 6e 64 65 66 20 5f 5f 73 70  rc__.#undef __sp
0400: 61 72 63 5f 5f 0a 23 65 6e 64 69 66 0a 23 69 66  arc__.#endif.#if
0410: 6e 64 65 66 20 5f 5f 73 70 61 72 63 36 34 5f 5f  ndef __sparc64__
0420: 0a 23 75 6e 64 65 66 20 5f 5f 73 70 61 72 63 36  .#undef __sparc6
0430: 34 5f 5f 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64  4__.#endif.#ifnd
0440: 65 66 20 5f 5f 61 6c 70 68 61 5f 5f 0a 23 75 6e  ef __alpha__.#un
0450: 64 65 66 20 5f 5f 61 6c 70 68 61 5f 5f 0a 23 65  def __alpha__.#e
0460: 6e 64 69 66 0a 23 69 66 6e 64 65 66 20 5f 5f 68  ndif.#ifndef __h
0470: 70 70 61 5f 5f 0a 23 75 6e 64 65 66 20 5f 5f 68  ppa__.#undef __h
0480: 70 70 61 5f 5f 0a 23 65 6e 64 69 66 0a 23 69 66  ppa__.#endif.#if
0490: 6e 64 65 66 20 5f 5f 61 72 6d 5f 5f 0a 23 75 6e  ndef __arm__.#un
04a0: 64 65 66 20 5f 5f 61 72 6d 5f 5f 0a 23 65 6e 64  def __arm__.#end
04b0: 69 66 0a 23 69 66 6e 64 65 66 20 5f 5f 72 73 36  if.#ifndef __rs6
04c0: 30 30 30 5f 5f 0a 23 75 6e 64 65 66 20 5f 5f 72  000__.#undef __r
04d0: 73 36 30 30 30 5f 5f 0a 23 65 6e 64 69 66 0a 23  s6000__.#endif.#
04e0: 69 66 6e 64 65 66 20 5f 5f 73 33 39 30 5f 5f 0a  ifndef __s390__.
04f0: 23 75 6e 64 65 66 20 5f 5f 73 33 39 30 5f 5f 0a  #undef __s390__.
0500: 23 65 6e 64 69 66 0a 23 69 66 6e 64 65 66 20 5f  #endif.#ifndef _
0510: 5f 6d 38 38 6b 5f 5f 0a 23 75 6e 64 65 66 20 5f  _m88k__.#undef _
0520: 5f 6d 38 38 6b 5f 5f 0a 23 65 6e 64 69 66 0a 23  _m88k__.#endif.#
0530: 69 66 6e 64 65 66 20 5f 5f 63 6f 6e 76 65 78 5f  ifndef __convex_
0540: 5f 0a 23 75 6e 64 65 66 20 5f 5f 63 6f 6e 76 65  _.#undef __conve
0550: 78 5f 5f 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64  x__.#endif.#ifnd
0560: 65 66 20 5f 5f 69 61 36 34 5f 5f 0a 23 75 6e 64  ef __ia64__.#und
0570: 65 66 20 5f 5f 69 61 36 34 5f 5f 0a 23 65 6e 64  ef __ia64__.#end
0580: 69 66 0a 23 69 66 6e 64 65 66 20 5f 5f 78 38 36  if.#ifndef __x86
0590: 5f 36 34 5f 5f 0a 23 75 6e 64 65 66 20 5f 5f 78  _64__.#undef __x
05a0: 38 36 5f 36 34 5f 5f 0a 23 65 6e 64 69 66 0a 0a  86_64__.#endif..
05b0: 2f 2a 20 43 61 6c 6c 69 6e 67 20 63 6f 6e 76 65  /* Calling conve
05c0: 6e 74 69 6f 6e 20 2a 2f 0a 2f 2a 20 44 65 66 69  ntion */./* Defi
05d0: 6e 65 20 69 66 20 75 73 69 6e 67 20 70 63 63 20  ne if using pcc 
05e0: 6e 6f 6e 2d 72 65 65 6e 74 72 61 6e 74 20 73 74  non-reentrant st
05f0: 72 75 63 74 20 72 65 74 75 72 6e 20 63 6f 6e 76  ruct return conv
0600: 65 6e 74 69 6f 6e 20 2a 2f 0a 23 75 6e 64 65 66  ention */.#undef
0610: 20 5f 5f 50 43 43 5f 53 54 52 55 43 54 5f 52 45   __PCC_STRUCT_RE
0620: 54 55 52 4e 5f 5f 0a 2f 2a 20 44 65 66 69 6e 65  TURN__./* Define
0630: 20 69 66 20 73 6d 61 6c 6c 20 73 74 72 75 63 74   if small struct
0640: 73 20 61 72 65 20 72 65 74 75 72 6e 65 64 20 69  s are returned i
0650: 6e 20 72 65 67 69 73 74 65 72 73 20 2a 2f 0a 23  n registers */.#
0660: 64 65 66 69 6e 65 20 5f 5f 53 4d 41 4c 4c 5f 53  define __SMALL_S
0670: 54 52 55 43 54 5f 52 45 54 55 52 4e 5f 5f 20 31  TRUCT_RETURN__ 1
0680: 0a 2f 2a 20 44 65 66 69 6e 65 20 69 66 20 66 6c  ./* Define if fl
0690: 6f 61 74 69 6e 67 2d 70 6f 69 6e 74 20 72 65 73  oating-point res
06a0: 75 6c 74 73 20 61 72 65 20 72 65 74 75 72 6e 65  ults are returne
06b0: 64 20 69 6e 20 74 68 65 20 69 6e 74 65 67 65 72  d in the integer
06c0: 20 72 65 67 69 73 74 65 72 73 20 2a 2f 0a 23 75   registers */.#u
06d0: 6e 64 65 66 20 5f 5f 49 52 45 47 5f 46 4c 4f 41  ndef __IREG_FLOA
06e0: 54 5f 52 45 54 55 52 4e 5f 5f 0a 0a 2f 2a 20 43  T_RETURN__../* C
06f0: 4c 5f 4c 4f 4e 47 4c 4f 4e 47 20 2a 2f 0a 2f 2a  L_LONGLONG */./*
0700: 20 44 65 66 69 6e 65 20 69 66 20 79 6f 75 72 20   Define if your 
0710: 63 6f 6d 70 69 6c 65 72 20 73 75 70 70 6f 72 74  compiler support
0720: 73 20 74 68 65 20 60 6c 6f 6e 67 20 6c 6f 6e 67  s the `long long
0730: 27 20 74 79 70 65 2e 20 2a 2f 0a 23 75 6e 64 65  ' type. */.#unde
0740: 66 20 48 41 56 45 5f 4c 4f 4e 47 4c 4f 4e 47 0a  f HAVE_LONGLONG.
0750: 0a 2f 2a 20 45 6e 64 20 6f 66 20 64 65 66 69 6e  ./* End of defin
0760: 69 74 69 6f 6e 73 20 61 64 6a 75 73 74 65 64 20  itions adjusted 
0770: 62 79 20 60 63 6f 6e 66 69 67 75 72 65 27 2e 20  by `configure'. 
0780: 2a 2f 0a 0a 0a 2f 2a 20 4d 61 78 20 23 20 77 6f  */.../* Max # wo
0790: 72 64 73 20 69 6e 20 61 72 67 75 6d 65 6e 74 2d  rds in argument-
07a0: 6c 69 73 74 20 61 6e 64 20 74 65 6d 70 6f 72 61  list and tempora
07b0: 72 79 20 73 74 72 75 63 74 75 72 65 20 73 74 6f  ry structure sto
07c0: 72 61 67 65 2e 0a 20 2a 2f 0a 23 69 66 6e 64 65  rage.. */.#ifnde
07d0: 66 20 5f 5f 41 56 5f 41 4c 49 53 54 5f 57 4f 52  f __AV_ALIST_WOR
07e0: 44 53 0a 23 64 65 66 69 6e 65 20 5f 5f 41 56 5f  DS.#define __AV_
07f0: 41 4c 49 53 54 5f 57 4f 52 44 53 20 20 32 35 36  ALIST_WORDS  256
0800: 0a 23 65 6e 64 69 66 0a 0a 2f 2a 20 44 65 74 65  .#endif../* Dete
0810: 72 6d 69 6e 65 20 74 68 65 20 61 6c 69 67 6e 6d  rmine the alignm
0820: 65 6e 74 20 6f 66 20 61 20 74 79 70 65 20 61 74  ent of a type at
0830: 20 63 6f 6d 70 69 6c 65 20 74 69 6d 65 2e 0a 20   compile time.. 
0840: 2a 2f 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f  */.#if defined(_
0850: 5f 47 4e 55 43 5f 5f 29 0a 23 64 65 66 69 6e 65  _GNUC__).#define
0860: 20 5f 5f 41 56 5f 61 6c 69 67 6e 6f 66 20 5f 5f   __AV_alignof __
0870: 61 6c 69 67 6e 6f 66 5f 5f 0a 23 65 6c 73 65 0a  alignof__.#else.
0880: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69  #if defined(__mi
0890: 70 73 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  ps__) || defined
08a0: 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 7c 7c  (__mipsn32__) ||
08b0: 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 36   defined(__mips6
08c0: 34 5f 5f 29 20 2f 2a 20 53 47 49 20 63 6f 6d 70  4__) /* SGI comp
08d0: 69 6c 65 72 20 2a 2f 0a 23 64 65 66 69 6e 65 20  iler */.#define 
08e0: 5f 5f 41 56 5f 61 6c 69 67 6e 6f 66 20 5f 5f 62  __AV_alignof __b
08f0: 75 69 6c 74 69 6e 5f 61 6c 69 67 6e 6f 66 0a 23  uiltin_alignof.#
0900: 65 6c 73 65 0a 23 64 65 66 69 6e 65 20 5f 5f 41  else.#define __A
0910: 56 5f 6f 66 66 73 65 74 6f 66 28 74 79 70 65 2c  V_offsetof(type,
0920: 69 64 65 6e 74 29 20 20 28 28 75 6e 73 69 67 6e  ident)  ((unsign
0930: 65 64 20 6c 6f 6e 67 29 26 28 28 28 74 79 70 65  ed long)&(((type
0940: 2a 29 30 29 2d 3e 69 64 65 6e 74 29 29 0a 23 64  *)0)->ident)).#d
0950: 65 66 69 6e 65 20 5f 5f 41 56 5f 61 6c 69 67 6e  efine __AV_align
0960: 6f 66 28 74 79 70 65 29 20 20 5f 5f 41 56 5f 6f  of(type)  __AV_o
0970: 66 66 73 65 74 6f 66 28 73 74 72 75 63 74 20 7b  ffsetof(struct {
0980: 20 63 68 61 72 20 5f 5f 73 6c 6f 74 31 3b 20 74   char __slot1; t
0990: 79 70 65 20 5f 5f 73 6c 6f 74 32 3b 20 7d 2c 20  ype __slot2; }, 
09a0: 5f 5f 73 6c 6f 74 32 29 0a 23 65 6e 64 69 66 0a  __slot2).#endif.
09b0: 23 65 6e 64 69 66 0a 0a 2f 2a 20 43 20 62 75 69  #endif../* C bui
09c0: 6c 74 69 6e 20 74 79 70 65 73 2e 0a 20 2a 2f 0a  ltin types.. */.
09d0: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69  #if defined(__mi
09e0: 70 73 6e 33 32 5f 5f 29 0a 74 79 70 65 64 65 66  psn32__).typedef
09f0: 20 6c 6f 6e 67 20 6c 6f 6e 67 20 5f 5f 61 76 77   long long __avw
0a00: 6f 72 64 3b 0a 23 65 6c 73 65 0a 74 79 70 65 64  ord;.#else.typed
0a10: 65 66 20 6c 6f 6e 67 20 5f 5f 61 76 77 6f 72 64  ef long __avword
0a20: 3b 0a 23 65 6e 64 69 66 0a 0a 65 6e 75 6d 20 5f  ;.#endif..enum _
0a30: 5f 41 56 74 79 70 65 0a 7b 0a 20 20 5f 5f 41 56  _AVtype.{.  __AV
0a40: 77 6f 72 64 2c 0a 20 20 5f 5f 41 56 76 6f 69 64  word,.  __AVvoid
0a50: 2c 0a 20 20 5f 5f 41 56 63 68 61 72 2c 0a 20 20  ,.  __AVchar,.  
0a60: 5f 5f 41 56 73 63 68 61 72 2c 0a 20 20 5f 5f 41  __AVschar,.  __A
0a70: 56 75 63 68 61 72 2c 0a 20 20 5f 5f 41 56 73 68  Vuchar,.  __AVsh
0a80: 6f 72 74 2c 0a 20 20 5f 5f 41 56 75 73 68 6f 72  ort,.  __AVushor
0a90: 74 2c 0a 20 20 5f 5f 41 56 69 6e 74 2c 0a 20 20  t,.  __AVint,.  
0aa0: 5f 5f 41 56 75 69 6e 74 2c 0a 20 20 5f 5f 41 56  __AVuint,.  __AV
0ab0: 6c 6f 6e 67 2c 0a 20 20 5f 5f 41 56 75 6c 6f 6e  long,.  __AVulon
0ac0: 67 2c 0a 20 20 5f 5f 41 56 6c 6f 6e 67 6c 6f 6e  g,.  __AVlonglon
0ad0: 67 2c 0a 20 20 5f 5f 41 56 75 6c 6f 6e 67 6c 6f  g,.  __AVulonglo
0ae0: 6e 67 2c 0a 20 20 5f 5f 41 56 66 6c 6f 61 74 2c  ng,.  __AVfloat,
0af0: 0a 20 20 5f 5f 41 56 64 6f 75 62 6c 65 2c 0a 20  .  __AVdouble,. 
0b00: 20 5f 5f 41 56 76 6f 69 64 70 2c 0a 20 20 5f 5f   __AVvoidp,.  __
0b10: 41 56 73 74 72 75 63 74 0a 7d 3b 0a 0a 65 6e 75  AVstruct.};..enu
0b20: 6d 20 5f 5f 41 56 5f 61 6c 69 73 74 5f 66 6c 61  m __AV_alist_fla
0b30: 67 73 0a 7b 0a 0a 20 20 2f 2a 20 68 6f 77 20 74  gs.{..  /* how t
0b40: 6f 20 72 65 74 75 72 6e 20 73 74 72 75 63 74 73  o return structs
0b50: 20 2a 2f 0a 20 20 2f 2a 20 54 68 65 72 65 20 61   */.  /* There a
0b60: 72 65 20 62 61 73 69 63 61 6c 6c 79 20 33 20 77  re basically 3 w
0b70: 61 79 73 20 74 6f 20 72 65 74 75 72 6e 20 73 74  ays to return st
0b80: 72 75 63 74 73 3a 0a 20 20 20 2a 20 61 2e 20 54  ructs:.   * a. T
0b90: 68 65 20 63 61 6c 6c 65 64 20 66 75 6e 63 74 69  he called functi
0ba0: 6f 6e 20 72 65 74 75 72 6e 73 20 61 20 70 6f 69  on returns a poi
0bb0: 6e 74 65 72 20 74 6f 20 73 74 61 74 69 63 20 64  nter to static d
0bc0: 61 74 61 2e 20 4e 6f 74 20 72 65 65 6e 74 72 61  ata. Not reentra
0bd0: 6e 74 2e 0a 20 20 20 2a 20 62 2e 20 54 68 65 20  nt..   * b. The 
0be0: 63 61 6c 6c 65 72 20 70 61 73 73 65 73 20 74 68  caller passes th
0bf0: 65 20 72 65 74 75 72 6e 20 73 74 72 75 63 74 75  e return structu
0c00: 72 65 20 61 64 64 72 65 73 73 20 69 6e 20 61 20  re address in a 
0c10: 64 65 64 69 63 61 74 65 64 20 72 65 67 69 73 74  dedicated regist
0c20: 65 72 0a 20 20 20 2a 20 20 20 20 6f 72 20 61 73  er.   *    or as
0c30: 20 61 20 66 69 72 73 74 20 28 6f 72 20 6c 61 73   a first (or las
0c40: 74 29 2c 20 69 6e 76 69 73 69 62 6c 65 20 61 72  t), invisible ar
0c50: 67 75 6d 65 6e 74 2e 20 54 68 65 20 63 61 6c 6c  gument. The call
0c60: 65 64 20 66 75 6e 63 74 69 6f 6e 20 73 74 6f 72  ed function stor
0c70: 65 73 0a 20 20 20 2a 20 20 20 20 69 74 73 20 72  es.   *    its r
0c80: 65 73 75 6c 74 20 74 68 65 72 65 2e 0a 20 20 20  esult there..   
0c90: 2a 20 63 2e 20 4c 69 6b 65 20 62 2c 20 61 6e 64  * c. Like b, and
0ca0: 20 74 68 65 20 63 61 6c 6c 65 64 20 66 75 6e 63   the called func
0cb0: 74 69 6f 6e 20 61 6c 73 6f 20 72 65 74 75 72 6e  tion also return
0cc0: 73 20 74 68 65 20 72 65 74 75 72 6e 20 73 74 72  s the return str
0cd0: 75 63 74 75 72 65 0a 20 20 20 2a 20 20 20 20 61  ucture.   *    a
0ce0: 64 64 72 65 73 73 20 69 6e 20 74 68 65 20 72 65  ddress in the re
0cf0: 74 75 72 6e 20 76 61 6c 75 65 20 72 65 67 69 73  turn value regis
0d00: 74 65 72 2e 20 28 54 68 69 73 20 69 73 20 6e 6f  ter. (This is no
0d10: 74 20 76 65 72 79 20 64 69 73 74 69 6e 67 75 69  t very distingui
0d20: 73 68 61 62 6c 65 0a 20 20 20 2a 20 20 20 20 66  shable.   *    f
0d30: 72 6f 6d 20 62 2e 29 0a 20 20 20 2a 20 49 6e 64  rom b.).   * Ind
0d40: 65 70 65 6e 64 65 6e 74 6c 79 20 6f 66 20 74 68  ependently of th
0d50: 69 73 2c 0a 20 20 20 2a 20 72 2e 20 73 6d 61 6c  is,.   * r. smal
0d60: 6c 20 73 74 72 75 63 74 75 72 65 73 20 28 3c 3d  l structures (<=
0d70: 20 34 20 6f 72 20 3c 3d 20 38 20 62 79 74 65 73   4 or <= 8 bytes
0d80: 29 20 6d 61 79 20 62 65 20 72 65 74 75 72 6e 65  ) may be returne
0d90: 64 20 69 6e 20 74 68 65 20 72 65 74 75 72 6e 0a  d in the return.
0da0: 20 20 20 2a 20 20 20 20 76 61 6c 75 65 20 72 65     *    value re
0db0: 67 69 73 74 65 72 28 73 29 2c 20 6f 72 0a 20 20  gister(s), or.  
0dc0: 20 2a 20 6d 2e 20 65 76 65 6e 20 73 6d 61 6c 6c   * m. even small
0dd0: 20 73 74 72 75 63 74 75 72 65 73 20 61 72 65 20   structures are 
0de0: 70 61 73 73 65 64 20 69 6e 20 6d 65 6d 6f 72 79  passed in memory
0df0: 2e 0a 20 20 20 2a 2f 0a 20 20 2f 2a 20 67 63 63  ..   */.  /* gcc
0e00: 2d 32 2e 36 2e 33 20 65 6d 70 6c 6f 79 73 20 74  -2.6.3 employs t
0e10: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 73 74 72  he following str
0e20: 61 74 65 67 79 3a 0a 20 20 20 2a 20 20 20 2d 20  ategy:.   *   - 
0e30: 49 66 20 50 43 43 5f 53 54 41 54 49 43 5f 53 54  If PCC_STATIC_ST
0e40: 52 55 43 54 5f 52 45 54 55 52 4e 20 69 73 20 64  RUCT_RETURN is d
0e50: 65 66 69 6e 65 64 20 69 6e 20 74 68 65 20 6d 61  efined in the ma
0e60: 63 68 69 6e 65 20 64 65 73 63 72 69 70 74 69 6f  chine descriptio
0e70: 6e 0a 20 20 20 2a 20 20 20 20 20 69 74 20 75 73  n.   *     it us
0e80: 65 73 20 6d 65 74 68 6f 64 20 61 2c 20 65 6c 73  es method a, els
0e90: 65 20 6d 65 74 68 6f 64 20 63 2e 0a 20 20 20 2a  e method c..   *
0ea0: 20 20 20 2d 20 49 66 20 66 6c 61 67 5f 70 63 63     - If flag_pcc
0eb0: 5f 73 74 72 75 63 74 5f 72 65 74 75 72 6e 20 69  _struct_return i
0ec0: 73 20 73 65 74 20 28 65 69 74 68 65 72 20 62 79  s set (either by
0ed0: 20 2d 66 70 63 63 2d 73 74 72 75 63 74 2d 72 65   -fpcc-struct-re
0ee0: 74 75 72 6e 20 6f 72 20 69 66 0a 20 20 20 2a 20  turn or if.   * 
0ef0: 20 20 20 20 44 45 46 41 55 4c 54 5f 50 43 43 5f      DEFAULT_PCC_
0f00: 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20 69 73  STRUCT_RETURN is
0f10: 20 64 65 66 69 6e 65 64 20 74 6f 20 31 20 69 6e   defined to 1 in
0f20: 20 74 68 65 20 6d 61 63 68 69 6e 65 20 64 65 73   the machine des
0f30: 63 72 69 70 74 69 6f 6e 29 0a 20 20 20 2a 20 20  cription).   *  
0f40: 20 20 20 69 74 20 75 73 65 73 20 6d 65 74 68 6f     it uses metho
0f50: 64 20 6d 2c 20 65 6c 73 65 20 28 65 69 74 68 65  d m, else (eithe
0f60: 72 20 62 79 20 2d 66 72 65 67 2d 73 74 72 75 63  r by -freg-struc
0f70: 74 2d 72 65 74 75 72 6e 20 6f 72 20 69 66 0a 20  t-return or if. 
0f80: 20 20 2a 20 20 20 20 20 44 45 46 41 55 4c 54 5f    *     DEFAULT_
0f90: 50 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52  PCC_STRUCT_RETUR
0fa0: 4e 20 69 73 20 64 65 66 69 6e 65 64 20 74 6f 20  N is defined to 
0fb0: 30 20 69 6e 20 74 68 65 20 6d 61 63 68 69 6e 65  0 in the machine
0fc0: 20 64 65 73 63 72 69 70 74 69 6f 6e 29 0a 20 20   description).  
0fd0: 20 2a 20 20 20 20 20 6d 65 74 68 6f 64 20 72 2e   *     method r.
0fe0: 0a 20 20 20 2a 2f 0a 20 20 5f 5f 41 56 5f 50 43  .   */.  __AV_PC
0ff0: 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 09  C_STRUCT_RETURN.
1000: 3d 20 31 3c 3c 30 2c 09 2f 2a 20 61 3a 20 6e 65  = 1<<0,./* a: ne
1010: 65 64 20 74 6f 20 63 6f 70 79 20 74 68 65 20 73  ed to copy the s
1020: 74 72 75 63 74 20 2a 2f 0a 20 20 5f 5f 41 56 5f  truct */.  __AV_
1030: 53 4d 41 4c 4c 5f 53 54 52 55 43 54 5f 52 45 54  SMALL_STRUCT_RET
1040: 55 52 4e 09 3d 20 31 3c 3c 31 2c 09 2f 2a 20 72  URN.= 1<<1,./* r
1050: 3a 20 73 70 65 63 69 61 6c 20 63 61 73 65 20 66  : special case f
1060: 6f 72 20 73 6d 61 6c 6c 20 73 74 72 75 63 74 73  or small structs
1070: 20 2a 2f 0a 20 20 5f 5f 41 56 5f 47 43 43 5f 53   */.  __AV_GCC_S
1080: 54 52 55 43 54 5f 52 45 54 55 52 4e 09 3d 20 31  TRUCT_RETURN.= 1
1090: 3c 3c 32 2c 09 2f 2a 20 63 6f 6e 73 69 64 65 72  <<2,./* consider
10a0: 20 38 20 62 79 74 65 20 73 74 72 75 63 74 73 20   8 byte structs 
10b0: 61 73 20 73 6d 61 6c 6c 20 2a 2f 0a 23 69 66 20  as small */.#if 
10c0: 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f  defined(__sparc_
10d0: 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f  _) && !defined(_
10e0: 5f 73 70 61 72 63 36 34 5f 5f 29 0a 20 20 5f 5f  _sparc64__).  __
10f0: 41 56 5f 53 55 4e 43 43 5f 53 54 52 55 43 54 5f  AV_SUNCC_STRUCT_
1100: 52 45 54 55 52 4e 09 3d 20 31 3c 3c 33 2c 0a 20  RETURN.= 1<<3,. 
1110: 20 5f 5f 41 56 5f 53 55 4e 50 52 4f 43 43 5f 53   __AV_SUNPROCC_S
1120: 54 52 55 43 54 5f 52 45 54 55 52 4e 09 3d 20 31  TRUCT_RETURN.= 1
1130: 3c 3c 34 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  <<4,.#endif.#if 
1140: 64 65 66 69 6e 65 64 28 5f 5f 69 33 38 36 5f 5f  defined(__i386__
1150: 29 0a 20 20 5f 5f 41 56 5f 4e 45 58 54 47 43 43  ).  __AV_NEXTGCC
1160: 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 09 3d  _STRUCT_RETURN.=
1170: 20 31 3c 3c 33 2c 0a 20 20 5f 5f 41 56 5f 4d 53   1<<3,.  __AV_MS
1180: 56 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e  VC_STRUCT_RETURN
1190: 09 3d 20 31 3c 3c 34 2c 0a 23 65 6e 64 69 66 0a  .= 1<<4,.#endif.
11a0: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 68 70  #if defined(__hp
11b0: 70 61 5f 5f 29 0a 20 20 5f 5f 41 56 5f 4f 4c 44  pa__).  __AV_OLD
11c0: 47 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52  GCC_STRUCT_RETUR
11d0: 4e 09 3d 20 31 3c 3c 33 2c 0a 23 65 6e 64 69 66  N.= 1<<3,.#endif
11e0: 0a 20 20 2f 2a 20 74 68 65 20 64 65 66 61 75 6c  .  /* the defaul
11f0: 74 20 77 61 79 20 74 6f 20 72 65 74 75 72 6e 20  t way to return 
1200: 73 74 72 75 63 74 73 20 2a 2f 0a 20 20 2f 2a 20  structs */.  /* 
1210: 54 68 69 73 20 63 68 6f 69 63 65 20 68 65 72 65  This choice here
1220: 20 69 73 20 62 61 73 65 64 20 6f 6e 20 74 68 65   is based on the
1230: 20 61 73 73 75 6d 70 74 69 6f 6e 20 74 68 61 74   assumption that
1240: 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 79 6f   the function yo
1250: 75 20 61 72 65 0a 20 20 20 2a 20 67 6f 69 6e 67  u are.   * going
1260: 20 74 6f 20 63 61 6c 6c 20 68 61 73 20 62 65 65   to call has bee
1270: 6e 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20  n compiled with 
1280: 74 68 65 20 73 61 6d 65 20 63 6f 6d 70 69 6c 65  the same compile
1290: 72 20 79 6f 75 20 61 72 65 20 75 73 69 6e 67 20  r you are using 
12a0: 74 6f 0a 20 20 20 2a 20 69 6e 63 6c 75 64 65 20  to.   * include 
12b0: 74 68 69 73 20 66 69 6c 65 2e 0a 20 20 20 2a 20  this file..   * 
12c0: 49 66 20 79 6f 75 20 77 61 6e 74 20 74 6f 20 63  If you want to c
12d0: 61 6c 6c 20 66 75 6e 63 74 69 6f 6e 73 20 77 69  all functions wi
12e0: 74 68 20 61 6e 6f 74 68 65 72 20 73 74 72 75 63  th another struc
12f0: 74 20 72 65 74 75 72 6e 69 6e 67 20 63 6f 6e 76  t returning conv
1300: 65 6e 74 69 6f 6e 2c 0a 20 20 20 2a 20 6a 75 73  ention,.   * jus
1310: 74 20 20 23 64 65 66 69 6e 65 20 5f 5f 41 56 5f  t  #define __AV_
1320: 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20 2e 2e  STRUCT_RETURN ..
1330: 2e 0a 20 20 20 2a 20 62 65 66 6f 72 65 20 6f 72  ..   * before or
1340: 20 61 66 74 65 72 20 23 69 6e 63 6c 75 64 69 6e   after #includin
1350: 67 20 3c 61 76 63 61 6c 6c 2e 68 3e 2e 0a 20 20  g <avcall.h>..  
1360: 20 2a 2f 0a 23 69 66 6e 64 65 66 20 5f 5f 41 56   */.#ifndef __AV
1370: 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 0a 20  _STRUCT_RETURN. 
1380: 20 5f 5f 41 56 5f 53 54 52 55 43 54 5f 52 45 54   __AV_STRUCT_RET
1390: 55 52 4e 09 09 3d 0a 23 69 66 20 64 65 66 69 6e  URN..=.#if defin
13a0: 65 64 28 5f 5f 73 70 61 72 63 5f 5f 29 20 26 26  ed(__sparc__) &&
13b0: 20 21 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72   !defined(__spar
13c0: 63 36 34 5f 5f 29 20 26 26 20 64 65 66 69 6e 65  c64__) && define
13d0: 64 28 73 75 6e 29 20 26 26 20 64 65 66 69 6e 65  d(sun) && define
13e0: 64 28 5f 5f 53 55 4e 50 52 4f 5f 43 29 20 2f 2a  d(__SUNPRO_C) /*
13f0: 20 53 55 4e 57 73 70 72 6f 20 63 63 20 2a 2f 0a   SUNWspro cc */.
1400: 09 09 09 09 20 20 5f 5f 41 56 5f 53 55 4e 50 52  ....  __AV_SUNPR
1410: 4f 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52  OCC_STRUCT_RETUR
1420: 4e 2c 0a 23 65 6c 73 65 0a 23 69 66 20 64 65 66  N,.#else.#if def
1430: 69 6e 65 64 28 5f 5f 50 43 43 5f 53 54 52 55 43  ined(__PCC_STRUC
1440: 54 5f 52 45 54 55 52 4e 5f 5f 29 20 2f 2a 20 64  T_RETURN__) /* d
1450: 65 66 69 6e 65 64 20 74 68 72 6f 75 67 68 20 63  efined through c
1460: 6f 6e 66 69 67 75 72 65 2c 20 73 65 65 20 61 62  onfigure, see ab
1470: 6f 76 65 20 2a 2f 0a 09 09 09 09 20 20 5f 5f 41  ove */.....  __A
1480: 56 5f 50 43 43 5f 53 54 52 55 43 54 5f 52 45 54  V_PCC_STRUCT_RET
1490: 55 52 4e 20 7c 0a 23 69 66 20 64 65 66 69 6e 65  URN |.#if define
14a0: 64 28 5f 5f 73 70 61 72 63 5f 5f 29 20 26 26 20  d(__sparc__) && 
14b0: 21 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63  !defined(__sparc
14c0: 36 34 5f 5f 29 20 26 26 20 64 65 66 69 6e 65 64  64__) && defined
14d0: 28 73 75 6e 29 20 26 26 20 21 28 64 65 66 69 6e  (sun) && !(defin
14e0: 65 64 28 5f 5f 53 54 44 43 5f 5f 29 20 7c 7c 20  ed(__STDC__) || 
14f0: 64 65 66 69 6e 65 64 28 5f 5f 47 4e 55 43 5f 5f  defined(__GNUC__
1500: 29 29 20 2f 2a 20 73 75 6e 20 63 63 20 2a 2f 0a  )) /* sun cc */.
1510: 20 20 09 09 09 09 20 20 5f 5f 41 56 5f 53 55 4e    ....  __AV_SUN
1520: 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e  CC_STRUCT_RETURN
1530: 2c 0a 23 65 6c 73 65 0a 20 20 09 09 09 09 20 20  ,.#else.  ....  
1540: 30 2c 0a 23 65 6e 64 69 66 0a 23 65 6c 73 65 0a  0,.#endif.#else.
1550: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 53 4d  #if defined(__SM
1560: 41 4c 4c 5f 53 54 52 55 43 54 5f 52 45 54 55 52  ALL_STRUCT_RETUR
1570: 4e 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  N__) || defined(
1580: 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 7c 7c 20  __mipsn32__) || 
1590: 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 36 34  defined(__mips64
15a0: 5f 5f 29 20 2f 2a 20 64 65 66 69 6e 65 64 20 74  __) /* defined t
15b0: 68 72 6f 75 67 68 20 63 6f 6e 66 69 67 75 72 65  hrough configure
15c0: 2c 20 73 65 65 20 61 62 6f 76 65 20 2a 2f 0a 09  , see above */..
15d0: 09 09 09 20 20 5f 5f 41 56 5f 53 4d 41 4c 4c 5f  ...  __AV_SMALL_
15e0: 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20 7c 0a  STRUCT_RETURN |.
15f0: 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e  #endif.#if defin
1600: 65 64 28 5f 5f 47 4e 55 43 5f 5f 29 0a 09 09 09  ed(__GNUC__)....
1610: 09 20 20 5f 5f 41 56 5f 47 43 43 5f 53 54 52 55  .  __AV_GCC_STRU
1620: 43 54 5f 52 45 54 55 52 4e 20 7c 0a 23 65 6e 64  CT_RETURN |.#end
1630: 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f  if.#if defined(_
1640: 5f 69 33 38 36 5f 5f 29 20 26 26 20 64 65 66 69  _i386__) && defi
1650: 6e 65 64 28 4e 65 58 54 29 20 26 26 20 64 65 66  ned(NeXT) && def
1660: 69 6e 65 64 28 5f 5f 47 4e 55 43 5f 5f 29 20 2f  ined(__GNUC__) /
1670: 2a 20 4e 65 58 54 20 67 63 63 2d 32 2e 35 2e 38  * NeXT gcc-2.5.8
1680: 20 2a 2f 0a 09 09 09 09 20 20 5f 5f 41 56 5f 4e   */.....  __AV_N
1690: 45 58 54 47 43 43 5f 53 54 52 55 43 54 5f 52 45  EXTGCC_STRUCT_RE
16a0: 54 55 52 4e 20 7c 0a 23 65 6e 64 69 66 0a 23 69  TURN |.#endif.#i
16b0: 66 20 64 65 66 69 6e 65 64 28 5f 5f 69 33 38 36  f defined(__i386
16c0: 5f 5f 29 20 26 26 20 64 65 66 69 6e 65 64 28 5f  __) && defined(_
16d0: 4d 53 43 5f 56 45 52 29 20 2f 2a 20 4d 53 56 43  MSC_VER) /* MSVC
16e0: 20 34 2e 30 20 2a 2f 0a 09 09 09 09 20 20 5f 5f   4.0 */.....  __
16f0: 41 56 5f 4d 53 56 43 5f 53 54 52 55 43 54 5f 52  AV_MSVC_STRUCT_R
1700: 45 54 55 52 4e 20 7c 0a 23 65 6e 64 69 66 0a 23  ETURN |.#endif.#
1710: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 68 70 70  if defined(__hpp
1720: 61 5f 5f 29 20 26 26 20 64 65 66 69 6e 65 64 28  a__) && defined(
1730: 5f 5f 47 4e 55 43 5f 5f 29 20 26 26 20 28 5f 5f  __GNUC__) && (__
1740: 47 4e 55 43 5f 5f 20 3c 20 33 29 20 26 26 20 28  GNUC__ < 3) && (
1750: 5f 5f 47 4e 55 43 5f 4d 49 4e 4f 52 5f 5f 20 3c  __GNUC_MINOR__ <
1760: 20 37 29 0a 09 09 09 09 20 20 5f 5f 41 56 5f 4f   7).....  __AV_O
1770: 4c 44 47 43 43 5f 53 54 52 55 43 54 5f 52 45 54  LDGCC_STRUCT_RET
1780: 55 52 4e 20 7c 0a 23 65 6e 64 69 66 0a 20 20 09  URN |.#endif.  .
1790: 09 09 09 20 20 30 2c 0a 23 65 6e 64 69 66 0a 23  ...  0,.#endif.#
17a0: 65 6e 64 69 66 0a 23 65 6e 64 69 66 0a 0a 20 20  endif.#endif..  
17b0: 2f 2a 20 68 6f 77 20 74 6f 20 72 65 74 75 72 6e  /* how to return
17c0: 20 66 6c 6f 61 74 73 20 2a 2f 0a 23 69 66 20 64   floats */.#if d
17d0: 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f 5f 29  efined(__m68k__)
17e0: 20 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f 73   || (defined(__s
17f0: 70 61 72 63 5f 5f 29 20 26 26 20 21 64 65 66 69  parc__) && !defi
1800: 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29  ned(__sparc64__)
1810: 29 0a 20 20 5f 5f 41 56 5f 53 55 4e 43 43 5f 46  ).  __AV_SUNCC_F
1820: 4c 4f 41 54 5f 52 45 54 55 52 4e 09 3d 20 31 3c  LOAT_RETURN.= 1<
1830: 3c 35 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 64  <5,.#endif.#if d
1840: 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f 5f 29  efined(__m68k__)
1850: 0a 20 20 5f 5f 41 56 5f 46 52 45 47 5f 46 4c 4f  .  __AV_FREG_FLO
1860: 41 54 5f 52 45 54 55 52 4e 09 3d 20 31 3c 3c 36  AT_RETURN.= 1<<6
1870: 2c 0a 23 65 6e 64 69 66 0a 20 20 2f 2a 20 74 68  ,.#endif.  /* th
1880: 65 20 64 65 66 61 75 6c 74 20 77 61 79 20 74 6f  e default way to
1890: 20 72 65 74 75 72 6e 20 66 6c 6f 61 74 73 20 2a   return floats *
18a0: 2f 0a 20 20 2f 2a 20 54 68 69 73 20 63 68 6f 69  /.  /* This choi
18b0: 63 65 20 68 65 72 65 20 69 73 20 62 61 73 65 64  ce here is based
18c0: 20 6f 6e 20 74 68 65 20 61 73 73 75 6d 70 74 69   on the assumpti
18d0: 6f 6e 20 74 68 61 74 20 74 68 65 20 66 75 6e 63  on that the func
18e0: 74 69 6f 6e 20 79 6f 75 20 61 72 65 0a 20 20 20  tion you are.   
18f0: 2a 20 67 6f 69 6e 67 20 74 6f 20 63 61 6c 6c 20  * going to call 
1900: 68 61 73 20 62 65 65 6e 20 63 6f 6d 70 69 6c 65  has been compile
1910: 64 20 77 69 74 68 20 74 68 65 20 73 61 6d 65 20  d with the same 
1920: 63 6f 6d 70 69 6c 65 72 20 79 6f 75 20 61 72 65  compiler you are
1930: 20 75 73 69 6e 67 20 74 6f 0a 20 20 20 2a 20 69   using to.   * i
1940: 6e 63 6c 75 64 65 20 74 68 69 73 20 66 69 6c 65  nclude this file
1950: 2e 0a 20 20 20 2a 20 49 66 20 79 6f 75 20 77 61  ..   * If you wa
1960: 6e 74 20 74 6f 20 63 61 6c 6c 20 66 75 6e 63 74  nt to call funct
1970: 69 6f 6e 73 20 77 69 74 68 20 61 6e 6f 74 68 65  ions with anothe
1980: 72 20 66 6c 6f 61 74 20 72 65 74 75 72 6e 69 6e  r float returnin
1990: 67 20 63 6f 6e 76 65 6e 74 69 6f 6e 2c 0a 20 20  g convention,.  
19a0: 20 2a 20 6a 75 73 74 20 20 23 64 65 66 69 6e 65   * just  #define
19b0: 20 5f 5f 41 56 5f 46 4c 4f 41 54 5f 52 45 54 55   __AV_FLOAT_RETU
19c0: 52 4e 20 2e 2e 2e 0a 20 20 20 2a 20 62 65 66 6f  RN ....   * befo
19d0: 72 65 20 6f 72 20 61 66 74 65 72 20 23 69 6e 63  re or after #inc
19e0: 6c 75 64 69 6e 67 20 3c 61 76 63 61 6c 6c 2e 68  luding <avcall.h
19f0: 3e 2e 0a 20 20 20 2a 2f 0a 23 69 66 6e 64 65 66  >..   */.#ifndef
1a00: 20 5f 5f 41 56 5f 46 4c 4f 41 54 5f 52 45 54 55   __AV_FLOAT_RETU
1a10: 52 4e 0a 23 69 66 20 28 64 65 66 69 6e 65 64 28  RN.#if (defined(
1a20: 5f 5f 6d 36 38 6b 5f 5f 29 20 7c 7c 20 28 64 65  __m68k__) || (de
1a30: 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f 5f 29  fined(__sparc__)
1a40: 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 73   && !defined(__s
1a50: 70 61 72 63 36 34 5f 5f 29 29 29 20 26 26 20 21  parc64__))) && !
1a60: 64 65 66 69 6e 65 64 28 5f 5f 47 4e 55 43 5f 5f  defined(__GNUC__
1a70: 29 20 26 26 20 64 65 66 69 6e 65 64 28 73 75 6e  ) && defined(sun
1a80: 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f  ) && !defined(__
1a90: 53 55 4e 50 52 4f 5f 43 29 20 20 2f 2a 20 73 75  SUNPRO_C)  /* su
1aa0: 6e 20 63 63 20 2a 2f 0a 20 20 5f 5f 41 56 5f 46  n cc */.  __AV_F
1ab0: 4c 4f 41 54 5f 52 45 54 55 52 4e 09 09 3d 20 5f  LOAT_RETURN..= _
1ac0: 5f 41 56 5f 53 55 4e 43 43 5f 46 4c 4f 41 54 5f  _AV_SUNCC_FLOAT_
1ad0: 52 45 54 55 52 4e 2c 0a 23 65 6c 69 66 20 28 64  RETURN,.#elif (d
1ae0: 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f 5f 29  efined(__m68k__)
1af0: 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 49   && !defined(__I
1b00: 52 45 47 5f 46 4c 4f 41 54 5f 52 45 54 55 52 4e  REG_FLOAT_RETURN
1b10: 5f 5f 29 29 0a 20 20 5f 5f 41 56 5f 46 4c 4f 41  __)).  __AV_FLOA
1b20: 54 5f 52 45 54 55 52 4e 09 09 3d 20 5f 5f 41 56  T_RETURN..= __AV
1b30: 5f 46 52 45 47 5f 46 4c 4f 41 54 5f 52 45 54 55  _FREG_FLOAT_RETU
1b40: 52 4e 2c 0a 23 65 6c 73 65 0a 20 20 5f 5f 41 56  RN,.#else.  __AV
1b50: 5f 46 4c 4f 41 54 5f 52 45 54 55 52 4e 09 09 3d  _FLOAT_RETURN..=
1b60: 20 30 2c 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69   0,.#endif.#endi
1b70: 66 0a 0a 20 20 2f 2a 20 68 6f 77 20 74 6f 20 70  f..  /* how to p
1b80: 61 73 73 20 73 74 72 75 63 74 73 20 2a 2f 0a 23  ass structs */.#
1b90: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70  if defined(__mip
1ba0: 73 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  s__) || defined(
1bb0: 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 7c 7c 20  __mipsn32__) || 
1bc0: 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 36 34  defined(__mips64
1bd0: 5f 5f 29 0a 20 20 5f 5f 41 56 5f 53 47 49 43 43  __).  __AV_SGICC
1be0: 5f 53 54 52 55 43 54 5f 41 52 47 53 09 3d 20 31  _STRUCT_ARGS.= 1
1bf0: 3c 3c 37 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  <<7,.#endif.#if 
1c00: 64 65 66 69 6e 65 64 28 5f 5f 72 73 36 30 30 30  defined(__rs6000
1c10: 5f 5f 29 0a 20 20 5f 5f 41 56 5f 41 49 58 43 43  __).  __AV_AIXCC
1c20: 5f 53 54 52 55 43 54 5f 41 52 47 53 09 3d 20 31  _STRUCT_ARGS.= 1
1c30: 3c 3c 37 2c 0a 23 65 6e 64 69 66 0a 20 20 2f 2a  <<7,.#endif.  /*
1c40: 20 74 68 65 20 64 65 66 61 75 6c 74 20 77 61 79   the default way
1c50: 20 74 6f 20 70 61 73 73 20 66 6c 6f 61 74 73 20   to pass floats 
1c60: 2a 2f 0a 20 20 2f 2a 20 54 68 69 73 20 63 68 6f  */.  /* This cho
1c70: 69 63 65 20 68 65 72 65 20 69 73 20 62 61 73 65  ice here is base
1c80: 64 20 6f 6e 20 74 68 65 20 61 73 73 75 6d 70 74  d on the assumpt
1c90: 69 6f 6e 20 74 68 61 74 20 74 68 65 20 66 75 6e  ion that the fun
1ca0: 63 74 69 6f 6e 20 79 6f 75 20 61 72 65 0a 20 20  ction you are.  
1cb0: 20 2a 20 67 6f 69 6e 67 20 74 6f 20 63 61 6c 6c   * going to call
1cc0: 20 68 61 73 20 62 65 65 6e 20 63 6f 6d 70 69 6c   has been compil
1cd0: 65 64 20 77 69 74 68 20 74 68 65 20 73 61 6d 65  ed with the same
1ce0: 20 63 6f 6d 70 69 6c 65 72 20 79 6f 75 20 61 72   compiler you ar
1cf0: 65 20 75 73 69 6e 67 20 74 6f 0a 20 20 20 2a 20  e using to.   * 
1d00: 69 6e 63 6c 75 64 65 20 74 68 69 73 20 66 69 6c  include this fil
1d10: 65 2e 0a 20 20 20 2a 20 49 66 20 79 6f 75 20 77  e..   * If you w
1d20: 61 6e 74 20 74 6f 20 63 61 6c 6c 20 66 75 6e 63  ant to call func
1d30: 74 69 6f 6e 73 20 77 69 74 68 20 61 6e 6f 74 68  tions with anoth
1d40: 65 72 20 66 6c 6f 61 74 20 70 61 73 73 69 6e 67  er float passing
1d50: 20 63 6f 6e 76 65 6e 74 69 6f 6e 2c 0a 20 20 20   convention,.   
1d60: 2a 20 6a 75 73 74 20 20 23 64 65 66 69 6e 65 20  * just  #define 
1d70: 5f 5f 41 56 5f 53 54 52 55 43 54 5f 41 52 47 53  __AV_STRUCT_ARGS
1d80: 20 2e 2e 2e 0a 20 20 20 2a 20 62 65 66 6f 72 65   ....   * before
1d90: 20 6f 72 20 61 66 74 65 72 20 23 69 6e 63 6c 75   or after #inclu
1da0: 64 69 6e 67 20 3c 61 76 63 61 6c 6c 2e 68 3e 2e  ding <avcall.h>.
1db0: 0a 20 20 20 2a 2f 0a 23 69 66 6e 64 65 66 20 5f  .   */.#ifndef _
1dc0: 5f 41 56 5f 53 54 52 55 43 54 5f 41 52 47 53 0a  _AV_STRUCT_ARGS.
1dd0: 23 69 66 20 28 64 65 66 69 6e 65 64 28 5f 5f 6d  #if (defined(__m
1de0: 69 70 73 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65  ips__) || define
1df0: 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 7c  d(__mipsn32__) |
1e00: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73  | defined(__mips
1e10: 36 34 5f 5f 29 29 20 26 26 20 21 64 65 66 69 6e  64__)) && !defin
1e20: 65 64 28 5f 5f 47 4e 55 43 5f 5f 29 20 2f 2a 20  ed(__GNUC__) /* 
1e30: 53 47 49 20 6d 69 70 73 20 63 63 20 2a 2f 0a 20  SGI mips cc */. 
1e40: 20 5f 5f 41 56 5f 53 54 52 55 43 54 5f 41 52 47   __AV_STRUCT_ARG
1e50: 53 09 09 3d 20 5f 5f 41 56 5f 53 47 49 43 43 5f  S..= __AV_SGICC_
1e60: 53 54 52 55 43 54 5f 41 52 47 53 2c 0a 23 65 6c  STRUCT_ARGS,.#el
1e70: 73 65 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f  se.#if defined(_
1e80: 5f 72 73 36 30 30 30 5f 5f 29 20 26 26 20 64 65  _rs6000__) && de
1e90: 66 69 6e 65 64 28 5f 41 49 58 29 20 26 26 20 21  fined(_AIX) && !
1ea0: 64 65 66 69 6e 65 64 28 5f 5f 47 4e 55 43 5f 5f  defined(__GNUC__
1eb0: 29 20 2f 2a 20 41 49 58 20 63 63 2c 20 78 6c 63  ) /* AIX cc, xlc
1ec0: 20 2a 2f 0a 20 20 5f 5f 41 56 5f 53 54 52 55 43   */.  __AV_STRUC
1ed0: 54 5f 41 52 47 53 09 09 3d 20 5f 5f 41 56 5f 41  T_ARGS..= __AV_A
1ee0: 49 58 43 43 5f 53 54 52 55 43 54 5f 41 52 47 53  IXCC_STRUCT_ARGS
1ef0: 2c 0a 23 65 6c 73 65 0a 20 20 5f 5f 41 56 5f 53  ,.#else.  __AV_S
1f00: 54 52 55 43 54 5f 41 52 47 53 09 09 3d 20 30 2c  TRUCT_ARGS..= 0,
1f10: 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69 66 0a 23  .#endif.#endif.#
1f20: 65 6e 64 69 66 0a 0a 20 20 2f 2a 20 68 6f 77 20  endif..  /* how 
1f30: 74 6f 20 70 61 73 73 20 66 6c 6f 61 74 73 20 2a  to pass floats *
1f40: 2f 0a 20 20 2f 2a 20 41 4e 53 49 20 43 20 63 6f  /.  /* ANSI C co
1f50: 6d 70 69 6c 65 72 73 20 61 6e 64 20 47 4e 55 20  mpilers and GNU 
1f60: 67 63 63 20 70 61 73 73 20 66 6c 6f 61 74 73 20  gcc pass floats 
1f70: 61 73 20 66 6c 6f 61 74 73 2e 0a 20 20 20 2a 20  as floats..   * 
1f80: 4b 26 52 20 43 20 63 6f 6d 70 69 6c 65 72 73 20  K&R C compilers 
1f90: 70 61 73 73 20 66 6c 6f 61 74 73 20 61 73 20 64  pass floats as d
1fa0: 6f 75 62 6c 65 73 2e 0a 20 20 20 2a 20 28 45 78  oubles..   * (Ex
1fb0: 63 65 70 74 20 73 6f 6d 65 20 63 6f 6d 70 69 6c  cept some compil
1fc0: 65 72 73 20 6c 69 6b 65 20 53 47 49 20 4d 49 50  ers like SGI MIP
1fd0: 53 20 22 63 63 22 20 61 6e 64 20 22 63 63 20 2d  S "cc" and "cc -
1fe0: 63 63 6b 72 22 20 69 66 20 61 20 70 72 6f 74 6f  cckr" if a proto
1ff0: 74 79 70 65 20 69 73 0a 20 20 20 2a 20 6b 6e 6f  type is.   * kno
2000: 77 6e 20 66 6f 72 20 74 68 65 20 63 61 6c 6c 65  wn for the calle
2010: 64 20 66 75 6e 63 74 69 6f 6e 73 2e 20 42 75 74  d functions. But
2020: 20 74 6f 20 63 6f 6d 70 69 6c 65 20 61 20 70 72   to compile a pr
2030: 6f 67 72 61 6d 20 77 69 74 68 20 70 72 6f 74 6f  ogram with proto
2040: 74 79 70 65 73 2c 0a 20 20 20 2a 20 22 63 63 20  types,.   * "cc 
2050: 2d 61 6e 73 69 22 20 69 73 20 62 65 74 74 65 72  -ansi" is better
2060: 20 61 6e 79 77 61 79 2e 0a 20 20 20 2a 2f 0a 20   anyway..   */. 
2070: 20 5f 5f 41 56 5f 41 4e 53 49 5f 46 4c 4f 41 54   __AV_ANSI_FLOAT
2080: 5f 41 52 47 53 09 09 3d 20 30 2c 20 20 20 20 2f  _ARGS..= 0,    /
2090: 2a 20 70 61 73 73 20 66 6c 6f 61 74 73 20 61 73  * pass floats as
20a0: 20 66 6c 6f 61 74 73 20 2a 2f 0a 20 20 5f 5f 41   floats */.  __A
20b0: 56 5f 54 52 41 44 49 54 49 4f 4e 41 4c 5f 46 4c  V_TRADITIONAL_FL
20c0: 4f 41 54 5f 41 52 47 53 09 3d 20 31 3c 3c 38 2c  OAT_ARGS.= 1<<8,
20d0: 20 2f 2a 20 70 61 73 73 20 66 6c 6f 61 74 73 20   /* pass floats 
20e0: 61 73 20 64 6f 75 62 6c 65 73 20 2a 2f 0a 20 20  as doubles */.  
20f0: 2f 2a 20 74 68 65 20 64 65 66 61 75 6c 74 20 77  /* the default w
2100: 61 79 20 74 6f 20 70 61 73 73 20 66 6c 6f 61 74  ay to pass float
2110: 73 20 2a 2f 0a 20 20 2f 2a 20 54 68 69 73 20 63  s */.  /* This c
2120: 68 6f 69 63 65 20 68 65 72 65 20 69 73 20 62 61  hoice here is ba
2130: 73 65 64 20 6f 6e 20 74 68 65 20 61 73 73 75 6d  sed on the assum
2140: 70 74 69 6f 6e 20 74 68 61 74 20 74 68 65 20 66  ption that the f
2150: 75 6e 63 74 69 6f 6e 20 79 6f 75 20 61 72 65 0a  unction you are.
2160: 20 20 20 2a 20 67 6f 69 6e 67 20 74 6f 20 63 61     * going to ca
2170: 6c 6c 20 68 61 73 20 62 65 65 6e 20 63 6f 6d 70  ll has been comp
2180: 69 6c 65 64 20 77 69 74 68 20 74 68 65 20 73 61  iled with the sa
2190: 6d 65 20 63 6f 6d 70 69 6c 65 72 20 79 6f 75 20  me compiler you 
21a0: 61 72 65 20 75 73 69 6e 67 20 74 6f 0a 20 20 20  are using to.   
21b0: 2a 20 69 6e 63 6c 75 64 65 20 74 68 69 73 20 66  * include this f
21c0: 69 6c 65 2e 0a 20 20 20 2a 20 49 66 20 79 6f 75  ile..   * If you
21d0: 20 77 61 6e 74 20 74 6f 20 63 61 6c 6c 20 66 75   want to call fu
21e0: 6e 63 74 69 6f 6e 73 20 77 69 74 68 20 61 6e 6f  nctions with ano
21f0: 74 68 65 72 20 66 6c 6f 61 74 20 70 61 73 73 69  ther float passi
2200: 6e 67 20 63 6f 6e 76 65 6e 74 69 6f 6e 2c 0a 20  ng convention,. 
2210: 20 20 2a 20 6a 75 73 74 20 20 23 64 65 66 69 6e    * just  #defin
2220: 65 20 5f 5f 41 56 5f 46 4c 4f 41 54 5f 41 52 47  e __AV_FLOAT_ARG
2230: 53 20 2e 2e 2e 0a 20 20 20 2a 20 62 65 66 6f 72  S ....   * befor
2240: 65 20 6f 72 20 61 66 74 65 72 20 23 69 6e 63 6c  e or after #incl
2250: 75 64 69 6e 67 20 3c 61 76 63 61 6c 6c 2e 68 3e  uding <avcall.h>
2260: 2e 0a 20 20 20 2a 2f 0a 23 69 66 6e 64 65 66 20  ..   */.#ifndef 
2270: 5f 5f 41 56 5f 46 4c 4f 41 54 5f 41 52 47 53 0a  __AV_FLOAT_ARGS.
2280: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 53 54  #if defined(__ST
2290: 44 43 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  DC__) || defined
22a0: 28 5f 5f 47 4e 55 43 5f 5f 29 20 2f 2a 20 77 68  (__GNUC__) /* wh
22b0: 61 74 20 61 62 6f 75 74 20 68 70 70 61 20 22 63  at about hppa "c
22c0: 63 20 2d 41 61 22 20 3f 3f 20 2a 2f 0a 20 20 5f  c -Aa" ?? */.  _
22d0: 5f 41 56 5f 46 4c 4f 41 54 5f 41 52 47 53 09 09  _AV_FLOAT_ARGS..
22e0: 3d 20 5f 5f 41 56 5f 41 4e 53 49 5f 46 4c 4f 41  = __AV_ANSI_FLOA
22f0: 54 5f 41 52 47 53 2c 0a 23 65 6c 73 65 0a 20 20  T_ARGS,.#else.  
2300: 5f 5f 41 56 5f 46 4c 4f 41 54 5f 41 52 47 53 09  __AV_FLOAT_ARGS.
2310: 09 3d 20 5f 5f 41 56 5f 54 52 41 44 49 54 49 4f  .= __AV_TRADITIO
2320: 4e 41 4c 5f 46 4c 4f 41 54 5f 41 52 47 53 2c 0a  NAL_FLOAT_ARGS,.
2330: 23 65 6e 64 69 66 0a 23 65 6e 64 69 66 0a 0a 20  #endif.#endif.. 
2340: 20 2f 2a 20 68 6f 77 20 74 6f 20 70 61 73 73 20   /* how to pass 
2350: 61 6e 64 20 72 65 74 75 72 6e 20 73 6d 61 6c 6c  and return small
2360: 20 69 6e 74 65 67 65 72 20 61 72 67 75 6d 65 6e   integer argumen
2370: 74 73 20 2a 2f 0a 20 20 5f 5f 41 56 5f 41 4e 53  ts */.  __AV_ANS
2380: 49 5f 49 4e 54 45 47 45 52 53 09 09 3d 20 30 2c  I_INTEGERS..= 0,
2390: 20 2f 2a 20 6e 6f 20 70 72 6f 6d 6f 74 69 6f 6e   /* no promotion
23a0: 73 20 2a 2f 0a 20 20 5f 5f 41 56 5f 54 52 41 44  s */.  __AV_TRAD
23b0: 49 54 49 4f 4e 41 4c 5f 49 4e 54 45 47 45 52 53  ITIONAL_INTEGERS
23c0: 09 3d 20 30 2c 20 2f 2a 20 70 72 6f 6d 6f 74 65  .= 0, /* promote
23d0: 20 5b 75 5d 63 68 61 72 2c 20 5b 75 5d 73 68 6f   [u]char, [u]sho
23e0: 72 74 20 74 6f 20 5b 75 5d 69 6e 74 20 2a 2f 0a  rt to [u]int */.
23f0: 20 20 2f 2a 20 46 6f 72 74 75 6e 61 74 65 6c 79    /* Fortunately
2400: 20 74 68 65 73 65 20 74 77 6f 20 6d 65 74 68 6f   these two metho
2410: 64 73 20 61 72 65 20 63 6f 6d 70 61 74 69 62 6c  ds are compatibl
2420: 65 2e 20 4f 75 72 20 6d 61 63 72 6f 73 20 77 6f  e. Our macros wo
2430: 72 6b 20 77 69 74 68 20 62 6f 74 68 2e 20 2a 2f  rk with both. */
2440: 0a 20 20 2f 2a 20 74 68 65 20 64 65 66 61 75 6c  .  /* the defaul
2450: 74 20 77 61 79 20 74 6f 20 70 61 73 73 20 61 6e  t way to pass an
2460: 64 20 72 65 74 75 72 6e 20 73 6d 61 6c 6c 20 69  d return small i
2470: 6e 74 65 67 65 72 20 61 72 67 75 6d 65 6e 74 73  nteger arguments
2480: 20 2a 2f 0a 20 20 2f 2a 20 54 68 69 73 20 63 68   */.  /* This ch
2490: 6f 69 63 65 20 68 65 72 65 20 69 73 20 62 61 73  oice here is bas
24a0: 65 64 20 6f 6e 20 74 68 65 20 61 73 73 75 6d 70  ed on the assump
24b0: 74 69 6f 6e 20 74 68 61 74 20 74 68 65 20 66 75  tion that the fu
24c0: 6e 63 74 69 6f 6e 20 79 6f 75 20 61 72 65 0a 20  nction you are. 
24d0: 20 20 2a 20 67 6f 69 6e 67 20 74 6f 20 63 61 6c    * going to cal
24e0: 6c 20 68 61 73 20 62 65 65 6e 20 63 6f 6d 70 69  l has been compi
24f0: 6c 65 64 20 77 69 74 68 20 74 68 65 20 73 61 6d  led with the sam
2500: 65 20 63 6f 6d 70 69 6c 65 72 20 79 6f 75 20 61  e compiler you a
2510: 72 65 20 75 73 69 6e 67 20 74 6f 0a 20 20 20 2a  re using to.   *
2520: 20 69 6e 63 6c 75 64 65 20 74 68 69 73 20 66 69   include this fi
2530: 6c 65 2e 0a 20 20 20 2a 20 49 66 20 79 6f 75 20  le..   * If you 
2540: 77 61 6e 74 20 74 6f 20 63 61 6c 6c 20 66 75 6e  want to call fun
2550: 63 74 69 6f 6e 73 20 77 69 74 68 20 61 6e 6f 74  ctions with anot
2560: 68 65 72 20 66 6c 6f 61 74 20 70 61 73 73 69 6e  her float passin
2570: 67 20 63 6f 6e 76 65 6e 74 69 6f 6e 2c 0a 20 20  g convention,.  
2580: 20 2a 20 6a 75 73 74 20 20 23 64 65 66 69 6e 65   * just  #define
2590: 20 5f 5f 41 56 5f 49 4e 54 45 47 45 52 53 20 2e   __AV_INTEGERS .
25a0: 2e 2e 0a 20 20 20 2a 20 62 65 66 6f 72 65 20 6f  ...   * before o
25b0: 72 20 61 66 74 65 72 20 23 69 6e 63 6c 75 64 69  r after #includi
25c0: 6e 67 20 3c 61 76 63 61 6c 6c 2e 68 3e 2e 0a 20  ng <avcall.h>.. 
25d0: 20 20 2a 2f 0a 23 69 66 6e 64 65 66 20 5f 5f 41    */.#ifndef __A
25e0: 56 5f 49 4e 54 45 47 45 52 53 0a 23 69 66 20 64  V_INTEGERS.#if d
25f0: 65 66 69 6e 65 64 28 5f 5f 53 54 44 43 5f 5f 29  efined(__STDC__)
2600: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 47 4e   || defined(__GN
2610: 55 43 5f 5f 29 0a 20 20 5f 5f 41 56 5f 49 4e 54  UC__).  __AV_INT
2620: 45 47 45 52 53 09 09 09 3d 20 5f 5f 41 56 5f 41  EGERS...= __AV_A
2630: 4e 53 49 5f 49 4e 54 45 47 45 52 53 2c 0a 23 65  NSI_INTEGERS,.#e
2640: 6c 73 65 0a 20 20 5f 5f 41 56 5f 49 4e 54 45 47  lse.  __AV_INTEG
2650: 45 52 53 09 09 09 3d 20 5f 5f 41 56 5f 54 52 41  ERS...= __AV_TRA
2660: 44 49 54 49 4f 4e 41 4c 5f 49 4e 54 45 47 45 52  DITIONAL_INTEGER
2670: 53 2c 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69 66  S,.#endif.#endif
2680: 0a 0a 20 20 2f 2a 20 73 74 61 63 6b 20 63 6c 65  ..  /* stack cle
2690: 61 6e 75 70 20 70 6f 6c 69 63 79 20 2a 2f 0a 20  anup policy */. 
26a0: 20 5f 5f 41 56 5f 43 44 45 43 4c 5f 43 4c 45 41   __AV_CDECL_CLEA
26b0: 4e 55 50 09 09 3d 20 30 2c 20 2f 2a 20 63 61 6c  NUP..= 0, /* cal
26c0: 6c 65 72 20 70 6f 70 73 20 61 72 67 73 20 61 66  ler pops args af
26d0: 74 65 72 20 72 65 74 75 72 6e 20 2a 2f 0a 20 20  ter return */.  
26e0: 5f 5f 41 56 5f 53 54 44 43 41 4c 4c 5f 43 4c 45  __AV_STDCALL_CLE
26f0: 41 4e 55 50 09 09 3d 20 30 2c 20 2f 2a 20 63 61  ANUP..= 0, /* ca
2700: 6c 6c 65 65 20 70 6f 70 73 20 61 72 67 73 20 62  llee pops args b
2710: 65 66 6f 72 65 20 72 65 74 75 72 6e 20 2a 2f 0a  efore return */.
2720: 09 09 09 09 20 20 20 20 20 2f 2a 20 63 75 72 72  ....     /* curr
2730: 65 6e 74 6c 79 20 6f 6e 6c 79 20 73 75 70 70 6f  ently only suppo
2740: 72 74 65 64 20 6f 6e 20 5f 5f 69 33 38 36 5f 5f  rted on __i386__
2750: 20 2a 2f 0a 23 69 66 6e 64 65 66 20 5f 5f 41 56   */.#ifndef __AV
2760: 5f 43 4c 45 41 4e 55 50 0a 20 20 5f 5f 41 56 5f  _CLEANUP.  __AV_
2770: 43 4c 45 41 4e 55 50 09 09 09 3d 20 5f 5f 41 56  CLEANUP...= __AV
2780: 5f 43 44 45 43 4c 5f 43 4c 45 41 4e 55 50 2c 0a  _CDECL_CLEANUP,.
2790: 23 65 6e 64 69 66 0a 0a 20 20 2f 2a 20 54 68 65  #endif..  /* The
27a0: 73 65 20 61 72 65 20 66 6f 72 20 69 6e 74 65 72  se are for inter
27b0: 6e 61 6c 20 75 73 65 20 6f 6e 6c 79 20 2a 2f 0a  nal use only */.
27c0: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 69 33  #if defined(__i3
27d0: 38 36 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  86__) || defined
27e0: 28 5f 5f 6d 36 38 6b 5f 5f 29 20 7c 7c 20 64 65  (__m68k__) || de
27f0: 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f  fined(__mipsn32_
2800: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  _) || defined(__
2810: 6d 69 70 73 36 34 5f 5f 29 20 7c 7c 20 64 65 66  mips64__) || def
2820: 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f  ined(__sparc64__
2830: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 61  ) || defined(__a
2840: 6c 70 68 61 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  lpha__) || defin
2850: 65 64 28 5f 5f 61 72 6d 5f 5f 29 20 7c 7c 20 64  ed(__arm__) || d
2860: 65 66 69 6e 65 64 28 5f 5f 72 73 36 30 30 30 5f  efined(__rs6000_
2870: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  _) || defined(__
2880: 63 6f 6e 76 65 78 5f 5f 29 20 7c 7c 20 64 65 66  convex__) || def
2890: 69 6e 65 64 28 5f 5f 69 61 36 34 5f 5f 29 20 7c  ined(__ia64__) |
28a0: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 78 38 36 5f  | defined(__x86_
28b0: 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  64__) || defined
28c0: 28 5f 5f 73 33 39 30 5f 5f 29 0a 20 20 5f 5f 41  (__s390__).  __A
28d0: 56 5f 52 45 47 49 53 54 45 52 5f 53 54 52 55 43  V_REGISTER_STRUC
28e0: 54 5f 52 45 54 55 52 4e 09 3d 20 31 3c 3c 39 2c  T_RETURN.= 1<<9,
28f0: 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69  .#endif.#if defi
2900: 6e 65 64 28 5f 5f 6d 69 70 73 5f 5f 29 20 26 26  ned(__mips__) &&
2910: 20 21 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73   !defined(__mips
2920: 6e 33 32 5f 5f 29 0a 20 20 5f 5f 41 56 5f 46 4c  n32__).  __AV_FL
2930: 4f 41 54 5f 31 09 09 09 3d 20 31 3c 3c 31 30 2c  OAT_1...= 1<<10,
2940: 0a 20 20 5f 5f 41 56 5f 46 4c 4f 41 54 5f 32 09  .  __AV_FLOAT_2.
2950: 09 09 3d 20 31 3c 3c 31 31 2c 0a 23 65 6e 64 69  ..= 1<<11,.#endi
2960: 66 0a 0a 20 20 5f 5f 41 56 5f 66 6c 61 67 5f 66  f..  __AV_flag_f
2970: 6f 72 5f 62 72 6f 6b 65 6e 5f 63 6f 6d 70 69 6c  or_broken_compil
2980: 65 72 73 5f 74 68 61 74 5f 64 6f 6e 74 5f 6c 69  ers_that_dont_li
2990: 6b 65 5f 74 72 61 69 6c 69 6e 67 5f 63 6f 6d 6d  ke_trailing_comm
29a0: 61 73 0a 7d 3b 0a 0a 74 79 70 65 64 65 66 20 73  as.};..typedef s
29b0: 74 72 75 63 74 0a 7b 0a 20 20 2f 2a 20 66 75 6e  truct.{.  /* fun
29c0: 63 74 69 6f 6e 20 74 6f 20 62 65 20 63 61 6c 6c  ction to be call
29d0: 65 64 20 2a 2f 0a 20 20 5f 5f 61 76 77 6f 72 64  ed */.  __avword
29e0: 09 09 28 2a 66 75 6e 63 29 28 29 3b 0a 20 20 2f  ..(*func)();.  /
29f0: 2a 20 73 6f 6d 65 20 61 76 5f 2e 2e 2e 20 6d 61  * some av_... ma
2a00: 63 72 6f 73 20 6e 65 65 64 20 74 68 65 73 65 20  cros need these 
2a10: 66 6c 61 67 73 20 2a 2f 0a 20 20 69 6e 74 09 09  flags */.  int..
2a20: 09 66 6c 61 67 73 3b 0a 20 20 2f 2a 20 72 65 74  .flags;.  /* ret
2a30: 75 72 6e 20 74 79 70 65 2c 20 61 64 64 72 65 73  urn type, addres
2a40: 73 20 66 6f 72 20 74 68 65 20 72 65 73 75 6c 74  s for the result
2a50: 20 2a 2f 0a 20 20 76 6f 69 64 2a 09 09 09 72 61   */.  void*...ra
2a60: 64 64 72 3b 0a 20 20 65 6e 75 6d 20 5f 5f 41 56  ddr;.  enum __AV
2a70: 74 79 70 65 09 09 72 74 79 70 65 3b 0a 20 20 75  type..rtype;.  u
2a80: 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 09 09 72 73  nsigned long..rs
2a90: 69 7a 65 3b 0a 20 20 2f 2a 20 63 75 72 72 65 6e  ize;.  /* curren
2aa0: 74 20 70 6f 69 6e 74 65 72 20 69 6e 74 6f 20 74  t pointer into t
2ab0: 68 65 20 61 72 67 73 5b 5d 20 61 72 72 61 79 20  he args[] array 
2ac0: 2a 2f 0a 20 20 5f 5f 61 76 77 6f 72 64 2a 09 09  */.  __avword*..
2ad0: 61 70 74 72 3b 0a 23 69 66 20 64 65 66 69 6e 65  aptr;.#if define
2ae0: 64 28 5f 5f 73 70 61 72 63 5f 5f 29 20 7c 7c 20  d(__sparc__) || 
2af0: 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36  defined(__sparc6
2b00: 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  4__) || defined(
2b10: 5f 5f 68 70 70 61 5f 5f 29 20 7c 7c 20 28 64 65  __hppa__) || (de
2b20: 66 69 6e 65 64 28 5f 5f 72 73 36 30 30 30 5f 5f  fined(__rs6000__
2b30: 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 41  ) && !defined(_A
2b40: 49 58 29 20 26 26 20 21 28 64 65 66 69 6e 65 64  IX) && !(defined
2b50: 28 5f 5f 4d 41 43 48 5f 5f 29 20 26 26 20 64 65  (__MACH__) && de
2b60: 66 69 6e 65 64 28 5f 5f 41 50 50 4c 45 5f 5f 29  fined(__APPLE__)
2b70: 29 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  )) || defined(__
2b80: 73 33 39 30 5f 5f 29 0a 20 20 2f 2a 20 6c 69 6d  s390__).  /* lim
2b90: 69 74 20 70 6f 69 6e 74 65 72 20 69 6e 74 6f 20  it pointer into 
2ba0: 74 68 65 20 61 72 67 73 5b 5d 20 61 72 72 61 79  the args[] array
2bb0: 20 2a 2f 0a 20 20 5f 5f 61 76 77 6f 72 64 2a 09   */.  __avword*.
2bc0: 09 65 70 74 72 3b 0a 23 65 6e 64 69 66 0a 23 69  .eptr;.#endif.#i
2bd0: 66 20 64 65 66 69 6e 65 64 28 5f 5f 69 33 38 36  f defined(__i386
2be0: 5f 5f 29 20 26 26 20 30 0a 20 20 2f 2a 20 46 69  __) && 0.  /* Fi
2bf0: 6c 6c 65 72 20 77 6f 72 64 2c 20 6e 65 65 64 65  ller word, neede
2c00: 64 20 69 66 20 74 68 65 20 6e 75 6d 62 65 72 73  d if the numbers
2c10: 20 6f 66 20 77 6f 72 64 73 20 75 70 20 74 6f 20   of words up to 
2c20: 6e 6f 77 20 69 6e 20 74 68 69 73 20 73 74 72 75  now in this stru
2c30: 63 74 75 72 65 20 2a 2f 0a 20 20 2f 2a 20 69 73  cture */.  /* is
2c40: 20 6f 64 64 20 28 62 65 63 61 75 73 65 20 6f 6e   odd (because on
2c50: 20 4d 53 56 43 2c 20 61 6c 69 67 6e 6f 66 28 64   MSVC, alignof(d
2c60: 6f 75 62 6c 65 29 20 3d 20 38 2c 20 6e 6f 72 6d  ouble) = 8, norm
2c70: 61 6c 6c 79 20 3d 20 34 29 2e 20 20 20 20 20 20  ally = 4).      
2c80: 20 20 20 20 20 20 2a 2f 0a 20 20 5f 5f 61 76 77        */.  __avw
2c90: 6f 72 64 09 09 66 69 6c 6c 65 72 31 3b 0a 23 65  ord..filler1;.#e
2ca0: 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64  ndif.#if defined
2cb0: 28 5f 5f 69 33 38 36 5f 5f 29 20 7c 7c 20 64 65  (__i386__) || de
2cc0: 66 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f 5f 29 20  fined(__m68k__) 
2cd0: 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f 73 70  || (defined(__sp
2ce0: 61 72 63 5f 5f 29 20 26 26 20 21 64 65 66 69 6e  arc__) && !defin
2cf0: 65 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29 29  ed(__sparc64__))
2d00: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 68 70   || defined(__hp
2d10: 70 61 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  pa__) || defined
2d20: 28 5f 5f 61 72 6d 5f 5f 29 20 7c 7c 20 64 65 66  (__arm__) || def
2d30: 69 6e 65 64 28 5f 5f 72 73 36 30 30 30 5f 5f 29  ined(__rs6000__)
2d40: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 63 6f   || defined(__co
2d50: 6e 76 65 78 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  nvex__) || defin
2d60: 65 64 28 5f 5f 73 33 39 30 5f 5f 29 0a 20 20 2f  ed(__s390__).  /
2d70: 2a 20 74 65 6d 70 6f 72 61 72 79 20 73 74 6f 72  * temporary stor
2d80: 61 67 65 2c 20 75 73 65 64 20 74 6f 20 73 70 6c  age, used to spl
2d90: 69 74 20 64 6f 75 62 6c 65 73 20 69 6e 74 6f 20  it doubles into 
2da0: 74 77 6f 20 77 6f 72 64 73 20 2a 2f 0a 20 20 75  two words */.  u
2db0: 6e 69 6f 6e 20 7b 0a 20 20 20 20 64 6f 75 62 6c  nion {.    doubl
2dc0: 65 09 5f 64 6f 75 62 6c 65 3b 0a 23 69 66 20 64  e._double;.#if d
2dd0: 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f 5f  efined(__sparc__
2de0: 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f  ) && !defined(__
2df0: 73 70 61 72 63 36 34 5f 5f 29 20 26 26 20 64 65  sparc64__) && de
2e00: 66 69 6e 65 64 28 48 41 56 45 5f 4c 4f 4e 47 4c  fined(HAVE_LONGL
2e10: 4f 4e 47 29 0a 20 20 20 20 6c 6f 6e 67 20 6c 6f  ONG).    long lo
2e20: 6e 67 09 5f 6c 6f 6e 67 6c 6f 6e 67 3b 0a 23 65  ng._longlong;.#e
2e30: 6e 64 69 66 0a 20 20 20 20 5f 5f 61 76 77 6f 72  ndif.    __avwor
2e40: 64 09 77 6f 72 64 73 5b 32 5d 3b 0a 20 20 7d 09  d.words[2];.  }.
2e50: 09 09 74 6d 70 3b 0a 23 65 6e 64 69 66 0a 23 69  ..tmp;.#endif.#i
2e60: 66 20 64 65 66 69 6e 65 64 28 5f 5f 78 38 36 5f  f defined(__x86_
2e70: 36 34 5f 5f 29 0a 20 20 2f 2a 20 73 74 6f 72 65  64__).  /* store
2e80: 20 74 68 65 20 69 6e 74 65 67 65 72 20 61 72 67   the integer arg
2e90: 75 6d 65 6e 74 73 20 69 6e 20 61 6e 20 65 78 74  uments in an ext
2ea0: 72 61 20 61 72 72 61 79 20 2a 2f 0a 20 20 5f 5f  ra array */.  __
2eb0: 61 76 77 6f 72 64 2a 09 09 69 61 70 74 72 3b 0a  avword*..iaptr;.
2ec0: 20 20 5f 5f 61 76 77 6f 72 64 09 09 69 61 72 67    __avword..iarg
2ed0: 73 5b 36 5d 3b 0a 23 65 6e 64 69 66 0a 23 69 66  s[6];.#endif.#if
2ee0: 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 5f   defined(__mips_
2ef0: 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f  _) && !defined(_
2f00: 5f 6d 69 70 73 6e 33 32 5f 5f 29 0a 20 20 2f 2a  _mipsn32__).  /*
2f10: 20 73 74 6f 72 65 20 74 68 65 20 66 6c 6f 61 74   store the float
2f20: 69 6e 67 2d 70 6f 69 6e 74 20 61 72 67 75 6d 65  ing-point argume
2f30: 6e 74 73 20 69 6e 20 61 6e 20 65 78 74 72 61 20  nts in an extra 
2f40: 61 72 72 61 79 20 2a 2f 0a 20 20 69 6e 74 09 09  array */.  int..
2f50: 09 61 6e 75 6d 3b 0a 20 20 64 6f 75 62 6c 65 09  .anum;.  double.
2f60: 09 66 6c 6f 61 74 61 72 67 5b 32 5d 3b 0a 23 65  .floatarg[2];.#e
2f70: 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64  ndif.#if defined
2f80: 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 7c 7c  (__mipsn32__) ||
2f90: 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 36   defined(__mips6
2fa0: 34 5f 5f 29 0a 20 20 2f 2a 20 73 74 6f 72 65 20  4__).  /* store 
2fb0: 74 68 65 20 66 6c 6f 61 74 69 6e 67 2d 70 6f 69  the floating-poi
2fc0: 6e 74 20 61 72 67 75 6d 65 6e 74 73 20 69 6e 20  nt arguments in 
2fd0: 61 6e 20 65 78 74 72 61 20 61 72 72 61 79 20 2a  an extra array *
2fe0: 2f 0a 20 20 69 6e 74 09 09 09 61 6e 75 6d 3b 09  /.  int...anum;.
2ff0: 09 2f 2a 20 72 65 64 75 6e 64 61 6e 74 3a 20 28  ./* redundant: (
3000: 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 26 28 4c  LIST).aptr = &(L
3010: 49 53 54 29 2e 61 72 67 73 5b 28 4c 49 53 54 29  IST).args[(LIST)
3020: 2e 61 6e 75 6d 5d 20 2a 2f 0a 20 20 75 6e 73 69  .anum] */.  unsi
3030: 67 6e 65 64 20 69 6e 74 09 09 66 61 72 67 5f 6d  gned int..farg_m
3040: 61 73 6b 3b 09 2f 2a 20 62 69 74 6d 61 73 6b 20  ask;./* bitmask 
3050: 6f 66 20 74 68 6f 73 65 20 65 6e 74 72 69 65 73  of those entries
3060: 20 69 6e 20 66 61 72 67 5b 5d 20 77 68 69 63 68   in farg[] which
3070: 20 68 61 76 65 20 61 20 76 61 6c 75 65 20 2a 2f   have a value */
3080: 0a 20 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 09  .  unsigned int.
3090: 09 64 61 72 67 5f 6d 61 73 6b 3b 09 2f 2a 20 62  .darg_mask;./* b
30a0: 69 74 6d 61 73 6b 20 6f 66 20 74 68 6f 73 65 20  itmask of those 
30b0: 65 6e 74 72 69 65 73 20 69 6e 20 61 72 67 73 5b  entries in args[
30c0: 5d 20 77 68 69 63 68 20 68 61 76 65 20 61 20 64  ] which have a d
30d0: 6f 75 62 6c 65 20 76 61 6c 75 65 20 2a 2f 0a 20  ouble value */. 
30e0: 20 66 6c 6f 61 74 09 09 09 66 61 72 67 5b 38 5d   float...farg[8]
30f0: 3b 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66  ;.#endif.#if def
3100: 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f  ined(__sparc64__
3110: 29 0a 20 20 2f 2a 20 73 74 6f 72 65 20 74 68 65  ).  /* store the
3120: 20 66 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e 74 20   floating-point 
3130: 61 72 67 75 6d 65 6e 74 73 20 69 6e 20 61 6e 20  arguments in an 
3140: 65 78 74 72 61 20 61 72 72 61 79 20 2a 2f 0a 20  extra array */. 
3150: 20 69 6e 74 09 09 09 61 6e 75 6d 3b 09 09 2f 2a   int...anum;../*
3160: 20 72 65 64 75 6e 64 61 6e 74 3a 20 28 4c 49 53   redundant: (LIS
3170: 54 29 2e 61 70 74 72 20 3d 20 26 28 4c 49 53 54  T).aptr = &(LIST
3180: 29 2e 61 72 67 73 5b 28 4c 49 53 54 29 2e 61 6e  ).args[(LIST).an
3190: 75 6d 5d 20 2a 2f 0a 20 20 75 6e 73 69 67 6e 65  um] */.  unsigne
31a0: 64 20 69 6e 74 09 09 66 61 72 67 5f 6d 61 73 6b  d int..farg_mask
31b0: 3b 09 2f 2a 20 62 69 74 6d 61 73 6b 20 6f 66 20  ;./* bitmask of 
31c0: 74 68 6f 73 65 20 65 6e 74 72 69 65 73 20 69 6e  those entries in
31d0: 20 66 61 72 67 5b 5d 20 77 68 69 63 68 20 68 61   farg[] which ha
31e0: 76 65 20 61 20 76 61 6c 75 65 20 2a 2f 0a 20 20  ve a value */.  
31f0: 75 6e 73 69 67 6e 65 64 20 69 6e 74 09 09 64 61  unsigned int..da
3200: 72 67 5f 6d 61 73 6b 3b 09 2f 2a 20 62 69 74 6d  rg_mask;./* bitm
3210: 61 73 6b 20 6f 66 20 74 68 6f 73 65 20 65 6e 74  ask of those ent
3220: 72 69 65 73 20 69 6e 20 61 72 67 73 5b 5d 20 77  ries in args[] w
3230: 68 69 63 68 20 68 61 76 65 20 61 20 64 6f 75 62  hich have a doub
3240: 6c 65 20 76 61 6c 75 65 20 2a 2f 0a 23 65 6e 64  le value */.#end
3250: 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f  if.#if defined(_
3260: 5f 69 61 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69  _ia64__) || defi
3270: 6e 65 64 28 5f 5f 78 38 36 5f 36 34 5f 5f 29 0a  ned(__x86_64__).
3280: 20 20 2f 2a 20 73 74 6f 72 65 20 74 68 65 20 66    /* store the f
3290: 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e 74 20 61 72  loating-point ar
32a0: 67 75 6d 65 6e 74 73 20 69 6e 20 61 6e 20 65 78  guments in an ex
32b0: 74 72 61 20 61 72 72 61 79 20 2a 2f 0a 20 20 64  tra array */.  d
32c0: 6f 75 62 6c 65 2a 09 09 66 61 70 74 72 3b 0a 20  ouble*..faptr;. 
32d0: 20 64 6f 75 62 6c 65 09 09 66 61 72 67 73 5b 38   double..fargs[8
32e0: 5d 3b 0a 23 65 6e 64 69 66 0a 20 20 5f 5f 61 76  ];.#endif.  __av
32f0: 77 6f 72 64 09 09 61 72 67 73 5b 5f 5f 41 56 5f  word..args[__AV_
3300: 41 4c 49 53 54 5f 57 4f 52 44 53 5d 3b 20 2f 2a  ALIST_WORDS]; /*
3310: 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29 2d   sizeof(double)-
3320: 61 6c 69 67 6e 65 64 20 2a 2f 0a 23 69 66 20 64  aligned */.#if d
3330: 65 66 69 6e 65 64 28 5f 5f 72 73 36 30 30 30 5f  efined(__rs6000_
3340: 5f 29 0a 20 20 2f 2a 20 73 74 6f 72 65 20 74 68  _).  /* store th
3350: 65 20 66 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e 74  e floating-point
3360: 20 61 72 67 75 6d 65 6e 74 73 20 69 6e 20 61 6e   arguments in an
3370: 20 65 78 74 72 61 20 61 72 72 61 79 20 2a 2f 0a   extra array */.
3380: 20 20 64 6f 75 62 6c 65 2a 09 09 66 61 70 74 72    double*..faptr
3390: 3b 0a 20 20 64 6f 75 62 6c 65 09 09 66 61 72 67  ;.  double..farg
33a0: 73 5b 31 33 5d 3b 0a 23 65 6e 64 69 66 0a 23 69  s[13];.#endif.#i
33b0: 66 20 64 65 66 69 6e 65 64 28 5f 5f 73 33 39 30  f defined(__s390
33c0: 5f 5f 29 0a 20 20 2f 2a 20 73 74 6f 72 65 20 74  __).  /* store t
33d0: 68 65 20 66 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e  he floating-poin
33e0: 74 20 61 72 67 75 6d 65 6e 74 73 20 69 6e 20 61  t arguments in a
33f0: 6e 20 65 78 74 72 61 20 61 72 72 61 79 20 2a 2f  n extra array */
3400: 0a 20 20 69 6e 74 20 20 20 09 09 66 61 72 67 77  .  int   ..fargw
3410: 6f 72 64 73 3b 0a 20 20 66 6c 6f 61 74 2a 09 09  ords;.  float*..
3420: 66 61 70 74 72 3b 0a 20 20 66 6c 6f 61 74 20 09  faptr;.  float .
3430: 09 66 61 72 67 73 5b 32 5d 3b 0a 20 20 69 6e 74  .fargs[2];.  int
3440: 2a 09 09 09 66 61 72 67 73 75 73 65 64 70 74 72  *...fargsusedptr
3450: 3b 0a 20 20 69 6e 74 09 09 09 66 61 72 67 73 75  ;.  int...fargsu
3460: 73 65 64 5b 32 5d 3b 0a 20 20 64 6f 75 62 6c 65  sed[2];.  double
3470: 2a 09 09 64 61 70 74 72 3b 0a 20 20 64 6f 75 62  *..daptr;.  doub
3480: 6c 65 09 09 64 61 72 67 73 5b 32 5d 3b 0a 20 20  le..dargs[2];.  
3490: 69 6e 74 2a 09 09 09 64 61 72 67 73 75 73 65 64  int*...dargsused
34a0: 70 74 72 3b 0a 20 20 69 6e 74 09 09 09 64 61 72  ptr;.  int...dar
34b0: 67 73 75 73 65 64 5b 32 5d 3b 0a 23 65 6e 64 69  gsused[2];.#endi
34c0: 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 41 4d  f.#if defined(AM
34d0: 49 47 41 29 0a 20 20 2f 2a 20 73 74 6f 72 65 20  IGA).  /* store 
34e0: 74 68 65 20 61 72 67 75 6d 65 6e 74 73 20 70 61  the arguments pa
34f0: 73 73 65 64 20 69 6e 20 72 65 67 69 73 74 65 72  ssed in register
3500: 73 20 69 6e 20 61 6e 20 65 78 74 72 61 20 61 72  s in an extra ar
3510: 72 61 79 20 2a 2f 0a 20 20 5f 5f 61 76 77 6f 72  ray */.  __avwor
3520: 64 09 09 72 65 67 61 72 67 73 5b 38 2b 37 5d 3b  d..regargs[8+7];
3530: 0a 23 65 6e 64 69 66 0a 7d 20 61 76 5f 61 6c 69  .#endif.} av_ali
3540: 73 74 3b 0a 0a 2f 2a 20 54 68 65 20 6c 69 6d 69  st;../* The limi
3550: 74 20 66 6f 72 20 74 68 65 20 70 6f 69 6e 74 65  t for the pointe
3560: 72 20 69 6e 74 6f 20 74 68 65 20 61 72 67 73 5b  r into the args[
3570: 5d 20 61 72 72 61 79 2e 20 2a 2f 0a 23 69 66 20  ] array. */.#if 
3580: 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f  defined(__sparc_
3590: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  _) || defined(__
35a0: 73 70 61 72 63 36 34 5f 5f 29 20 7c 7c 20 64 65  sparc64__) || de
35b0: 66 69 6e 65 64 28 5f 5f 68 70 70 61 5f 5f 29 20  fined(__hppa__) 
35c0: 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f 72 73  || (defined(__rs
35d0: 36 30 30 30 5f 5f 29 20 26 26 20 21 64 65 66 69  6000__) && !defi
35e0: 6e 65 64 28 5f 41 49 58 29 20 26 26 20 21 28 64  ned(_AIX) && !(d
35f0: 65 66 69 6e 65 64 28 5f 5f 4d 41 43 48 5f 5f 29  efined(__MACH__)
3600: 20 26 26 20 64 65 66 69 6e 65 64 28 5f 5f 41 50   && defined(__AP
3610: 50 4c 45 5f 5f 29 29 29 20 7c 7c 20 64 65 66 69  PLE__))) || defi
3620: 6e 65 64 28 5f 5f 73 33 39 30 29 0a 23 64 65 66  ned(__s390).#def
3630: 69 6e 65 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49  ine __av_eptr(LI
3640: 53 54 29 09 28 28 4c 49 53 54 29 2e 65 70 74 72  ST).((LIST).eptr
3650: 29 0a 23 65 6c 73 65 0a 23 64 65 66 69 6e 65 20  ).#else.#define 
3660: 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29 09  __av_eptr(LIST).
3670: 28 26 28 4c 49 53 54 29 2e 61 72 67 73 5b 5f 5f  (&(LIST).args[__
3680: 41 56 5f 41 4c 49 53 54 5f 57 4f 52 44 53 5d 29  AV_ALIST_WORDS])
3690: 0a 23 65 6e 64 69 66 0a 0a 2f 2a 20 44 65 6c 61  .#endif../* Dela
36a0: 79 65 64 20 6f 76 65 72 66 6c 6f 77 20 64 65 74  yed overflow det
36b0: 65 63 74 69 6f 6e 20 2a 2f 0a 23 69 66 20 64 65  ection */.#if de
36c0: 66 69 6e 65 64 28 5f 5f 68 70 70 61 5f 5f 29 0a  fined(__hppa__).
36d0: 23 64 65 66 69 6e 65 20 61 76 5f 6f 76 65 72 66  #define av_overf
36e0: 6c 6f 77 6e 28 4c 49 53 54 29 20 28 28 4c 49 53  lown(LIST) ((LIS
36f0: 54 29 2e 61 70 74 72 20 3c 20 5f 5f 61 76 5f 65  T).aptr < __av_e
3700: 70 74 72 28 4c 49 53 54 29 29 0a 23 65 6c 73 65  ptr(LIST)).#else
3710: 0a 23 64 65 66 69 6e 65 20 61 76 5f 6f 76 65 72  .#define av_over
3720: 66 6c 6f 77 6e 28 4c 49 53 54 29 20 28 28 4c 49  flown(LIST) ((LI
3730: 53 54 29 2e 61 70 74 72 20 3e 20 5f 5f 61 76 5f  ST).aptr > __av_
3740: 65 70 74 72 28 4c 49 53 54 29 29 0a 23 65 6e 64  eptr(LIST)).#end
3750: 69 66 0a 0a 0a 2f 2a 0a 20 2a 20 20 61 76 5f 73  if.../*. *  av_s
3760: 74 61 72 74 5f 3c 74 79 70 65 3e 20 6d 61 63 72  tart_<type> macr
3770: 6f 73 20 77 68 69 63 68 20 73 70 65 63 69 66 79  os which specify
3780: 20 74 68 65 20 72 65 74 75 72 6e 20 74 79 70 65   the return type
3790: 0a 20 2a 2f 0a 0a 23 64 65 66 69 6e 65 20 5f 5f  . */..#define __
37a0: 41 56 5f 53 54 41 52 54 5f 46 4c 41 47 53 20 20  AV_START_FLAGS  
37b0: 5c 0a 20 20 5f 5f 41 56 5f 53 54 52 55 43 54 5f  \.  __AV_STRUCT_
37c0: 52 45 54 55 52 4e 20 7c 20 5f 5f 41 56 5f 46 4c  RETURN | __AV_FL
37d0: 4f 41 54 5f 52 45 54 55 52 4e 20 7c 20 5f 5f 41  OAT_RETURN | __A
37e0: 56 5f 53 54 52 55 43 54 5f 41 52 47 53 20 7c 20  V_STRUCT_ARGS | 
37f0: 5f 5f 41 56 5f 46 4c 4f 41 54 5f 41 52 47 53 20  __AV_FLOAT_ARGS 
3800: 7c 20 5f 5f 41 56 5f 49 4e 54 45 47 45 52 53 20  | __AV_INTEGERS 
3810: 7c 20 5f 5f 41 56 5f 43 4c 45 41 4e 55 50 0a 0a  | __AV_CLEANUP..
3820: 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61  #define __av_sta
3830: 72 74 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44  rt(LIST,FUNC,RAD
3840: 44 52 2c 52 45 54 54 59 50 45 29 09 09 09 09 5c  DR,RETTYPE)....\
3850: 0a 20 20 28 28 4c 49 53 54 29 2e 66 75 6e 63 20  .  ((LIST).func 
3860: 3d 20 28 5f 5f 61 76 77 6f 72 64 28 2a 29 28 29  = (__avword(*)()
3870: 29 28 46 55 4e 43 29 2c 09 09 09 09 09 5c 0a 20  )(FUNC),.....\. 
3880: 20 20 28 4c 49 53 54 29 2e 72 61 64 64 72 20 3d    (LIST).raddr =
3890: 20 28 76 6f 69 64 2a 29 28 52 41 44 44 52 29 2c   (void*)(RADDR),
38a0: 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 29  .....\.   (LIST)
38b0: 2e 72 74 79 70 65 20 3d 20 28 52 45 54 54 59 50  .rtype = (RETTYP
38c0: 45 29 2c 09 09 09 09 09 09 5c 0a 20 20 20 5f 5f  E),......\.   __
38d0: 61 76 5f 73 74 61 72 74 31 28 4c 49 53 54 29 09  av_start1(LIST).
38e0: 09 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 53 54  ......\.   (LIST
38f0: 29 2e 66 6c 61 67 73 20 3d 20 5f 5f 41 56 5f 53  ).flags = __AV_S
3900: 54 41 52 54 5f 46 4c 41 47 53 29 0a 0a 23 69 66  TART_FLAGS)..#if
3910: 20 64 65 66 69 6e 65 64 28 5f 5f 69 33 38 36 5f   defined(__i386_
3920: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  _) || defined(__
3930: 6d 36 38 6b 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  m68k__) || defin
3940: 65 64 28 5f 5f 61 6c 70 68 61 5f 5f 29 20 7c 7c  ed(__alpha__) ||
3950: 20 64 65 66 69 6e 65 64 28 5f 5f 61 72 6d 5f 5f   defined(__arm__
3960: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d  ) || defined(__m
3970: 38 38 6b 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65  88k__) || define
3980: 64 28 5f 5f 63 6f 6e 76 65 78 5f 5f 29 0a 23 64  d(__convex__).#d
3990: 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72 74  efine __av_start
39a0: 31 28 4c 49 53 54 29 09 09 09 09 09 09 5c 0a 20  1(LIST)......\. 
39b0: 20 20 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20    (LIST).aptr = 
39c0: 26 28 4c 49 53 54 29 2e 61 72 67 73 5b 30 5d 2c  &(LIST).args[0],
39d0: 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69  .#endif.#if defi
39e0: 6e 65 64 28 5f 5f 6d 69 70 73 5f 5f 29 20 26 26  ned(__mips__) &&
39f0: 20 21 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73   !defined(__mips
3a00: 6e 33 32 5f 5f 29 0a 23 64 65 66 69 6e 65 20 5f  n32__).#define _
3a10: 5f 61 76 5f 73 74 61 72 74 31 28 4c 49 53 54 29  _av_start1(LIST)
3a20: 09 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 53 54  ......\.   (LIST
3a30: 29 2e 61 6e 75 6d 20 3d 20 30 2c 09 09 09 09 09  ).anum = 0,.....
3a40: 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2e 61 70  ..\.   (LIST).ap
3a50: 74 72 20 3d 20 26 28 4c 49 53 54 29 2e 61 72 67  tr = &(LIST).arg
3a60: 73 5b 30 5d 2c 0a 23 65 6e 64 69 66 0a 23 69 66  s[0],.#endif.#if
3a70: 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e   defined(__mipsn
3a80: 33 32 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  32__) || defined
3a90: 28 5f 5f 6d 69 70 73 36 34 5f 5f 29 0a 23 64 65  (__mips64__).#de
3aa0: 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72 74 31  fine __av_start1
3ab0: 28 4c 49 53 54 29 09 09 09 09 09 09 5c 0a 20 20  (LIST)......\.  
3ac0: 20 28 4c 49 53 54 29 2e 61 6e 75 6d 20 3d 20 30   (LIST).anum = 0
3ad0: 2c 09 09 09 09 09 09 09 5c 0a 20 20 20 28 4c 49  ,.......\.   (LI
3ae0: 53 54 29 2e 66 61 72 67 5f 6d 61 73 6b 20 3d 20  ST).farg_mask = 
3af0: 30 2c 09 09 09 09 09 09 5c 0a 20 20 20 28 4c 49  0,......\.   (LI
3b00: 53 54 29 2e 64 61 72 67 5f 6d 61 73 6b 20 3d 20  ST).darg_mask = 
3b10: 30 2c 09 09 09 09 09 09 5c 0a 20 20 20 28 4c 49  0,......\.   (LI
3b20: 53 54 29 2e 61 70 74 72 20 3d 20 26 28 4c 49 53  ST).aptr = &(LIS
3b30: 54 29 2e 61 72 67 73 5b 30 5d 2c 0a 23 65 6e 64  T).args[0],.#end
3b40: 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f  if.#if defined(_
3b50: 5f 73 70 61 72 63 5f 5f 29 20 26 26 20 21 64 65  _sparc__) && !de
3b60: 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f  fined(__sparc64_
3b70: 5f 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f  _).#define __av_
3b80: 73 74 61 72 74 31 28 4c 49 53 54 29 09 09 09 09  start1(LIST)....
3b90: 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2e 61 70  ..\.   (LIST).ap
3ba0: 74 72 20 3d 20 26 28 4c 49 53 54 29 2e 61 72 67  tr = &(LIST).arg
3bb0: 73 5b 30 5d 2c 09 09 09 09 09 5c 0a 20 20 20 28  s[0],.....\.   (
3bc0: 4c 49 53 54 29 2e 65 70 74 72 20 3d 20 26 28 4c  LIST).eptr = &(L
3bd0: 49 53 54 29 2e 61 72 67 73 5b 5f 5f 41 56 5f 41  IST).args[__AV_A
3be0: 4c 49 53 54 5f 57 4f 52 44 53 5d 2c 0a 23 65 6e  LIST_WORDS],.#en
3bf0: 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28  dif.#if defined(
3c00: 5f 5f 73 70 61 72 63 36 34 5f 5f 29 0a 23 64 65  __sparc64__).#de
3c10: 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72 74 31  fine __av_start1
3c20: 28 4c 49 53 54 29 09 09 09 09 09 09 5c 0a 20 20  (LIST)......\.  
3c30: 20 28 4c 49 53 54 29 2e 61 6e 75 6d 20 3d 20 30   (LIST).anum = 0
3c40: 2c 09 09 09 09 09 09 09 5c 0a 20 20 20 28 4c 49  ,.......\.   (LI
3c50: 53 54 29 2e 66 61 72 67 5f 6d 61 73 6b 20 3d 20  ST).farg_mask = 
3c60: 30 2c 09 09 09 09 09 09 5c 0a 20 20 20 28 4c 49  0,......\.   (LI
3c70: 53 54 29 2e 64 61 72 67 5f 6d 61 73 6b 20 3d 20  ST).darg_mask = 
3c80: 30 2c 09 09 09 09 09 09 5c 0a 20 20 20 28 4c 49  0,......\.   (LI
3c90: 53 54 29 2e 61 70 74 72 20 3d 20 26 28 4c 49 53  ST).aptr = &(LIS
3ca0: 54 29 2e 61 72 67 73 5b 30 5d 2c 09 09 09 09 09  T).args[0],.....
3cb0: 5c 0a 20 20 20 28 4c 49 53 54 29 2e 65 70 74 72  \.   (LIST).eptr
3cc0: 20 3d 20 26 28 4c 49 53 54 29 2e 61 72 67 73 5b   = &(LIST).args[
3cd0: 5f 5f 41 56 5f 41 4c 49 53 54 5f 57 4f 52 44 53  __AV_ALIST_WORDS
3ce0: 5d 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65  ],.#endif.#if de
3cf0: 66 69 6e 65 64 28 5f 5f 68 70 70 61 5f 5f 29 0a  fined(__hppa__).
3d00: 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61  #define __av_sta
3d10: 72 74 31 28 4c 49 53 54 29 09 09 09 09 09 09 5c  rt1(LIST)......\
3d20: 0a 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72 20  .   (LIST).aptr 
3d30: 3d 20 26 28 4c 49 53 54 29 2e 61 72 67 73 5b 5f  = &(LIST).args[_
3d40: 5f 41 56 5f 41 4c 49 53 54 5f 57 4f 52 44 53 5d  _AV_ALIST_WORDS]
3d50: 2c 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2e  ,...\.   (LIST).
3d60: 65 70 74 72 20 3d 20 26 28 4c 49 53 54 29 2e 61  eptr = &(LIST).a
3d70: 72 67 73 5b 30 5d 2c 0a 23 65 6e 64 69 66 0a 23  rgs[0],.#endif.#
3d80: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 72 73 36  if defined(__rs6
3d90: 30 30 30 5f 5f 29 0a 23 69 66 20 64 65 66 69 6e  000__).#if defin
3da0: 65 64 28 5f 41 49 58 29 20 7c 7c 20 28 64 65 66  ed(_AIX) || (def
3db0: 69 6e 65 64 28 5f 5f 4d 41 43 48 5f 5f 29 20 26  ined(__MACH__) &
3dc0: 26 20 64 65 66 69 6e 65 64 28 5f 5f 41 50 50 4c  & defined(__APPL
3dd0: 45 5f 5f 29 29 0a 23 64 65 66 69 6e 65 20 5f 5f  E__)).#define __
3de0: 61 76 5f 73 74 61 72 74 31 28 4c 49 53 54 29 09  av_start1(LIST).
3df0: 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 29  .....\.   (LIST)
3e00: 2e 61 70 74 72 20 3d 20 26 28 4c 49 53 54 29 2e  .aptr = &(LIST).
3e10: 61 72 67 73 5b 30 5d 2c 09 09 09 09 09 5c 0a 20  args[0],.....\. 
3e20: 20 20 28 4c 49 53 54 29 2e 66 61 70 74 72 20 3d    (LIST).faptr =
3e30: 20 26 28 4c 49 53 54 29 2e 66 61 72 67 73 5b 30   &(LIST).fargs[0
3e40: 5d 2c 0a 23 65 6c 73 65 0a 23 64 65 66 69 6e 65  ],.#else.#define
3e50: 20 5f 5f 61 76 5f 73 74 61 72 74 31 28 4c 49 53   __av_start1(LIS
3e60: 54 29 09 09 09 09 09 09 5c 0a 20 20 20 28 4c 49  T)......\.   (LI
3e70: 53 54 29 2e 61 70 74 72 20 3d 20 26 28 4c 49 53  ST).aptr = &(LIS
3e80: 54 29 2e 61 72 67 73 5b 30 5d 2c 09 09 09 09 09  T).args[0],.....
3e90: 5c 0a 20 20 20 28 4c 49 53 54 29 2e 66 61 70 74  \.   (LIST).fapt
3ea0: 72 20 3d 20 26 28 4c 49 53 54 29 2e 66 61 72 67  r = &(LIST).farg
3eb0: 73 5b 30 5d 2c 20 20 20 20 20 20 20 20 20 20 20  s[0],           
3ec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3ed0: 20 20 20 20 20 20 20 20 20 20 5c 0a 20 20 20 28            \.   (
3ee0: 4c 49 53 54 29 2e 65 70 74 72 20 3d 20 26 28 4c  LIST).eptr = &(L
3ef0: 49 53 54 29 2e 61 72 67 73 5b 5f 5f 41 56 5f 41  IST).args[__AV_A
3f00: 4c 49 53 54 5f 57 4f 52 44 53 5d 2c 0a 23 65 6e  LIST_WORDS],.#en
3f10: 64 69 66 0a 23 65 6e 64 69 66 0a 23 69 66 20 64  dif.#endif.#if d
3f20: 65 66 69 6e 65 64 28 5f 5f 73 33 39 30 5f 5f 29  efined(__s390__)
3f30: 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74  .#define __av_st
3f40: 61 72 74 31 28 4c 49 53 54 29 09 09 09 09 09 09  art1(LIST)......
3f50: 5c 0a 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72  \.   (LIST).aptr
3f60: 20 3d 20 26 28 4c 49 53 54 29 2e 61 72 67 73 5b   = &(LIST).args[
3f70: 30 5d 2c 09 09 09 09 09 5c 0a 20 20 20 28 4c 49  0],.....\.   (LI
3f80: 53 54 29 2e 66 61 72 67 77 6f 72 64 73 20 3d 20  ST).fargwords = 
3f90: 30 2c 09 09 09 09 09 09 5c 0a 20 20 20 28 4c 49  0,......\.   (LI
3fa0: 53 54 29 2e 66 61 70 74 72 20 3d 20 26 28 4c 49  ST).faptr = &(LI
3fb0: 53 54 29 2e 66 61 72 67 73 5b 30 5d 2c 20 20 20  ST).fargs[0],   
3fc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3fd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3fe0: 20 20 5c 0a 20 20 20 28 4c 49 53 54 29 2e 64 61    \.   (LIST).da
3ff0: 70 74 72 20 3d 20 26 28 4c 49 53 54 29 2e 64 61  ptr = &(LIST).da
4000: 72 67 73 5b 30 5d 2c 20 20 20 20 20 20 20 20 20  rgs[0],         
4010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4020: 20 20 20 20 20 20 20 20 20 20 20 20 5c 0a 20 20              \.  
4030: 20 28 4c 49 53 54 29 2e 66 61 72 67 73 75 73 65   (LIST).fargsuse
4040: 64 70 74 72 20 3d 20 26 28 4c 49 53 54 29 2e 66  dptr = &(LIST).f
4050: 61 72 67 73 75 73 65 64 5b 30 5d 2c 20 20 20 20  argsused[0],    
4060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4070: 20 20 20 20 20 20 5c 0a 20 20 20 28 4c 49 53 54        \.   (LIST
4080: 29 2e 64 61 72 67 73 75 73 65 64 70 74 72 20 3d  ).dargsusedptr =
4090: 20 26 28 4c 49 53 54 29 2e 64 61 72 67 73 75 73   &(LIST).dargsus
40a0: 65 64 5b 30 5d 2c 20 20 20 20 20 20 20 20 20 20  ed[0],          
40b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
40c0: 5c 0a 20 20 20 28 4c 49 53 54 29 2e 65 70 74 72  \.   (LIST).eptr
40d0: 20 3d 20 26 28 4c 49 53 54 29 2e 61 72 67 73 5b   = &(LIST).args[
40e0: 5f 5f 41 56 5f 41 4c 49 53 54 5f 57 4f 52 44 53  __AV_ALIST_WORDS
40f0: 5d 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65  ],.#endif.#if de
4100: 66 69 6e 65 64 28 5f 5f 69 61 36 34 5f 5f 29 0a  fined(__ia64__).
4110: 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61  #define __av_sta
4120: 72 74 31 28 4c 49 53 54 29 09 09 09 09 09 09 5c  rt1(LIST)......\
4130: 0a 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72 20  .   (LIST).aptr 
4140: 3d 20 26 28 4c 49 53 54 29 2e 61 72 67 73 5b 30  = &(LIST).args[0
4150: 5d 2c 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 53  ],.....\.   (LIS
4160: 54 29 2e 66 61 70 74 72 20 3d 20 26 28 4c 49 53  T).faptr = &(LIS
4170: 54 29 2e 66 61 72 67 73 5b 30 5d 2c 0a 23 65 6e  T).fargs[0],.#en
4180: 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28  dif.#if defined(
4190: 5f 5f 78 38 36 5f 36 34 5f 5f 29 0a 23 64 65 66  __x86_64__).#def
41a0: 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72 74 31 28  ine __av_start1(
41b0: 4c 49 53 54 29 09 09 09 09 09 09 5c 0a 20 20 20  LIST)......\.   
41c0: 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 26 28  (LIST).aptr = &(
41d0: 4c 49 53 54 29 2e 61 72 67 73 5b 30 5d 2c 09 09  LIST).args[0],..
41e0: 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2e 69  ...\.   (LIST).i
41f0: 61 70 74 72 20 3d 20 26 28 4c 49 53 54 29 2e 69  aptr = &(LIST).i
4200: 61 72 67 73 5b 30 5d 2c 09 09 09 09 09 5c 0a 20  args[0],.....\. 
4210: 20 20 28 4c 49 53 54 29 2e 66 61 70 74 72 20 3d    (LIST).faptr =
4220: 20 26 28 4c 49 53 54 29 2e 66 61 72 67 73 5b 30   &(LIST).fargs[0
4230: 5d 2c 0a 23 65 6e 64 69 66 0a 0a 23 64 65 66 69  ],.#endif..#defi
4240: 6e 65 20 61 76 5f 73 74 61 72 74 5f 76 6f 69 64  ne av_start_void
4250: 28 4c 49 53 54 2c 46 55 4e 43 29 09 09 5f 5f 61  (LIST,FUNC)..__a
4260: 76 5f 73 74 61 72 74 28 4c 49 53 54 2c 46 55 4e  v_start(LIST,FUN
4270: 43 2c 30 2c 20 20 20 20 5f 5f 41 56 76 6f 69 64  C,0,    __AVvoid
4280: 29 0a 23 64 65 66 69 6e 65 20 61 76 5f 73 74 61  ).#define av_sta
4290: 72 74 5f 63 68 61 72 28 4c 49 53 54 2c 46 55 4e  rt_char(LIST,FUN
42a0: 43 2c 52 41 44 44 52 29 09 09 5f 5f 61 76 5f 73  C,RADDR)..__av_s
42b0: 74 61 72 74 28 4c 49 53 54 2c 46 55 4e 43 2c 52  tart(LIST,FUNC,R
42c0: 41 44 44 52 2c 5f 5f 41 56 63 68 61 72 29 0a 23  ADDR,__AVchar).#
42d0: 64 65 66 69 6e 65 20 61 76 5f 73 74 61 72 74 5f  define av_start_
42e0: 73 63 68 61 72 28 4c 49 53 54 2c 46 55 4e 43 2c  schar(LIST,FUNC,
42f0: 52 41 44 44 52 29 09 09 5f 5f 61 76 5f 73 74 61  RADDR)..__av_sta
4300: 72 74 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44  rt(LIST,FUNC,RAD
4310: 44 52 2c 5f 5f 41 56 73 63 68 61 72 29 0a 23 64  DR,__AVschar).#d
4320: 65 66 69 6e 65 20 61 76 5f 73 74 61 72 74 5f 75  efine av_start_u
4330: 63 68 61 72 28 4c 49 53 54 2c 46 55 4e 43 2c 52  char(LIST,FUNC,R
4340: 41 44 44 52 29 09 09 5f 5f 61 76 5f 73 74 61 72  ADDR)..__av_star
4350: 74 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44 44  t(LIST,FUNC,RADD
4360: 52 2c 5f 5f 41 56 75 63 68 61 72 29 0a 23 64 65  R,__AVuchar).#de
4370: 66 69 6e 65 20 61 76 5f 73 74 61 72 74 5f 73 68  fine av_start_sh
4380: 6f 72 74 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41  ort(LIST,FUNC,RA
4390: 44 44 52 29 09 09 5f 5f 61 76 5f 73 74 61 72 74  DDR)..__av_start
43a0: 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44 44 52  (LIST,FUNC,RADDR
43b0: 2c 5f 5f 41 56 73 68 6f 72 74 29 0a 23 64 65 66  ,__AVshort).#def
43c0: 69 6e 65 20 61 76 5f 73 74 61 72 74 5f 75 73 68  ine av_start_ush
43d0: 6f 72 74 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41  ort(LIST,FUNC,RA
43e0: 44 44 52 29 09 5f 5f 61 76 5f 73 74 61 72 74 28  DDR).__av_start(
43f0: 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44 44 52 2c  LIST,FUNC,RADDR,
4400: 5f 5f 41 56 75 73 68 6f 72 74 29 0a 23 64 65 66  __AVushort).#def
4410: 69 6e 65 20 61 76 5f 73 74 61 72 74 5f 69 6e 74  ine av_start_int
4420: 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44 44 52  (LIST,FUNC,RADDR
4430: 29 09 09 5f 5f 61 76 5f 73 74 61 72 74 28 4c 49  )..__av_start(LI
4440: 53 54 2c 46 55 4e 43 2c 52 41 44 44 52 2c 5f 5f  ST,FUNC,RADDR,__
4450: 41 56 69 6e 74 29 0a 23 64 65 66 69 6e 65 20 61  AVint).#define a
4460: 76 5f 73 74 61 72 74 5f 75 69 6e 74 28 4c 49 53  v_start_uint(LIS
4470: 54 2c 46 55 4e 43 2c 52 41 44 44 52 29 09 09 5f  T,FUNC,RADDR).._
4480: 5f 61 76 5f 73 74 61 72 74 28 4c 49 53 54 2c 46  _av_start(LIST,F
4490: 55 4e 43 2c 52 41 44 44 52 2c 5f 5f 41 56 75 69  UNC,RADDR,__AVui
44a0: 6e 74 29 0a 23 64 65 66 69 6e 65 20 61 76 5f 73  nt).#define av_s
44b0: 74 61 72 74 5f 6c 6f 6e 67 28 4c 49 53 54 2c 46  tart_long(LIST,F
44c0: 55 4e 43 2c 52 41 44 44 52 29 09 09 5f 5f 61 76  UNC,RADDR)..__av
44d0: 5f 73 74 61 72 74 28 4c 49 53 54 2c 46 55 4e 43  _start(LIST,FUNC
44e0: 2c 52 41 44 44 52 2c 5f 5f 41 56 6c 6f 6e 67 29  ,RADDR,__AVlong)
44f0: 0a 23 64 65 66 69 6e 65 20 61 76 5f 73 74 61 72  .#define av_star
4500: 74 5f 75 6c 6f 6e 67 28 4c 49 53 54 2c 46 55 4e  t_ulong(LIST,FUN
4510: 43 2c 52 41 44 44 52 29 09 09 5f 5f 61 76 5f 73  C,RADDR)..__av_s
4520: 74 61 72 74 28 4c 49 53 54 2c 46 55 4e 43 2c 52  tart(LIST,FUNC,R
4530: 41 44 44 52 2c 5f 5f 41 56 75 6c 6f 6e 67 29 0a  ADDR,__AVulong).
4540: 23 64 65 66 69 6e 65 20 61 76 5f 73 74 61 72 74  #define av_start
4550: 5f 6c 6f 6e 67 6c 6f 6e 67 28 4c 49 53 54 2c 46  _longlong(LIST,F
4560: 55 4e 43 2c 52 41 44 44 52 29 09 5f 5f 61 76 5f  UNC,RADDR).__av_
4570: 73 74 61 72 74 28 4c 49 53 54 2c 46 55 4e 43 2c  start(LIST,FUNC,
4580: 52 41 44 44 52 2c 5f 5f 41 56 6c 6f 6e 67 6c 6f  RADDR,__AVlonglo
4590: 6e 67 29 0a 23 64 65 66 69 6e 65 20 61 76 5f 73  ng).#define av_s
45a0: 74 61 72 74 5f 75 6c 6f 6e 67 6c 6f 6e 67 28 4c  tart_ulonglong(L
45b0: 49 53 54 2c 46 55 4e 43 2c 52 41 44 44 52 29 09  IST,FUNC,RADDR).
45c0: 5f 5f 61 76 5f 73 74 61 72 74 28 4c 49 53 54 2c  __av_start(LIST,
45d0: 46 55 4e 43 2c 52 41 44 44 52 2c 5f 5f 41 56 75  FUNC,RADDR,__AVu
45e0: 6c 6f 6e 67 6c 6f 6e 67 29 0a 23 64 65 66 69 6e  longlong).#defin
45f0: 65 20 61 76 5f 73 74 61 72 74 5f 66 6c 6f 61 74  e av_start_float
4600: 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44 44 52  (LIST,FUNC,RADDR
4610: 29 09 09 5f 5f 61 76 5f 73 74 61 72 74 28 4c 49  )..__av_start(LI
4620: 53 54 2c 46 55 4e 43 2c 52 41 44 44 52 2c 5f 5f  ST,FUNC,RADDR,__
4630: 41 56 66 6c 6f 61 74 29 0a 23 64 65 66 69 6e 65  AVfloat).#define
4640: 20 61 76 5f 73 74 61 72 74 5f 64 6f 75 62 6c 65   av_start_double
4650: 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44 44 52  (LIST,FUNC,RADDR
4660: 29 09 5f 5f 61 76 5f 73 74 61 72 74 28 4c 49 53  ).__av_start(LIS
4670: 54 2c 46 55 4e 43 2c 52 41 44 44 52 2c 5f 5f 41  T,FUNC,RADDR,__A
4680: 56 64 6f 75 62 6c 65 29 0a 23 64 65 66 69 6e 65  Vdouble).#define
4690: 20 61 76 5f 73 74 61 72 74 5f 70 74 72 28 4c 49   av_start_ptr(LI
46a0: 53 54 2c 46 55 4e 43 2c 54 59 50 45 2c 52 41 44  ST,FUNC,TYPE,RAD
46b0: 44 52 29 09 5f 5f 61 76 5f 73 74 61 72 74 28 4c  DR).__av_start(L
46c0: 49 53 54 2c 46 55 4e 43 2c 52 41 44 44 52 2c 5f  IST,FUNC,RADDR,_
46d0: 5f 41 56 76 6f 69 64 70 29 0a 0a 23 64 65 66 69  _AVvoidp)..#defi
46e0: 6e 65 20 61 76 5f 73 74 61 72 74 5f 73 74 72 75  ne av_start_stru
46f0: 63 74 28 4c 49 53 54 2c 46 55 4e 43 2c 54 59 50  ct(LIST,FUNC,TYP
4700: 45 2c 54 59 50 45 5f 53 50 4c 49 54 54 41 42 4c  E,TYPE_SPLITTABL
4710: 45 2c 52 41 44 44 52 29 09 09 5c 0a 20 20 5f 61  E,RADDR)..\.  _a
4720: 76 5f 73 74 61 72 74 5f 73 74 72 75 63 74 28 4c  v_start_struct(L
4730: 49 53 54 2c 46 55 4e 43 2c 73 69 7a 65 6f 66 28  IST,FUNC,sizeof(
4740: 54 59 50 45 29 2c 54 59 50 45 5f 53 50 4c 49 54  TYPE),TYPE_SPLIT
4750: 54 41 42 4c 45 2c 52 41 44 44 52 29 0a 23 64 65  TABLE,RADDR).#de
4760: 66 69 6e 65 20 5f 61 76 5f 73 74 61 72 74 5f 73  fine _av_start_s
4770: 74 72 75 63 74 28 4c 49 53 54 2c 46 55 4e 43 2c  truct(LIST,FUNC,
4780: 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 53  TYPE_SIZE,TYPE_S
4790: 50 4c 49 54 54 41 42 4c 45 2c 52 41 44 44 52 29  PLITTABLE,RADDR)
47a0: 09 5c 0a 20 20 28 5f 5f 61 76 5f 73 74 61 72 74  .\.  (__av_start
47b0: 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44 44 52  (LIST,FUNC,RADDR
47c0: 2c 5f 5f 41 56 73 74 72 75 63 74 29 2c 09 09 09  ,__AVstruct),...
47d0: 09 5c 0a 20 20 20 28 4c 49 53 54 29 2e 72 73 69  .\.   (LIST).rsi
47e0: 7a 65 20 3d 20 54 59 50 45 5f 53 49 5a 45 2c 09  ze = TYPE_SIZE,.
47f0: 09 09 09 09 09 5c 0a 20 20 20 5f 5f 61 76 5f 73  .....\.   __av_s
4800: 74 61 72 74 5f 73 74 72 75 63 74 31 28 4c 49 53  tart_struct1(LIS
4810: 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45  T,TYPE_SIZE,TYPE
4820: 5f 53 50 4c 49 54 54 41 42 4c 45 29 2c 09 09 09  _SPLITTABLE),...
4830: 5c 0a 20 20 20 30 29 0a 0a 23 64 65 66 69 6e 65  \.   0)..#define
4840: 20 5f 5f 61 76 5f 73 74 61 72 74 5f 73 74 72 75   __av_start_stru
4850: 63 74 31 28 4c 49 53 54 2c 54 59 50 45 5f 53 49  ct1(LIST,TYPE_SI
4860: 5a 45 2c 54 59 50 45 5f 53 50 4c 49 54 54 41 42  ZE,TYPE_SPLITTAB
4870: 4c 45 29 20 20 5c 0a 20 20 28 28 4c 49 53 54 29  LE)  \.  ((LIST)
4880: 2e 66 6c 61 67 73 20 26 20 5f 5f 41 56 5f 50 43  .flags & __AV_PC
4890: 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 09  C_STRUCT_RETURN.
48a0: 09 09 09 5c 0a 20 20 20 3f 20 2f 2a 20 70 63 63  ...\.   ? /* pcc
48b0: 20 73 74 72 75 63 74 20 72 65 74 75 72 6e 20 63   struct return c
48c0: 6f 6e 76 65 6e 74 69 6f 6e 3a 09 09 09 09 09 5c  onvention:.....\
48d0: 0a 20 20 20 20 20 20 2a 20 63 61 6c 6c 65 64 20  .      * called 
48e0: 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73  function returns
48f0: 20 70 6f 69 6e 74 65 72 20 74 6f 20 76 61 6c 75   pointer to valu
4900: 65 2c 20 77 65 27 6c 6c 20 63 6f 70 79 20 69 74  e, we'll copy it
4910: 73 20 63 6f 6e 74 65 6e 74 73 20 61 66 74 65 72  s contents after
4920: 77 61 72 64 73 2e 20 5c 0a 20 20 20 20 20 20 2a  wards. \.      *
4930: 2f 09 09 09 09 09 09 09 09 5c 0a 20 20 20 20 20  /........\.     
4940: 30 09 09 09 09 09 09 09 09 09 5c 0a 20 20 20 3a  0.........\.   :
4950: 20 5f 5f 61 76 5f 73 74 61 72 74 5f 73 74 72 75   __av_start_stru
4960: 63 74 32 28 4c 49 53 54 2c 54 59 50 45 5f 53 49  ct2(LIST,TYPE_SI
4970: 5a 45 2c 54 59 50 45 5f 53 50 4c 49 54 54 41 42  ZE,TYPE_SPLITTAB
4980: 4c 45 29 09 09 09 5c 0a 20 20 29 0a 23 69 66 20  LE)...\.  ).#if 
4990: 28 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63  (defined(__sparc
49a0: 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 28  __) && !defined(
49b0: 5f 5f 73 70 61 72 63 36 34 5f 5f 29 29 20 7c 7c  __sparc64__)) ||
49c0: 20 64 65 66 69 6e 65 64 28 5f 5f 6d 38 38 6b 5f   defined(__m88k_
49d0: 5f 29 0a 2f 2a 20 52 65 74 75 72 6e 20 73 74 72  _)./* Return str
49e0: 75 63 74 75 72 65 20 70 6f 69 6e 74 65 72 20 69  ucture pointer i
49f0: 73 20 70 61 73 73 65 64 20 69 6e 20 61 20 73 70  s passed in a sp
4a00: 65 63 69 61 6c 20 72 65 67 69 73 74 65 72 2e 0a  ecial register..
4a10: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76   */.#define __av
4a20: 5f 73 74 61 72 74 5f 73 74 72 75 63 74 32 28 4c  _start_struct2(L
4a30: 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59  IST,TYPE_SIZE,TY
4a40: 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 20 20  PE_SPLITTABLE)  
4a50: 30 0a 23 65 6c 73 65 0a 23 64 65 66 69 6e 65 20  0.#else.#define 
4a60: 5f 5f 61 76 5f 73 74 61 72 74 5f 73 74 72 75 63  __av_start_struc
4a70: 74 32 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a  t2(LIST,TYPE_SIZ
4a80: 45 2c 54 59 50 45 5f 53 50 4c 49 54 54 41 42 4c  E,TYPE_SPLITTABL
4a90: 45 29 20 20 5c 0a 20 20 28 28 28 4c 49 53 54 29  E)  \.  (((LIST)
4aa0: 2e 66 6c 61 67 73 20 26 20 5f 5f 41 56 5f 53 4d  .flags & __AV_SM
4ab0: 41 4c 4c 5f 53 54 52 55 43 54 5f 52 45 54 55 52  ALL_STRUCT_RETUR
4ac0: 4e 29 09 09 09 09 5c 0a 20 20 20 26 26 20 5f 5f  N)....\.   && __
4ad0: 61 76 5f 72 65 67 5f 73 74 72 75 63 74 5f 72 65  av_reg_struct_re
4ae0: 74 75 72 6e 28 4c 49 53 54 2c 54 59 50 45 5f 53  turn(LIST,TYPE_S
4af0: 49 5a 45 2c 54 59 50 45 5f 53 50 4c 49 54 54 41  IZE,TYPE_SPLITTA
4b00: 42 4c 45 29 09 09 5c 0a 20 20 20 3f 20 2f 2a 20  BLE)..\.   ? /* 
4b10: 3c 3d 20 57 6f 72 64 2d 73 69 7a 65 64 20 73 74  <= Word-sized st
4b20: 72 75 63 74 75 72 65 73 20 61 72 65 20 72 65 74  ructures are ret
4b30: 75 72 6e 65 64 20 69 6e 20 61 20 72 65 67 69 73  urned in a regis
4b40: 74 65 72 2e 20 2a 2f 09 09 5c 0a 20 20 20 20 20  ter. */..\.     
4b50: 5f 5f 61 76 5f 73 74 61 72 74 5f 73 74 72 75 63  __av_start_struc
4b60: 74 33 28 4c 49 53 54 29 09 09 09 09 09 09 5c 0a  t3(LIST)......\.
4b70: 20 20 20 3a 20 5f 5f 61 76 5f 73 74 61 72 74 5f     : __av_start_
4b80: 73 74 72 75 63 74 34 28 4c 49 53 54 2c 54 59 50  struct4(LIST,TYP
4b90: 45 5f 53 49 5a 45 29 09 09 09 09 09 5c 0a 20 20  E_SIZE).....\.  
4ba0: 29 0a 2f 2a 20 44 65 74 65 72 6d 69 6e 65 73 20  )./* Determines 
4bb0: 77 68 65 74 68 65 72 20 61 20 73 74 72 75 63 74  whether a struct
4bc0: 75 72 65 20 69 73 20 72 65 74 75 72 6e 65 64 20  ure is returned 
4bd0: 69 6e 20 72 65 67 69 73 74 65 72 73 2c 0a 20 2a  in registers,. *
4be0: 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 69 74   depending on it
4bf0: 73 20 73 69 7a 65 20 61 6e 64 20 69 74 73 20 77  s size and its w
4c00: 6f 72 64 2d 73 70 6c 69 74 74 61 62 6c 65 20 66  ord-splittable f
4c10: 6c 61 67 2e 0a 20 2a 2f 0a 23 69 66 20 28 64 65  lag.. */.#if (de
4c20: 66 69 6e 65 64 28 5f 5f 69 33 38 36 5f 5f 29 20  fined(__i386__) 
4c30: 26 26 20 64 65 66 69 6e 65 64 28 5f 57 49 4e 33  && defined(_WIN3
4c40: 32 29 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76  2)).#define __av
4c50: 5f 72 65 67 5f 73 74 72 75 63 74 5f 72 65 74 75  _reg_struct_retu
4c60: 72 6e 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a  rn(LIST,TYPE_SIZ
4c70: 45 2c 54 59 50 45 5f 53 50 4c 49 54 54 41 42 4c  E,TYPE_SPLITTABL
4c80: 45 29 20 20 5c 0a 20 20 28 28 54 59 50 45 5f 53  E)  \.  ((TYPE_S
4c90: 49 5a 45 29 20 3d 3d 20 31 20 7c 7c 20 28 54 59  IZE) == 1 || (TY
4ca0: 50 45 5f 53 49 5a 45 29 20 3d 3d 20 32 20 7c 7c  PE_SIZE) == 2 ||
4cb0: 20 28 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20   (TYPE_SIZE) == 
4cc0: 34 09 09 5c 0a 20 20 20 7c 7c 20 28 28 54 59 50  4..\.   || ((TYP
4cd0: 45 5f 53 49 5a 45 29 20 3d 3d 20 38 09 09 09 09  E_SIZE) == 8....
4ce0: 09 09 09 5c 0a 20 20 20 20 20 20 20 26 26 20 28  ...\.       && (
4cf0: 28 28 4c 49 53 54 29 2e 66 6c 61 67 73 20 26 20  ((LIST).flags & 
4d00: 5f 5f 41 56 5f 4d 53 56 43 5f 53 54 52 55 43 54  __AV_MSVC_STRUCT
4d10: 5f 52 45 54 55 52 4e 29 09 09 09 5c 0a 20 20 20  _RETURN)...\.   
4d20: 20 20 20 20 20 20 20 20 7c 7c 20 28 28 54 59 50          || ((TYP
4d30: 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 09 09 09  E_SPLITTABLE)...
4d40: 09 09 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20  ..\.            
4d50: 20 20 20 26 26 20 28 28 4c 49 53 54 29 2e 66 6c     && ((LIST).fl
4d60: 61 67 73 20 26 20 5f 5f 41 56 5f 47 43 43 5f 53  ags & __AV_GCC_S
4d70: 54 52 55 43 54 5f 52 45 54 55 52 4e 29 09 09 5c  TRUCT_RETURN)..\
4d80: 0a 20 20 29 20 20 20 29 20 20 20 29 20 20 20 29  .  )   )   )   )
4d90: 0a 2f 2a 20 54 75 72 6e 20 6f 6e 20 5f 5f 41 56  ./* Turn on __AV
4da0: 5f 52 45 47 49 53 54 45 52 5f 53 54 52 55 43 54  _REGISTER_STRUCT
4db0: 5f 52 45 54 55 52 4e 20 69 66 20 5f 5f 41 56 5f  _RETURN if __AV_
4dc0: 53 4d 41 4c 4c 5f 53 54 52 55 43 54 5f 52 45 54  SMALL_STRUCT_RET
4dd0: 55 52 4e 20 77 61 73 20 73 65 74 0a 20 2a 20 61  URN was set. * a
4de0: 6e 64 20 74 68 65 20 73 74 72 75 63 74 20 77 69  nd the struct wi
4df0: 6c 6c 20 61 63 74 75 61 6c 6c 79 20 62 65 20 72  ll actually be r
4e00: 65 74 75 72 6e 65 64 20 69 6e 20 72 65 67 69 73  eturned in regis
4e10: 74 65 72 73 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e  ters.. */.#defin
4e20: 65 20 5f 5f 61 76 5f 73 74 61 72 74 5f 73 74 72  e __av_start_str
4e30: 75 63 74 33 28 4c 49 53 54 29 20 20 5c 0a 20 20  uct3(LIST)  \.  
4e40: 28 28 4c 49 53 54 29 2e 66 6c 61 67 73 20 7c 3d  ((LIST).flags |=
4e50: 20 5f 5f 41 56 5f 52 45 47 49 53 54 45 52 5f 53   __AV_REGISTER_S
4e60: 54 52 55 43 54 5f 52 45 54 55 52 4e 2c 20 30 29  TRUCT_RETURN, 0)
4e70: 0a 23 65 6e 64 69 66 0a 23 69 66 20 28 64 65 66  .#endif.#if (def
4e80: 69 6e 65 64 28 5f 5f 69 33 38 36 5f 5f 29 20 26  ined(__i386__) &
4e90: 26 20 21 64 65 66 69 6e 65 64 28 5f 57 49 4e 33  & !defined(_WIN3
4ea0: 32 29 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  2)) || defined(_
4eb0: 5f 6d 36 38 6b 5f 5f 29 20 7c 7c 20 64 65 66 69  _m68k__) || defi
4ec0: 6e 65 64 28 5f 5f 61 72 6d 5f 5f 29 20 7c 7c 20  ned(__arm__) || 
4ed0: 64 65 66 69 6e 65 64 28 5f 5f 72 73 36 30 30 30  defined(__rs6000
4ee0: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
4ef0: 5f 63 6f 6e 76 65 78 5f 5f 29 20 7c 7c 20 64 65  _convex__) || de
4f00: 66 69 6e 65 64 28 5f 5f 73 33 39 30 5f 5f 29 0a  fined(__s390__).
4f10: 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 72 65 67  #define __av_reg
4f20: 5f 73 74 72 75 63 74 5f 72 65 74 75 72 6e 28 4c  _struct_return(L
4f30: 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59  IST,TYPE_SIZE,TY
4f40: 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 20 20  PE_SPLITTABLE)  
4f50: 5c 0a 20 20 28 28 54 59 50 45 5f 53 49 5a 45 29  \.  ((TYPE_SIZE)
4f60: 20 3d 3d 20 31 20 7c 7c 20 28 54 59 50 45 5f 53   == 1 || (TYPE_S
4f70: 49 5a 45 29 20 3d 3d 20 32 20 7c 7c 20 28 54 59  IZE) == 2 || (TY
4f80: 50 45 5f 53 49 5a 45 29 20 3d 3d 20 34 09 09 5c  PE_SIZE) == 4..\
4f90: 0a 20 20 20 7c 7c 20 28 28 54 59 50 45 5f 53 49  .   || ((TYPE_SI
4fa0: 5a 45 29 20 3d 3d 20 38 20 26 26 20 28 54 59 50  ZE) == 8 && (TYP
4fb0: 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 09 09 09  E_SPLITTABLE)...
4fc0: 09 5c 0a 20 20 20 20 20 20 20 26 26 20 28 28 4c  .\.       && ((L
4fd0: 49 53 54 29 2e 66 6c 61 67 73 20 26 20 5f 5f 41  IST).flags & __A
4fe0: 56 5f 47 43 43 5f 53 54 52 55 43 54 5f 52 45 54  V_GCC_STRUCT_RET
4ff0: 55 52 4e 29 09 09 09 5c 0a 20 20 29 20 20 20 29  URN)...\.  )   )
5000: 0a 2f 2a 20 54 75 72 6e 20 6f 6e 20 5f 5f 41 56  ./* Turn on __AV
5010: 5f 52 45 47 49 53 54 45 52 5f 53 54 52 55 43 54  _REGISTER_STRUCT
5020: 5f 52 45 54 55 52 4e 20 69 66 20 5f 5f 41 56 5f  _RETURN if __AV_
5030: 53 4d 41 4c 4c 5f 53 54 52 55 43 54 5f 52 45 54  SMALL_STRUCT_RET
5040: 55 52 4e 20 77 61 73 20 73 65 74 0a 20 2a 20 61  URN was set. * a
5050: 6e 64 20 74 68 65 20 73 74 72 75 63 74 20 77 69  nd the struct wi
5060: 6c 6c 20 61 63 74 75 61 6c 6c 79 20 62 65 20 72  ll actually be r
5070: 65 74 75 72 6e 65 64 20 69 6e 20 72 65 67 69 73  eturned in regis
5080: 74 65 72 73 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e  ters.. */.#defin
5090: 65 20 5f 5f 61 76 5f 73 74 61 72 74 5f 73 74 72  e __av_start_str
50a0: 75 63 74 33 28 4c 49 53 54 29 20 20 5c 0a 20 20  uct3(LIST)  \.  
50b0: 28 28 4c 49 53 54 29 2e 66 6c 61 67 73 20 7c 3d  ((LIST).flags |=
50c0: 20 5f 5f 41 56 5f 52 45 47 49 53 54 45 52 5f 53   __AV_REGISTER_S
50d0: 54 52 55 43 54 5f 52 45 54 55 52 4e 2c 20 30 29  TRUCT_RETURN, 0)
50e0: 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69  .#endif.#if defi
50f0: 6e 65 64 28 5f 5f 61 6c 70 68 61 5f 5f 29 0a 23  ned(__alpha__).#
5100: 64 65 66 69 6e 65 20 5f 5f 61 76 5f 72 65 67 5f  define __av_reg_
5110: 73 74 72 75 63 74 5f 72 65 74 75 72 6e 28 4c 49  struct_return(LI
5120: 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50  ST,TYPE_SIZE,TYP
5130: 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 20 20 5c  E_SPLITTABLE)  \
5140: 0a 20 20 28 28 54 59 50 45 5f 53 49 5a 45 29 20  .  ((TYPE_SIZE) 
5150: 3d 3d 20 31 20 7c 7c 20 28 54 59 50 45 5f 53 49  == 1 || (TYPE_SI
5160: 5a 45 29 20 3d 3d 20 32 20 7c 7c 20 28 54 59 50  ZE) == 2 || (TYP
5170: 45 5f 53 49 5a 45 29 20 3d 3d 20 34 20 7c 7c 20  E_SIZE) == 4 || 
5180: 28 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 38  (TYPE_SIZE) == 8
5190: 09 5c 0a 20 20 20 7c 7c 20 28 28 54 59 50 45 5f  .\.   || ((TYPE_
51a0: 53 49 5a 45 29 20 3d 3d 20 31 36 20 26 26 20 28  SIZE) == 16 && (
51b0: 54 59 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 29  TYPE_SPLITTABLE)
51c0: 09 09 09 09 5c 0a 20 20 20 20 20 20 20 26 26 20  ....\.       && 
51d0: 28 28 4c 49 53 54 29 2e 66 6c 61 67 73 20 26 20  ((LIST).flags & 
51e0: 5f 5f 41 56 5f 47 43 43 5f 53 54 52 55 43 54 5f  __AV_GCC_STRUCT_
51f0: 52 45 54 55 52 4e 29 09 09 09 5c 0a 20 20 29 20  RETURN)...\.  ) 
5200: 20 20 29 0a 2f 2a 20 54 75 72 6e 20 6f 6e 20 5f    )./* Turn on _
5210: 5f 41 56 5f 52 45 47 49 53 54 45 52 5f 53 54 52  _AV_REGISTER_STR
5220: 55 43 54 5f 52 45 54 55 52 4e 20 69 66 20 5f 5f  UCT_RETURN if __
5230: 41 56 5f 53 4d 41 4c 4c 5f 53 54 52 55 43 54 5f  AV_SMALL_STRUCT_
5240: 52 45 54 55 52 4e 20 77 61 73 20 73 65 74 0a 20  RETURN was set. 
5250: 2a 20 61 6e 64 20 74 68 65 20 73 74 72 75 63 74  * and the struct
5260: 20 77 69 6c 6c 20 61 63 74 75 61 6c 6c 79 20 62   will actually b
5270: 65 20 72 65 74 75 72 6e 65 64 20 69 6e 20 72 65  e returned in re
5280: 67 69 73 74 65 72 73 2e 0a 20 2a 2f 0a 23 64 65  gisters.. */.#de
5290: 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72 74 5f  fine __av_start_
52a0: 73 74 72 75 63 74 33 28 4c 49 53 54 29 20 20 5c  struct3(LIST)  \
52b0: 0a 20 20 28 28 4c 49 53 54 29 2e 66 6c 61 67 73  .  ((LIST).flags
52c0: 20 7c 3d 20 5f 5f 41 56 5f 52 45 47 49 53 54 45   |= __AV_REGISTE
52d0: 52 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 2c  R_STRUCT_RETURN,
52e0: 20 30 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64   0).#endif.#if d
52f0: 65 66 69 6e 65 64 28 5f 5f 68 70 70 61 5f 5f 29  efined(__hppa__)
5300: 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 72 65  .#define __av_re
5310: 67 5f 73 74 72 75 63 74 5f 72 65 74 75 72 6e 28  g_struct_return(
5320: 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54  LIST,TYPE_SIZE,T
5330: 59 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 20  YPE_SPLITTABLE) 
5340: 20 5c 0a 20 20 28 28 4c 49 53 54 29 2e 66 6c 61   \.  ((LIST).fla
5350: 67 73 20 26 20 5f 5f 41 56 5f 4f 4c 44 47 43 43  gs & __AV_OLDGCC
5360: 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 09 09  _STRUCT_RETURN..
5370: 09 09 5c 0a 20 20 20 3f 20 28 28 54 59 50 45 5f  ..\.   ? ((TYPE_
5380: 53 49 5a 45 29 20 3d 3d 20 31 20 7c 7c 20 28 54  SIZE) == 1 || (T
5390: 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 32 20 7c  YPE_SIZE) == 2 |
53a0: 7c 20 28 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d  | (TYPE_SIZE) ==
53b0: 20 34 29 09 09 5c 0a 20 20 20 3a 20 28 28 54 59   4)..\.   : ((TY
53c0: 50 45 5f 53 49 5a 45 29 20 3c 3d 20 38 29 09 09  PE_SIZE) <= 8)..
53d0: 09 09 09 09 09 5c 0a 20 20 29 0a 2f 2a 20 54 65  .....\.  )./* Te
53e0: 73 74 20 62 6f 74 68 20 5f 5f 41 56 5f 4f 4c 44  st both __AV_OLD
53f0: 47 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52  GCC_STRUCT_RETUR
5400: 4e 20 61 6e 64 20 5f 5f 41 56 5f 53 4d 41 4c 4c  N and __AV_SMALL
5410: 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20 61  _STRUCT_RETURN a
5420: 74 20 72 75 6e 20 74 69 6d 65 2e 20 2a 2f 0a 23  t run time. */.#
5430: 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72  define __av_star
5440: 74 5f 73 74 72 75 63 74 33 28 4c 49 53 54 29 20  t_struct3(LIST) 
5450: 20 5c 0a 20 20 30 0a 23 65 6e 64 69 66 0a 23 69   \.  0.#endif.#i
5460: 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73  f defined(__mips
5470: 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 28  __) && !defined(
5480: 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 0a 23 64 65  __mipsn32__).#de
5490: 66 69 6e 65 20 5f 5f 61 76 5f 72 65 67 5f 73 74  fine __av_reg_st
54a0: 72 75 63 74 5f 72 65 74 75 72 6e 28 4c 49 53 54  ruct_return(LIST
54b0: 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f  ,TYPE_SIZE,TYPE_
54c0: 53 50 4c 49 54 54 41 42 4c 45 29 20 20 5c 0a 20  SPLITTABLE)  \. 
54d0: 20 28 28 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d   ((TYPE_SIZE) ==
54e0: 20 31 20 7c 7c 20 28 54 59 50 45 5f 53 49 5a 45   1 || (TYPE_SIZE
54f0: 29 20 3d 3d 20 32 20 7c 7c 20 28 54 59 50 45 5f  ) == 2 || (TYPE_
5500: 53 49 5a 45 29 20 3d 3d 20 34 29 0a 2f 2a 20 54  SIZE) == 4)./* T
5510: 65 73 74 20 5f 5f 41 56 5f 53 4d 41 4c 4c 5f 53  est __AV_SMALL_S
5520: 54 52 55 43 54 5f 52 45 54 55 52 4e 20 69 6e 73  TRUCT_RETURN ins
5530: 74 65 61 64 20 6f 66 20 5f 5f 41 56 5f 52 45 47  tead of __AV_REG
5540: 49 53 54 45 52 5f 53 54 52 55 43 54 5f 52 45 54  ISTER_STRUCT_RET
5550: 55 52 4e 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 20  URN. */.#define 
5560: 5f 5f 61 76 5f 73 74 61 72 74 5f 73 74 72 75 63  __av_start_struc
5570: 74 33 28 4c 49 53 54 29 20 20 5c 0a 20 20 30 0a  t3(LIST)  \.  0.
5580: 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e  #endif.#if defin
5590: 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20  ed(__mipsn32__) 
55a0: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70  || defined(__mip
55b0: 73 36 34 5f 5f 29 0a 23 64 65 66 69 6e 65 20 5f  s64__).#define _
55c0: 5f 61 76 5f 72 65 67 5f 73 74 72 75 63 74 5f 72  _av_reg_struct_r
55d0: 65 74 75 72 6e 28 4c 49 53 54 2c 54 59 50 45 5f  eturn(LIST,TYPE_
55e0: 53 49 5a 45 2c 54 59 50 45 5f 53 50 4c 49 54 54  SIZE,TYPE_SPLITT
55f0: 41 42 4c 45 29 20 20 5c 0a 20 20 28 28 4c 49 53  ABLE)  \.  ((LIS
5600: 54 29 2e 66 6c 61 67 73 20 26 20 5f 5f 41 56 5f  T).flags & __AV_
5610: 47 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52  GCC_STRUCT_RETUR
5620: 4e 09 09 09 09 5c 0a 20 20 20 3f 20 28 28 54 59  N....\.   ? ((TY
5630: 50 45 5f 53 49 5a 45 29 20 3d 3d 20 31 20 7c 7c  PE_SIZE) == 1 ||
5640: 20 28 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20   (TYPE_SIZE) == 
5650: 32 20 7c 7c 20 28 54 59 50 45 5f 53 49 5a 45 29  2 || (TYPE_SIZE)
5660: 20 3d 3d 20 34 20 7c 7c 20 28 54 59 50 45 5f 53   == 4 || (TYPE_S
5670: 49 5a 45 29 20 3d 3d 20 38 29 20 5c 0a 20 20 20  IZE) == 8) \.   
5680: 3a 20 28 28 54 59 50 45 5f 53 49 5a 45 29 20 3c  : ((TYPE_SIZE) <
5690: 3d 20 31 36 29 09 09 09 09 09 09 5c 0a 20 20 29  = 16)......\.  )
56a0: 0a 2f 2a 20 54 75 72 6e 20 6f 6e 20 5f 5f 41 56  ./* Turn on __AV
56b0: 5f 52 45 47 49 53 54 45 52 5f 53 54 52 55 43 54  _REGISTER_STRUCT
56c0: 5f 52 45 54 55 52 4e 20 69 66 20 5f 5f 41 56 5f  _RETURN if __AV_
56d0: 53 4d 41 4c 4c 5f 53 54 52 55 43 54 5f 52 45 54  SMALL_STRUCT_RET
56e0: 55 52 4e 20 77 61 73 20 73 65 74 0a 20 2a 20 61  URN was set. * a
56f0: 6e 64 20 74 68 65 20 73 74 72 75 63 74 20 77 69  nd the struct wi
5700: 6c 6c 20 61 63 74 75 61 6c 6c 79 20 62 65 20 72  ll actually be r
5710: 65 74 75 72 6e 65 64 20 69 6e 20 72 65 67 69 73  eturned in regis
5720: 74 65 72 73 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e  ters.. */.#defin
5730: 65 20 5f 5f 61 76 5f 73 74 61 72 74 5f 73 74 72  e __av_start_str
5740: 75 63 74 33 28 4c 49 53 54 29 20 20 5c 0a 20 20  uct3(LIST)  \.  
5750: 28 28 4c 49 53 54 29 2e 66 6c 61 67 73 20 7c 3d  ((LIST).flags |=
5760: 20 5f 5f 41 56 5f 52 45 47 49 53 54 45 52 5f 53   __AV_REGISTER_S
5770: 54 52 55 43 54 5f 52 45 54 55 52 4e 2c 20 30 29  TRUCT_RETURN, 0)
5780: 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69  .#endif.#if defi
5790: 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29  ned(__sparc64__)
57a0: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 69 61   || defined(__ia
57b0: 36 34 5f 5f 29 0a 23 64 65 66 69 6e 65 20 5f 5f  64__).#define __
57c0: 61 76 5f 72 65 67 5f 73 74 72 75 63 74 5f 72 65  av_reg_struct_re
57d0: 74 75 72 6e 28 4c 49 53 54 2c 54 59 50 45 5f 53  turn(LIST,TYPE_S
57e0: 49 5a 45 2c 54 59 50 45 5f 53 50 4c 49 54 54 41  IZE,TYPE_SPLITTA
57f0: 42 4c 45 29 20 20 5c 0a 20 20 28 28 54 59 50 45  BLE)  \.  ((TYPE
5800: 5f 53 49 5a 45 29 20 3c 3d 20 33 32 29 0a 2f 2a  _SIZE) <= 32)./*
5810: 20 54 75 72 6e 20 6f 6e 20 5f 5f 41 56 5f 52 45   Turn on __AV_RE
5820: 47 49 53 54 45 52 5f 53 54 52 55 43 54 5f 52 45  GISTER_STRUCT_RE
5830: 54 55 52 4e 20 69 66 20 5f 5f 41 56 5f 53 4d 41  TURN if __AV_SMA
5840: 4c 4c 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e  LL_STRUCT_RETURN
5850: 20 77 61 73 20 73 65 74 0a 20 2a 20 61 6e 64 20   was set. * and 
5860: 74 68 65 20 73 74 72 75 63 74 20 77 69 6c 6c 20  the struct will 
5870: 61 63 74 75 61 6c 6c 79 20 62 65 20 72 65 74 75  actually be retu
5880: 72 6e 65 64 20 69 6e 20 72 65 67 69 73 74 65 72  rned in register
5890: 73 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f  s.. */.#define _
58a0: 5f 61 76 5f 73 74 61 72 74 5f 73 74 72 75 63 74  _av_start_struct
58b0: 33 28 4c 49 53 54 29 20 20 5c 0a 20 20 28 28 4c  3(LIST)  \.  ((L
58c0: 49 53 54 29 2e 66 6c 61 67 73 20 7c 3d 20 5f 5f  IST).flags |= __
58d0: 41 56 5f 52 45 47 49 53 54 45 52 5f 53 54 52 55  AV_REGISTER_STRU
58e0: 43 54 5f 52 45 54 55 52 4e 2c 20 30 29 0a 23 65  CT_RETURN, 0).#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 78 38 36 5f 36 34 5f 5f 29 0a 23 64 65  (__x86_64__).#de
5910: 66 69 6e 65 20 5f 5f 61 76 5f 72 65 67 5f 73 74  fine __av_reg_st
5920: 72 75 63 74 5f 72 65 74 75 72 6e 28 4c 49 53 54  ruct_return(LIST
5930: 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f  ,TYPE_SIZE,TYPE_
5940: 53 50 4c 49 54 54 41 42 4c 45 29 20 20 5c 0a 20  SPLITTABLE)  \. 
5950: 20 28 28 54 59 50 45 5f 53 49 5a 45 29 20 3c 3d   ((TYPE_SIZE) <=
5960: 20 31 36 29 0a 2f 2a 20 54 75 72 6e 20 6f 6e 20   16)./* Turn on 
5970: 5f 5f 41 56 5f 52 45 47 49 53 54 45 52 5f 53 54  __AV_REGISTER_ST
5980: 52 55 43 54 5f 52 45 54 55 52 4e 20 69 66 20 5f  RUCT_RETURN if _
5990: 5f 41 56 5f 53 4d 41 4c 4c 5f 53 54 52 55 43 54  _AV_SMALL_STRUCT
59a0: 5f 52 45 54 55 52 4e 20 77 61 73 20 73 65 74 0a  _RETURN was set.
59b0: 20 2a 20 61 6e 64 20 74 68 65 20 73 74 72 75 63   * and the struc
59c0: 74 20 77 69 6c 6c 20 61 63 74 75 61 6c 6c 79 20  t will actually 
59d0: 62 65 20 72 65 74 75 72 6e 65 64 20 69 6e 20 72  be returned in r
59e0: 65 67 69 73 74 65 72 73 2e 0a 20 2a 2f 0a 23 64  egisters.. */.#d
59f0: 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72 74  efine __av_start
5a00: 5f 73 74 72 75 63 74 33 28 4c 49 53 54 29 20 20  _struct3(LIST)  
5a10: 5c 0a 20 20 28 28 4c 49 53 54 29 2e 66 6c 61 67  \.  ((LIST).flag
5a20: 73 20 7c 3d 20 5f 5f 41 56 5f 52 45 47 49 53 54  s |= __AV_REGIST
5a30: 45 52 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e  ER_STRUCT_RETURN
5a40: 2c 20 30 29 0a 23 65 6e 64 69 66 0a 23 69 66 20  , 0).#endif.#if 
5a50: 64 65 66 69 6e 65 64 28 5f 5f 69 33 38 36 5f 5f  defined(__i386__
5a60: 29 0a 2f 2a 20 52 65 74 75 72 6e 20 73 74 72 75  )./* Return stru
5a70: 63 74 75 72 65 20 70 6f 69 6e 74 65 72 20 69 73  cture pointer is
5a80: 20 70 61 73 73 65 64 20 69 6e 20 61 20 73 70 65   passed in a spe
5a90: 63 69 61 6c 20 72 65 67 69 73 74 65 72 20 6f 72  cial register or
5aa0: 20 61 73 20 66 69 72 73 74 20 61 72 67 2e 20 2a   as first arg. *
5ab0: 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73  /.#define __av_s
5ac0: 74 61 72 74 5f 73 74 72 75 63 74 34 28 4c 49 53  tart_struct4(LIS
5ad0: 54 2c 54 59 50 45 5f 53 49 5a 45 29 09 09 09 09  T,TYPE_SIZE)....
5ae0: 5c 0a 20 20 28 28 4c 49 53 54 29 2e 66 6c 61 67  \.  ((LIST).flag
5af0: 73 20 26 20 5f 5f 41 56 5f 4e 45 58 54 47 43 43  s & __AV_NEXTGCC
5b00: 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 09 09  _STRUCT_RETURN..
5b10: 09 09 5c 0a 20 20 20 3f 20 30 09 09 09 09 09 09  ..\.   ? 0......
5b20: 20 2f 2a 20 73 70 65 63 69 61 6c 20 72 65 67 69   /* special regi
5b30: 73 74 65 72 20 2a 2f 09 5c 0a 20 20 20 3a 20 28  ster */.\.   : (
5b40: 2a 28 4c 49 53 54 29 2e 61 70 74 72 2b 2b 20 3d  *(LIST).aptr++ =
5b50: 20 28 5f 5f 61 76 77 6f 72 64 29 28 28 4c 49 53   (__avword)((LIS
5b60: 54 29 2e 72 61 64 64 72 29 2c 20 30 29 09 2f 2a  T).raddr), 0)./*
5b70: 20 66 69 72 73 74 20 61 72 67 20 2a 2f 09 5c 0a   first arg */.\.
5b80: 20 20 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64    ).#endif.#if d
5b90: 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f 5f 29  efined(__m68k__)
5ba0: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 68 70   || defined(__hp
5bb0: 70 61 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  pa__) || defined
5bc0: 28 5f 5f 69 61 36 34 5f 5f 29 0a 2f 2a 20 52 65  (__ia64__)./* Re
5bd0: 74 75 72 6e 20 73 74 72 75 63 74 75 72 65 20 70  turn structure p
5be0: 6f 69 6e 74 65 72 20 69 73 20 70 61 73 73 65 64  ointer is passed
5bf0: 20 69 6e 20 61 20 73 70 65 63 69 61 6c 20 72 65   in a special re
5c00: 67 69 73 74 65 72 2e 0a 20 2a 2f 0a 23 64 65 66  gister.. */.#def
5c10: 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72 74 5f 73  ine __av_start_s
5c20: 74 72 75 63 74 34 28 4c 49 53 54 2c 54 59 50 45  truct4(LIST,TYPE
5c30: 5f 53 49 5a 45 29 20 20 30 0a 23 65 6e 64 69 66  _SIZE)  0.#endif
5c40: 0a 2f 2a 20 52 65 74 75 72 6e 20 73 74 72 75 63  ./* Return struc
5c50: 74 75 72 65 20 70 6f 69 6e 74 65 72 20 69 73 20  ture pointer is 
5c60: 70 61 73 73 65 64 20 61 73 20 66 69 72 73 74 20  passed as first 
5c70: 61 72 67 2e 0a 20 2a 2f 0a 23 69 66 20 64 65 66  arg.. */.#if def
5c80: 69 6e 65 64 28 5f 5f 61 6c 70 68 61 5f 5f 29 20  ined(__alpha__) 
5c90: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 61 72 6d  || defined(__arm
5ca0: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
5cb0: 5f 72 73 36 30 30 30 5f 5f 29 20 7c 7c 20 64 65  _rs6000__) || de
5cc0: 66 69 6e 65 64 28 5f 5f 63 6f 6e 76 65 78 5f 5f  fined(__convex__
5cd0: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 73  ) || defined(__s
5ce0: 33 39 30 5f 5f 29 0a 23 64 65 66 69 6e 65 20 5f  390__).#define _
5cf0: 5f 61 76 5f 73 74 61 72 74 5f 73 74 72 75 63 74  _av_start_struct
5d00: 34 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45  4(LIST,TYPE_SIZE
5d10: 29 09 09 09 09 5c 0a 20 20 20 28 2a 28 4c 49 53  )....\.   (*(LIS
5d20: 54 29 2e 61 70 74 72 2b 2b 20 3d 20 28 5f 5f 61  T).aptr++ = (__a
5d30: 76 77 6f 72 64 29 28 28 4c 49 53 54 29 2e 72 61  vword)((LIST).ra
5d40: 64 64 72 29 2c 20 30 29 0a 23 65 6e 64 69 66 0a  ddr), 0).#endif.
5d50: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69  #if defined(__mi
5d60: 70 73 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  ps__) || defined
5d70: 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 7c 7c  (__mipsn32__) ||
5d80: 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 36   defined(__mips6
5d90: 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  4__) || defined(
5da0: 5f 5f 73 70 61 72 63 36 34 5f 5f 29 0a 23 64 65  __sparc64__).#de
5db0: 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72 74 5f  fine __av_start_
5dc0: 73 74 72 75 63 74 34 28 4c 49 53 54 2c 54 59 50  struct4(LIST,TYP
5dd0: 45 5f 53 49 5a 45 29 09 09 09 09 5c 0a 20 20 20  E_SIZE)....\.   
5de0: 28 2a 28 4c 49 53 54 29 2e 61 70 74 72 2b 2b 20  (*(LIST).aptr++ 
5df0: 3d 20 28 5f 5f 61 76 77 6f 72 64 29 28 28 4c 49  = (__avword)((LI
5e00: 53 54 29 2e 72 61 64 64 72 29 2c 09 09 09 09 5c  ST).raddr),....\
5e10: 0a 20 20 20 20 28 4c 49 53 54 29 2e 61 6e 75 6d  .    (LIST).anum
5e20: 2b 2b 2c 09 09 09 09 09 09 09 5c 0a 20 20 20 20  ++,.......\.    
5e30: 30 09 09 09 09 09 09 09 09 09 5c 0a 20 20 20 29  0.........\.   )
5e40: 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69  .#endif.#if defi
5e50: 6e 65 64 28 5f 5f 78 38 36 5f 36 34 5f 5f 29 0a  ned(__x86_64__).
5e60: 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61  #define __av_sta
5e70: 72 74 5f 73 74 72 75 63 74 34 28 4c 49 53 54 2c  rt_struct4(LIST,
5e80: 54 59 50 45 5f 53 49 5a 45 29 09 09 09 09 5c 0a  TYPE_SIZE)....\.
5e90: 20 20 20 28 2a 28 4c 49 53 54 29 2e 69 61 70 74     (*(LIST).iapt
5ea0: 72 2b 2b 20 3d 20 28 5f 5f 61 76 77 6f 72 64 29  r++ = (__avword)
5eb0: 28 28 4c 49 53 54 29 2e 72 61 64 64 72 29 2c 20  ((LIST).raddr), 
5ec0: 30 29 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69 66  0).#endif.#endif
5ed0: 0a 0a 0a 2f 2a 0a 20 2a 20 61 76 5f 3c 74 79 70  .../*. * av_<typ
5ee0: 65 3e 20 6d 61 63 72 6f 73 20 77 68 69 63 68 20  e> macros which 
5ef0: 73 70 65 63 69 66 79 20 74 68 65 20 61 72 67 75  specify the argu
5f00: 6d 65 6e 74 20 61 6e 64 20 69 74 73 20 74 79 70  ment and its typ
5f10: 65 0a 20 2a 2f 0a 0a 2f 2a 0a 20 2a 20 73 63 61  e. */../*. * sca
5f20: 6c 61 72 20 61 72 67 75 6d 65 6e 74 20 74 79 70  lar argument typ
5f30: 65 73 0a 20 2a 2f 0a 0a 23 69 66 20 64 65 66 69  es. */..#if defi
5f40: 6e 65 64 28 5f 5f 69 33 38 36 5f 5f 29 20 7c 7c  ned(__i386__) ||
5f50: 20 64 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f   defined(__m68k_
5f60: 5f 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f  _) || (defined(_
5f70: 5f 73 70 61 72 63 5f 5f 29 20 26 26 20 21 64 65  _sparc__) && !de
5f80: 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f  fined(__sparc64_
5f90: 5f 29 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  _)) || defined(_
5fa0: 5f 61 6c 70 68 61 5f 5f 29 20 7c 7c 20 64 65 66  _alpha__) || def
5fb0: 69 6e 65 64 28 5f 5f 61 72 6d 5f 5f 29 20 7c 7c  ined(__arm__) ||
5fc0: 20 64 65 66 69 6e 65 64 28 5f 5f 72 73 36 30 30   defined(__rs600
5fd0: 30 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  0__) || defined(
5fe0: 5f 5f 6d 38 38 6b 5f 5f 29 20 7c 7c 20 64 65 66  __m88k__) || def
5ff0: 69 6e 65 64 28 5f 5f 63 6f 6e 76 65 78 5f 5f 29  ined(__convex__)
6000: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 69 61   || defined(__ia
6010: 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  64__) || defined
6020: 28 5f 5f 78 38 36 5f 36 34 5f 5f 29 20 7c 7c 20  (__x86_64__) || 
6030: 64 65 66 69 6e 65 64 28 5f 5f 73 33 39 30 5f 5f  defined(__s390__
6040: 29 0a 2f 2a 20 46 6c 6f 61 74 73 20 61 6e 64 20  )./* Floats and 
6050: 61 6c 6c 20 69 6e 74 65 67 65 72 20 74 79 70 65  all integer type
6060: 73 20 61 72 65 20 70 61 73 73 65 64 20 61 73 20  s are passed as 
6070: 77 6f 72 64 73 2c 0a 20 2a 20 64 6f 75 62 6c 65  words,. * double
6080: 73 20 61 73 20 74 77 6f 20 77 6f 72 64 73 2e 0a  s as two words..
6090: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76   */.#define __av
60a0: 5f 77 6f 72 64 28 4c 49 53 54 2c 56 41 4c 29 09  _word(LIST,VAL).
60b0: 09 09 09 09 09 5c 0a 20 20 28 2b 2b 28 4c 49 53  .....\.  (++(LIS
60c0: 54 29 2e 61 70 74 72 20 3e 20 5f 5f 61 76 5f 65  T).aptr > __av_e
60d0: 70 74 72 28 4c 49 53 54 29 09 09 09 09 09 5c 0a  ptr(LIST).....\.
60e0: 20 20 20 3f 20 2d 31 20 3a 20 28 28 4c 49 53 54     ? -1 : ((LIST
60f0: 29 2e 61 70 74 72 5b 2d 31 5d 20 3d 20 28 5f 5f  ).aptr[-1] = (__
6100: 61 76 77 6f 72 64 29 28 56 41 4c 29 2c 20 30 29  avword)(VAL), 0)
6110: 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66  ).#endif.#if def
6120: 69 6e 65 64 28 5f 5f 6d 69 70 73 5f 5f 29 20 7c  ined(__mips__) |
6130: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73  | defined(__mips
6140: 6e 33 32 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65  n32__) || define
6150: 64 28 5f 5f 6d 69 70 73 36 34 5f 5f 29 20 7c 7c  d(__mips64__) ||
6160: 20 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63   defined(__sparc
6170: 36 34 5f 5f 29 0a 2f 2a 20 4d 6f 73 74 20 74 68  64__)./* Most th
6180: 69 6e 67 73 20 61 72 65 20 70 61 73 73 65 64 20  ings are passed 
6190: 61 73 20 69 6e 74 65 67 65 72 73 3a 0a 20 2a 2f  as integers:. */
61a0: 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 77 6f  .#define __av_wo
61b0: 72 64 28 4c 49 53 54 2c 56 41 4c 29 09 09 09 09  rd(LIST,VAL)....
61c0: 09 09 5c 0a 20 20 28 2b 2b 28 4c 49 53 54 29 2e  ..\.  (++(LIST).
61d0: 61 70 74 72 20 3e 20 5f 5f 61 76 5f 65 70 74 72  aptr > __av_eptr
61e0: 28 4c 49 53 54 29 09 09 09 09 09 5c 0a 20 20 20  (LIST).....\.   
61f0: 3f 20 2d 31 20 3a 20 28 28 4c 49 53 54 29 2e 61  ? -1 : ((LIST).a
6200: 6e 75 6d 2b 2b 2c 20 28 4c 49 53 54 29 2e 61 70  num++, (LIST).ap
6210: 74 72 5b 2d 31 5d 20 3d 20 28 5f 5f 61 76 77 6f  tr[-1] = (__avwo
6220: 72 64 29 28 56 41 4c 29 2c 20 30 29 29 0a 23 65  rd)(VAL), 0)).#e
6230: 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64  ndif.#if defined
6240: 28 5f 5f 68 70 70 61 5f 5f 29 0a 2f 2a 20 46 6c  (__hppa__)./* Fl
6250: 6f 61 74 73 20 61 6e 64 20 61 6c 6c 20 69 6e 74  oats and all int
6260: 65 67 65 72 20 74 79 70 65 73 20 61 72 65 20 70  eger types are p
6270: 61 73 73 65 64 20 61 73 20 77 6f 72 64 73 2c 0a  assed as words,.
6280: 20 2a 20 64 6f 75 62 6c 65 73 20 61 73 20 74 77   * doubles as tw
6290: 6f 20 77 6f 72 64 73 2e 0a 20 2a 2f 0a 23 64 65  o words.. */.#de
62a0: 66 69 6e 65 20 5f 5f 61 76 5f 77 6f 72 64 28 4c  fine __av_word(L
62b0: 49 53 54 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a  IST,VAL)......\.
62c0: 20 20 28 2d 2d 28 4c 49 53 54 29 2e 61 70 74 72    (--(LIST).aptr
62d0: 20 3c 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53   < __av_eptr(LIS
62e0: 54 29 09 09 09 09 09 5c 0a 20 20 20 3f 20 2d 31  T).....\.   ? -1
62f0: 20 3a 20 28 2a 28 4c 49 53 54 29 2e 61 70 74 72   : (*(LIST).aptr
6300: 20 3d 20 28 5f 5f 61 76 77 6f 72 64 29 28 56 41   = (__avword)(VA
6310: 4c 29 2c 20 30 29 29 0a 23 65 6e 64 69 66 0a 23  L), 0)).#endif.#
6320: 69 66 20 64 65 66 69 6e 65 64 28 41 4d 49 47 41  if defined(AMIGA
6330: 29 0a 2f 2a 20 53 6f 6d 65 20 61 72 67 75 6d 65  )./* Some argume
6340: 6e 74 73 20 61 72 65 20 70 61 73 73 65 64 20 69  nts are passed i
6350: 6e 20 72 65 67 69 73 74 65 72 73 2e 20 51 75 65  n registers. Que
6360: 72 79 20 74 68 65 20 6d 61 63 72 6f 20 41 56 5f  ry the macro AV_
6370: 41 52 47 5f 52 45 47 4e 55 4d 2e 0a 20 2a 20 54  ARG_REGNUM.. * T
6380: 68 69 73 20 73 68 6f 75 6c 64 20 72 65 61 6c 6c  his should reall
6390: 79 20 62 65 20 61 6e 20 61 72 67 75 6d 65 6e 74  y be an argument
63a0: 20 74 6f 20 5f 5f 61 76 5f 77 6f 72 64 2e 0a 20   to __av_word.. 
63b0: 2a 2f 0a 23 75 6e 64 65 66 20 5f 5f 61 76 5f 77  */.#undef __av_w
63c0: 6f 72 64 20 2f 2a 2a 2f 0a 23 64 65 66 69 6e 65  ord /**/.#define
63d0: 20 5f 5f 61 76 5f 77 6f 72 64 28 4c 49 53 54 2c   __av_word(LIST,
63e0: 56 41 4c 29 09 09 09 09 09 09 5c 0a 20 20 28 28  VAL)......\.  ((
63f0: 41 56 5f 41 52 47 5f 52 45 47 4e 55 4d 29 20 3e  AV_ARG_REGNUM) >
6400: 3d 20 30 09 09 09 09 09 09 09 5c 0a 20 20 20 3f  = 0.......\.   ?
6410: 20 28 28 41 56 5f 41 52 47 5f 52 45 47 4e 55 4d   ((AV_ARG_REGNUM
6420: 29 20 3c 20 38 2b 37 09 09 09 09 09 09 5c 0a 20  ) < 8+7......\. 
6430: 20 20 20 20 20 3f 20 2d 31 20 3a 20 28 28 4c 49       ? -1 : ((LI
6440: 53 54 29 2e 72 65 67 61 72 67 73 5b 28 41 56 5f  ST).regargs[(AV_
6450: 41 52 47 5f 52 45 47 4e 55 4d 29 5d 20 3d 20 28  ARG_REGNUM)] = (
6460: 5f 5f 61 76 77 6f 72 64 29 28 56 41 4c 29 2c 20  __avword)(VAL), 
6470: 30 29 29 09 5c 0a 20 20 20 3a 20 28 2b 2b 28 4c  0)).\.   : (++(L
6480: 49 53 54 29 2e 61 70 74 72 20 3e 20 5f 5f 61 76  IST).aptr > __av
6490: 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09 09 09  _eptr(LIST).....
64a0: 5c 0a 20 20 20 20 20 20 3f 20 2d 31 20 3a 20 28  \.      ? -1 : (
64b0: 28 4c 49 53 54 29 2e 61 70 74 72 5b 2d 31 5d 20  (LIST).aptr[-1] 
64c0: 3d 20 28 5f 5f 61 76 77 6f 72 64 29 28 56 41 4c  = (__avword)(VAL
64d0: 29 2c 20 30 29 29 29 0a 23 65 6e 64 69 66 0a 0a  ), 0))).#endif..
64e0: 2f 2a 20 69 6e 74 65 67 65 72 20 61 72 67 75 6d  /* integer argum
64f0: 65 6e 74 20 74 79 70 65 73 20 2a 2f 0a 0a 23 69  ent types */..#i
6500: 66 20 64 65 66 69 6e 65 64 28 5f 5f 78 38 36 5f  f defined(__x86_
6510: 36 34 5f 5f 29 0a 2f 2a 20 54 68 65 20 66 69 72  64__)./* The fir
6520: 73 74 20 36 20 69 6e 74 65 67 65 72 20 61 72 67  st 6 integer arg
6530: 75 6d 65 6e 74 73 20 61 72 65 20 70 61 73 73 65  uments are passe
6540: 64 20 69 6e 20 72 65 67 69 73 74 65 72 73 2e 20  d in registers. 
6550: 2a 2f 0a 23 64 65 66 69 6e 65 20 61 76 5f 6c 6f  */.#define av_lo
6560: 6e 67 28 4c 49 53 54 2c 56 41 4c 29 09 09 09 09  ng(LIST,VAL)....
6570: 09 09 5c 0a 20 20 28 28 4c 49 53 54 29 2e 69 61  ..\.  ((LIST).ia
6580: 70 74 72 20 3c 20 26 28 4c 49 53 54 29 2e 69 61  ptr < &(LIST).ia
6590: 72 67 73 5b 36 5d 09 09 09 09 09 5c 0a 20 20 20  rgs[6].....\.   
65a0: 3f 20 28 2a 28 4c 49 53 54 29 2e 69 61 70 74 72  ? (*(LIST).iaptr
65b0: 2b 2b 20 3d 20 28 6c 6f 6e 67 29 28 56 41 4c 29  ++ = (long)(VAL)
65c0: 2c 20 30 29 09 09 09 09 09 5c 0a 20 20 20 3a 20  , 0).....\.   : 
65d0: 5f 5f 61 76 5f 77 6f 72 64 28 4c 49 53 54 2c 28  __av_word(LIST,(
65e0: 6c 6f 6e 67 29 28 56 41 4c 29 29 29 0a 23 65 6c  long)(VAL))).#el
65f0: 73 65 0a 23 64 65 66 69 6e 65 20 61 76 5f 6c 6f  se.#define av_lo
6600: 6e 67 28 4c 49 53 54 2c 56 41 4c 29 09 5f 5f 61  ng(LIST,VAL).__a
6610: 76 5f 77 6f 72 64 28 4c 49 53 54 2c 28 6c 6f 6e  v_word(LIST,(lon
6620: 67 29 28 56 41 4c 29 29 0a 23 65 6e 64 69 66 0a  g)(VAL)).#endif.
6630: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 78  .#if defined(__x
6640: 38 36 5f 36 34 5f 5f 29 0a 2f 2a 20 54 68 65 20  86_64__)./* The 
6650: 66 69 72 73 74 20 36 20 69 6e 74 65 67 65 72 20  first 6 integer 
6660: 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 70 61  arguments are pa
6670: 73 73 65 64 20 69 6e 20 72 65 67 69 73 74 65 72  ssed in register
6680: 73 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 61 76  s. */.#define av
6690: 5f 75 6c 6f 6e 67 28 4c 49 53 54 2c 56 41 4c 29  _ulong(LIST,VAL)
66a0: 09 09 09 09 09 09 5c 0a 20 20 28 28 4c 49 53 54  ......\.  ((LIST
66b0: 29 2e 69 61 70 74 72 20 3c 20 26 28 4c 49 53 54  ).iaptr < &(LIST
66c0: 29 2e 69 61 72 67 73 5b 36 5d 09 09 09 09 09 5c  ).iargs[6].....\
66d0: 0a 20 20 20 3f 20 28 2a 28 4c 49 53 54 29 2e 69  .   ? (*(LIST).i
66e0: 61 70 74 72 2b 2b 20 3d 20 28 75 6e 73 69 67 6e  aptr++ = (unsign
66f0: 65 64 20 6c 6f 6e 67 29 28 56 41 4c 29 2c 20 30  ed long)(VAL), 0
6700: 29 09 09 09 5c 0a 20 20 20 3a 20 5f 5f 61 76 5f  )...\.   : __av_
6710: 77 6f 72 64 28 4c 49 53 54 2c 28 75 6e 73 69 67  word(LIST,(unsig
6720: 6e 65 64 20 6c 6f 6e 67 29 28 56 41 4c 29 29 29  ned long)(VAL)))
6730: 0a 23 65 6c 73 65 0a 23 64 65 66 69 6e 65 20 61  .#else.#define a
6740: 76 5f 75 6c 6f 6e 67 28 4c 49 53 54 2c 56 41 4c  v_ulong(LIST,VAL
6750: 29 09 5f 5f 61 76 5f 77 6f 72 64 28 4c 49 53 54  ).__av_word(LIST
6760: 2c 28 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 29  ,(unsigned long)
6770: 28 56 41 4c 29 29 0a 23 65 6e 64 69 66 0a 0a 23  (VAL)).#endif..#
6780: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 78 38 36  if defined(__x86
6790: 5f 36 34 5f 5f 29 0a 2f 2a 20 54 68 65 20 66 69  _64__)./* The fi
67a0: 72 73 74 20 36 20 69 6e 74 65 67 65 72 20 61 72  rst 6 integer ar
67b0: 67 75 6d 65 6e 74 73 20 61 72 65 20 70 61 73 73  guments are pass
67c0: 65 64 20 69 6e 20 72 65 67 69 73 74 65 72 73 2e  ed in registers.
67d0: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 61 76 5f 70   */.#define av_p
67e0: 74 72 28 4c 49 53 54 2c 54 59 50 45 2c 56 41 4c  tr(LIST,TYPE,VAL
67f0: 29 09 09 09 09 09 09 5c 0a 20 20 28 28 4c 49 53  )......\.  ((LIS
6800: 54 29 2e 69 61 70 74 72 20 3c 20 26 28 4c 49 53  T).iaptr < &(LIS
6810: 54 29 2e 69 61 72 67 73 5b 36 5d 09 09 09 09 09  T).iargs[6].....
6820: 5c 0a 20 20 20 3f 20 28 2a 28 4c 49 53 54 29 2e  \.   ? (*(LIST).
6830: 69 61 70 74 72 2b 2b 20 3d 20 28 5f 5f 61 76 77  iaptr++ = (__avw
6840: 6f 72 64 29 28 54 59 50 45 29 28 56 41 4c 29 2c  ord)(TYPE)(VAL),
6850: 20 30 29 09 09 09 5c 0a 20 20 20 3a 20 5f 5f 61   0)...\.   : __a
6860: 76 5f 77 6f 72 64 28 4c 49 53 54 2c 28 54 59 50  v_word(LIST,(TYP
6870: 45 29 28 56 41 4c 29 29 29 0a 23 65 6c 73 65 0a  E)(VAL))).#else.
6880: 23 64 65 66 69 6e 65 20 61 76 5f 70 74 72 28 4c  #define av_ptr(L
6890: 49 53 54 2c 54 59 50 45 2c 56 41 4c 29 09 5f 5f  IST,TYPE,VAL).__
68a0: 61 76 5f 77 6f 72 64 28 4c 49 53 54 2c 28 54 59  av_word(LIST,(TY
68b0: 50 45 29 28 56 41 4c 29 29 0a 23 65 6e 64 69 66  PE)(VAL)).#endif
68c0: 0a 0a 23 64 65 66 69 6e 65 20 61 76 5f 63 68 61  ..#define av_cha
68d0: 72 09 09 09 61 76 5f 6c 6f 6e 67 0a 23 64 65 66  r...av_long.#def
68e0: 69 6e 65 20 61 76 5f 73 63 68 61 72 09 09 61 76  ine av_schar..av
68f0: 5f 6c 6f 6e 67 0a 23 64 65 66 69 6e 65 20 61 76  _long.#define av
6900: 5f 73 68 6f 72 74 09 09 61 76 5f 6c 6f 6e 67 0a  _short..av_long.
6910: 23 64 65 66 69 6e 65 20 61 76 5f 69 6e 74 09 09  #define av_int..
6920: 09 61 76 5f 6c 6f 6e 67 0a 23 64 65 66 69 6e 65  .av_long.#define
6930: 20 61 76 5f 75 63 68 61 72 09 09 61 76 5f 75 6c   av_uchar..av_ul
6940: 6f 6e 67 0a 23 64 65 66 69 6e 65 20 61 76 5f 75  ong.#define av_u
6950: 73 68 6f 72 74 09 09 61 76 5f 75 6c 6f 6e 67 0a  short..av_ulong.
6960: 23 64 65 66 69 6e 65 20 61 76 5f 75 69 6e 74 09  #define av_uint.
6970: 09 09 61 76 5f 75 6c 6f 6e 67 0a 0a 23 69 66 20  ..av_ulong..#if 
6980: 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 36 34  defined(__mips64
6990: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
69a0: 5f 73 70 61 72 63 36 34 5f 5f 29 20 7c 7c 20 64  _sparc64__) || d
69b0: 65 66 69 6e 65 64 28 5f 5f 61 6c 70 68 61 5f 5f  efined(__alpha__
69c0: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 69  ) || defined(__i
69d0: 61 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65  a64__) || define
69e0: 64 28 5f 5f 78 38 36 5f 36 34 5f 5f 29 0a 2f 2a  d(__x86_64__)./*
69f0: 20 60 6c 6f 6e 67 20 6c 6f 6e 67 27 20 61 6e 64   `long long' and
6a00: 20 60 6c 6f 6e 67 27 20 61 72 65 20 69 64 65 6e   `long' are iden
6a10: 74 69 63 61 6c 2e 20 2a 2f 0a 23 64 65 66 69 6e  tical. */.#defin
6a20: 65 20 61 76 5f 6c 6f 6e 67 6c 6f 6e 67 09 09 61  e av_longlong..a
6a30: 76 5f 6c 6f 6e 67 0a 23 64 65 66 69 6e 65 20 61  v_long.#define a
6a40: 76 5f 75 6c 6f 6e 67 6c 6f 6e 67 09 09 61 76 5f  v_ulonglong..av_
6a50: 75 6c 6f 6e 67 0a 23 65 6c 69 66 20 64 65 66 69  ulong.#elif defi
6a60: 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29  ned(__mipsn32__)
6a70: 0a 2f 2a 20 60 6c 6f 6e 67 20 6c 6f 6e 67 27 20  ./* `long long' 
6a80: 66 69 74 73 20 69 6e 20 5f 5f 61 76 77 6f 72 64  fits in __avword
6a90: 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 61 76 5f  . */.#define av_
6aa0: 6c 6f 6e 67 6c 6f 6e 67 09 09 5f 5f 61 76 5f 77  longlong..__av_w
6ab0: 6f 72 64 0a 23 64 65 66 69 6e 65 20 61 76 5f 75  ord.#define av_u
6ac0: 6c 6f 6e 67 6c 6f 6e 67 28 4c 49 53 54 2c 56 41  longlong(LIST,VA
6ad0: 4c 29 09 5f 5f 61 76 5f 77 6f 72 64 28 4c 49 53  L).__av_word(LIS
6ae0: 54 2c 28 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67  T,(unsigned long
6af0: 20 6c 6f 6e 67 29 28 56 41 4c 29 29 0a 23 65 6c   long)(VAL)).#el
6b00: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 69 33 38  if defined(__i38
6b10: 36 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  6__) || defined(
6b20: 5f 5f 6d 36 38 6b 5f 5f 29 20 7c 7c 20 64 65 66  __m68k__) || def
6b30: 69 6e 65 64 28 5f 5f 6d 69 70 73 5f 5f 29 20 7c  ined(__mips__) |
6b40: 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f 73 70 61  | (defined(__spa
6b50: 72 63 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65  rc__) && !define
6b60: 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29 29 20  d(__sparc64__)) 
6b70: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 68 70 70  || defined(__hpp
6b80: 61 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  a__) || defined(
6b90: 5f 5f 61 72 6d 5f 5f 29 20 7c 7c 20 64 65 66 69  __arm__) || defi
6ba0: 6e 65 64 28 5f 5f 72 73 36 30 30 30 5f 5f 29 20  ned(__rs6000__) 
6bb0: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 38 38  || defined(__m88
6bc0: 6b 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  k__) || defined(
6bd0: 5f 5f 63 6f 6e 76 65 78 5f 5f 29 20 7c 7c 20 64  __convex__) || d
6be0: 65 66 69 6e 65 64 28 5f 5f 73 33 39 30 5f 5f 29  efined(__s390__)
6bf0: 0a 2f 2a 20 60 6c 6f 6e 67 20 6c 6f 6e 67 27 73  ./* `long long's
6c00: 20 61 72 65 20 70 61 73 73 65 64 20 65 6d 62 65   are passed embe
6c10: 64 64 65 64 20 6f 6e 20 74 68 65 20 61 72 67 20  dded on the arg 
6c20: 73 74 61 63 6b 2e 20 2a 2f 0a 23 64 65 66 69 6e  stack. */.#defin
6c30: 65 20 61 76 5f 6c 6f 6e 67 6c 6f 6e 67 28 4c 49  e av_longlong(LI
6c40: 53 54 2c 56 41 4c 29 09 5f 5f 61 76 5f 6c 6f 6e  ST,VAL).__av_lon
6c50: 67 6c 6f 6e 67 28 4c 49 53 54 2c 6c 6f 6e 67 20  glong(LIST,long 
6c60: 6c 6f 6e 67 2c 56 41 4c 29 0a 23 64 65 66 69 6e  long,VAL).#defin
6c70: 65 20 61 76 5f 75 6c 6f 6e 67 6c 6f 6e 67 28 4c  e av_ulonglong(L
6c80: 49 53 54 2c 56 41 4c 29 09 5f 5f 61 76 5f 6c 6f  IST,VAL).__av_lo
6c90: 6e 67 6c 6f 6e 67 28 4c 49 53 54 2c 75 6e 73 69  nglong(LIST,unsi
6ca0: 67 6e 65 64 20 6c 6f 6e 67 20 6c 6f 6e 67 2c 56  gned long long,V
6cb0: 41 4c 29 0a 23 69 66 20 64 65 66 69 6e 65 64 28  AL).#if defined(
6cc0: 5f 5f 69 33 38 36 5f 5f 29 20 7c 7c 20 64 65 66  __i386__) || def
6cd0: 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f 5f 29 20 7c  ined(__m68k__) |
6ce0: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 61 72 6d 5f  | defined(__arm_
6cf0: 5f 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f  _) || (defined(_
6d00: 5f 72 73 36 30 30 30 5f 5f 29 20 26 26 20 28 64  _rs6000__) && (d
6d10: 65 66 69 6e 65 64 28 5f 41 49 58 29 20 7c 7c 20  efined(_AIX) || 
6d20: 28 64 65 66 69 6e 65 64 28 5f 5f 4d 41 43 48 5f  (defined(__MACH_
6d30: 5f 29 20 26 26 20 64 65 66 69 6e 65 64 28 5f 5f  _) && defined(__
6d40: 41 50 50 4c 45 5f 5f 29 29 29 29 20 7c 7c 20 64  APPLE__)))) || d
6d50: 65 66 69 6e 65 64 28 5f 5f 63 6f 6e 76 65 78 5f  efined(__convex_
6d60: 5f 29 0a 2f 2a 20 60 6c 6f 6e 67 20 6c 6f 6e 67  _)./* `long long
6d70: 27 73 20 61 72 65 20 28 61 74 20 6d 6f 73 74 29  's are (at most)
6d80: 20 77 6f 72 64 2d 61 6c 69 67 6e 65 64 2e 20 2a   word-aligned. *
6d90: 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 6c  /.#define __av_l
6da0: 6f 6e 67 6c 6f 6e 67 28 4c 49 53 54 2c 54 59 50  onglong(LIST,TYP
6db0: 45 2c 56 41 4c 29 09 09 09 09 09 5c 0a 20 20 28  E,VAL).....\.  (
6dc0: 28 28 4c 49 53 54 29 2e 61 70 74 72 20 2b 3d 20  ((LIST).aptr += 
6dd0: 73 69 7a 65 6f 66 28 54 59 50 45 29 2f 73 69 7a  sizeof(TYPE)/siz
6de0: 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 29 20 3e  eof(__avword)) >
6df0: 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29   __av_eptr(LIST)
6e00: 09 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 28 28 28  .\.   ? -1 : (((
6e10: 54 59 50 45 2a 29 28 4c 49 53 54 29 2e 61 70 74  TYPE*)(LIST).apt
6e20: 72 29 5b 2d 31 5d 20 3d 20 28 54 59 50 45 29 28  r)[-1] = (TYPE)(
6e30: 56 41 4c 29 2c 20 30 29 29 0a 23 65 6e 64 69 66  VAL), 0)).#endif
6e40: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d  .#if defined(__m
6e50: 69 70 73 5f 5f 29 20 7c 7c 20 28 64 65 66 69 6e  ips__) || (defin
6e60: 65 64 28 5f 5f 73 70 61 72 63 5f 5f 29 20 26 26  ed(__sparc__) &&
6e70: 20 21 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72   !defined(__spar
6e80: 63 36 34 5f 5f 29 29 20 7c 7c 20 64 65 66 69 6e  c64__)) || defin
6e90: 65 64 28 5f 5f 68 70 70 61 5f 5f 29 20 7c 7c 20  ed(__hppa__) || 
6ea0: 28 64 65 66 69 6e 65 64 28 5f 5f 72 73 36 30 30  (defined(__rs600
6eb0: 30 5f 5f 29 20 26 26 20 21 28 64 65 66 69 6e 65  0__) && !(define
6ec0: 64 28 5f 41 49 58 29 20 7c 7c 20 28 64 65 66 69  d(_AIX) || (defi
6ed0: 6e 65 64 28 5f 5f 4d 41 43 48 5f 5f 29 20 26 26  ned(__MACH__) &&
6ee0: 20 64 65 66 69 6e 65 64 28 5f 5f 41 50 50 4c 45   defined(__APPLE
6ef0: 5f 5f 29 29 29 29 20 7c 7c 20 64 65 66 69 6e 65  __)))) || define
6f00: 64 28 5f 5f 6d 38 38 6b 5f 5f 29 20 7c 7c 20 64  d(__m88k__) || d
6f10: 65 66 69 6e 65 64 28 5f 5f 73 33 39 30 5f 5f 29  efined(__s390__)
6f20: 0a 2f 2a 20 60 6c 6f 6e 67 20 6c 6f 6e 67 27 73  ./* `long long's
6f30: 20 68 61 76 65 20 61 6c 69 67 6e 6d 65 6e 74 20   have alignment 
6f40: 38 2e 20 2a 2f 0a 23 69 66 20 64 65 66 69 6e 65  8. */.#if define
6f50: 64 28 5f 5f 6d 69 70 73 5f 5f 29 0a 23 64 65 66  d(__mips__).#def
6f60: 69 6e 65 20 5f 5f 61 76 5f 6c 6f 6e 67 6c 6f 6e  ine __av_longlon
6f70: 67 28 4c 49 53 54 2c 54 59 50 45 2c 56 41 4c 29  g(LIST,TYPE,VAL)
6f80: 09 09 09 09 09 5c 0a 20 20 28 28 28 4c 49 53 54  .....\.  (((LIST
6f90: 29 2e 61 70 74 72 20 3d 20 28 5f 5f 61 76 77 6f  ).aptr = (__avwo
6fa0: 72 64 2a 29 28 28 28 5f 5f 61 76 77 6f 72 64 29  rd*)(((__avword)
6fb0: 28 4c 49 53 54 29 2e 61 70 74 72 2b 73 69 7a 65  (LIST).aptr+size
6fc0: 6f 66 28 54 59 50 45 29 2b 5f 5f 41 56 5f 61 6c  of(TYPE)+__AV_al
6fd0: 69 67 6e 6f 66 28 54 59 50 45 29 2d 31 29 20 26  ignof(TYPE)-1) &
6fe0: 20 2d 28 6c 6f 6e 67 29 5f 5f 41 56 5f 61 6c 69   -(long)__AV_ali
6ff0: 67 6e 6f 66 28 54 59 50 45 29 29 29 20 3e 20 5f  gnof(TYPE))) > _
7000: 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29 20 5c  _av_eptr(LIST) \
7010: 0a 20 20 20 3f 20 2d 31 20 3a 20 28 28 4c 49 53  .   ? -1 : ((LIS
7020: 54 29 2e 61 6e 75 6d 2b 2b 2c 20 28 28 54 59 50  T).anum++, ((TYP
7030: 45 2a 29 28 4c 49 53 54 29 2e 61 70 74 72 29 5b  E*)(LIST).aptr)[
7040: 2d 31 5d 20 3d 20 28 54 59 50 45 29 28 56 41 4c  -1] = (TYPE)(VAL
7050: 29 2c 20 30 29 29 0a 23 65 6e 64 69 66 0a 23 69  ), 0)).#endif.#i
7060: 66 20 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72  f defined(__spar
7070: 63 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64  c__) && !defined
7080: 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29 0a 2f 2a  (__sparc64__)./*
7090: 20 57 69 74 68 69 6e 20 74 68 65 20 61 72 67 20   Within the arg 
70a0: 73 74 61 63 6b 2c 20 74 68 65 20 61 6c 69 67 6e  stack, the align
70b0: 6d 65 6e 74 20 69 73 20 6f 6e 6c 79 20 34 2c 20  ment is only 4, 
70c0: 6e 6f 74 20 38 2e 20 2a 2f 0a 2f 2a 20 54 68 69  not 8. */./* Thi
70d0: 73 20 61 73 73 75 6d 65 73 20 73 69 7a 65 6f 66  s assumes sizeof
70e0: 28 6c 6f 6e 67 20 6c 6f 6e 67 29 20 3d 3d 20 32  (long long) == 2
70f0: 2a 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64  *sizeof(__avword
7100: 29 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f  ). */.#define __
7110: 61 76 5f 6c 6f 6e 67 6c 6f 6e 67 28 4c 49 53 54  av_longlong(LIST
7120: 2c 54 59 50 45 2c 56 41 4c 29 09 09 09 09 09 5c  ,TYPE,VAL).....\
7130: 0a 20 20 28 28 28 4c 49 53 54 29 2e 61 70 74 72  .  (((LIST).aptr
7140: 20 2b 3d 20 73 69 7a 65 6f 66 28 54 59 50 45 29   += sizeof(TYPE)
7150: 2f 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64  /sizeof(__avword
7160: 29 29 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c  )) > __av_eptr(L
7170: 49 53 54 29 09 5c 0a 20 20 20 3f 20 2d 31 20 3a  IST).\.   ? -1 :
7180: 09 09 09 09 09 09 09 09 5c 0a 20 20 20 28 28 4c  ........\.   ((L
7190: 49 53 54 29 2e 74 6d 70 2e 5f 6c 6f 6e 67 6c 6f  IST).tmp._longlo
71a0: 6e 67 20 3d 20 28 54 59 50 45 29 28 56 41 4c 29  ng = (TYPE)(VAL)
71b0: 2c 09 09 09 09 09 5c 0a 20 20 20 20 28 4c 49 53  ,.....\.    (LIS
71c0: 54 29 2e 61 70 74 72 5b 2d 32 5d 20 3d 20 28 4c  T).aptr[-2] = (L
71d0: 49 53 54 29 2e 74 6d 70 2e 77 6f 72 64 73 5b 30  IST).tmp.words[0
71e0: 5d 2c 09 09 09 09 5c 0a 20 20 20 20 28 4c 49 53  ],....\.    (LIS
71f0: 54 29 2e 61 70 74 72 5b 2d 31 5d 20 3d 20 28 4c  T).aptr[-1] = (L
7200: 49 53 54 29 2e 74 6d 70 2e 77 6f 72 64 73 5b 31  IST).tmp.words[1
7210: 5d 2c 09 09 09 09 5c 0a 20 20 20 20 30 29 29 0a  ],....\.    0)).
7220: 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e  #endif.#if defin
7230: 65 64 28 5f 5f 68 70 70 61 5f 5f 29 0a 23 64 65  ed(__hppa__).#de
7240: 66 69 6e 65 20 5f 5f 61 76 5f 6c 6f 6e 67 6c 6f  fine __av_longlo
7250: 6e 67 28 4c 49 53 54 2c 54 59 50 45 2c 56 41 4c  ng(LIST,TYPE,VAL
7260: 29 09 09 09 09 09 5c 0a 20 20 28 28 28 4c 49 53  ).....\.  (((LIS
7270: 54 29 2e 61 70 74 72 20 3d 20 28 5f 5f 61 76 77  T).aptr = (__avw
7280: 6f 72 64 2a 29 28 28 28 5f 5f 61 76 77 6f 72 64  ord*)(((__avword
7290: 29 28 4c 49 53 54 29 2e 61 70 74 72 20 26 20 2d  )(LIST).aptr & -
72a0: 28 6c 6f 6e 67 29 5f 5f 41 56 5f 61 6c 69 67 6e  (long)__AV_align
72b0: 6f 66 28 54 59 50 45 29 29 20 2d 20 73 69 7a 65  of(TYPE)) - size
72c0: 6f 66 28 54 59 50 45 29 29 29 20 3c 20 5f 5f 61  of(TYPE))) < __a
72d0: 76 5f 65 70 74 72 28 4c 49 53 54 29 20 5c 0a 20  v_eptr(LIST) \. 
72e0: 20 20 3f 20 2d 31 20 3a 20 28 2a 28 54 59 50 45    ? -1 : (*(TYPE
72f0: 2a 29 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20  *)(LIST).aptr = 
7300: 28 54 59 50 45 29 28 56 41 4c 29 2c 20 30 29 29  (TYPE)(VAL), 0))
7310: 0a 23 65 6e 64 69 66 0a 23 69 66 20 28 64 65 66  .#endif.#if (def
7320: 69 6e 65 64 28 5f 5f 72 73 36 30 30 30 5f 5f 29  ined(__rs6000__)
7330: 20 26 26 20 21 28 64 65 66 69 6e 65 64 28 5f 41   && !(defined(_A
7340: 49 58 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28  IX) || (defined(
7350: 5f 5f 4d 41 43 48 5f 5f 29 20 26 26 20 64 65 66  __MACH__) && def
7360: 69 6e 65 64 28 5f 5f 41 50 50 4c 45 5f 5f 29 29  ined(__APPLE__))
7370: 29 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  )) || defined(__
7380: 6d 38 38 6b 5f 5f 29 0a 23 64 65 66 69 6e 65 20  m88k__).#define 
7390: 5f 5f 61 76 5f 6c 6f 6e 67 6c 6f 6e 67 28 4c 49  __av_longlong(LI
73a0: 53 54 2c 54 59 50 45 2c 56 41 4c 29 09 09 09 09  ST,TYPE,VAL)....
73b0: 09 5c 0a 20 20 28 28 28 4c 49 53 54 29 2e 61 70  .\.  (((LIST).ap
73c0: 74 72 20 3d 20 28 5f 5f 61 76 77 6f 72 64 2a 29  tr = (__avword*)
73d0: 28 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53  (((__avword)(LIS
73e0: 54 29 2e 61 70 74 72 2b 73 69 7a 65 6f 66 28 54  T).aptr+sizeof(T
73f0: 59 50 45 29 2b 5f 5f 41 56 5f 61 6c 69 67 6e 6f  YPE)+__AV_aligno
7400: 66 28 54 59 50 45 29 2d 31 29 20 26 20 2d 28 6c  f(TYPE)-1) & -(l
7410: 6f 6e 67 29 5f 5f 41 56 5f 61 6c 69 67 6e 6f 66  ong)__AV_alignof
7420: 28 54 59 50 45 29 29 29 20 3e 20 5f 5f 61 76 5f  (TYPE))) > __av_
7430: 65 70 74 72 28 4c 49 53 54 29 20 5c 0a 20 20 20  eptr(LIST) \.   
7440: 3f 20 2d 31 20 3a 20 28 28 28 54 59 50 45 2a 29  ? -1 : (((TYPE*)
7450: 28 4c 49 53 54 29 2e 61 70 74 72 29 5b 2d 31 5d  (LIST).aptr)[-1]
7460: 20 3d 20 28 54 59 50 45 29 28 56 41 4c 29 2c 20   = (TYPE)(VAL), 
7470: 30 29 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64  0)).#endif.#if d
7480: 65 66 69 6e 65 64 28 5f 5f 73 33 39 30 5f 5f 29  efined(__s390__)
7490: 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 6c 6f  .#define __av_lo
74a0: 6e 67 6c 6f 6e 67 28 4c 49 53 54 2c 54 59 50 45  nglong(LIST,TYPE
74b0: 2c 56 41 4c 29 09 09 09 09 09 5c 0a 20 20 28 28  ,VAL).....\.  ((
74c0: 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 28 5f  (LIST).aptr = (_
74d0: 5f 61 76 77 6f 72 64 2a 29 28 28 28 5f 5f 61 76  _avword*)(((__av
74e0: 77 6f 72 64 29 28 4c 49 53 54 29 2e 61 70 74 72  word)(LIST).aptr
74f0: 2b 73 69 7a 65 6f 66 28 54 59 50 45 29 2b 5f 5f  +sizeof(TYPE)+__
7500: 41 56 5f 61 6c 69 67 6e 6f 66 28 54 59 50 45 29  AV_alignof(TYPE)
7510: 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 5f 5f 41  -1) & -(long)__A
7520: 56 5f 61 6c 69 67 6e 6f 66 28 54 59 50 45 29 29  V_alignof(TYPE))
7530: 29 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49  ) > __av_eptr(LI
7540: 53 54 29 20 5c 0a 20 20 20 3f 20 2d 31 20 3a 09  ST) \.   ? -1 :.
7550: 09 09 09 09 09 5c 0a 20 20 20 28 28 28 4c 49 53  .....\.   (((LIS
7560: 54 29 2e 61 70 74 72 20 2d 20 28 4c 49 53 54 29  T).aptr - (LIST)
7570: 2e 61 72 67 73 20 2d 20 28 4c 49 53 54 29 2e 66  .args - (LIST).f
7580: 61 72 67 77 6f 72 64 73 20 3d 3d 20 34 20 3f 20  argwords == 4 ? 
7590: 2b 2b 28 4c 49 53 54 29 2e 61 70 74 72 2c 30 20  ++(LIST).aptr,0 
75a0: 3a 20 30 29 2c 20 5c 0a 20 20 20 20 28 28 28 54  : 0), \.    (((T
75b0: 59 50 45 2a 29 28 4c 49 53 54 29 2e 61 70 74 72  YPE*)(LIST).aptr
75c0: 29 5b 2d 31 5d 20 3d 20 28 54 59 50 45 29 28 56  )[-1] = (TYPE)(V
75d0: 41 4c 29 2c 20 30 29 29 29 0a 23 65 6e 64 69 66  AL), 0))).#endif
75e0: 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69 66 0a 0a  .#endif.#endif..
75f0: 2f 2a 20 66 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e  /* floating-poin
7600: 74 20 61 72 67 75 6d 65 6e 74 20 74 79 70 65 73  t argument types
7610: 20 2a 2f 0a 0a 23 64 65 66 69 6e 65 20 61 76 5f   */..#define av_
7620: 66 6c 6f 61 74 28 4c 49 53 54 2c 56 41 4c 29 09  float(LIST,VAL).
7630: 09 09 09 09 09 5c 0a 20 20 28 28 4c 49 53 54 29  .....\.  ((LIST)
7640: 2e 66 6c 61 67 73 20 26 20 5f 5f 41 56 5f 54 52  .flags & __AV_TR
7650: 41 44 49 54 49 4f 4e 41 4c 5f 46 4c 4f 41 54 5f  ADITIONAL_FLOAT_
7660: 41 52 47 53 09 09 09 09 5c 0a 20 20 20 3f 20 61  ARGS....\.   ? a
7670: 76 5f 64 6f 75 62 6c 65 28 4c 49 53 54 2c 28 66  v_double(LIST,(f
7680: 6c 6f 61 74 29 28 56 41 4c 29 29 09 09 09 09 09  loat)(VAL)).....
7690: 5c 0a 20 20 20 3a 20 5f 5f 61 76 5f 66 6c 6f 61  \.   : __av_floa
76a0: 74 28 4c 49 53 54 2c 56 41 4c 29 29 0a 0a 23 69  t(LIST,VAL))..#i
76b0: 66 20 64 65 66 69 6e 65 64 28 5f 5f 69 33 38 36  f defined(__i386
76c0: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
76d0: 5f 6d 36 38 6b 5f 5f 29 20 7c 7c 20 28 64 65 66  _m68k__) || (def
76e0: 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f 5f 29 20  ined(__sparc__) 
76f0: 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 73 70  && !defined(__sp
7700: 61 72 63 36 34 5f 5f 29 29 20 7c 7c 20 64 65 66  arc64__)) || def
7710: 69 6e 65 64 28 5f 5f 61 72 6d 5f 5f 29 20 7c 7c  ined(__arm__) ||
7720: 20 64 65 66 69 6e 65 64 28 5f 5f 63 6f 6e 76 65   defined(__conve
7730: 78 5f 5f 29 0a 0a 23 64 65 66 69 6e 65 20 5f 5f  x__)..#define __
7740: 61 76 5f 66 6c 6f 61 74 28 4c 49 53 54 2c 56 41  av_float(LIST,VA
7750: 4c 29 09 09 09 09 09 09 5c 0a 20 20 28 2b 2b 28  L)......\.  (++(
7760: 4c 49 53 54 29 2e 61 70 74 72 20 3e 20 5f 5f 61  LIST).aptr > __a
7770: 76 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09 09  v_eptr(LIST)....
7780: 09 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 28 28 28  .\.   ? -1 : (((
7790: 66 6c 6f 61 74 2a 29 28 4c 49 53 54 29 2e 61 70  float*)(LIST).ap
77a0: 74 72 29 5b 2d 31 5d 20 3d 20 28 66 6c 6f 61 74  tr)[-1] = (float
77b0: 29 28 56 41 4c 29 2c 20 30 29 29 0a 0a 2f 2a 20  )(VAL), 0))../* 
77c0: 54 68 69 73 20 61 73 73 75 6d 65 73 20 73 69 7a  This assumes siz
77d0: 65 6f 66 28 64 6f 75 62 6c 65 29 20 3d 3d 20 32  eof(double) == 2
77e0: 2a 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64  *sizeof(__avword
77f0: 29 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 61 76  ). */.#define av
7800: 5f 64 6f 75 62 6c 65 28 4c 49 53 54 2c 56 41 4c  _double(LIST,VAL
7810: 29 09 09 09 09 09 09 5c 0a 20 20 20 28 28 28 4c  )......\.   (((L
7820: 49 53 54 29 2e 61 70 74 72 20 2b 3d 20 32 29 20  IST).aptr += 2) 
7830: 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54  > __av_eptr(LIST
7840: 29 09 09 09 09 5c 0a 20 20 20 20 3f 20 2d 31 20  )....\.    ? -1 
7850: 3a 09 09 09 09 09 09 09 09 5c 0a 20 20 20 20 28  :........\.    (
7860: 28 4c 49 53 54 29 2e 74 6d 70 2e 5f 64 6f 75 62  (LIST).tmp._doub
7870: 6c 65 20 3d 20 28 64 6f 75 62 6c 65 29 28 56 41  le = (double)(VA
7880: 4c 29 2c 09 09 09 09 5c 0a 20 20 20 20 20 28 4c  L),....\.     (L
7890: 49 53 54 29 2e 61 70 74 72 5b 2d 32 5d 20 3d 20  IST).aptr[-2] = 
78a0: 28 4c 49 53 54 29 2e 74 6d 70 2e 77 6f 72 64 73  (LIST).tmp.words
78b0: 5b 30 5d 2c 09 09 09 09 5c 0a 20 20 20 20 20 28  [0],....\.     (
78c0: 4c 49 53 54 29 2e 61 70 74 72 5b 2d 31 5d 20 3d  LIST).aptr[-1] =
78d0: 20 28 4c 49 53 54 29 2e 74 6d 70 2e 77 6f 72 64   (LIST).tmp.word
78e0: 73 5b 31 5d 2c 09 09 09 09 5c 0a 20 20 20 20 20  s[1],....\.     
78f0: 30 29 29 0a 0a 23 65 6e 64 69 66 0a 0a 23 69 66  0))..#endif..#if
7900: 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 5f   defined(__mips_
7910: 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f  _) && !defined(_
7920: 5f 6d 69 70 73 6e 33 32 5f 5f 29 0a 0a 2f 2a 20  _mipsn32__)../* 
7930: 55 70 20 74 6f 20 32 20 6c 65 61 64 69 6e 67 20  Up to 2 leading 
7940: 66 6c 6f 61 74 20 6f 72 20 64 6f 75 62 6c 65 20  float or double 
7950: 6e 6f 6e 2d 76 61 72 61 72 67 73 20 61 72 67 73  non-varargs args
7960: 20 63 61 6e 20 62 65 20 70 61 73 73 65 64 20 69   can be passed i
7970: 6e 0a 20 2a 20 66 6c 6f 61 74 20 72 65 67 69 73  n. * float regis
7980: 74 65 72 73 2c 20 62 75 74 20 77 65 20 61 6c 73  ters, but we als
7990: 6f 20 70 75 73 68 20 74 68 65 6d 20 69 6e 74 6f  o push them into
79a0: 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e 64 69   the correspondi
79b0: 6e 67 20 69 6e 74 0a 20 2a 20 72 65 67 69 73 74  ng int. * regist
79c0: 65 72 73 20 69 6e 20 63 61 73 65 20 6f 66 20 76  ers in case of v
79d0: 61 72 61 72 67 73 2e 20 46 6f 72 20 64 6f 75 62  arargs. For doub
79e0: 6c 65 73 20 77 65 20 6e 65 65 64 20 74 6f 20 61  les we need to a
79f0: 6c 69 67 6e 20 74 68 65 20 61 70 74 72 0a 20 2a  lign the aptr. *
7a00: 20 74 6f 20 61 6e 20 65 76 65 6e 20 62 6f 75 6e   to an even boun
7a10: 64 61 72 79 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e  dary.. */.#defin
7a20: 65 20 5f 5f 61 76 5f 66 6c 6f 61 74 28 4c 49 53  e __av_float(LIS
7a30: 54 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a 20 20  T,VAL)......\.  
7a40: 28 2b 2b 28 4c 49 53 54 29 2e 61 70 74 72 20 3e  (++(LIST).aptr >
7a50: 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29   __av_eptr(LIST)
7a60: 09 09 09 09 09 5c 0a 20 20 20 3f 20 2d 31 20 3a  .....\.   ? -1 :
7a70: 20 28 28 2b 2b 28 4c 49 53 54 29 2e 61 6e 75 6d   ((++(LIST).anum
7a80: 20 3d 3d 20 31 09 09 09 09 09 09 5c 0a 09 20 20   == 1......\..  
7a90: 20 20 3f 20 28 28 4c 49 53 54 29 2e 66 6c 61 67    ? ((LIST).flag
7aa0: 73 20 7c 3d 20 5f 5f 41 56 5f 46 4c 4f 41 54 5f  s |= __AV_FLOAT_
7ab0: 31 2c 09 09 09 09 5c 0a 09 20 20 20 20 20 20 20  1,....\..       
7ac0: 28 28 66 6c 6f 61 74 2a 29 28 4c 49 53 54 29 2e  ((float*)(LIST).
7ad0: 66 6c 6f 61 74 61 72 67 29 5b 31 5d 20 3d 20 28  floatarg)[1] = (
7ae0: 28 66 6c 6f 61 74 2a 29 28 4c 49 53 54 29 2e 61  (float*)(LIST).a
7af0: 70 74 72 29 5b 2d 31 5d 20 3d 20 28 66 6c 6f 61  ptr)[-1] = (floa
7b00: 74 29 28 56 41 4c 29 29 5c 0a 09 20 20 20 20 3a  t)(VAL))\..    :
7b10: 20 28 4c 49 53 54 29 2e 61 6e 75 6d 20 3d 3d 20   (LIST).anum == 
7b20: 32 20 26 26 20 28 28 4c 49 53 54 29 2e 66 6c 61  2 && ((LIST).fla
7b30: 67 73 20 26 20 5f 5f 41 56 5f 46 4c 4f 41 54 5f  gs & __AV_FLOAT_
7b40: 31 29 09 09 5c 0a 09 20 20 20 20 3f 20 28 28 4c  1)..\..    ? ((L
7b50: 49 53 54 29 2e 66 6c 61 67 73 20 7c 3d 20 5f 5f  IST).flags |= __
7b60: 41 56 5f 46 4c 4f 41 54 5f 32 2c 09 09 09 09 5c  AV_FLOAT_2,....\
7b70: 0a 09 20 20 20 20 20 20 20 28 28 66 6c 6f 61 74  ..       ((float
7b80: 2a 29 28 4c 49 53 54 29 2e 66 6c 6f 61 74 61 72  *)(LIST).floatar
7b90: 67 29 5b 33 5d 20 3d 20 28 28 66 6c 6f 61 74 2a  g)[3] = ((float*
7ba0: 29 28 4c 49 53 54 29 2e 61 70 74 72 29 5b 2d 31  )(LIST).aptr)[-1
7bb0: 5d 20 3d 20 28 66 6c 6f 61 74 29 28 56 41 4c 29  ] = (float)(VAL)
7bc0: 29 5c 0a 09 20 20 20 20 3a 20 28 2a 28 66 6c 6f  )\..    : (*(flo
7bd0: 61 74 2a 29 26 28 4c 49 53 54 29 2e 61 70 74 72  at*)&(LIST).aptr
7be0: 5b 2d 31 5d 20 3d 20 28 66 6c 6f 61 74 29 28 56  [-1] = (float)(V
7bf0: 41 4c 29 29 29 2c 09 09 5c 0a 09 20 20 20 30 29  AL))),..\..   0)
7c00: 29 0a 0a 23 64 65 66 69 6e 65 20 61 76 5f 64 6f  )..#define av_do
7c10: 75 62 6c 65 28 4c 49 53 54 2c 56 41 4c 29 09 09  uble(LIST,VAL)..
7c20: 09 09 09 09 5c 0a 20 20 28 28 28 4c 49 53 54 29  ....\.  (((LIST)
7c30: 2e 61 70 74 72 20 3d 20 28 5f 5f 61 76 77 6f 72  .aptr = (__avwor
7c40: 64 2a 29 28 28 28 5f 5f 61 76 77 6f 72 64 29 28  d*)(((__avword)(
7c50: 4c 49 53 54 29 2e 61 70 74 72 2b 31 35 29 26 2d  LIST).aptr+15)&-
7c60: 38 29 29 09 09 5c 0a 20 20 20 3e 20 5f 5f 61 76  8))..\.   > __av
7c70: 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09 09 09  _eptr(LIST).....
7c80: 09 09 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 28 28  ..\.   ? -1 : ((
7c90: 2b 2b 28 4c 49 53 54 29 2e 61 6e 75 6d 20 3d 3d  ++(LIST).anum ==
7ca0: 20 31 09 09 09 09 09 09 5c 0a 09 20 20 20 20 3f   1......\..    ?
7cb0: 20 28 28 4c 49 53 54 29 2e 66 6c 61 67 73 20 7c   ((LIST).flags |
7cc0: 3d 20 5f 5f 41 56 5f 46 4c 4f 41 54 5f 31 2c 09  = __AV_FLOAT_1,.
7cd0: 09 09 09 5c 0a 09 20 20 20 20 20 20 20 28 4c 49  ...\..       (LI
7ce0: 53 54 29 2e 66 6c 6f 61 74 61 72 67 5b 30 5d 20  ST).floatarg[0] 
7cf0: 3d 20 28 28 64 6f 75 62 6c 65 2a 29 28 4c 49 53  = ((double*)(LIS
7d00: 54 29 2e 61 70 74 72 29 5b 2d 31 5d 20 3d 20 28  T).aptr)[-1] = (
7d10: 64 6f 75 62 6c 65 29 28 56 41 4c 29 29 5c 0a 09  double)(VAL))\..
7d20: 20 20 20 20 3a 20 28 4c 49 53 54 29 2e 61 6e 75      : (LIST).anu
7d30: 6d 20 3d 3d 20 32 20 26 26 20 28 28 4c 49 53 54  m == 2 && ((LIST
7d40: 29 2e 66 6c 61 67 73 20 26 20 5f 5f 41 56 5f 46  ).flags & __AV_F
7d50: 4c 4f 41 54 5f 31 29 09 09 5c 0a 09 20 20 20 20  LOAT_1)..\..    
7d60: 3f 20 28 28 4c 49 53 54 29 2e 66 6c 61 67 73 20  ? ((LIST).flags 
7d70: 7c 3d 20 5f 5f 41 56 5f 46 4c 4f 41 54 5f 32 2c  |= __AV_FLOAT_2,
7d80: 09 09 09 09 5c 0a 09 20 20 20 20 20 20 20 28 4c  ....\..       (L
7d90: 49 53 54 29 2e 66 6c 6f 61 74 61 72 67 5b 31 5d  IST).floatarg[1]
7da0: 20 3d 20 28 28 64 6f 75 62 6c 65 2a 29 28 4c 49   = ((double*)(LI
7db0: 53 54 29 2e 61 70 74 72 29 5b 2d 31 5d 20 3d 20  ST).aptr)[-1] = 
7dc0: 28 64 6f 75 62 6c 65 29 28 56 41 4c 29 29 5c 0a  (double)(VAL))\.
7dd0: 09 20 20 20 20 3a 20 28 28 28 64 6f 75 62 6c 65  .    : (((double
7de0: 2a 29 28 4c 49 53 54 29 2e 61 70 74 72 29 5b 2d  *)(LIST).aptr)[-
7df0: 31 5d 20 3d 20 28 64 6f 75 62 6c 65 29 28 56 41  1] = (double)(VA
7e00: 4c 29 29 29 2c 09 09 5c 0a 09 20 20 20 30 29 29  L))),..\..   0))
7e10: 0a 0a 23 65 6e 64 69 66 0a 0a 23 69 66 20 64 65  ..#endif..#if de
7e20: 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f  fined(__mipsn32_
7e30: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  _) || defined(__
7e40: 6d 69 70 73 36 34 5f 5f 29 0a 0a 2f 2a 20 55 70  mips64__)../* Up
7e50: 20 74 6f 20 38 20 6c 65 61 64 69 6e 67 20 66 6c   to 8 leading fl
7e60: 6f 61 74 20 6f 72 20 64 6f 75 62 6c 65 20 6e 6f  oat or double no
7e70: 6e 2d 76 61 72 61 72 67 73 20 61 72 67 73 20 63  n-varargs args c
7e80: 61 6e 20 62 65 20 70 61 73 73 65 64 20 69 6e 0a  an be passed in.
7e90: 20 2a 20 66 6c 6f 61 74 20 72 65 67 69 73 74 65   * float registe
7ea0: 72 73 2c 20 62 75 74 20 77 65 20 61 6c 73 6f 20  rs, but we also 
7eb0: 70 75 73 68 20 74 68 65 6d 20 69 6e 74 6f 20 74  push them into t
7ec0: 68 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67  he corresponding
7ed0: 20 69 6e 74 0a 20 2a 20 72 65 67 69 73 74 65 72   int. * register
7ee0: 73 20 69 6e 20 63 61 73 65 20 6f 66 20 76 61 72  s in case of var
7ef0: 61 72 67 73 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e  args.. */.#defin
7f00: 65 20 5f 5f 61 76 5f 66 6c 6f 61 74 28 4c 49 53  e __av_float(LIS
7f10: 54 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a 20 20  T,VAL)......\.  
7f20: 28 28 4c 49 53 54 29 2e 61 70 74 72 20 3e 3d 20  ((LIST).aptr >= 
7f30: 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29 09  __av_eptr(LIST).
7f40: 09 09 09 09 5c 0a 20 20 20 3f 20 2d 31 20 3a 20  ....\.   ? -1 : 
7f50: 28 28 28 4c 49 53 54 29 2e 61 6e 75 6d 20 3c 20  (((LIST).anum < 
7f60: 38 09 09 09 09 09 09 5c 0a 09 20 20 20 20 3f 20  8......\..    ? 
7f70: 28 28 4c 49 53 54 29 2e 66 61 72 67 5f 6d 61 73  ((LIST).farg_mas
7f80: 6b 20 7c 3d 20 28 31 20 3c 3c 20 28 4c 49 53 54  k |= (1 << (LIST
7f90: 29 2e 61 6e 75 6d 29 2c 09 09 09 5c 0a 09 20 20  ).anum),...\..  
7fa0: 20 20 20 20 20 28 4c 49 53 54 29 2e 66 61 72 67       (LIST).farg
7fb0: 5b 28 4c 49 53 54 29 2e 61 6e 75 6d 5d 20 3d 20  [(LIST).anum] = 
7fc0: 2a 28 66 6c 6f 61 74 2a 29 28 4c 49 53 54 29 2e  *(float*)(LIST).
7fd0: 61 70 74 72 20 3d 20 28 66 6c 6f 61 74 29 28 56  aptr = (float)(V
7fe0: 41 4c 29 29 20 5c 0a 09 20 20 20 20 3a 20 28 2a  AL)) \..    : (*
7ff0: 28 66 6c 6f 61 74 2a 29 28 4c 49 53 54 29 2e 61  (float*)(LIST).a
8000: 70 74 72 20 3d 20 28 66 6c 6f 61 74 29 28 56 41  ptr = (float)(VA
8010: 4c 29 29 29 2c 09 09 09 5c 0a 09 20 20 20 28 4c  L))),...\..   (L
8020: 49 53 54 29 2e 61 6e 75 6d 2b 2b 2c 09 09 09 09  IST).anum++,....
8030: 09 09 5c 0a 09 20 20 20 28 4c 49 53 54 29 2e 61  ..\..   (LIST).a
8040: 70 74 72 2b 2b 2c 09 09 09 09 09 09 5c 0a 09 20  ptr++,......\.. 
8050: 20 20 30 29 29 0a 0a 23 64 65 66 69 6e 65 20 61    0))..#define a
8060: 76 5f 64 6f 75 62 6c 65 28 4c 49 53 54 2c 56 41  v_double(LIST,VA
8070: 4c 29 09 09 09 09 09 09 5c 0a 20 20 28 28 4c 49  L)......\.  ((LI
8080: 53 54 29 2e 61 70 74 72 20 3e 3d 20 5f 5f 61 76  ST).aptr >= __av
8090: 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09 09 09  _eptr(LIST).....
80a0: 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 28 28 28 4c  \.   ? -1 : (((L
80b0: 49 53 54 29 2e 61 6e 75 6d 20 3c 20 38 20 26 26  IST).anum < 8 &&
80c0: 20 28 28 4c 49 53 54 29 2e 64 61 72 67 5f 6d 61   ((LIST).darg_ma
80d0: 73 6b 20 7c 3d 20 28 31 20 3c 3c 20 28 4c 49 53  sk |= (1 << (LIS
80e0: 54 29 2e 61 6e 75 6d 29 29 29 2c 20 5c 0a 09 20  T).anum))), \.. 
80f0: 20 20 2a 28 64 6f 75 62 6c 65 2a 29 28 4c 49 53    *(double*)(LIS
8100: 54 29 2e 61 70 74 72 20 3d 20 28 64 6f 75 62 6c  T).aptr = (doubl
8110: 65 29 28 56 41 4c 29 2c 09 09 09 5c 0a 09 20 20  e)(VAL),...\..  
8120: 20 28 4c 49 53 54 29 2e 61 6e 75 6d 2b 2b 2c 09   (LIST).anum++,.
8130: 09 09 09 09 09 5c 0a 09 20 20 20 28 4c 49 53 54  .....\..   (LIST
8140: 29 2e 61 70 74 72 2b 2b 2c 09 09 09 09 09 09 5c  ).aptr++,......\
8150: 0a 09 20 20 20 30 29 29 0a 0a 23 65 6e 64 69 66  ..   0))..#endif
8160: 0a 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  ..#if defined(__
8170: 73 70 61 72 63 36 34 5f 5f 29 0a 0a 2f 2a 20 55  sparc64__)../* U
8180: 70 20 74 6f 20 31 36 20 6c 65 61 64 69 6e 67 20  p to 16 leading 
8190: 66 6c 6f 61 74 20 6f 72 20 64 6f 75 62 6c 65 20  float or double 
81a0: 6e 6f 6e 2d 76 61 72 61 72 67 73 20 61 72 67 73  non-varargs args
81b0: 20 63 61 6e 20 62 65 20 70 61 73 73 65 64 20 69   can be passed i
81c0: 6e 0a 20 2a 20 66 6c 6f 61 74 20 72 65 67 69 73  n. * float regis
81d0: 74 65 72 73 2c 20 62 75 74 20 77 65 20 61 6c 73  ters, but we als
81e0: 6f 20 70 75 73 68 20 74 68 65 6d 20 69 6e 74 6f  o push them into
81f0: 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e 64 69   the correspondi
8200: 6e 67 20 69 6e 74 0a 20 2a 20 72 65 67 69 73 74  ng int. * regist
8210: 65 72 73 20 69 6e 20 63 61 73 65 20 6f 66 20 76  ers in case of v
8220: 61 72 61 72 67 73 2e 0a 20 2a 2f 0a 23 64 65 66  arargs.. */.#def
8230: 69 6e 65 20 5f 5f 61 76 5f 66 6c 6f 61 74 28 4c  ine __av_float(L
8240: 49 53 54 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a  IST,VAL)......\.
8250: 20 20 28 28 4c 49 53 54 29 2e 61 70 74 72 20 3e    ((LIST).aptr >
8260: 3d 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54  = __av_eptr(LIST
8270: 29 09 09 09 09 09 5c 0a 20 20 20 3f 20 2d 31 20  ).....\.   ? -1 
8280: 3a 20 28 28 28 4c 49 53 54 29 2e 61 6e 75 6d 20  : (((LIST).anum 
8290: 3c 20 31 36 20 26 26 20 28 28 4c 49 53 54 29 2e  < 16 && ((LIST).
82a0: 66 61 72 67 5f 6d 61 73 6b 20 7c 3d 20 28 31 20  farg_mask |= (1 
82b0: 3c 3c 20 28 4c 49 53 54 29 2e 61 6e 75 6d 29 29  << (LIST).anum))
82c0: 29 2c 20 5c 0a 09 20 20 20 28 2a 28 66 6c 6f 61  ), \..   (*(floa
82d0: 74 2a 29 28 4c 49 53 54 29 2e 61 70 74 72 20 3d  t*)(LIST).aptr =
82e0: 20 28 66 6c 6f 61 74 29 28 56 41 4c 29 29 2c 09   (float)(VAL)),.
82f0: 09 09 5c 0a 09 20 20 20 28 4c 49 53 54 29 2e 61  ..\..   (LIST).a
8300: 6e 75 6d 2b 2b 2c 09 09 09 09 09 09 5c 0a 09 20  num++,......\.. 
8310: 20 20 28 4c 49 53 54 29 2e 61 70 74 72 2b 2b 2c    (LIST).aptr++,
8320: 09 09 09 09 09 09 5c 0a 09 20 20 20 30 29 29 0a  ......\..   0)).
8330: 0a 23 64 65 66 69 6e 65 20 61 76 5f 64 6f 75 62  .#define av_doub
8340: 6c 65 28 4c 49 53 54 2c 56 41 4c 29 09 09 09 09  le(LIST,VAL)....
8350: 09 09 5c 0a 20 20 28 28 4c 49 53 54 29 2e 61 70  ..\.  ((LIST).ap
8360: 74 72 20 3e 3d 20 5f 5f 61 76 5f 65 70 74 72 28  tr >= __av_eptr(
8370: 4c 49 53 54 29 09 09 09 09 09 5c 0a 20 20 20 3f  LIST).....\.   ?
8380: 20 2d 31 20 3a 20 28 28 28 4c 49 53 54 29 2e 61   -1 : (((LIST).a
8390: 6e 75 6d 20 3c 20 31 36 20 26 26 20 28 28 4c 49  num < 16 && ((LI
83a0: 53 54 29 2e 64 61 72 67 5f 6d 61 73 6b 20 7c 3d  ST).darg_mask |=
83b0: 20 28 31 20 3c 3c 20 28 4c 49 53 54 29 2e 61 6e   (1 << (LIST).an
83c0: 75 6d 29 29 29 2c 20 5c 0a 09 20 20 20 2a 28 64  um))), \..   *(d
83d0: 6f 75 62 6c 65 2a 29 28 4c 49 53 54 29 2e 61 70  ouble*)(LIST).ap
83e0: 74 72 20 3d 20 28 64 6f 75 62 6c 65 29 28 56 41  tr = (double)(VA
83f0: 4c 29 2c 09 09 09 5c 0a 09 20 20 20 28 4c 49 53  L),...\..   (LIS
8400: 54 29 2e 61 6e 75 6d 2b 2b 2c 09 09 09 09 09 09  T).anum++,......
8410: 5c 0a 09 20 20 20 28 4c 49 53 54 29 2e 61 70 74  \..   (LIST).apt
8420: 72 2b 2b 2c 09 09 09 09 09 09 5c 0a 09 20 20 20  r++,......\..   
8430: 30 29 29 0a 0a 23 65 6e 64 69 66 0a 0a 23 69 66  0))..#endif..#if
8440: 20 64 65 66 69 6e 65 64 28 5f 5f 61 6c 70 68 61   defined(__alpha
8450: 5f 5f 29 0a 0a 23 64 65 66 69 6e 65 20 61 76 5f  __)..#define av_
8460: 64 6f 75 62 6c 65 28 4c 49 53 54 2c 56 41 4c 29  double(LIST,VAL)
8470: 09 09 09 09 09 09 5c 0a 20 20 28 2b 2b 28 4c 49  ......\.  (++(LI
8480: 53 54 29 2e 61 70 74 72 20 3e 20 5f 5f 61 76 5f  ST).aptr > __av_
8490: 65 70 74 72 28 4c 49 53 54 29 09 09 09 09 09 5c  eptr(LIST).....\
84a0: 0a 20 20 20 3f 20 2d 31 20 3a 20 28 28 28 64 6f  .   ? -1 : (((do
84b0: 75 62 6c 65 2a 29 28 4c 49 53 54 29 2e 61 70 74  uble*)(LIST).apt
84c0: 72 29 5b 2d 31 5d 20 3d 20 28 64 6f 75 62 6c 65  r)[-1] = (double
84d0: 29 28 56 41 4c 29 2c 20 30 29 29 0a 0a 23 64 65  )(VAL), 0))..#de
84e0: 66 69 6e 65 20 5f 5f 61 76 5f 66 6c 6f 61 74 28  fine __av_float(
84f0: 4c 49 53 54 2c 56 41 4c 29 09 09 09 09 09 09 5c  LIST,VAL)......\
8500: 0a 20 20 28 2b 2b 28 4c 49 53 54 29 2e 61 70 74  .  (++(LIST).apt
8510: 72 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49  r > __av_eptr(LI
8520: 53 54 29 09 09 09 09 09 5c 0a 20 20 20 3f 20 2d  ST).....\.   ? -
8530: 31 09 09 09 09 09 09 09 09 09 5c 0a 20 20 20 3a  1.........\.   :
8540: 20 28 28 28 4c 49 53 54 29 2e 61 70 74 72 20 3e   (((LIST).aptr >
8550: 20 26 28 4c 49 53 54 29 2e 61 72 67 73 5b 36 5d   &(LIST).args[6]
8560: 09 09 09 09 09 5c 0a 20 20 20 20 20 20 20 3f 20  .....\.       ? 
8570: 2f 2a 20 54 68 65 73 65 20 61 72 67 73 20 77 69  /* These args wi
8580: 6c 6c 20 62 65 20 66 65 74 63 68 65 64 20 66 72  ll be fetched fr
8590: 6f 6d 20 6d 65 6d 6f 72 79 20 75 73 69 6e 67 20  om memory using 
85a0: 22 6c 64 73 22 20 69 6e 73 74 72 75 63 74 69 6f  "lds" instructio
85b0: 6e 73 20 2a 2f 20 5c 0a 09 20 2f 2a 20 74 68 65  ns */ \.. /* the
85c0: 72 65 66 6f 72 65 20 73 74 6f 72 65 20 74 68 65  refore store the
85d0: 6d 20 61 73 20 66 6c 6f 61 74 73 20 2a 2f 09 09  m as floats */..
85e0: 09 09 5c 0a 09 20 28 2a 28 66 6c 6f 61 74 2a 29  ..\.. (*(float*)
85f0: 28 28 4c 49 53 54 29 2e 61 70 74 72 2d 31 29 20  ((LIST).aptr-1) 
8600: 3d 20 28 66 6c 6f 61 74 29 28 56 41 4c 29 29 09  = (float)(VAL)).
8610: 09 09 5c 0a 20 20 20 20 20 20 20 3a 20 2f 2a 20  ..\.       : /* 
8620: 54 68 65 20 66 69 72 73 74 20 36 20 61 72 67 73  The first 6 args
8630: 20 77 69 6c 6c 20 62 65 20 70 75 74 20 69 6e 74   will be put int
8640: 6f 20 72 65 67 69 73 74 65 72 73 20 62 79 20 22  o registers by "
8650: 6c 64 74 22 20 69 6e 73 74 72 75 63 74 69 6f 6e  ldt" instruction
8660: 73 20 2a 2f 20 5c 0a 09 20 2f 2a 20 28 73 65 65  s */ \.. /* (see
8670: 20 61 76 63 61 6c 6c 2d 61 6c 70 68 61 2e 63 21   avcall-alpha.c!
8680: 29 2e 20 54 68 65 72 65 66 6f 72 65 20 73 74 6f  ). Therefore sto
8690: 72 65 20 74 68 65 6d 20 61 73 20 64 6f 75 62 6c  re them as doubl
86a0: 65 73 2e 20 2a 2f 09 5c 0a 09 20 2f 2a 20 57 68  es. */.\.. /* Wh
86b0: 65 6e 20 76 69 65 77 65 64 20 61 73 20 66 6c 6f  en viewed as flo
86c0: 61 74 73 2c 20 74 68 65 20 76 61 6c 75 65 20 77  ats, the value w
86d0: 69 6c 6c 20 62 65 20 74 68 65 20 63 6f 72 72 65  ill be the corre
86e0: 63 74 20 6f 6e 65 2e 20 2a 2f 5c 0a 09 20 28 2a  ct one. */\.. (*
86f0: 28 64 6f 75 62 6c 65 2a 29 28 28 4c 49 53 54 29  (double*)((LIST)
8700: 2e 61 70 74 72 2d 31 29 20 3d 20 28 64 6f 75 62  .aptr-1) = (doub
8710: 6c 65 29 28 66 6c 6f 61 74 29 28 56 41 4c 29 29  le)(float)(VAL))
8720: 09 09 5c 0a 20 20 20 20 20 29 2c 20 30 29 29 0a  ..\.     ), 0)).
8730: 0a 23 65 6e 64 69 66 0a 0a 23 69 66 20 64 65 66  .#endif..#if def
8740: 69 6e 65 64 28 5f 5f 68 70 70 61 5f 5f 29 0a 0a  ined(__hppa__)..
8750: 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 66 6c 6f  #define __av_flo
8760: 61 74 28 4c 49 53 54 2c 56 41 4c 29 09 09 09 09  at(LIST,VAL)....
8770: 09 09 5c 0a 20 20 28 2d 2d 28 4c 49 53 54 29 2e  ..\.  (--(LIST).
8780: 61 70 74 72 20 3c 20 5f 5f 61 76 5f 65 70 74 72  aptr < __av_eptr
8790: 28 4c 49 53 54 29 09 09 09 09 09 5c 0a 20 20 20  (LIST).....\.   
87a0: 3f 20 2d 31 20 3a 20 28 2a 28 66 6c 6f 61 74 2a  ? -1 : (*(float*
87b0: 29 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 28  )(LIST).aptr = (
87c0: 66 6c 6f 61 74 29 28 56 41 4c 29 2c 20 30 29 29  float)(VAL), 0))
87d0: 0a 0a 23 64 65 66 69 6e 65 20 61 76 5f 64 6f 75  ..#define av_dou
87e0: 62 6c 65 28 4c 49 53 54 2c 56 41 4c 29 09 09 09  ble(LIST,VAL)...
87f0: 09 09 09 5c 0a 20 20 28 28 28 4c 49 53 54 29 2e  ...\.  (((LIST).
8800: 61 70 74 72 20 3d 20 28 5f 5f 61 76 77 6f 72 64  aptr = (__avword
8810: 2a 29 28 28 28 6c 6f 6e 67 29 28 4c 49 53 54 29  *)(((long)(LIST)
8820: 2e 61 70 74 72 2d 73 69 7a 65 6f 66 28 64 6f 75  .aptr-sizeof(dou
8830: 62 6c 65 29 29 20 26 20 2d 28 6c 6f 6e 67 29 73  ble)) & -(long)s
8840: 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29 29 29 20  izeof(double))) 
8850: 5c 0a 20 20 20 20 3c 20 5f 5f 61 76 5f 65 70 74  \.    < __av_ept
8860: 72 28 4c 49 53 54 29 09 09 09 09 09 09 09 5c 0a  r(LIST).......\.
8870: 20 20 20 20 3f 20 2d 31 20 3a 20 28 2a 28 64 6f      ? -1 : (*(do
8880: 75 62 6c 65 2a 29 28 4c 49 53 54 29 2e 61 70 74  uble*)(LIST).apt
8890: 72 20 3d 20 28 64 6f 75 62 6c 65 29 28 56 41 4c  r = (double)(VAL
88a0: 29 2c 20 30 29 29 0a 0a 23 65 6e 64 69 66 0a 0a  ), 0))..#endif..
88b0: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 72 73  #if defined(__rs
88c0: 36 30 30 30 5f 5f 29 20 26 26 20 28 64 65 66 69  6000__) && (defi
88d0: 6e 65 64 28 5f 41 49 58 29 20 7c 7c 20 28 64 65  ned(_AIX) || (de
88e0: 66 69 6e 65 64 28 5f 5f 4d 41 43 48 5f 5f 29 20  fined(__MACH__) 
88f0: 26 26 20 64 65 66 69 6e 65 64 28 5f 5f 41 50 50  && defined(__APP
8900: 4c 45 5f 5f 29 29 29 0a 0a 2f 2a 20 55 70 20 74  LE__)))../* Up t
8910: 6f 20 31 33 20 66 6c 6f 61 74 20 6f 72 20 64 6f  o 13 float or do
8920: 75 62 6c 65 20 6e 6f 6e 2d 76 61 72 61 72 67 73  uble non-varargs
8930: 20 61 72 67 73 20 63 61 6e 20 62 65 20 70 61 73   args can be pas
8940: 73 65 64 20 69 6e 0a 20 2a 20 66 6c 6f 61 74 20  sed in. * float 
8950: 72 65 67 69 73 74 65 72 73 2c 20 62 75 74 20 77  registers, but w
8960: 65 20 61 6c 73 6f 20 70 75 73 68 20 74 68 65 6d  e also push them
8970: 20 69 6e 74 6f 20 74 68 65 20 63 6f 72 72 65 73   into the corres
8980: 70 6f 6e 64 69 6e 67 20 69 6e 74 0a 20 2a 20 72  ponding int. * r
8990: 65 67 69 73 74 65 72 73 20 69 6e 20 63 61 73 65  egisters in case
89a0: 20 6f 66 20 76 61 72 61 72 67 73 2e 0a 20 2a 2f   of varargs.. */
89b0: 0a 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 66  ..#define __av_f
89c0: 6c 6f 61 74 28 4c 49 53 54 2c 56 41 4c 29 09 09  loat(LIST,VAL)..
89d0: 09 09 09 09 5c 0a 20 20 28 2b 2b 28 4c 49 53 54  ....\.  (++(LIST
89e0: 29 2e 61 70 74 72 20 3e 20 5f 5f 61 76 5f 65 70  ).aptr > __av_ep
89f0: 74 72 28 4c 49 53 54 29 09 09 09 09 09 5c 0a 20  tr(LIST).....\. 
8a00: 20 20 3f 20 2d 31 20 3a 20 28 28 28 66 6c 6f 61    ? -1 : (((floa
8a10: 74 2a 29 28 4c 49 53 54 29 2e 61 70 74 72 29 5b  t*)(LIST).aptr)[
8a20: 2d 31 5d 20 3d 20 28 66 6c 6f 61 74 29 28 56 41  -1] = (float)(VA
8a30: 4c 29 2c 09 09 09 5c 0a 09 20 20 20 28 4c 49 53  L),...\..   (LIS
8a40: 54 29 2e 66 61 70 74 72 20 3c 20 26 28 4c 49 53  T).faptr < &(LIS
8a50: 54 29 2e 66 61 72 67 73 5b 31 33 5d 20 26 26 09  T).fargs[13] &&.
8a60: 09 09 09 5c 0a 09 09 28 2a 28 4c 49 53 54 29 2e  ...\...(*(LIST).
8a70: 66 61 70 74 72 2b 2b 20 3d 20 28 64 6f 75 62 6c  faptr++ = (doubl
8a80: 65 29 28 66 6c 6f 61 74 29 28 56 41 4c 29 29 2c  e)(float)(VAL)),
8a90: 09 09 5c 0a 09 20 20 20 30 29 29 0a 0a 23 64 65  ..\..   0))..#de
8aa0: 66 69 6e 65 20 61 76 5f 64 6f 75 62 6c 65 28 4c  fine av_double(L
8ab0: 49 53 54 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a  IST,VAL)......\.
8ac0: 20 20 20 28 28 28 4c 49 53 54 29 2e 61 70 74 72     (((LIST).aptr
8ad0: 20 2b 3d 20 32 29 20 3e 20 5f 5f 61 76 5f 65 70   += 2) > __av_ep
8ae0: 74 72 28 4c 49 53 54 29 09 09 09 09 5c 0a 20 20  tr(LIST)....\.  
8af0: 20 20 3f 20 2d 31 20 3a 09 09 09 09 09 09 09 09    ? -1 :........
8b00: 5c 0a 20 20 20 20 28 28 4c 49 53 54 29 2e 74 6d  \.    ((LIST).tm
8b10: 70 2e 5f 64 6f 75 62 6c 65 20 3d 20 28 64 6f 75  p._double = (dou
8b20: 62 6c 65 29 28 56 41 4c 29 2c 09 09 09 09 5c 0a  ble)(VAL),....\.
8b30: 20 20 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72       (LIST).aptr
8b40: 5b 2d 32 5d 20 3d 20 28 4c 49 53 54 29 2e 74 6d  [-2] = (LIST).tm
8b50: 70 2e 77 6f 72 64 73 5b 30 5d 2c 09 09 09 09 5c  p.words[0],....\
8b60: 0a 20 20 20 20 20 28 4c 49 53 54 29 2e 61 70 74  .     (LIST).apt
8b70: 72 5b 2d 31 5d 20 3d 20 28 4c 49 53 54 29 2e 74  r[-1] = (LIST).t
8b80: 6d 70 2e 77 6f 72 64 73 5b 31 5d 2c 09 09 09 09  mp.words[1],....
8b90: 5c 0a 20 20 20 20 20 28 4c 49 53 54 29 2e 66 61  \.     (LIST).fa
8ba0: 70 74 72 20 3c 20 26 28 4c 49 53 54 29 2e 66 61  ptr < &(LIST).fa
8bb0: 72 67 73 5b 31 33 5d 20 26 26 09 09 09 09 5c 0a  rgs[13] &&....\.
8bc0: 09 28 2a 28 4c 49 53 54 29 2e 66 61 70 74 72 2b  .(*(LIST).faptr+
8bd0: 2b 20 3d 20 28 4c 49 53 54 29 2e 74 6d 70 2e 5f  + = (LIST).tmp._
8be0: 64 6f 75 62 6c 65 29 2c 09 09 09 09 5c 0a 20 20  double),....\.  
8bf0: 20 20 20 30 29 29 0a 0a 23 65 6e 64 69 66 0a 0a     0))..#endif..
8c00: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 72 73  #if defined(__rs
8c10: 36 30 30 30 5f 5f 29 20 26 26 20 21 28 64 65 66  6000__) && !(def
8c20: 69 6e 65 64 28 5f 41 49 58 29 20 7c 7c 20 28 64  ined(_AIX) || (d
8c30: 65 66 69 6e 65 64 28 5f 5f 4d 41 43 48 5f 5f 29  efined(__MACH__)
8c40: 20 26 26 20 64 65 66 69 6e 65 64 28 5f 5f 41 50   && defined(__AP
8c50: 50 4c 45 5f 5f 29 29 29 0a 0a 2f 2a 20 55 70 20  PLE__)))../* Up 
8c60: 74 6f 20 38 20 66 6c 6f 61 74 20 6f 72 20 64 6f  to 8 float or do
8c70: 75 62 6c 65 20 6e 6f 6e 2d 76 61 72 61 72 67 73  uble non-varargs
8c80: 20 61 72 67 73 20 63 61 6e 20 62 65 20 70 61 73   args can be pas
8c90: 73 65 64 20 69 6e 0a 20 2a 20 66 6c 6f 61 74 20  sed in. * float 
8ca0: 72 65 67 69 73 74 65 72 73 2c 20 77 69 74 68 6f  registers, witho
8cb0: 75 74 20 6f 63 63 75 70 79 69 6e 67 20 73 70 61  ut occupying spa
8cc0: 63 65 20 69 6e 20 74 68 65 20 67 65 6e 65 72 61  ce in the genera
8cd0: 6c 20 72 65 67 69 73 74 65 72 73 2e 0a 20 2a 2f  l registers.. */
8ce0: 0a 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 66  ..#define __av_f
8cf0: 6c 6f 61 74 28 4c 49 53 54 2c 56 41 4c 29 09 09  loat(LIST,VAL)..
8d00: 09 09 09 09 5c 0a 20 20 28 28 4c 49 53 54 29 2e  ....\.  ((LIST).
8d10: 66 61 70 74 72 20 3c 20 26 28 4c 49 53 54 29 2e  faptr < &(LIST).
8d20: 66 61 72 67 73 5b 38 5d 09 09 09 09 09 5c 0a 20  fargs[8].....\. 
8d30: 20 20 3f 20 28 28 2a 28 4c 49 53 54 29 2e 66 61    ? ((*(LIST).fa
8d40: 70 74 72 2b 2b 20 3d 20 28 64 6f 75 62 6c 65 29  ptr++ = (double)
8d50: 28 66 6c 6f 61 74 29 28 56 41 4c 29 29 2c 20 30  (float)(VAL)), 0
8d60: 29 09 09 09 5c 0a 20 20 20 3a 20 28 2b 2b 28 4c  )...\.   : (++(L
8d70: 49 53 54 29 2e 61 70 74 72 20 3e 20 5f 5f 61 76  IST).aptr > __av
8d80: 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09 09 09  _eptr(LIST).....
8d90: 5c 0a 20 20 20 20 20 20 3f 20 2d 31 20 3a 20 28  \.      ? -1 : (
8da0: 28 28 66 6c 6f 61 74 2a 29 28 4c 49 53 54 29 2e  ((float*)(LIST).
8db0: 61 70 74 72 29 5b 2d 31 5d 20 3d 20 28 66 6c 6f  aptr)[-1] = (flo
8dc0: 61 74 29 28 56 41 4c 29 2c 20 30 29 29 29 0a 0a  at)(VAL), 0)))..
8dd0: 23 64 65 66 69 6e 65 20 61 76 5f 64 6f 75 62 6c  #define av_doubl
8de0: 65 28 4c 49 53 54 2c 56 41 4c 29 09 09 09 09 09  e(LIST,VAL).....
8df0: 09 5c 0a 20 20 28 28 4c 49 53 54 29 2e 66 61 70  .\.  ((LIST).fap
8e00: 74 72 20 3c 20 26 28 4c 49 53 54 29 2e 66 61 72  tr < &(LIST).far
8e10: 67 73 5b 38 5d 09 09 09 09 09 5c 0a 20 20 20 3f  gs[8].....\.   ?
8e20: 20 28 28 2a 28 4c 49 53 54 29 2e 66 61 70 74 72   ((*(LIST).faptr
8e30: 2b 2b 20 3d 20 28 64 6f 75 62 6c 65 29 28 56 41  ++ = (double)(VA
8e40: 4c 29 29 2c 20 30 29 09 09 09 09 5c 0a 20 20 20  L)), 0)....\.   
8e50: 3a 20 28 28 28 4c 49 53 54 29 2e 61 70 74 72 20  : (((LIST).aptr 
8e60: 2b 3d 20 32 29 20 3e 20 5f 5f 61 76 5f 65 70 74  += 2) > __av_ept
8e70: 72 28 4c 49 53 54 29 09 09 09 09 5c 0a 20 20 20  r(LIST)....\.   
8e80: 20 20 20 3f 20 2d 31 20 3a 09 09 09 09 09 09 09     ? -1 :.......
8e90: 09 5c 0a 20 20 20 20 20 20 28 28 4c 49 53 54 29  .\.      ((LIST)
8ea0: 2e 74 6d 70 2e 5f 64 6f 75 62 6c 65 20 3d 20 28  .tmp._double = (
8eb0: 64 6f 75 62 6c 65 29 28 56 41 4c 29 2c 09 09 09  double)(VAL),...
8ec0: 09 5c 0a 20 20 20 20 20 20 20 28 4c 49 53 54 29  .\.       (LIST)
8ed0: 2e 61 70 74 72 5b 2d 32 5d 20 3d 20 28 4c 49 53  .aptr[-2] = (LIS
8ee0: 54 29 2e 74 6d 70 2e 77 6f 72 64 73 5b 30 5d 2c  T).tmp.words[0],
8ef0: 09 09 09 09 5c 0a 20 20 20 20 20 20 20 28 4c 49  ....\.       (LI
8f00: 53 54 29 2e 61 70 74 72 5b 2d 31 5d 20 3d 20 28  ST).aptr[-1] = (
8f10: 4c 49 53 54 29 2e 74 6d 70 2e 77 6f 72 64 73 5b  LIST).tmp.words[
8f20: 31 5d 2c 09 09 09 09 5c 0a 20 20 20 20 20 20 20  1],....\.       
8f30: 30 29 29 29 0a 0a 23 65 6e 64 69 66 0a 0a 23 69  0)))..#endif..#i
8f40: 66 20 64 65 66 69 6e 65 64 28 5f 5f 73 33 39 30  f defined(__s390
8f50: 5f 5f 29 0a 0a 2f 2a 20 55 70 20 74 6f 20 32 20  __)../* Up to 2 
8f60: 66 6c 6f 61 74 20 6f 72 20 64 6f 75 62 6c 65 20  float or double 
8f70: 6e 6f 6e 2d 76 61 72 61 72 67 73 20 61 72 67 73  non-varargs args
8f80: 20 63 61 6e 20 62 65 20 70 61 73 73 65 64 20 69   can be passed i
8f90: 6e 0a 20 2a 20 66 6c 6f 61 74 20 72 65 67 69 73  n. * float regis
8fa0: 74 65 72 73 2c 20 77 69 74 68 6f 75 74 20 6f 63  ters, without oc
8fb0: 63 75 70 79 69 6e 67 20 73 70 61 63 65 20 69 6e  cupying space in
8fc0: 20 74 68 65 20 67 65 6e 65 72 61 6c 20 72 65 67   the general reg
8fd0: 69 73 74 65 72 73 2e 0a 20 2a 2f 0a 0a 23 64 65  isters.. */..#de
8fe0: 66 69 6e 65 20 5f 5f 61 76 5f 66 6c 6f 61 74 28  fine __av_float(
8ff0: 4c 49 53 54 2c 56 41 4c 29 09 09 09 09 09 09 5c  LIST,VAL)......\
9000: 0a 20 20 28 28 4c 49 53 54 29 2e 66 61 70 74 72  .  ((LIST).faptr
9010: 20 3c 20 26 28 4c 49 53 54 29 2e 66 61 72 67 73   < &(LIST).fargs
9020: 5b 32 5d 09 09 09 09 09 5c 0a 20 20 20 3f 20 28  [2].....\.   ? (
9030: 4c 49 53 54 29 2e 64 61 70 74 72 2b 2b 2c 20 2a  LIST).daptr++, *
9040: 28 4c 49 53 54 29 2e 66 61 72 67 73 75 73 65 64  (LIST).fargsused
9050: 70 74 72 2b 2b 20 3d 20 31 2c 20 2a 28 4c 49 53  ptr++ = 1, *(LIS
9060: 54 29 2e 64 61 72 67 73 75 73 65 64 70 74 72 2b  T).dargsusedptr+
9070: 2b 20 3d 20 30 2c 20 28 28 2a 28 4c 49 53 54 29  + = 0, ((*(LIST)
9080: 2e 66 61 70 74 72 2b 2b 20 3d 20 28 66 6c 6f 61  .faptr++ = (floa
9090: 74 29 28 56 41 4c 29 29 2c 20 30 29 09 09 5c 0a  t)(VAL)), 0)..\.
90a0: 20 20 20 3a 20 28 2b 2b 28 4c 49 53 54 29 2e 61     : (++(LIST).a
90b0: 70 74 72 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28  ptr > __av_eptr(
90c0: 4c 49 53 54 29 09 09 09 09 09 5c 0a 20 20 20 20  LIST).....\.    
90d0: 20 20 3f 20 2d 31 20 3a 20 28 28 4c 49 53 54 29    ? -1 : ((LIST)
90e0: 2e 66 61 72 67 77 6f 72 64 73 2b 2b 2c 20 28 28  .fargwords++, ((
90f0: 66 6c 6f 61 74 2a 29 28 4c 49 53 54 29 2e 61 70  float*)(LIST).ap
9100: 74 72 29 5b 2d 31 5d 20 3d 20 28 66 6c 6f 61 74  tr)[-1] = (float
9110: 29 28 56 41 4c 29 2c 20 30 29 29 29 0a 0a 23 64  )(VAL), 0)))..#d
9120: 65 66 69 6e 65 20 61 76 5f 64 6f 75 62 6c 65 28  efine av_double(
9130: 4c 49 53 54 2c 56 41 4c 29 09 09 09 09 09 09 5c  LIST,VAL)......\
9140: 0a 20 20 28 28 4c 49 53 54 29 2e 64 61 70 74 72  .  ((LIST).daptr
9150: 20 3c 20 26 28 4c 49 53 54 29 2e 64 61 72 67 73   < &(LIST).dargs
9160: 5b 32 5d 09 09 09 09 09 5c 0a 20 20 20 3f 20 28  [2].....\.   ? (
9170: 4c 49 53 54 29 2e 66 61 70 74 72 2b 2b 2c 20 2a  LIST).faptr++, *
9180: 28 4c 49 53 54 29 2e 64 61 72 67 73 75 73 65 64  (LIST).dargsused
9190: 70 74 72 2b 2b 20 3d 20 31 2c 20 2a 28 4c 49 53  ptr++ = 1, *(LIS
91a0: 54 29 2e 66 61 72 67 73 75 73 65 64 70 74 72 2b  T).fargsusedptr+
91b0: 2b 20 3d 20 30 2c 20 28 28 2a 28 4c 49 53 54 29  + = 0, ((*(LIST)
91c0: 2e 64 61 70 74 72 2b 2b 20 3d 20 28 64 6f 75 62  .daptr++ = (doub
91d0: 6c 65 29 28 56 41 4c 29 29 2c 20 30 29 09 09 5c  le)(VAL)), 0)..\
91e0: 0a 20 20 20 3a 20 28 28 28 4c 49 53 54 29 2e 61  .   : (((LIST).a
91f0: 70 74 72 20 2b 3d 20 32 29 20 3e 20 5f 5f 61 76  ptr += 2) > __av
9200: 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09 09 5c  _eptr(LIST)....\
9210: 0a 20 20 20 20 20 20 3f 20 2d 31 20 3a 09 09 09  .      ? -1 :...
9220: 09 09 09 09 09 5c 0a 20 20 20 20 20 20 28 28 4c  .....\.      ((L
9230: 49 53 54 29 2e 66 61 72 67 77 6f 72 64 73 2b 3d  IST).fargwords+=
9240: 32 2c 20 28 4c 49 53 54 29 2e 74 6d 70 2e 5f 64  2, (LIST).tmp._d
9250: 6f 75 62 6c 65 20 3d 20 28 64 6f 75 62 6c 65 29  ouble = (double)
9260: 28 56 41 4c 29 2c 09 09 09 5c 0a 20 20 20 20 20  (VAL),...\.     
9270: 20 20 28 4c 49 53 54 29 2e 61 70 74 72 5b 2d 32    (LIST).aptr[-2
9280: 5d 20 3d 20 28 4c 49 53 54 29 2e 74 6d 70 2e 77  ] = (LIST).tmp.w
9290: 6f 72 64 73 5b 30 5d 2c 09 09 09 09 5c 0a 20 20  ords[0],....\.  
92a0: 20 20 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72       (LIST).aptr
92b0: 5b 2d 31 5d 20 3d 20 28 4c 49 53 54 29 2e 74 6d  [-1] = (LIST).tm
92c0: 70 2e 77 6f 72 64 73 5b 31 5d 2c 09 09 09 09 5c  p.words[1],....\
92d0: 0a 20 20 20 20 20 20 20 30 29 29 29 0a 0a 23 65  .       0)))..#e
92e0: 6e 64 69 66 0a 0a 23 69 66 20 64 65 66 69 6e 65  ndif..#if define
92f0: 64 28 5f 5f 6d 38 38 6b 5f 5f 29 0a 0a 23 64 65  d(__m88k__)..#de
9300: 66 69 6e 65 20 5f 5f 61 76 5f 66 6c 6f 61 74 28  fine __av_float(
9310: 4c 49 53 54 2c 56 41 4c 29 09 09 09 09 09 09 5c  LIST,VAL)......\
9320: 0a 20 20 28 2b 2b 28 4c 49 53 54 29 2e 61 70 74  .  (++(LIST).apt
9330: 72 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49  r > __av_eptr(LI
9340: 53 54 29 09 09 09 09 09 5c 0a 20 20 20 3f 20 2d  ST).....\.   ? -
9350: 31 20 3a 20 28 28 28 66 6c 6f 61 74 2a 29 28 4c  1 : (((float*)(L
9360: 49 53 54 29 2e 61 70 74 72 29 5b 2d 31 5d 20 3d  IST).aptr)[-1] =
9370: 20 28 66 6c 6f 61 74 29 28 56 41 4c 29 2c 20 30   (float)(VAL), 0
9380: 29 29 0a 0a 23 64 65 66 69 6e 65 20 61 76 5f 64  ))..#define av_d
9390: 6f 75 62 6c 65 28 4c 49 53 54 2c 56 41 4c 29 09  ouble(LIST,VAL).
93a0: 09 09 09 09 09 5c 0a 20 20 20 28 28 28 4c 49 53  .....\.   (((LIS
93b0: 54 29 2e 61 70 74 72 20 3d 20 28 5f 5f 61 76 77  T).aptr = (__avw
93c0: 6f 72 64 2a 29 28 28 28 6c 6f 6e 67 29 28 4c 49  ord*)(((long)(LI
93d0: 53 54 29 2e 61 70 74 72 2b 73 69 7a 65 6f 66 28  ST).aptr+sizeof(
93e0: 64 6f 75 62 6c 65 29 2b 73 69 7a 65 6f 66 28 64  double)+sizeof(d
93f0: 6f 75 62 6c 65 29 2d 31 29 20 26 20 2d 28 6c 6f  ouble)-1) & -(lo
9400: 6e 67 29 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65  ng)sizeof(double
9410: 29 29 29 20 5c 0a 20 20 20 20 3e 20 5f 5f 61 76  ))) \.    > __av
9420: 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09 09 09  _eptr(LIST).....
9430: 09 09 5c 0a 20 20 20 20 3f 20 2d 31 20 3a 20 28  ..\.    ? -1 : (
9440: 28 28 64 6f 75 62 6c 65 2a 29 28 4c 49 53 54 29  ((double*)(LIST)
9450: 2e 61 70 74 72 29 5b 2d 31 5d 20 3d 20 28 64 6f  .aptr)[-1] = (do
9460: 75 62 6c 65 29 28 56 41 4c 29 2c 20 30 29 29 0a  uble)(VAL), 0)).
9470: 0a 23 65 6e 64 69 66 0a 0a 23 69 66 20 64 65 66  .#endif..#if def
9480: 69 6e 65 64 28 5f 5f 69 61 36 34 5f 5f 29 0a 0a  ined(__ia64__)..
9490: 2f 2a 20 55 70 20 74 6f 20 38 20 6c 65 61 64 69  /* Up to 8 leadi
94a0: 6e 67 20 66 6c 6f 61 74 20 6f 72 20 64 6f 75 62  ng float or doub
94b0: 6c 65 20 6e 6f 6e 2d 76 61 72 61 72 67 73 20 61  le non-varargs a
94c0: 72 67 73 20 63 61 6e 20 62 65 20 70 61 73 73 65  rgs can be passe
94d0: 64 20 69 6e 0a 20 2a 20 66 6c 6f 61 74 20 72 65  d in. * float re
94e0: 67 69 73 74 65 72 73 2c 20 62 75 74 20 77 65 20  gisters, but we 
94f0: 61 6c 73 6f 20 70 75 73 68 20 74 68 65 6d 20 69  also push them i
9500: 6e 74 6f 20 74 68 65 20 63 6f 72 72 65 73 70 6f  nto the correspo
9510: 6e 64 69 6e 67 20 69 6e 74 0a 20 2a 20 72 65 67  nding int. * reg
9520: 69 73 74 65 72 73 20 69 6e 20 63 61 73 65 20 6f  isters in case o
9530: 66 20 76 61 72 61 72 67 73 2e 0a 20 2a 2f 0a 23  f varargs.. */.#
9540: 64 65 66 69 6e 65 20 5f 5f 61 76 5f 66 6c 6f 61  define __av_floa
9550: 74 28 4c 49 53 54 2c 56 41 4c 29 09 09 09 09 09  t(LIST,VAL).....
9560: 09 5c 0a 20 20 28 28 4c 49 53 54 29 2e 61 70 74  .\.  ((LIST).apt
9570: 72 20 3e 3d 20 5f 5f 61 76 5f 65 70 74 72 28 4c  r >= __av_eptr(L
9580: 49 53 54 29 09 09 09 09 09 5c 0a 20 20 20 3f 20  IST).....\.   ? 
9590: 2d 31 20 3a 20 28 28 2a 28 66 6c 6f 61 74 2a 29  -1 : ((*(float*)
95a0: 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 28 66  (LIST).aptr = (f
95b0: 6c 6f 61 74 29 28 56 41 4c 29 29 2c 09 09 09 5c  loat)(VAL)),...\
95c0: 0a 09 20 20 20 28 28 4c 49 53 54 29 2e 66 61 70  ..   ((LIST).fap
95d0: 74 72 20 3c 20 26 28 4c 49 53 54 29 2e 66 61 72  tr < &(LIST).far
95e0: 67 73 5b 38 5d 20 26 26 20 28 2a 28 4c 49 53 54  gs[8] && (*(LIST
95f0: 29 2e 66 61 70 74 72 20 3d 20 2a 28 66 6c 6f 61  ).faptr = *(floa
9600: 74 2a 29 28 4c 49 53 54 29 2e 61 70 74 72 2c 20  t*)(LIST).aptr, 
9610: 28 4c 49 53 54 29 2e 66 61 70 74 72 2b 2b 29 29  (LIST).faptr++))
9620: 2c 20 5c 0a 09 20 20 20 28 4c 49 53 54 29 2e 61  , \..   (LIST).a
9630: 70 74 72 2b 2b 2c 09 09 09 09 09 09 5c 0a 09 20  ptr++,......\.. 
9640: 20 20 30 29 29 0a 0a 23 64 65 66 69 6e 65 20 61    0))..#define a
9650: 76 5f 64 6f 75 62 6c 65 28 4c 49 53 54 2c 56 41  v_double(LIST,VA
9660: 4c 29 09 09 09 09 09 09 5c 0a 20 20 28 28 4c 49  L)......\.  ((LI
9670: 53 54 29 2e 61 70 74 72 20 3e 3d 20 5f 5f 61 76  ST).aptr >= __av
9680: 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09 09 09  _eptr(LIST).....
9690: 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 28 2a 28 64  \.   ? -1 : (*(d
96a0: 6f 75 62 6c 65 2a 29 28 4c 49 53 54 29 2e 61 70  ouble*)(LIST).ap
96b0: 74 72 20 3d 20 28 64 6f 75 62 6c 65 29 28 56 41  tr = (double)(VA
96c0: 4c 29 2c 09 09 09 5c 0a 09 20 20 20 28 28 4c 49  L),...\..   ((LI
96d0: 53 54 29 2e 66 61 70 74 72 20 3c 20 26 28 4c 49  ST).faptr < &(LI
96e0: 53 54 29 2e 66 61 72 67 73 5b 38 5d 20 26 26 20  ST).fargs[8] && 
96f0: 28 2a 28 4c 49 53 54 29 2e 66 61 70 74 72 20 3d  (*(LIST).faptr =
9700: 20 2a 28 64 6f 75 62 6c 65 2a 29 28 4c 49 53 54   *(double*)(LIST
9710: 29 2e 61 70 74 72 2c 20 28 4c 49 53 54 29 2e 66  ).aptr, (LIST).f
9720: 61 70 74 72 2b 2b 29 29 2c 20 5c 0a 09 20 20 20  aptr++)), \..   
9730: 28 4c 49 53 54 29 2e 61 70 74 72 2b 2b 2c 09 09  (LIST).aptr++,..
9740: 09 09 09 09 5c 0a 09 20 20 20 30 29 29 0a 0a 23  ....\..   0))..#
9750: 65 6e 64 69 66 0a 0a 23 69 66 20 64 65 66 69 6e  endif..#if defin
9760: 65 64 28 5f 5f 78 38 36 5f 36 34 5f 5f 29 0a 0a  ed(__x86_64__)..
9770: 2f 2a 20 55 70 20 74 6f 20 38 20 6c 65 61 64 69  /* Up to 8 leadi
9780: 6e 67 20 66 6c 6f 61 74 20 6f 72 20 64 6f 75 62  ng float or doub
9790: 6c 65 20 61 72 67 73 20 63 61 6e 20 62 65 20 70  le args can be p
97a0: 61 73 73 65 64 20 69 6e 20 66 6c 6f 61 74 20 72  assed in float r
97b0: 65 67 69 73 74 65 72 73 2e 0a 20 2a 2f 0a 23 64  egisters.. */.#d
97c0: 65 66 69 6e 65 20 5f 5f 61 76 5f 66 6c 6f 61 74  efine __av_float
97d0: 28 4c 49 53 54 2c 56 41 4c 29 09 09 09 09 09 09  (LIST,VAL)......
97e0: 5c 0a 20 20 28 28 4c 49 53 54 29 2e 66 61 70 74  \.  ((LIST).fapt
97f0: 72 20 3c 20 26 28 4c 49 53 54 29 2e 66 61 72 67  r < &(LIST).farg
9800: 73 5b 38 5d 09 09 09 09 09 5c 0a 20 20 20 3f 20  s[8].....\.   ? 
9810: 28 2a 28 4c 49 53 54 29 2e 66 61 70 74 72 20 3d  (*(LIST).faptr =
9820: 20 30 2e 30 2c 20 2a 28 66 6c 6f 61 74 2a 29 28   0.0, *(float*)(
9830: 4c 49 53 54 29 2e 66 61 70 74 72 20 3d 20 28 66  LIST).faptr = (f
9840: 6c 6f 61 74 29 28 56 41 4c 29 2c 09 5c 0a 20 20  loat)(VAL),.\.  
9850: 20 20 20 20 28 4c 49 53 54 29 2e 66 61 70 74 72      (LIST).faptr
9860: 2b 2b 2c 09 09 09 09 09 09 09 5c 0a 20 20 20 20  ++,.......\.    
9870: 20 20 30 29 09 09 09 09 09 09 09 09 5c 0a 20 20    0)........\.  
9880: 20 3a 20 28 28 4c 49 53 54 29 2e 61 70 74 72 20   : ((LIST).aptr 
9890: 3e 3d 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53  >= __av_eptr(LIS
98a0: 54 29 09 09 09 09 09 5c 0a 20 20 20 20 20 20 3f  T).....\.      ?
98b0: 20 2d 31 20 3a 20 28 28 2a 28 66 6c 6f 61 74 2a   -1 : ((*(float*
98c0: 29 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 28  )(LIST).aptr = (
98d0: 66 6c 6f 61 74 29 28 56 41 4c 29 29 2c 09 09 09  float)(VAL)),...
98e0: 5c 0a 09 20 20 20 20 20 20 28 4c 49 53 54 29 2e  \..      (LIST).
98f0: 61 70 74 72 2b 2b 2c 09 09 09 09 09 09 5c 0a 09  aptr++,......\..
9900: 20 20 20 20 20 20 30 29 29 29 0a 0a 23 64 65 66        0)))..#def
9910: 69 6e 65 20 61 76 5f 64 6f 75 62 6c 65 28 4c 49  ine av_double(LI
9920: 53 54 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a 20  ST,VAL)......\. 
9930: 20 28 28 4c 49 53 54 29 2e 66 61 70 74 72 20 3c   ((LIST).faptr <
9940: 20 26 28 4c 49 53 54 29 2e 66 61 72 67 73 5b 38   &(LIST).fargs[8
9950: 5d 09 09 09 09 09 5c 0a 20 20 20 3f 20 28 2a 28  ].....\.   ? (*(
9960: 4c 49 53 54 29 2e 66 61 70 74 72 20 3d 20 28 64  LIST).faptr = (d
9970: 6f 75 62 6c 65 29 28 56 41 4c 29 2c 09 09 09 09  ouble)(VAL),....
9980: 09 5c 0a 20 20 20 20 20 20 28 4c 49 53 54 29 2e  .\.      (LIST).
9990: 66 61 70 74 72 2b 2b 2c 09 09 09 09 09 09 09 5c  faptr++,.......\
99a0: 0a 20 20 20 20 20 20 30 29 09 09 09 09 09 09 09  .      0).......
99b0: 09 5c 0a 20 20 20 3a 20 28 28 4c 49 53 54 29 2e  .\.   : ((LIST).
99c0: 61 70 74 72 20 3e 3d 20 5f 5f 61 76 5f 65 70 74  aptr >= __av_ept
99d0: 72 28 4c 49 53 54 29 09 09 09 09 09 5c 0a 20 20  r(LIST).....\.  
99e0: 20 20 20 20 3f 20 2d 31 20 3a 20 28 28 2a 28 64      ? -1 : ((*(d
99f0: 6f 75 62 6c 65 2a 29 28 4c 49 53 54 29 2e 61 70  ouble*)(LIST).ap
9a00: 74 72 20 3d 20 28 64 6f 75 62 6c 65 29 28 56 41  tr = (double)(VA
9a10: 4c 29 29 2c 09 09 09 5c 0a 09 20 20 20 20 20 20  L)),...\..      
9a20: 28 4c 49 53 54 29 2e 61 70 74 72 2b 2b 2c 09 09  (LIST).aptr++,..
9a30: 09 09 09 09 5c 0a 09 20 20 20 20 20 20 30 29 29  ....\..      0))
9a40: 29 0a 0a 23 65 6e 64 69 66 0a 0a 2f 2a 0a 20 2a  )..#endif../*. *
9a50: 20 73 74 72 75 63 74 75 72 65 20 61 72 67 75 6d   structure argum
9a60: 65 6e 74 20 74 79 70 65 73 0a 20 2a 2f 0a 0a 23  ent types. */..#
9a70: 64 65 66 69 6e 65 20 61 76 5f 73 74 72 75 63 74  define av_struct
9a80: 28 4c 49 53 54 2c 54 59 50 45 2c 56 41 4c 29 09  (LIST,TYPE,VAL).
9a90: 09 09 09 09 5c 0a 20 20 5f 5f 61 76 5f 73 74 72  ....\.  __av_str
9aa0: 75 63 74 28 4c 49 53 54 2c 54 59 50 45 2c 73 69  uct(LIST,TYPE,si
9ab0: 7a 65 6f 66 28 54 59 50 45 29 2c 5f 5f 41 56 5f  zeof(TYPE),__AV_
9ac0: 61 6c 69 67 6e 6f 66 28 54 59 50 45 29 2c 5f 5f  alignof(TYPE),__
9ad0: 61 76 5f 73 74 72 75 63 74 5f 61 73 73 69 67 6e  av_struct_assign
9ae0: 2c 56 41 4c 29 0a 23 64 65 66 69 6e 65 20 5f 5f  ,VAL).#define __
9af0: 61 76 5f 73 74 72 75 63 74 5f 61 73 73 69 67 6e  av_struct_assign
9b00: 28 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c  (TYPE,TYPE_SIZE,
9b10: 54 59 50 45 5f 41 4c 49 47 4e 2c 50 4c 41 43 45  TYPE_ALIGN,PLACE
9b20: 2c 56 41 4c 29 09 09 5c 0a 20 20 2a 28 54 59 50  ,VAL)..\.  *(TYP
9b30: 45 2a 29 28 50 4c 41 43 45 29 20 3d 20 28 56 41  E*)(PLACE) = (VA
9b40: 4c 29 0a 2f 2a 20 5f 61 76 5f 73 74 72 75 63 74  L)./* _av_struct
9b50: 28 29 20 69 73 20 6c 69 6b 65 20 61 76 5f 73 74  () is like av_st
9b60: 72 75 63 74 28 29 2c 20 65 78 63 65 70 74 20 74  ruct(), except t
9b70: 68 61 74 20 79 6f 75 20 70 61 73 73 20 74 68 65  hat you pass the
9b80: 20 74 79 70 65 27 73 20 73 69 7a 65 20 61 6e 64   type's size and
9b90: 20 61 6c 69 67 6e 6d 65 6e 74 0a 20 2a 20 61 6e   alignment. * an
9ba0: 64 20 74 68 65 20 76 61 6c 75 65 27 73 20 61 64  d the value's ad
9bb0: 64 72 65 73 73 20 69 6e 73 74 65 61 64 20 6f 66  dress instead of
9bc0: 20 74 68 65 20 74 79 70 65 20 61 6e 64 20 74 68   the type and th
9bd0: 65 20 76 61 6c 75 65 20 74 68 65 6d 73 65 6c 76  e value themselv
9be0: 65 73 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20  es.. */.#define 
9bf0: 5f 61 76 5f 73 74 72 75 63 74 28 4c 49 53 54 2c  _av_struct(LIST,
9c00: 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41  TYPE_SIZE,TYPE_A
9c10: 4c 49 47 4e 2c 56 41 4c 5f 41 44 44 52 29 09 09  LIGN,VAL_ADDR)..
9c20: 09 5c 0a 20 20 5f 5f 61 76 5f 73 74 72 75 63 74  .\.  __av_struct
9c30: 28 4c 49 53 54 2c 75 6e 6b 6e 6f 77 6e 2c 54 59  (LIST,unknown,TY
9c40: 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49  PE_SIZE,TYPE_ALI
9c50: 47 4e 2c 5f 5f 61 76 5f 73 74 72 75 63 74 5f 63  GN,__av_struct_c
9c60: 6f 70 79 2c 56 41 4c 5f 41 44 44 52 29 0a 23 64  opy,VAL_ADDR).#d
9c70: 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 72 75 63  efine __av_struc
9c80: 74 5f 63 6f 70 79 28 54 59 50 45 2c 54 59 50 45  t_copy(TYPE,TYPE
9c90: 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e  _SIZE,TYPE_ALIGN
9ca0: 2c 50 4c 41 43 45 2c 56 41 4c 5f 41 44 44 52 29  ,PLACE,VAL_ADDR)
9cb0: 09 5c 0a 20 20 5f 5f 73 74 72 75 63 74 63 70 79  .\.  __structcpy
9cc0: 28 50 4c 41 43 45 2c 56 41 4c 5f 41 44 44 52 2c  (PLACE,VAL_ADDR,
9cd0: 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41  TYPE_SIZE,TYPE_A
9ce0: 4c 49 47 4e 29 0a 2f 2a 20 53 74 72 75 63 74 75  LIGN)./* Structu
9cf0: 72 65 20 61 72 67 75 6d 65 6e 74 20 61 6c 69 67  re argument alig
9d00: 6e 6d 65 6e 74 2e 20 2a 2f 0a 23 69 66 20 64 65  nment. */.#if de
9d10: 66 69 6e 65 64 28 5f 5f 69 33 38 36 5f 5f 29 20  fined(__i386__) 
9d20: 26 26 20 64 65 66 69 6e 65 64 28 5f 4d 53 43 5f  && defined(_MSC_
9d30: 56 45 52 29 0a 2f 2a 20 49 6e 20 4d 53 56 43 2c  VER)./* In MSVC,
9d40: 20 64 6f 75 62 6c 65 73 20 69 6e 73 69 64 65 20   doubles inside 
9d50: 73 74 72 75 63 74 75 72 65 73 20 68 61 76 65 20  structures have 
9d60: 61 6c 69 67 6e 6d 65 6e 74 20 38 2c 20 69 2e 65  alignment 8, i.e
9d70: 2e 0a 20 2a 20 5f 5f 41 56 5f 61 6c 69 67 6e 6f  .. * __AV_aligno
9d80: 66 28 64 6f 75 62 6c 65 29 20 3d 20 38 2c 20 62  f(double) = 8, b
9d90: 75 74 20 64 6f 75 62 6c 65 73 20 28 61 6e 64 20  ut doubles (and 
9da0: 61 6c 73 6f 20 73 74 72 75 63 74 75 72 65 73 20  also structures 
9db0: 63 6f 6e 74 61 69 6e 69 6e 67 0a 20 2a 20 64 6f  containing. * do
9dc0: 75 62 6c 65 73 29 20 61 72 65 20 70 61 73 73 65  ubles) are passe
9dd0: 64 20 6f 6e 20 74 68 65 20 73 74 61 63 6b 20 77  d on the stack w
9de0: 69 74 68 20 61 6c 69 67 6e 6d 65 6e 74 20 34 2e  ith alignment 4.
9df0: 20 4c 6f 6f 6b 73 20 72 65 61 6c 6c 79 20 77 65   Looks really we
9e00: 69 72 64 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65  ird.. */.#define
9e10: 20 5f 5f 61 76 5f 73 74 72 75 63 74 5f 61 6c 69   __av_struct_ali
9e20: 67 6e 6d 65 6e 74 28 54 59 50 45 5f 41 4c 49 47  gnment(TYPE_ALIG
9e30: 4e 29 20 20 5c 0a 20 20 28 28 54 59 50 45 5f 41  N)  \.  ((TYPE_A
9e40: 4c 49 47 4e 29 20 3c 3d 20 34 20 3f 20 28 54 59  LIGN) <= 4 ? (TY
9e50: 50 45 5f 41 4c 49 47 4e 29 20 3a 20 34 29 0a 23  PE_ALIGN) : 4).#
9e60: 65 6c 73 65 0a 23 64 65 66 69 6e 65 20 5f 5f 61  else.#define __a
9e70: 76 5f 73 74 72 75 63 74 5f 61 6c 69 67 6e 6d 65  v_struct_alignme
9e80: 6e 74 28 54 59 50 45 5f 41 4c 49 47 4e 29 20 20  nt(TYPE_ALIGN)  
9e90: 5c 0a 20 20 28 54 59 50 45 5f 41 4c 49 47 4e 29  \.  (TYPE_ALIGN)
9ea0: 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69  .#endif.#if defi
9eb0: 6e 65 64 28 5f 5f 69 33 38 36 5f 5f 29 20 7c 7c  ned(__i386__) ||
9ec0: 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 5f   defined(__mips_
9ed0: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  _) || defined(__
9ee0: 6d 69 70 73 6e 33 32 5f 5f 29 20 7c 7c 20 64 65  mipsn32__) || de
9ef0: 66 69 6e 65 64 28 5f 5f 6d 69 70 73 36 34 5f 5f  fined(__mips64__
9f00: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 61  ) || defined(__a
9f10: 6c 70 68 61 5f 5f 29 20 7c 7c 20 28 64 65 66 69  lpha__) || (defi
9f20: 6e 65 64 28 5f 5f 72 73 36 30 30 30 5f 5f 29 20  ned(__rs6000__) 
9f30: 26 26 20 28 64 65 66 69 6e 65 64 28 5f 41 49 58  && (defined(_AIX
9f40: 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f  ) || (defined(__
9f50: 4d 41 43 48 5f 5f 29 20 26 26 20 64 65 66 69 6e  MACH__) && defin
9f60: 65 64 28 5f 5f 41 50 50 4c 45 5f 5f 29 29 29 29  ed(__APPLE__))))
9f70: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 38   || defined(__m8
9f80: 38 6b 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  8k__) || defined
9f90: 28 5f 5f 69 61 36 34 5f 5f 29 20 7c 7c 20 64 65  (__ia64__) || de
9fa0: 66 69 6e 65 64 28 5f 5f 73 33 39 30 5f 5f 29 0a  fined(__s390__).
9fb0: 2f 2a 20 53 74 72 75 63 74 75 72 65 73 20 61 72  /* Structures ar
9fc0: 65 20 70 61 73 73 65 64 20 61 73 20 66 75 6c 6c  e passed as full
9fd0: 79 20 61 6c 69 67 6e 65 64 20 73 74 72 75 63 74  y aligned struct
9fe0: 75 72 65 73 20 6f 6e 20 74 68 65 20 61 72 67 20  ures on the arg 
9ff0: 73 74 61 63 6b 2e 0a 20 2a 20 57 65 20 61 6c 69  stack.. * We ali
a000: 67 6e 20 74 68 65 20 61 70 74 72 2c 20 73 74 6f  gn the aptr, sto
a010: 72 65 20 74 68 65 20 73 74 72 75 63 74 75 72 65  re the structure
a020: 2c 20 74 68 65 6e 20 66 69 6c 6c 20 74 6f 20 77  , then fill to w
a030: 6f 72 64 20 61 6c 69 67 6e 6d 65 6e 74 2e 0a 20  ord alignment.. 
a040: 2a 20 53 69 6e 67 6c 65 2d 73 6d 61 6c 6c 2d 69  * Single-small-i
a050: 6e 74 65 67 65 72 20 73 74 72 75 63 74 75 72 65  nteger structure
a060: 73 20 61 72 65 20 4e 4f 54 20 70 72 6f 6d 6f 74  s are NOT promot
a070: 65 64 20 74 6f 20 69 6e 74 65 67 65 72 73 20 61  ed to integers a
a080: 6e 64 20 68 61 76 65 0a 20 2a 20 64 69 66 66 65  nd have. * diffe
a090: 72 65 6e 74 20 61 6c 69 67 6e 6d 65 6e 74 2e 0a  rent alignment..
a0a0: 20 2a 2f 0a 2f 2a 20 6c 69 74 74 6c 65 20 65 6e   */./* little en
a0b0: 64 69 61 6e 20 2d 3e 20 73 6d 61 6c 6c 20 73 74  dian -> small st
a0c0: 72 75 63 74 75 72 65 73 20 3c 20 31 20 77 6f 72  ructures < 1 wor
a0d0: 64 20 61 72 65 20 61 64 6a 75 73 74 65 64 20 74  d are adjusted t
a0e0: 6f 20 74 68 65 20 6c 65 66 74 20 2a 2f 0a 23 69  o the left */.#i
a0f0: 66 20 64 65 66 69 6e 65 64 28 5f 5f 69 33 38 36  f defined(__i386
a100: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
a110: 5f 61 6c 70 68 61 5f 5f 29 20 7c 7c 20 64 65 66  _alpha__) || def
a120: 69 6e 65 64 28 5f 5f 78 38 36 5f 36 34 5f 5f 29  ined(__x86_64__)
a130: 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74  .#define __av_st
a140: 72 75 63 74 28 4c 49 53 54 2c 54 59 50 45 2c 54  ruct(LIST,TYPE,T
a150: 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c  YPE_SIZE,TYPE_AL
a160: 49 47 4e 2c 41 53 53 49 47 4e 2c 56 41 4c 29 09  IGN,ASSIGN,VAL).
a170: 09 5c 0a 20 20 28 28 28 4c 49 53 54 29 2e 61 70  .\.  (((LIST).ap
a180: 74 72 20 3d 09 09 09 09 09 09 09 5c 0a 20 20 20  tr =.......\.   
a190: 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28 28 28 5f   (__avword*)(((_
a1a0: 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e 61  _avword)(LIST).a
a1b0: 70 74 72 2b 28 54 59 50 45 5f 53 49 5a 45 29 2b  ptr+(TYPE_SIZE)+
a1c0: 5f 5f 61 76 5f 73 74 72 75 63 74 5f 61 6c 69 67  __av_struct_alig
a1d0: 6e 6d 65 6e 74 28 54 59 50 45 5f 41 4c 49 47 4e  nment(TYPE_ALIGN
a1e0: 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 5f 5f  )-1) & -(long)__
a1f0: 61 76 5f 73 74 72 75 63 74 5f 61 6c 69 67 6e 6d  av_struct_alignm
a200: 65 6e 74 28 54 59 50 45 5f 41 4c 49 47 4e 29 29  ent(TYPE_ALIGN))
a210: 29 5c 0a 20 20 20 3e 20 5f 5f 61 76 5f 65 70 74  )\.   > __av_ept
a220: 72 28 4c 49 53 54 29 09 09 09 09 09 09 09 5c 0a  r(LIST).......\.
a230: 20 20 20 3f 20 2d 31 20 3a 20 28 41 53 53 49 47     ? -1 : (ASSIG
a240: 4e 28 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45  N(TYPE,TYPE_SIZE
a250: 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 28 76 6f 69  ,TYPE_ALIGN,(voi
a260: 64 2a 29 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c  d*)((__avword)(L
a270: 49 53 54 29 2e 61 70 74 72 2d 28 54 59 50 45 5f  IST).aptr-(TYPE_
a280: 53 49 5a 45 29 29 2c 56 41 4c 29 2c 5c 0a 09 20  SIZE)),VAL),\.. 
a290: 20 20 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20    (LIST).aptr = 
a2a0: 28 5f 5f 61 76 77 6f 72 64 2a 29 28 28 28 5f 5f  (__avword*)(((__
a2b0: 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e 61 70  avword)(LIST).ap
a2c0: 74 72 2b 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f  tr+sizeof(__avwo
a2d0: 72 64 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29  rd)-1) & -(long)
a2e0: 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29  sizeof(__avword)
a2f0: 29 2c 5c 0a 09 20 20 20 30 29 29 0a 23 65 6e 64  ),\..   0)).#end
a300: 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f  if.#if defined(_
a310: 5f 69 61 36 34 5f 5f 29 0a 2f 2a 20 54 79 70 65  _ia64__)./* Type
a320: 73 20 6c 61 72 67 65 72 20 74 68 61 6e 20 61 20  s larger than a 
a330: 77 6f 72 64 20 68 61 76 65 20 32 2d 77 6f 72 64  word have 2-word
a340: 20 61 6c 69 67 6e 6d 65 6e 74 2e 20 2a 2f 0a 23   alignment. */.#
a350: 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 72 75  define __av_stru
a360: 63 74 28 4c 49 53 54 2c 54 59 50 45 2c 54 59 50  ct(LIST,TYPE,TYP
a370: 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47  E_SIZE,TYPE_ALIG
a380: 4e 2c 41 53 53 49 47 4e 2c 56 41 4c 29 09 09 5c  N,ASSIGN,VAL)..\
a390: 0a 20 20 28 28 4c 49 53 54 29 2e 61 70 74 72 20  .  ((LIST).aptr 
a3a0: 3d 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28 28 28  = (__avword*)(((
a3b0: 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e  __avword)(LIST).
a3c0: 61 70 74 72 2b 28 54 59 50 45 5f 53 49 5a 45 29  aptr+(TYPE_SIZE)
a3d0: 2b 5f 5f 61 76 5f 73 74 72 75 63 74 5f 61 6c 69  +__av_struct_ali
a3e0: 67 6e 6d 65 6e 74 28 54 59 50 45 5f 41 4c 49 47  gnment(TYPE_ALIG
a3f0: 4e 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 5f  N)-1) & -(long)_
a400: 5f 61 76 5f 73 74 72 75 63 74 5f 61 6c 69 67 6e  _av_struct_align
a410: 6d 65 6e 74 28 54 59 50 45 5f 41 4c 49 47 4e 29  ment(TYPE_ALIGN)
a420: 29 2c 20 5c 0a 20 20 20 28 28 54 59 50 45 5f 53  ), \.   ((TYPE_S
a430: 49 5a 45 29 20 3e 20 73 69 7a 65 6f 66 28 5f 5f  IZE) > sizeof(__
a440: 61 76 77 6f 72 64 29 20 26 26 20 28 28 28 4c 49  avword) && (((LI
a450: 53 54 29 2e 61 70 74 72 20 2d 20 26 28 4c 49 53  ST).aptr - &(LIS
a460: 54 29 2e 61 72 67 73 5b 30 5d 29 20 26 20 31 29  T).args[0]) & 1)
a470: 20 3f 20 2b 2b 28 4c 49 53 54 29 2e 61 70 74 72   ? ++(LIST).aptr
a480: 20 3a 20 30 29 2c 20 5c 0a 20 20 20 28 28 4c 49   : 0), \.   ((LI
a490: 53 54 29 2e 61 70 74 72 20 3e 20 5f 5f 61 76 5f  ST).aptr > __av_
a4a0: 65 70 74 72 28 4c 49 53 54 29 09 09 09 09 09 5c  eptr(LIST).....\
a4b0: 0a 20 20 20 20 3f 20 2d 31 20 3a 20 28 41 53 53  .    ? -1 : (ASS
a4c0: 49 47 4e 28 54 59 50 45 2c 54 59 50 45 5f 53 49  IGN(TYPE,TYPE_SI
a4d0: 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 28 76  ZE,TYPE_ALIGN,(v
a4e0: 6f 69 64 2a 29 28 28 5f 5f 61 76 77 6f 72 64 29  oid*)((__avword)
a4f0: 28 4c 49 53 54 29 2e 61 70 74 72 2d 28 54 59 50  (LIST).aptr-(TYP
a500: 45 5f 53 49 5a 45 29 29 2c 56 41 4c 29 2c 5c 0a  E_SIZE)),VAL),\.
a510: 09 20 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72  .    (LIST).aptr
a520: 20 3d 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28 28   = (__avword*)((
a530: 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29  (__avword)(LIST)
a540: 2e 61 70 74 72 2b 73 69 7a 65 6f 66 28 5f 5f 61  .aptr+sizeof(__a
a550: 76 77 6f 72 64 29 2d 31 29 20 26 20 2d 28 6c 6f  vword)-1) & -(lo
a560: 6e 67 29 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f  ng)sizeof(__avwo
a570: 72 64 29 29 2c 5c 0a 09 20 20 20 20 30 29 29 29  rd)),\..    0)))
a580: 0a 23 65 6e 64 69 66 0a 2f 2a 20 73 6d 61 6c 6c  .#endif./* small
a590: 20 73 74 72 75 63 74 75 72 65 73 20 3c 20 31 20   structures < 1 
a5a0: 77 6f 72 64 20 61 72 65 20 61 64 6a 75 73 74 65  word are adjuste
a5b0: 64 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 63  d depending on c
a5c0: 6f 6d 70 69 6c 65 72 20 2a 2f 0a 23 69 66 20 64  ompiler */.#if d
a5d0: 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 5f 5f 29  efined(__mips__)
a5e0: 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 6d   && !defined(__m
a5f0: 69 70 73 6e 33 32 5f 5f 29 0a 23 64 65 66 69 6e  ipsn32__).#defin
a600: 65 20 5f 5f 61 76 5f 73 74 72 75 63 74 5f 6c 65  e __av_struct_le
a610: 66 74 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c  ftadjusted(LIST,
a620: 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54  TYPE,TYPE_SIZE,T
a630: 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e  YPE_ALIGN,ASSIGN
a640: 2c 56 41 4c 29 20 5c 0a 20 20 28 28 28 4c 49 53  ,VAL) \.  (((LIS
a650: 54 29 2e 61 70 74 72 20 3d 09 09 09 09 09 09 09  T).aptr =.......
a660: 5c 0a 20 20 20 20 28 5f 5f 61 76 77 6f 72 64 2a  \.    (__avword*
a670: 29 28 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49  )(((__avword)(LI
a680: 53 54 29 2e 61 70 74 72 2b 28 54 59 50 45 5f 53  ST).aptr+(TYPE_S
a690: 49 5a 45 29 2b 28 54 59 50 45 5f 41 4c 49 47 4e  IZE)+(TYPE_ALIGN
a6a0: 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 28 54  )-1) & -(long)(T
a6b0: 59 50 45 5f 41 4c 49 47 4e 29 29 29 5c 0a 20 20  YPE_ALIGN)))\.  
a6c0: 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53   > __av_eptr(LIS
a6d0: 54 29 09 09 09 09 09 09 09 5c 0a 20 20 20 3f 20  T).......\.   ? 
a6e0: 2d 31 20 3a 20 28 2b 2b 28 4c 49 53 54 29 2e 61  -1 : (++(LIST).a
a6f0: 6e 75 6d 2c 09 09 09 09 09 09 5c 0a 09 20 20 20  num,......\..   
a700: 41 53 53 49 47 4e 28 54 59 50 45 2c 54 59 50 45  ASSIGN(TYPE,TYPE
a710: 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e  _SIZE,TYPE_ALIGN
a720: 2c 28 76 6f 69 64 2a 29 28 28 5f 5f 61 76 77 6f  ,(void*)((__avwo
a730: 72 64 29 28 4c 49 53 54 29 2e 61 70 74 72 2d 28  rd)(LIST).aptr-(
a740: 54 59 50 45 5f 53 49 5a 45 29 29 2c 56 41 4c 29  TYPE_SIZE)),VAL)
a750: 2c 5c 0a 09 20 20 20 28 4c 49 53 54 29 2e 61 70  ,\..   (LIST).ap
a760: 74 72 20 3d 20 28 5f 5f 61 76 77 6f 72 64 2a 29  tr = (__avword*)
a770: 28 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53  (((__avword)(LIS
a780: 54 29 2e 61 70 74 72 2b 73 69 7a 65 6f 66 28 5f  T).aptr+sizeof(_
a790: 5f 61 76 77 6f 72 64 29 2d 31 29 20 26 20 2d 28  _avword)-1) & -(
a7a0: 6c 6f 6e 67 29 73 69 7a 65 6f 66 28 5f 5f 61 76  long)sizeof(__av
a7b0: 77 6f 72 64 29 29 2c 5c 0a 09 20 20 20 30 29 29  word)),\..   0))
a7c0: 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74  .#define __av_st
a7d0: 72 75 63 74 5f 72 69 67 68 74 61 64 6a 75 73 74  ruct_rightadjust
a7e0: 65 64 28 4c 49 53 54 2c 54 59 50 45 2c 54 59 50  ed(LIST,TYPE,TYP
a7f0: 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47  E_SIZE,TYPE_ALIG
a800: 4e 2c 41 53 53 49 47 4e 2c 56 41 4c 29 20 5c 0a  N,ASSIGN,VAL) \.
a810: 20 20 28 28 28 4c 49 53 54 29 2e 61 70 74 72 20    (((LIST).aptr 
a820: 3d 09 09 09 09 09 09 09 5c 0a 20 20 20 20 28 5f  =.......\.    (_
a830: 5f 61 76 77 6f 72 64 2a 29 28 28 28 28 28 5f 5f  _avword*)(((((__
a840: 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e 61 70  avword)(LIST).ap
a850: 74 72 2b 28 54 59 50 45 5f 53 49 5a 45 29 2b 28  tr+(TYPE_SIZE)+(
a860: 54 59 50 45 5f 41 4c 49 47 4e 29 2d 31 29 20 26  TYPE_ALIGN)-1) &
a870: 20 2d 28 6c 6f 6e 67 29 28 54 59 50 45 5f 41 4c   -(long)(TYPE_AL
a880: 49 47 4e 29 29 5c 0a 09 09 20 2b 73 69 7a 65 6f  IGN))\... +sizeo
a890: 66 28 5f 5f 61 76 77 6f 72 64 29 2d 31 29 20 26  f(__avword)-1) &
a8a0: 20 2d 28 6c 6f 6e 67 29 73 69 7a 65 6f 66 28 5f   -(long)sizeof(_
a8b0: 5f 61 76 77 6f 72 64 29 29 29 09 5c 0a 20 20 20  _avword))).\.   
a8c0: 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54  > __av_eptr(LIST
a8d0: 29 09 09 09 09 09 09 09 5c 0a 20 20 20 3f 20 2d  ).......\.   ? -
a8e0: 31 20 3a 20 28 2b 2b 28 4c 49 53 54 29 2e 61 6e  1 : (++(LIST).an
a8f0: 75 6d 2c 09 09 09 09 09 09 5c 0a 09 20 20 20 41  um,......\..   A
a900: 53 53 49 47 4e 28 54 59 50 45 2c 54 59 50 45 5f  SSIGN(TYPE,TYPE_
a910: 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c  SIZE,TYPE_ALIGN,
a920: 28 76 6f 69 64 2a 29 28 28 5f 5f 61 76 77 6f 72  (void*)((__avwor
a930: 64 29 28 4c 49 53 54 29 2e 61 70 74 72 2d 28 54  d)(LIST).aptr-(T
a940: 59 50 45 5f 53 49 5a 45 29 29 2c 56 41 4c 29 2c  YPE_SIZE)),VAL),
a950: 5c 0a 09 20 20 20 30 29 29 0a 23 64 65 66 69 6e  \..   0)).#defin
a960: 65 20 5f 5f 61 76 5f 73 74 72 75 63 74 28 4c 49  e __av_struct(LI
a970: 53 54 2c 54 59 50 45 2c 54 59 50 45 5f 53 49 5a  ST,TYPE,TYPE_SIZ
a980: 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53  E,TYPE_ALIGN,ASS
a990: 49 47 4e 2c 56 41 4c 29 09 09 5c 0a 20 20 28 28  IGN,VAL)..\.  ((
a9a0: 4c 49 53 54 29 2e 66 6c 61 67 73 20 26 20 5f 5f  LIST).flags & __
a9b0: 41 56 5f 53 47 49 43 43 5f 53 54 52 55 43 54 5f  AV_SGICC_STRUCT_
a9c0: 41 52 47 53 09 09 09 09 5c 0a 20 20 20 3f 20 2f  ARGS....\.   ? /
a9d0: 2a 20 53 47 49 20 4d 49 50 53 20 63 63 20 70 61  * SGI MIPS cc pa
a9e0: 73 73 65 73 20 73 6d 61 6c 6c 20 73 74 72 75 63  sses small struc
a9f0: 74 75 72 65 73 20 6c 65 66 74 2d 61 64 6a 75 73  tures left-adjus
aa00: 74 65 64 2c 20 61 6c 74 68 6f 75 67 68 20 62 69  ted, although bi
aa10: 67 2d 65 6e 64 69 61 6e 21 20 2a 2f 5c 0a 20 20  g-endian! */\.  
aa20: 20 20 20 5f 5f 61 76 5f 73 74 72 75 63 74 5f 6c     __av_struct_l
aa30: 65 66 74 61 64 6a 75 73 74 65 64 28 4c 49 53 54  eftadjusted(LIST
aa40: 2c 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c  ,TYPE,TYPE_SIZE,
aa50: 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47  TYPE_ALIGN,ASSIG
aa60: 4e 2c 56 41 4c 29 20 5c 0a 20 20 20 3a 20 2f 2a  N,VAL) \.   : /*
aa70: 20 53 47 49 20 4d 49 50 53 20 67 63 63 20 70 61   SGI MIPS gcc pa
aa80: 73 73 65 73 20 73 6d 61 6c 6c 20 73 74 72 75 63  sses small struc
aa90: 74 75 72 65 73 20 77 69 74 68 69 6e 20 74 68 65  tures within the
aaa0: 20 66 69 72 73 74 20 66 6f 75 72 20 77 6f 72 64   first four word
aab0: 73 20 6c 65 66 74 2d 09 20 20 5c 0a 20 20 20 20  s left-.  \.    
aac0: 20 20 2a 20 61 64 6a 75 73 74 65 64 2c 20 66 6f    * adjusted, fo
aad0: 72 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20  r compatibility 
aae0: 77 69 74 68 20 63 63 2e 20 42 75 74 20 73 74 72  with cc. But str
aaf0: 75 63 74 75 72 65 73 20 69 6e 20 6d 65 6d 6f 72  uctures in memor
ab00: 79 20 61 72 65 20 70 61 73 73 65 64 20 20 5c 0a  y are passed  \.
ab10: 20 20 20 20 20 20 2a 20 72 69 67 68 74 2d 61 64        * right-ad
ab20: 6a 75 73 74 65 64 21 21 20 53 65 65 20 67 63 63  justed!! See gcc
ab30: 2d 32 2e 36 2e 33 2f 63 6f 6e 66 69 67 2f 6d 69  -2.6.3/config/mi
ab40: 70 73 2f 6d 69 70 73 2e 63 3a 66 75 6e 63 74 69  ps/mips.c:functi
ab50: 6f 6e 5f 61 72 67 28 29 2e 09 20 20 5c 0a 20 20  on_arg()..  \.  
ab60: 20 20 20 20 2a 2f 09 09 09 09 09 09 09 09 09 20      */......... 
ab70: 20 5c 0a 20 20 20 20 20 28 28 4c 49 53 54 29 2e   \.     ((LIST).
ab80: 61 70 74 72 20 3c 20 26 28 4c 49 53 54 29 2e 61  aptr < &(LIST).a
ab90: 72 67 73 5b 34 5d 09 09 09 09 09 09 5c 0a 20 20  rgs[4]......\.  
aba0: 20 20 20 20 3f 20 5f 5f 61 76 5f 73 74 72 75 63      ? __av_struc
abb0: 74 5f 6c 65 66 74 61 64 6a 75 73 74 65 64 28 4c  t_leftadjusted(L
abc0: 49 53 54 2c 54 59 50 45 2c 54 59 50 45 5f 53 49  IST,TYPE,TYPE_SI
abd0: 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53  ZE,TYPE_ALIGN,AS
abe0: 53 49 47 4e 2c 56 41 4c 29 09 5c 0a 20 20 20 20  SIGN,VAL).\.    
abf0: 20 20 3a 20 5f 5f 61 76 5f 73 74 72 75 63 74 5f    : __av_struct_
ac00: 72 69 67 68 74 61 64 6a 75 73 74 65 64 28 4c 49  rightadjusted(LI
ac10: 53 54 2c 54 59 50 45 2c 54 59 50 45 5f 53 49 5a  ST,TYPE,TYPE_SIZ
ac20: 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53  E,TYPE_ALIGN,ASS
ac30: 49 47 4e 2c 56 41 4c 29 29 29 0a 23 65 6e 64 69  IGN,VAL))).#endi
ac40: 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  f.#if defined(__
ac50: 6d 69 70 73 6e 33 32 5f 5f 29 20 7c 7c 20 64 65  mipsn32__) || de
ac60: 66 69 6e 65 64 28 5f 5f 6d 69 70 73 36 34 5f 5f  fined(__mips64__
ac70: 29 0a 2f 2a 20 57 68 65 6e 20 61 20 73 74 72 75  )./* When a stru
ac80: 63 74 75 72 65 20 69 73 20 70 61 73 73 65 64 20  cture is passed 
ac90: 28 70 61 72 74 69 61 6c 6c 79 29 20 69 6e 20 72  (partially) in r
aca0: 65 67 69 73 74 65 72 73 2c 20 69 74 20 69 73 20  egisters, it is 
acb0: 70 61 73 73 65 64 20 69 6e 20 74 68 65 0a 20 2a  passed in the. *
acc0: 20 69 6e 74 65 67 65 72 20 72 65 67 69 73 74 65   integer registe
acd0: 72 73 2c 20 65 78 63 65 70 74 20 74 68 61 74 20  rs, except that 
ace0: 64 6f 75 62 6c 65 73 20 77 69 74 68 69 6e 20 74  doubles within t
acf0: 68 65 20 73 74 72 75 63 74 75 72 65 20 61 72 65  he structure are
ad00: 20 70 61 73 73 65 64 20 69 6e 0a 20 2a 20 74 68   passed in. * th
ad10: 65 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74  e floating point
ad20: 20 72 65 67 69 73 74 65 72 73 2e 20 49 6e 73 74   registers. Inst
ad30: 65 61 64 20 6f 66 20 64 69 73 74 69 6e 67 75 69  ead of distingui
ad40: 73 68 69 6e 67 20 74 68 65 73 65 20 63 61 73 65  shing these case
ad50: 73 2c 20 77 65 0a 20 2a 20 61 6c 77 61 79 73 20  s, we. * always 
ad60: 70 61 73 73 20 74 68 65 20 73 74 72 75 63 74 75  pass the structu
ad70: 72 65 20 69 6e 20 62 6f 74 68 20 74 68 65 20 69  re in both the i
ad80: 6e 74 65 67 65 72 20 61 6e 64 20 74 68 65 20 66  nteger and the f
ad90: 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 0a 20 2a  loating point. *
ada0: 20 72 65 67 69 73 74 65 72 73 2e 0a 20 2a 2f 0a   registers.. */.
adb0: 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 72  #define __av_str
adc0: 75 63 74 5f 6c 65 66 74 61 64 6a 75 73 74 65 64  uct_leftadjusted
add0: 28 4c 49 53 54 2c 54 59 50 45 2c 54 59 50 45 5f  (LIST,TYPE,TYPE_
ade0: 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c  SIZE,TYPE_ALIGN,
adf0: 41 53 53 49 47 4e 2c 56 41 4c 29 20 5c 0a 20 20  ASSIGN,VAL) \.  
ae00: 28 28 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 09  (((LIST).aptr =.
ae10: 09 09 09 09 09 09 5c 0a 20 20 20 20 28 5f 5f 61  ......\.    (__a
ae20: 76 77 6f 72 64 2a 29 28 28 28 5f 5f 61 76 77 6f  vword*)(((__avwo
ae30: 72 64 29 28 4c 49 53 54 29 2e 61 70 74 72 2b 28  rd)(LIST).aptr+(
ae40: 54 59 50 45 5f 53 49 5a 45 29 2b 28 54 59 50 45  TYPE_SIZE)+(TYPE
ae50: 5f 41 4c 49 47 4e 29 2d 31 29 20 26 20 2d 28 6c  _ALIGN)-1) & -(l
ae60: 6f 6e 67 29 28 54 59 50 45 5f 41 4c 49 47 4e 29  ong)(TYPE_ALIGN)
ae70: 29 29 5c 0a 20 20 20 3e 20 5f 5f 61 76 5f 65 70  ))\.   > __av_ep
ae80: 74 72 28 4c 49 53 54 29 09 09 09 09 09 09 09 5c  tr(LIST).......\
ae90: 0a 20 20 20 3f 20 2d 31 20 3a 20 28 41 53 53 49  .   ? -1 : (ASSI
aea0: 47 4e 28 54 59 50 45 2c 54 59 50 45 5f 53 49 5a  GN(TYPE,TYPE_SIZ
aeb0: 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 28 76 6f  E,TYPE_ALIGN,(vo
aec0: 69 64 2a 29 28 28 5f 5f 61 76 77 6f 72 64 29 28  id*)((__avword)(
aed0: 4c 49 53 54 29 2e 61 70 74 72 2d 28 54 59 50 45  LIST).aptr-(TYPE
aee0: 5f 53 49 5a 45 29 29 2c 56 41 4c 29 2c 5c 0a 09  _SIZE)),VAL),\..
aef0: 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72 20 3d     (LIST).aptr =
af00: 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28 28 28 5f   (__avword*)(((_
af10: 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e 61  _avword)(LIST).a
af20: 70 74 72 2b 73 69 7a 65 6f 66 28 5f 5f 61 76 77  ptr+sizeof(__avw
af30: 6f 72 64 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67  ord)-1) & -(long
af40: 29 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64  )sizeof(__avword
af50: 29 29 2c 5c 0a 09 20 20 20 28 28 4c 49 53 54 29  )),\..   ((LIST)
af60: 2e 61 6e 75 6d 20 3c 20 38 20 26 26 20 28 28 4c  .anum < 8 && ((L
af70: 49 53 54 29 2e 64 61 72 67 5f 6d 61 73 6b 20 7c  IST).darg_mask |
af80: 3d 20 28 2d 31 20 3c 3c 20 28 4c 49 53 54 29 2e  = (-1 << (LIST).
af90: 61 6e 75 6d 29 29 29 2c 20 5c 0a 09 20 20 20 28  anum))), \..   (
afa0: 4c 49 53 54 29 2e 61 6e 75 6d 20 2b 3d 20 28 28  LIST).anum += ((
afb0: 28 28 28 54 59 50 45 5f 53 49 5a 45 29 2b 28 54  (((TYPE_SIZE)+(T
afc0: 59 50 45 5f 41 4c 49 47 4e 29 2d 31 29 20 26 20  YPE_ALIGN)-1) & 
afd0: 2d 28 6c 6f 6e 67 29 28 54 59 50 45 5f 41 4c 49  -(long)(TYPE_ALI
afe0: 47 4e 29 29 20 2b 20 73 69 7a 65 6f 66 28 5f 5f  GN)) + sizeof(__
aff0: 61 76 77 6f 72 64 29 2d 31 29 20 26 20 2d 28 6c  avword)-1) & -(l
b000: 6f 6e 67 29 73 69 7a 65 6f 66 28 5f 5f 61 76 77  ong)sizeof(__avw
b010: 6f 72 64 29 29 2f 73 69 7a 65 6f 66 28 5f 5f 61  ord))/sizeof(__a
b020: 76 77 6f 72 64 29 2c 5c 0a 09 20 20 20 28 4c 49  vword),\..   (LI
b030: 53 54 29 2e 64 61 72 67 5f 6d 61 73 6b 20 26 3d  ST).darg_mask &=
b040: 20 28 31 20 3c 3c 20 28 28 4c 49 53 54 29 2e 61   (1 << ((LIST).a
b050: 6e 75 6d 20 3c 20 38 20 3f 20 28 4c 49 53 54 29  num < 8 ? (LIST)
b060: 2e 61 6e 75 6d 20 3a 20 38 29 29 20 2d 20 31 2c  .anum : 8)) - 1,
b070: 20 5c 0a 09 20 20 20 30 29 29 0a 23 64 65 66 69   \..   0)).#defi
b080: 6e 65 20 5f 5f 61 76 5f 73 74 72 75 63 74 5f 72  ne __av_struct_r
b090: 69 67 68 74 61 64 6a 75 73 74 65 64 28 4c 49 53  ightadjusted(LIS
b0a0: 54 2c 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45  T,TYPE,TYPE_SIZE
b0b0: 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49  ,TYPE_ALIGN,ASSI
b0c0: 47 4e 2c 56 41 4c 29 20 5c 0a 20 20 28 28 28 4c  GN,VAL) \.  (((L
b0d0: 49 53 54 29 2e 61 70 74 72 20 3d 09 09 09 09 09  IST).aptr =.....
b0e0: 09 09 5c 0a 20 20 20 20 28 5f 5f 61 76 77 6f 72  ..\.    (__avwor
b0f0: 64 2a 29 28 28 28 28 28 5f 5f 61 76 77 6f 72 64  d*)(((((__avword
b100: 29 28 4c 49 53 54 29 2e 61 70 74 72 2b 28 54 59  )(LIST).aptr+(TY
b110: 50 45 5f 53 49 5a 45 29 2b 28 54 59 50 45 5f 41  PE_SIZE)+(TYPE_A
b120: 4c 49 47 4e 29 2d 31 29 20 26 20 2d 28 6c 6f 6e  LIGN)-1) & -(lon
b130: 67 29 28 54 59 50 45 5f 41 4c 49 47 4e 29 29 5c  g)(TYPE_ALIGN))\
b140: 0a 09 09 20 2b 73 69 7a 65 6f 66 28 5f 5f 61 76  ... +sizeof(__av
b150: 77 6f 72 64 29 2d 31 29 20 26 20 2d 28 6c 6f 6e  word)-1) & -(lon
b160: 67 29 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72  g)sizeof(__avwor
b170: 64 29 29 29 09 5c 0a 20 20 20 3e 20 5f 5f 61 76  d))).\.   > __av
b180: 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09 09 09  _eptr(LIST).....
b190: 09 09 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 28 41  ..\.   ? -1 : (A
b1a0: 53 53 49 47 4e 28 54 59 50 45 2c 54 59 50 45 5f  SSIGN(TYPE,TYPE_
b1b0: 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c  SIZE,TYPE_ALIGN,
b1c0: 28 76 6f 69 64 2a 29 28 28 5f 5f 61 76 77 6f 72  (void*)((__avwor
b1d0: 64 29 28 4c 49 53 54 29 2e 61 70 74 72 2d 28 54  d)(LIST).aptr-(T
b1e0: 59 50 45 5f 53 49 5a 45 29 29 2c 56 41 4c 29 2c  YPE_SIZE)),VAL),
b1f0: 5c 0a 09 20 20 20 28 28 4c 49 53 54 29 2e 61 6e  \..   ((LIST).an
b200: 75 6d 20 3c 20 38 20 26 26 20 28 28 4c 49 53 54  um < 8 && ((LIST
b210: 29 2e 64 61 72 67 5f 6d 61 73 6b 20 7c 3d 20 28  ).darg_mask |= (
b220: 2d 31 20 3c 3c 20 28 4c 49 53 54 29 2e 61 6e 75  -1 << (LIST).anu
b230: 6d 29 29 29 2c 20 5c 0a 09 20 20 20 28 4c 49 53  m))), \..   (LIS
b240: 54 29 2e 61 6e 75 6d 20 2b 3d 20 28 28 28 28 28  T).anum += (((((
b250: 54 59 50 45 5f 53 49 5a 45 29 2b 28 54 59 50 45  TYPE_SIZE)+(TYPE
b260: 5f 41 4c 49 47 4e 29 2d 31 29 20 26 20 2d 28 6c  _ALIGN)-1) & -(l
b270: 6f 6e 67 29 28 54 59 50 45 5f 41 4c 49 47 4e 29  ong)(TYPE_ALIGN)
b280: 29 20 2b 20 73 69 7a 65 6f 66 28 5f 5f 61 76 77  ) + sizeof(__avw
b290: 6f 72 64 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67  ord)-1) & -(long
b2a0: 29 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64  )sizeof(__avword
b2b0: 29 29 2f 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f  ))/sizeof(__avwo
b2c0: 72 64 29 2c 5c 0a 09 20 20 20 28 4c 49 53 54 29  rd),\..   (LIST)
b2d0: 2e 64 61 72 67 5f 6d 61 73 6b 20 26 3d 20 28 31  .darg_mask &= (1
b2e0: 20 3c 3c 20 28 28 4c 49 53 54 29 2e 61 6e 75 6d   << ((LIST).anum
b2f0: 20 3c 20 38 20 3f 20 28 4c 49 53 54 29 2e 61 6e   < 8 ? (LIST).an
b300: 75 6d 20 3a 20 38 29 29 20 2d 20 31 2c 20 5c 0a  um : 8)) - 1, \.
b310: 09 20 20 20 30 29 29 0a 23 64 65 66 69 6e 65 20  .   0)).#define 
b320: 5f 5f 61 76 5f 73 74 72 75 63 74 28 4c 49 53 54  __av_struct(LIST
b330: 2c 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c  ,TYPE,TYPE_SIZE,
b340: 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47  TYPE_ALIGN,ASSIG
b350: 4e 2c 56 41 4c 29 09 09 5c 0a 20 20 28 28 4c 49  N,VAL)..\.  ((LI
b360: 53 54 29 2e 66 6c 61 67 73 20 26 20 5f 5f 41 56  ST).flags & __AV
b370: 5f 53 47 49 43 43 5f 53 54 52 55 43 54 5f 41 52  _SGICC_STRUCT_AR
b380: 47 53 09 09 09 09 5c 0a 20 20 20 3f 20 2f 2a 20  GS....\.   ? /* 
b390: 53 47 49 20 4d 49 50 53 20 63 63 20 70 61 73 73  SGI MIPS cc pass
b3a0: 65 73 20 73 6d 61 6c 6c 20 73 74 72 75 63 74 75  es small structu
b3b0: 72 65 73 20 6c 65 66 74 2d 61 64 6a 75 73 74 65  res left-adjuste
b3c0: 64 2c 20 61 6c 74 68 6f 75 67 68 20 62 69 67 2d  d, although big-
b3d0: 65 6e 64 69 61 6e 21 20 2a 2f 5c 0a 20 20 20 20  endian! */\.    
b3e0: 20 5f 5f 61 76 5f 73 74 72 75 63 74 5f 6c 65 66   __av_struct_lef
b3f0: 74 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c 54  tadjusted(LIST,T
b400: 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59  YPE,TYPE_SIZE,TY
b410: 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e 2c  PE_ALIGN,ASSIGN,
b420: 56 41 4c 29 20 5c 0a 20 20 20 3a 20 2f 2a 20 53  VAL) \.   : /* S
b430: 47 49 20 4d 49 50 53 20 67 63 63 20 70 61 73 73  GI MIPS gcc pass
b440: 65 73 20 73 6d 61 6c 6c 20 73 74 72 75 63 74 75  es small structu
b450: 72 65 73 20 72 69 67 68 74 2d 61 64 6a 75 73 74  res right-adjust
b460: 65 64 2e 20 2a 2f 09 09 5c 0a 20 20 20 20 20 5f  ed. */..\.     _
b470: 5f 61 76 5f 73 74 72 75 63 74 5f 72 69 67 68 74  _av_struct_right
b480: 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c 54 59  adjusted(LIST,TY
b490: 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50  PE,TYPE_SIZE,TYP
b4a0: 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e 2c 56  E_ALIGN,ASSIGN,V
b4b0: 41 4c 29 29 0a 23 65 6e 64 69 66 0a 23 69 66 20  AL)).#endif.#if 
b4c0: 64 65 66 69 6e 65 64 28 5f 5f 72 73 36 30 30 30  defined(__rs6000
b4d0: 5f 5f 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76  __).#define __av
b4e0: 5f 73 74 72 75 63 74 5f 6c 65 66 74 61 64 6a 75  _struct_leftadju
b4f0: 73 74 65 64 28 4c 49 53 54 2c 54 59 50 45 2c 54  sted(LIST,TYPE,T
b500: 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c  YPE_SIZE,TYPE_AL
b510: 49 47 4e 2c 41 53 53 49 47 4e 2c 56 41 4c 29 5c  IGN,ASSIGN,VAL)\
b520: 0a 20 20 28 28 28 4c 49 53 54 29 2e 61 70 74 72  .  (((LIST).aptr
b530: 20 3d 09 09 09 09 09 09 09 5c 0a 20 20 20 20 28   =.......\.    (
b540: 5f 5f 61 76 77 6f 72 64 2a 29 28 28 28 5f 5f 61  __avword*)(((__a
b550: 76 77 6f 72 64 29 28 4c 49 53 54 29 2e 61 70 74  vword)(LIST).apt
b560: 72 2b 28 54 59 50 45 5f 53 49 5a 45 29 2b 28 54  r+(TYPE_SIZE)+(T
b570: 59 50 45 5f 41 4c 49 47 4e 29 2d 31 29 20 26 20  YPE_ALIGN)-1) & 
b580: 2d 28 6c 6f 6e 67 29 28 54 59 50 45 5f 41 4c 49  -(long)(TYPE_ALI
b590: 47 4e 29 29 29 5c 0a 20 20 20 3e 20 5f 5f 61 76  GN)))\.   > __av
b5a0: 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09 09 09  _eptr(LIST).....
b5b0: 09 09 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 28 41  ..\.   ? -1 : (A
b5c0: 53 53 49 47 4e 28 54 59 50 45 2c 54 59 50 45 5f  SSIGN(TYPE,TYPE_
b5d0: 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c  SIZE,TYPE_ALIGN,
b5e0: 28 76 6f 69 64 2a 29 28 28 5f 5f 61 76 77 6f 72  (void*)((__avwor
b5f0: 64 29 28 4c 49 53 54 29 2e 61 70 74 72 2d 28 54  d)(LIST).aptr-(T
b600: 59 50 45 5f 53 49 5a 45 29 29 2c 56 41 4c 29 2c  YPE_SIZE)),VAL),
b610: 5c 0a 09 20 20 20 28 4c 49 53 54 29 2e 61 70 74  \..   (LIST).apt
b620: 72 20 3d 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28  r = (__avword*)(
b630: 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54  ((__avword)(LIST
b640: 29 2e 61 70 74 72 2b 73 69 7a 65 6f 66 28 5f 5f  ).aptr+sizeof(__
b650: 61 76 77 6f 72 64 29 2d 31 29 20 26 20 2d 28 6c  avword)-1) & -(l
b660: 6f 6e 67 29 73 69 7a 65 6f 66 28 5f 5f 61 76 77  ong)sizeof(__avw
b670: 6f 72 64 29 29 2c 5c 0a 09 20 20 20 30 29 29 0a  ord)),\..   0)).
b680: 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 72  #define __av_str
b690: 75 63 74 5f 72 69 67 68 74 61 64 6a 75 73 74 65  uct_rightadjuste
b6a0: 64 28 4c 49 53 54 2c 54 59 50 45 2c 54 59 50 45  d(LIST,TYPE,TYPE
b6b0: 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e  _SIZE,TYPE_ALIGN
b6c0: 2c 41 53 53 49 47 4e 2c 56 41 4c 29 5c 0a 20 20  ,ASSIGN,VAL)\.  
b6d0: 28 28 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 09  (((LIST).aptr =.
b6e0: 09 09 09 09 09 09 5c 0a 20 20 20 20 28 5f 5f 61  ......\.    (__a
b6f0: 76 77 6f 72 64 2a 29 28 28 28 28 28 5f 5f 61 76  vword*)(((((__av
b700: 77 6f 72 64 29 28 4c 49 53 54 29 2e 61 70 74 72  word)(LIST).aptr
b710: 2b 28 54 59 50 45 5f 53 49 5a 45 29 2b 28 54 59  +(TYPE_SIZE)+(TY
b720: 50 45 5f 41 4c 49 47 4e 29 2d 31 29 20 26 20 2d  PE_ALIGN)-1) & -
b730: 28 6c 6f 6e 67 29 28 54 59 50 45 5f 41 4c 49 47  (long)(TYPE_ALIG
b740: 4e 29 29 5c 0a 09 09 20 2b 73 69 7a 65 6f 66 28  N))\... +sizeof(
b750: 5f 5f 61 76 77 6f 72 64 29 2d 31 29 20 26 20 2d  __avword)-1) & -
b760: 28 6c 6f 6e 67 29 73 69 7a 65 6f 66 28 5f 5f 61  (long)sizeof(__a
b770: 76 77 6f 72 64 29 29 29 09 5c 0a 20 20 20 3e 20  vword))).\.   > 
b780: 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29 09  __av_eptr(LIST).
b790: 09 09 09 09 09 09 5c 0a 20 20 20 3f 20 2d 31 20  ......\.   ? -1 
b7a0: 3a 20 28 41 53 53 49 47 4e 28 54 59 50 45 2c 54  : (ASSIGN(TYPE,T
b7b0: 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c  YPE_SIZE,TYPE_AL
b7c0: 49 47 4e 2c 28 76 6f 69 64 2a 29 28 28 5f 5f 61  IGN,(void*)((__a
b7d0: 76 77 6f 72 64 29 28 4c 49 53 54 29 2e 61 70 74  vword)(LIST).apt
b7e0: 72 2d 28 54 59 50 45 5f 53 49 5a 45 29 29 2c 56  r-(TYPE_SIZE)),V
b7f0: 41 4c 29 2c 5c 0a 09 20 20 20 30 29 29 0a 23 64  AL),\..   0)).#d
b800: 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 72 75 63  efine __av_struc
b810: 74 28 4c 49 53 54 2c 54 59 50 45 2c 54 59 50 45  t(LIST,TYPE,TYPE
b820: 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e  _SIZE,TYPE_ALIGN
b830: 2c 41 53 53 49 47 4e 2c 56 41 4c 29 09 09 5c 0a  ,ASSIGN,VAL)..\.
b840: 20 20 28 28 4c 49 53 54 29 2e 66 6c 61 67 73 20    ((LIST).flags 
b850: 26 20 5f 5f 41 56 5f 41 49 58 43 43 5f 53 54 52  & __AV_AIXCC_STR
b860: 55 43 54 5f 41 52 47 53 09 09 09 09 5c 0a 20 20  UCT_ARGS....\.  
b870: 20 3f 20 2f 2a 20 41 49 58 20 63 63 20 61 6e 64   ? /* AIX cc and
b880: 20 78 6c 63 20 70 61 73 73 20 73 6d 61 6c 6c 20   xlc pass small 
b890: 73 74 72 75 63 74 75 72 65 73 20 6c 65 66 74 2d  structures left-
b8a0: 61 64 6a 75 73 74 65 64 2c 20 61 6c 74 68 6f 75  adjusted, althou
b8b0: 67 68 20 62 69 67 2d 65 6e 64 69 61 6e 21 20 2a  gh big-endian! *
b8c0: 2f 5c 0a 20 20 20 20 20 5f 5f 61 76 5f 73 74 72  /\.     __av_str
b8d0: 75 63 74 5f 6c 65 66 74 61 64 6a 75 73 74 65 64  uct_leftadjusted
b8e0: 28 4c 49 53 54 2c 54 59 50 45 2c 54 59 50 45 5f  (LIST,TYPE,TYPE_
b8f0: 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c  SIZE,TYPE_ALIGN,
b900: 41 53 53 49 47 4e 2c 56 41 4c 29 20 5c 0a 20 20  ASSIGN,VAL) \.  
b910: 20 3a 20 2f 2a 20 67 63 63 20 70 61 73 73 65 73   : /* gcc passes
b920: 20 73 6d 61 6c 6c 20 73 74 72 75 63 74 75 72 65   small structure
b930: 73 20 72 69 67 68 74 2d 61 64 6a 75 73 74 65 64  s right-adjusted
b940: 2e 20 2a 2f 09 09 09 5c 0a 20 20 20 20 20 5f 5f  . */...\.     __
b950: 61 76 5f 73 74 72 75 63 74 5f 72 69 67 68 74 61  av_struct_righta
b960: 64 6a 75 73 74 65 64 28 4c 49 53 54 2c 54 59 50  djusted(LIST,TYP
b970: 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45  E,TYPE_SIZE,TYPE
b980: 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e 2c 56 41  _ALIGN,ASSIGN,VA
b990: 4c 29 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64  L)).#endif.#if d
b9a0: 65 66 69 6e 65 64 28 5f 5f 73 33 39 30 5f 5f 29  efined(__s390__)
b9b0: 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74  .#define __av_st
b9c0: 72 75 63 74 5f 72 69 67 68 74 61 64 6a 75 73 74  ruct_rightadjust
b9d0: 65 64 28 4c 49 53 54 2c 54 59 50 45 2c 54 59 50  ed(LIST,TYPE,TYP
b9e0: 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47  E_SIZE,TYPE_ALIG
b9f0: 4e 2c 41 53 53 49 47 4e 2c 56 41 4c 29 5c 0a 20  N,ASSIGN,VAL)\. 
ba00: 20 28 28 28 4c 49 53 54 29 2e 61 70 74 72 20 3d   (((LIST).aptr =
ba10: 09 09 09 09 09 09 09 5c 0a 20 20 20 20 28 5f 5f  .......\.    (__
ba20: 61 76 77 6f 72 64 2a 29 28 28 28 28 28 5f 5f 61  avword*)(((((__a
ba30: 76 77 6f 72 64 29 28 4c 49 53 54 29 2e 61 70 74  vword)(LIST).apt
ba40: 72 2b 28 54 59 50 45 5f 53 49 5a 45 29 2b 28 54  r+(TYPE_SIZE)+(T
ba50: 59 50 45 5f 41 4c 49 47 4e 29 2d 31 29 20 26 20  YPE_ALIGN)-1) & 
ba60: 2d 28 6c 6f 6e 67 29 28 54 59 50 45 5f 41 4c 49  -(long)(TYPE_ALI
ba70: 47 4e 29 29 5c 0a 09 09 20 2b 73 69 7a 65 6f 66  GN))\... +sizeof
ba80: 28 5f 5f 61 76 77 6f 72 64 29 2d 31 29 20 26 20  (__avword)-1) & 
ba90: 2d 28 6c 6f 6e 67 29 73 69 7a 65 6f 66 28 5f 5f  -(long)sizeof(__
baa0: 61 76 77 6f 72 64 29 29 29 09 5c 0a 20 20 20 3e  avword))).\.   >
bab0: 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29   __av_eptr(LIST)
bac0: 09 09 09 09 09 09 09 5c 0a 20 20 20 3f 20 2d 31  .......\.   ? -1
bad0: 20 3a 20 28 41 53 53 49 47 4e 28 54 59 50 45 2c   : (ASSIGN(TYPE,
bae0: 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41  TYPE_SIZE,TYPE_A
baf0: 4c 49 47 4e 2c 28 76 6f 69 64 2a 29 28 28 5f 5f  LIGN,(void*)((__
bb00: 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e 61 70  avword)(LIST).ap
bb10: 74 72 2d 28 54 59 50 45 5f 53 49 5a 45 29 29 2c  tr-(TYPE_SIZE)),
bb20: 56 41 4c 29 2c 5c 0a 09 20 20 20 30 29 29 0a 23  VAL),\..   0)).#
bb30: 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 72 75  define __av_stru
bb40: 63 74 28 4c 49 53 54 2c 54 59 50 45 2c 54 59 50  ct(LIST,TYPE,TYP
bb50: 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47  E_SIZE,TYPE_ALIG
bb60: 4e 2c 41 53 53 49 47 4e 2c 56 41 4c 29 09 09 5c  N,ASSIGN,VAL)..\
bb70: 0a 28 28 54 59 50 45 5f 53 49 5a 45 29 20 21 3d  .((TYPE_SIZE) !=
bb80: 20 31 20 26 26 20 28 54 59 50 45 5f 53 49 5a 45   1 && (TYPE_SIZE
bb90: 29 20 21 3d 20 32 20 26 26 20 28 54 59 50 45 5f  ) != 2 && (TYPE_
bba0: 53 49 5a 45 29 20 21 3d 20 34 20 26 26 20 28 54  SIZE) != 4 && (T
bbb0: 59 50 45 5f 53 49 5a 45 29 20 21 3d 20 38 20 5c  YPE_SIZE) != 8 \
bbc0: 0a 20 3f 20 28 2b 2b 28 4c 49 53 54 29 2e 61 70  . ? (++(LIST).ap
bbd0: 74 72 09 09 09 09 09 09 09 5c 0a 20 20 20 20 3e  tr.......\.    >
bbe0: 20 28 28 4c 49 53 54 29 2e 65 70 74 72 20 3d 20   ((LIST).eptr = 
bbf0: 28 5f 5f 61 76 77 6f 72 64 2a 29 28 28 6c 6f 6e  (__avword*)((lon
bc00: 67 29 28 4c 49 53 54 29 2e 65 70 74 72 20 2d 20  g)(LIST).eptr - 
bc10: 28 28 28 54 59 50 45 5f 53 49 5a 45 29 2b 37 29  (((TYPE_SIZE)+7)
bc20: 26 2d 38 29 29 29 5c 0a 20 20 20 20 3f 20 2d 31  &-8)))\.    ? -1
bc30: 20 3a 09 09 09 09 09 09 09 09 5c 0a 20 20 20 20   :........\.    
bc40: 28 41 53 53 49 47 4e 28 54 59 50 45 2c 54 59 50  (ASSIGN(TYPE,TYP
bc50: 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47  E_SIZE,TYPE_ALIG
bc60: 4e 2c 28 76 6f 69 64 2a 29 28 4c 49 53 54 29 2e  N,(void*)(LIST).
bc70: 65 70 74 72 2c 56 41 4c 29 2c 09 09 5c 0a 20 20  eptr,VAL),..\.  
bc80: 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72 5b 2d     (LIST).aptr[-
bc90: 31 5d 20 3d 20 28 5f 5f 61 76 77 6f 72 64 29 28  1] = (__avword)(
bca0: 4c 49 53 54 29 2e 65 70 74 72 2c 09 09 09 09 5c  LIST).eptr,....\
bcb0: 0a 20 20 20 20 20 30 29 29 09 09 09 09 09 09 09  .     0)).......
bcc0: 09 5c 0a 20 3a 20 28 28 28 54 59 50 45 5f 53 49  .\. : (((TYPE_SI
bcd0: 5a 45 29 20 3d 3d 20 38 20 26 26 20 28 4c 49 53  ZE) == 8 && (LIS
bce0: 54 29 2e 61 70 74 72 20 2d 20 28 4c 49 53 54 29  T).aptr - (LIST)
bcf0: 2e 61 72 67 73 20 2d 20 28 4c 49 53 54 29 2e 66  .args - (LIST).f
bd00: 61 72 67 77 6f 72 64 73 20 3d 3d 20 34 20 3f 20  argwords == 4 ? 
bd10: 2b 2b 28 4c 49 53 54 29 2e 61 70 74 72 2c 30 20  ++(LIST).aptr,0 
bd20: 3a 20 30 29 2c 20 5c 0a 20 20 20 20 5f 5f 61 76  : 0), \.    __av
bd30: 5f 73 74 72 75 63 74 5f 72 69 67 68 74 61 64 6a  _struct_rightadj
bd40: 75 73 74 65 64 28 4c 49 53 54 2c 54 59 50 45 2c  usted(LIST,TYPE,
bd50: 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41  TYPE_SIZE,TYPE_A
bd60: 4c 49 47 4e 2c 41 53 53 49 47 4e 2c 56 41 4c 29  LIGN,ASSIGN,VAL)
bd70: 29 29 0a 23 65 6e 64 69 66 0a 2f 2a 20 62 69 67  )).#endif./* big
bd80: 20 65 6e 64 69 61 6e 20 2d 3e 20 73 6d 61 6c 6c   endian -> small
bd90: 20 73 74 72 75 63 74 75 72 65 73 20 3c 20 31 20   structures < 1 
bda0: 77 6f 72 64 20 61 72 65 20 61 64 6a 75 73 74 65  word are adjuste
bdb0: 64 20 74 6f 20 74 68 65 20 72 69 67 68 74 20 2a  d to the right *
bdc0: 2f 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  /.#if defined(__
bdd0: 6d 38 38 6b 5f 5f 29 0a 23 64 65 66 69 6e 65 20  m88k__).#define 
bde0: 5f 5f 61 76 5f 73 74 72 75 63 74 28 4c 49 53 54  __av_struct(LIST
bdf0: 2c 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c  ,TYPE,TYPE_SIZE,
be00: 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47  TYPE_ALIGN,ASSIG
be10: 4e 2c 56 41 4c 29 09 09 5c 0a 20 20 28 28 28 4c  N,VAL)..\.  (((L
be20: 49 53 54 29 2e 61 70 74 72 20 3d 09 09 09 09 09  IST).aptr =.....
be30: 09 09 5c 0a 20 20 20 20 28 5f 5f 61 76 77 6f 72  ..\.    (__avwor
be40: 64 2a 29 28 28 28 28 28 5f 5f 61 76 77 6f 72 64  d*)(((((__avword
be50: 29 28 4c 49 53 54 29 2e 61 70 74 72 2b 28 54 59  )(LIST).aptr+(TY
be60: 50 45 5f 53 49 5a 45 29 2b 28 54 59 50 45 5f 41  PE_SIZE)+(TYPE_A
be70: 4c 49 47 4e 29 2d 31 29 20 26 20 2d 28 6c 6f 6e  LIGN)-1) & -(lon
be80: 67 29 28 54 59 50 45 5f 41 4c 49 47 4e 29 29 5c  g)(TYPE_ALIGN))\
be90: 0a 09 09 20 2b 73 69 7a 65 6f 66 28 5f 5f 61 76  ... +sizeof(__av
bea0: 77 6f 72 64 29 2d 31 29 20 26 20 2d 28 6c 6f 6e  word)-1) & -(lon
beb0: 67 29 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72  g)sizeof(__avwor
bec0: 64 29 29 29 09 5c 0a 20 20 20 3e 20 5f 5f 61 76  d))).\.   > __av
bed0: 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09 09 09  _eptr(LIST).....
bee0: 09 09 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 28 41  ..\.   ? -1 : (A
bef0: 53 53 49 47 4e 28 54 59 50 45 2c 54 59 50 45 5f  SSIGN(TYPE,TYPE_
bf00: 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c  SIZE,TYPE_ALIGN,
bf10: 28 76 6f 69 64 2a 29 28 28 5f 5f 61 76 77 6f 72  (void*)((__avwor
bf20: 64 29 28 4c 49 53 54 29 2e 61 70 74 72 2d 28 54  d)(LIST).aptr-(T
bf30: 59 50 45 5f 53 49 5a 45 29 29 2c 56 41 4c 29 2c  YPE_SIZE)),VAL),
bf40: 5c 0a 09 20 20 20 30 29 29 0a 23 65 6e 64 69 66  \..   0)).#endif
bf50: 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69  .#endif.#if defi
bf60: 6e 65 64 28 5f 5f 6d 36 38 6b 5f 5f 29 20 7c 7c  ned(__m68k__) ||
bf70: 20 64 65 66 69 6e 65 64 28 5f 5f 61 72 6d 5f 5f   defined(__arm__
bf80: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 63  ) || defined(__c
bf90: 6f 6e 76 65 78 5f 5f 29 0a 2f 2a 20 53 74 72 75  onvex__)./* Stru
bfa0: 63 74 75 72 65 73 20 61 72 65 20 70 61 73 73 65  ctures are passe
bfb0: 64 20 61 73 20 65 6d 62 65 64 64 65 64 20 63 6f  d as embedded co
bfc0: 70 69 65 73 20 6f 6e 20 74 68 65 20 61 72 67 20  pies on the arg 
bfd0: 73 74 61 63 6b 2e 0a 20 2a 2f 0a 23 64 65 66 69  stack.. */.#defi
bfe0: 6e 65 20 5f 5f 61 76 5f 73 74 72 75 63 74 28 4c  ne __av_struct(L
bff0: 49 53 54 2c 54 59 50 45 2c 54 59 50 45 5f 53 49  IST,TYPE,TYPE_SI
c000: 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53  ZE,TYPE_ALIGN,AS
c010: 53 49 47 4e 2c 56 41 4c 29 09 09 5c 0a 20 20 28  SIGN,VAL)..\.  (
c020: 28 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 28  ((LIST).aptr = (
c030: 5f 5f 61 76 77 6f 72 64 2a 29 28 28 28 6c 6f 6e  __avword*)(((lon
c040: 67 29 28 4c 49 53 54 29 2e 61 70 74 72 2b 28 54  g)(LIST).aptr+(T
c050: 59 50 45 5f 53 49 5a 45 29 2b 73 69 7a 65 6f 66  YPE_SIZE)+sizeof
c060: 28 5f 5f 61 76 77 6f 72 64 29 2d 31 29 20 26 20  (__avword)-1) & 
c070: 2d 28 6c 6f 6e 67 29 73 69 7a 65 6f 66 28 5f 5f  -(long)sizeof(__
c080: 61 76 77 6f 72 64 29 29 29 20 5c 0a 20 20 20 20  avword))) \.    
c090: 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54  > __av_eptr(LIST
c0a0: 29 09 09 09 09 09 09 09 5c 0a 20 20 20 20 3f 20  ).......\.    ? 
c0b0: 2d 31 20 3a 20 28 41 53 53 49 47 4e 28 54 59 50  -1 : (ASSIGN(TYP
c0c0: 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45  E,TYPE_SIZE,TYPE
c0d0: 5f 41 4c 49 47 4e 2c 28 76 6f 69 64 2a 29 28 28  _ALIGN,(void*)((
c0e0: 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e  __avword)(LIST).
c0f0: 61 70 74 72 2d 28 54 59 50 45 5f 53 49 5a 45 29  aptr-(TYPE_SIZE)
c100: 29 2c 56 41 4c 29 2c 5c 0a 09 20 20 20 20 30 29  ),VAL),\..    0)
c110: 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 28 64 65  ).#endif.#if (de
c120: 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f 5f 29  fined(__sparc__)
c130: 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 73   && !defined(__s
c140: 70 61 72 63 36 34 5f 5f 29 29 20 7c 7c 20 28 64  parc64__)) || (d
c150: 65 66 69 6e 65 64 28 5f 5f 72 73 36 30 30 30 5f  efined(__rs6000_
c160: 5f 29 20 26 26 20 21 28 64 65 66 69 6e 65 64 28  _) && !(defined(
c170: 5f 41 49 58 29 20 7c 7c 20 28 64 65 66 69 6e 65  _AIX) || (define
c180: 64 28 5f 5f 4d 41 43 48 5f 5f 29 20 26 26 20 64  d(__MACH__) && d
c190: 65 66 69 6e 65 64 28 5f 5f 41 50 50 4c 45 5f 5f  efined(__APPLE__
c1a0: 29 29 29 29 0a 2f 2a 20 53 74 72 75 63 74 75 72  ))))./* Structur
c1b0: 65 73 20 61 72 65 20 70 61 73 73 65 64 20 61 73  es are passed as
c1c0: 20 70 6f 69 6e 74 65 72 73 20 74 6f 20 63 61 6c   pointers to cal
c1d0: 6c 65 72 2d 6d 61 64 65 20 6c 6f 63 61 6c 20 63  ler-made local c
c1e0: 6f 70 69 65 73 2e 20 57 65 0a 20 2a 20 67 72 61  opies. We. * gra
c1f0: 62 20 73 70 61 63 65 20 66 6f 72 20 74 68 65 20  b space for the 
c200: 63 6f 70 69 65 73 20 66 72 6f 6d 20 74 68 65 20  copies from the 
c210: 65 6e 64 20 6f 66 20 74 68 65 20 61 72 67 75 6d  end of the argum
c220: 65 6e 74 20 6c 69 73 74 20 73 70 61 63 65 0a 20  ent list space. 
c230: 2a 20 61 6e 64 20 61 6c 77 61 79 73 20 75 73 65  * and always use
c240: 20 6d 61 78 69 6d 61 6c 20 28 64 6f 75 62 6c 65   maximal (double
c250: 29 20 61 6c 69 67 6e 6d 65 6e 74 2e 0a 20 2a 2f  ) alignment.. */
c260: 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74  .#define __av_st
c270: 72 75 63 74 28 4c 49 53 54 2c 54 59 50 45 2c 54  ruct(LIST,TYPE,T
c280: 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c  YPE_SIZE,TYPE_AL
c290: 49 47 4e 2c 41 53 53 49 47 4e 2c 56 41 4c 29 09  IGN,ASSIGN,VAL).
c2a0: 09 5c 0a 20 20 20 28 2b 2b 28 4c 49 53 54 29 2e  .\.   (++(LIST).
c2b0: 61 70 74 72 09 09 09 09 09 09 09 5c 0a 20 20 20  aptr.......\.   
c2c0: 20 3e 20 28 28 4c 49 53 54 29 2e 65 70 74 72 20   > ((LIST).eptr 
c2d0: 3d 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28 28 6c  = (__avword*)((l
c2e0: 6f 6e 67 29 28 4c 49 53 54 29 2e 65 70 74 72 20  ong)(LIST).eptr 
c2f0: 2d 20 28 28 28 54 59 50 45 5f 53 49 5a 45 29 2b  - (((TYPE_SIZE)+
c300: 37 29 26 2d 38 29 29 29 5c 0a 20 20 20 20 3f 20  7)&-8)))\.    ? 
c310: 2d 31 20 3a 09 09 09 09 09 09 09 09 5c 0a 20 20  -1 :........\.  
c320: 20 20 28 41 53 53 49 47 4e 28 54 59 50 45 2c 54    (ASSIGN(TYPE,T
c330: 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c  YPE_SIZE,TYPE_AL
c340: 49 47 4e 2c 28 76 6f 69 64 2a 29 28 4c 49 53 54  IGN,(void*)(LIST
c350: 29 2e 65 70 74 72 2c 56 41 4c 29 2c 09 09 5c 0a  ).eptr,VAL),..\.
c360: 20 20 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72       (LIST).aptr
c370: 5b 2d 31 5d 20 3d 20 28 5f 5f 61 76 77 6f 72 64  [-1] = (__avword
c380: 29 28 4c 49 53 54 29 2e 65 70 74 72 2c 09 09 09  )(LIST).eptr,...
c390: 09 5c 0a 20 20 20 20 20 30 29 29 0a 23 65 6e 64  .\.     0)).#end
c3a0: 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f  if.#if defined(_
c3b0: 5f 73 70 61 72 63 36 34 5f 5f 29 0a 2f 2a 20 53  _sparc64__)./* S
c3c0: 74 72 75 63 74 75 72 65 73 20 3c 3d 20 31 36 20  tructures <= 16 
c3d0: 62 79 74 65 73 20 61 72 65 20 70 61 73 73 65 64  bytes are passed
c3e0: 20 61 73 20 65 6d 62 65 64 64 65 64 20 63 6f 70   as embedded cop
c3f0: 69 65 73 20 6f 6e 20 74 68 65 20 61 72 67 20 73  ies on the arg s
c400: 74 61 63 6b 2c 0a 20 2a 20 6c 65 66 74 2d 61 64  tack,. * left-ad
c410: 6a 75 73 74 65 64 20 28 61 6c 74 68 6f 75 67 68  justed (although
c420: 20 62 69 67 2d 65 6e 64 69 61 6e 21 29 2e 0a 20   big-endian!).. 
c430: 2a 20 57 68 65 6e 20 61 20 73 74 72 75 63 74 75  * When a structu
c440: 72 65 20 69 73 20 70 61 73 73 65 64 20 28 70 61  re is passed (pa
c450: 72 74 69 61 6c 6c 79 29 20 69 6e 20 72 65 67 69  rtially) in regi
c460: 73 74 65 72 73 2c 20 69 74 20 69 73 20 70 61 73  sters, it is pas
c470: 73 65 64 20 69 6e 20 74 68 65 0a 20 2a 20 69 6e  sed in the. * in
c480: 74 65 67 65 72 20 72 65 67 69 73 74 65 72 73 2c  teger registers,
c490: 20 65 78 63 65 70 74 20 74 68 61 74 20 66 6c 6f   except that flo
c4a0: 61 74 73 20 61 6e 64 20 64 6f 75 62 6c 65 73 20  ats and doubles 
c4b0: 77 69 74 68 69 6e 20 74 68 65 20 73 74 72 75 63  within the struc
c4c0: 74 75 72 65 0a 20 2a 20 61 72 65 20 70 61 73 73  ture. * are pass
c4d0: 65 64 20 69 6e 20 74 68 65 20 66 6c 6f 61 74 69  ed in the floati
c4e0: 6e 67 20 70 6f 69 6e 74 20 72 65 67 69 73 74 65  ng point registe
c4f0: 72 73 2e 20 49 6e 73 74 65 61 64 20 6f 66 20 64  rs. Instead of d
c500: 69 73 74 69 6e 67 75 69 73 68 69 6e 67 0a 20 2a  istinguishing. *
c510: 20 74 68 65 73 65 20 63 61 73 65 73 2c 20 77 65   these cases, we
c520: 20 61 6c 77 61 79 73 20 70 61 73 73 20 74 68 65   always pass the
c530: 20 73 74 72 75 63 74 75 72 65 20 69 6e 20 62 6f   structure in bo
c540: 74 68 20 74 68 65 20 69 6e 74 65 67 65 72 20 61  th the integer a
c550: 6e 64 20 74 68 65 0a 20 2a 20 66 6c 6f 61 74 69  nd the. * floati
c560: 6e 67 20 70 6f 69 6e 74 20 72 65 67 69 73 74 65  ng point registe
c570: 72 73 2e 0a 20 2a 20 42 69 67 20 73 74 72 75 63  rs.. * Big struc
c580: 74 75 72 65 73 20 61 72 65 20 70 61 73 73 65 64  tures are passed
c590: 20 61 73 20 70 6f 69 6e 74 65 72 73 20 74 6f 20   as pointers to 
c5a0: 63 61 6c 6c 65 72 2d 6d 61 64 65 20 6c 6f 63 61  caller-made loca
c5b0: 6c 20 63 6f 70 69 65 73 2e 0a 20 2a 20 46 49 58  l copies.. * FIX
c5c0: 4d 45 3a 20 53 68 6f 75 6c 64 6e 27 74 20 28 4c  ME: Shouldn't (L
c5d0: 49 53 54 29 2e 61 6e 75 6d 20 62 65 20 69 6e 63  IST).anum be inc
c5e0: 72 65 6d 65 6e 74 65 64 20 69 6e 20 73 79 6e 63  remented in sync
c5f0: 20 77 69 74 68 20 28 4c 49 53 54 29 2e 61 70 74   with (LIST).apt
c600: 72 20 3f 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20  r ?. */.#define 
c610: 5f 5f 61 76 5f 73 74 72 75 63 74 28 4c 49 53 54  __av_struct(LIST
c620: 2c 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c  ,TYPE,TYPE_SIZE,
c630: 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47  TYPE_ALIGN,ASSIG
c640: 4e 2c 56 41 4c 29 09 09 5c 0a 20 20 28 28 54 59  N,VAL)..\.  ((TY
c650: 50 45 5f 53 49 5a 45 29 20 3e 20 31 36 09 09 09  PE_SIZE) > 16...
c660: 09 09 09 09 5c 0a 20 20 20 3f 20 28 2b 2b 28 4c  ....\.   ? (++(L
c670: 49 53 54 29 2e 61 70 74 72 09 09 09 09 09 09 09  IST).aptr.......
c680: 5c 0a 20 20 20 20 20 20 3e 20 28 28 4c 49 53 54  \.      > ((LIST
c690: 29 2e 65 70 74 72 20 3d 20 28 5f 5f 61 76 77 6f  ).eptr = (__avwo
c6a0: 72 64 2a 29 28 28 6c 6f 6e 67 29 28 4c 49 53 54  rd*)((long)(LIST
c6b0: 29 2e 65 70 74 72 20 2d 20 28 28 28 54 59 50 45  ).eptr - (((TYPE
c6c0: 5f 53 49 5a 45 29 2b 37 29 26 2d 38 29 29 29 5c  _SIZE)+7)&-8)))\
c6d0: 0a 20 20 20 20 20 20 3f 20 2d 31 20 3a 09 09 09  .      ? -1 :...
c6e0: 09 09 09 09 09 5c 0a 20 20 20 20 20 20 28 41 53  .....\.      (AS
c6f0: 53 49 47 4e 28 54 59 50 45 2c 54 59 50 45 5f 53  SIGN(TYPE,TYPE_S
c700: 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 28  IZE,TYPE_ALIGN,(
c710: 76 6f 69 64 2a 29 28 4c 49 53 54 29 2e 65 70 74  void*)(LIST).ept
c720: 72 2c 56 41 4c 29 2c 09 5c 0a 20 20 20 20 20 20  r,VAL),.\.      
c730: 20 28 4c 49 53 54 29 2e 61 70 74 72 5b 2d 31 5d   (LIST).aptr[-1]
c740: 20 3d 20 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49   = (__avword)(LI
c750: 53 54 29 2e 65 70 74 72 2c 09 09 09 09 5c 0a 20  ST).eptr,....\. 
c760: 20 20 20 20 20 20 30 29 29 09 09 09 09 09 09 09        0)).......
c770: 09 5c 0a 20 20 20 3a 20 28 28 28 4c 49 53 54 29  .\.   : (((LIST)
c780: 2e 61 70 74 72 20 3d 09 09 09 09 09 09 09 5c 0a  .aptr =.......\.
c790: 20 20 20 20 20 20 20 28 5f 5f 61 76 77 6f 72 64         (__avword
c7a0: 2a 29 28 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c  *)(((__avword)(L
c7b0: 49 53 54 29 2e 61 70 74 72 2b 28 54 59 50 45 5f  IST).aptr+(TYPE_
c7c0: 53 49 5a 45 29 2b 28 54 59 50 45 5f 41 4c 49 47  SIZE)+(TYPE_ALIG
c7d0: 4e 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 28  N)-1) & -(long)(
c7e0: 54 59 50 45 5f 41 4c 49 47 4e 29 29 29 5c 0a 20  TYPE_ALIGN)))\. 
c7f0: 20 20 20 20 20 3e 20 5f 5f 61 76 5f 65 70 74 72       > __av_eptr
c800: 28 4c 49 53 54 29 09 09 09 09 09 09 09 5c 0a 20  (LIST).......\. 
c810: 20 20 20 20 20 3f 20 2d 31 20 3a 20 28 41 53 53       ? -1 : (ASS
c820: 49 47 4e 28 54 59 50 45 2c 54 59 50 45 5f 53 49  IGN(TYPE,TYPE_SI
c830: 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 28 76  ZE,TYPE_ALIGN,(v
c840: 6f 69 64 2a 29 28 28 5f 5f 61 76 77 6f 72 64 29  oid*)((__avword)
c850: 28 4c 49 53 54 29 2e 61 70 74 72 2d 28 54 59 50  (LIST).aptr-(TYP
c860: 45 5f 53 49 5a 45 29 29 2c 56 41 4c 29 2c 5c 0a  E_SIZE)),VAL),\.
c870: 09 20 20 20 20 20 20 28 4c 49 53 54 29 2e 61 70  .      (LIST).ap
c880: 74 72 20 3d 20 28 5f 5f 61 76 77 6f 72 64 2a 29  tr = (__avword*)
c890: 28 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53  (((__avword)(LIS
c8a0: 54 29 2e 61 70 74 72 2b 73 69 7a 65 6f 66 28 5f  T).aptr+sizeof(_
c8b0: 5f 61 76 77 6f 72 64 29 2d 31 29 20 26 20 2d 28  _avword)-1) & -(
c8c0: 6c 6f 6e 67 29 73 69 7a 65 6f 66 28 5f 5f 61 76  long)sizeof(__av
c8d0: 77 6f 72 64 29 29 2c 5c 0a 09 20 20 20 20 20 20  word)),\..      
c8e0: 28 28 4c 49 53 54 29 2e 61 6e 75 6d 20 3c 20 31  ((LIST).anum < 1
c8f0: 36 09 09 09 09 09 09 5c 0a 09 09 26 26 20 28 28  6......\...&& ((
c900: 4c 49 53 54 29 2e 66 61 72 67 5f 6d 61 73 6b 20  LIST).farg_mask 
c910: 7c 3d 20 28 2d 31 20 3c 3c 20 28 4c 49 53 54 29  |= (-1 << (LIST)
c920: 2e 61 6e 75 6d 29 2c 09 09 5c 0a 09 09 20 20 20  .anum),..\...   
c930: 20 28 4c 49 53 54 29 2e 64 61 72 67 5f 6d 61 73   (LIST).darg_mas
c940: 6b 20 7c 3d 20 28 2d 31 20 3c 3c 20 28 4c 49 53  k |= (-1 << (LIS
c950: 54 29 2e 61 6e 75 6d 29 29 29 2c 09 09 5c 0a 09  T).anum))),..\..
c960: 20 20 20 20 20 20 28 4c 49 53 54 29 2e 61 6e 75        (LIST).anu
c970: 6d 20 2b 3d 20 28 28 28 28 28 54 59 50 45 5f 53  m += (((((TYPE_S
c980: 49 5a 45 29 2b 28 54 59 50 45 5f 41 4c 49 47 4e  IZE)+(TYPE_ALIGN
c990: 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 28 54  )-1) & -(long)(T
c9a0: 59 50 45 5f 41 4c 49 47 4e 29 29 20 2b 20 73 69  YPE_ALIGN)) + si
c9b0: 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 2d 31  zeof(__avword)-1
c9c0: 29 20 26 20 2d 28 6c 6f 6e 67 29 73 69 7a 65 6f  ) & -(long)sizeo
c9d0: 66 28 5f 5f 61 76 77 6f 72 64 29 29 2f 73 69 7a  f(__avword))/siz
c9e0: 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 2c 5c 0a  eof(__avword),\.
c9f0: 09 20 20 20 20 20 20 28 4c 49 53 54 29 2e 66 61  .      (LIST).fa
ca00: 72 67 5f 6d 61 73 6b 20 26 3d 20 28 31 20 3c 3c  rg_mask &= (1 <<
ca10: 20 28 28 4c 49 53 54 29 2e 61 6e 75 6d 20 3c 20   ((LIST).anum < 
ca20: 31 36 20 3f 20 28 4c 49 53 54 29 2e 61 6e 75 6d  16 ? (LIST).anum
ca30: 20 3a 20 31 36 29 29 20 2d 20 31 2c 20 5c 0a 09   : 16)) - 1, \..
ca40: 20 20 20 20 20 20 28 4c 49 53 54 29 2e 64 61 72        (LIST).dar
ca50: 67 5f 6d 61 73 6b 20 26 3d 20 28 31 20 3c 3c 20  g_mask &= (1 << 
ca60: 28 28 4c 49 53 54 29 2e 61 6e 75 6d 20 3c 20 31  ((LIST).anum < 1
ca70: 36 20 3f 20 28 4c 49 53 54 29 2e 61 6e 75 6d 20  6 ? (LIST).anum 
ca80: 3a 20 31 36 29 29 20 2d 20 31 2c 20 5c 0a 09 20  : 16)) - 1, \.. 
ca90: 20 20 20 20 20 30 29 29 29 0a 23 65 6e 64 69 66       0))).#endif
caa0: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 68  .#if defined(__h
cab0: 70 70 61 5f 5f 29 0a 2f 2a 20 53 74 72 75 63 74  ppa__)./* Struct
cac0: 75 72 65 73 20 3c 3d 20 38 20 62 79 74 65 73 20  ures <= 8 bytes 
cad0: 61 72 65 20 70 61 73 73 65 64 20 61 73 20 65 6d  are passed as em
cae0: 62 65 64 64 65 64 20 63 6f 70 69 65 73 20 6f 6e  bedded copies on
caf0: 20 74 68 65 20 61 72 67 20 73 74 61 63 6b 2e 0a   the arg stack..
cb00: 20 2a 20 42 69 67 20 73 74 72 75 63 74 75 72 65   * Big structure
cb10: 73 20 61 72 65 20 70 61 73 73 65 64 20 61 73 20  s are passed as 
cb20: 70 6f 69 6e 74 65 72 73 20 74 6f 20 63 61 6c 6c  pointers to call
cb30: 65 72 2d 6d 61 64 65 20 6c 6f 63 61 6c 20 63 6f  er-made local co
cb40: 70 69 65 73 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e  pies.. */.#defin
cb50: 65 20 5f 5f 61 76 5f 73 74 72 75 63 74 28 4c 49  e __av_struct(LI
cb60: 53 54 2c 54 59 50 45 2c 54 59 50 45 5f 53 49 5a  ST,TYPE,TYPE_SIZ
cb70: 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53  E,TYPE_ALIGN,ASS
cb80: 49 47 4e 2c 56 41 4c 29 09 09 09 5c 0a 20 20 28  IGN,VAL)...\.  (
cb90: 28 54 59 50 45 5f 53 49 5a 45 29 20 3e 20 38 09  (TYPE_SIZE) > 8.
cba0: 09 09 09 09 09 09 09 5c 0a 20 20 20 3f 20 28 2d  .......\.   ? (-
cbb0: 2d 28 4c 49 53 54 29 2e 61 70 74 72 09 09 09 09  -(LIST).aptr....
cbc0: 09 09 09 09 5c 0a 20 20 20 20 20 20 3c 20 28 28  ....\.      < ((
cbd0: 4c 49 53 54 29 2e 65 70 74 72 20 3d 20 28 5f 5f  LIST).eptr = (__
cbe0: 61 76 77 6f 72 64 2a 29 28 28 6c 6f 6e 67 29 28  avword*)((long)(
cbf0: 4c 49 53 54 29 2e 65 70 74 72 20 2b 20 28 28 28  LIST).eptr + (((
cc00: 54 59 50 45 5f 53 49 5a 45 29 20 2b 20 37 29 20  TYPE_SIZE) + 7) 
cc10: 26 20 2d 38 29 29 29 20 5c 0a 20 20 20 20 20 20  & -8))) \.      
cc20: 3f 20 2d 31 09 09 09 09 09 09 09 09 09 5c 0a 20  ? -1.........\. 
cc30: 20 20 20 20 20 3a 20 28 41 53 53 49 47 4e 28 54       : (ASSIGN(T
cc40: 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59  YPE,TYPE_SIZE,TY
cc50: 50 45 5f 41 4c 49 47 4e 2c 28 76 6f 69 64 2a 29  PE_ALIGN,(void*)
cc60: 28 28 6c 6f 6e 67 29 28 4c 49 53 54 29 2e 65 70  ((long)(LIST).ep
cc70: 74 72 20 2d 20 28 28 28 54 59 50 45 5f 53 49 5a  tr - (((TYPE_SIZ
cc80: 45 29 20 2b 20 37 29 20 26 20 2d 38 29 29 2c 20  E) + 7) & -8)), 
cc90: 56 41 4c 29 2c 20 5c 0a 09 20 2a 28 4c 49 53 54  VAL), \.. *(LIST
cca0: 29 2e 61 70 74 72 20 3d 20 28 5f 5f 61 76 77 6f  ).aptr = (__avwo
ccb0: 72 64 29 28 28 6c 6f 6e 67 29 28 4c 49 53 54 29  rd)((long)(LIST)
ccc0: 2e 65 70 74 72 20 2d 20 28 28 28 54 59 50 45 5f  .eptr - (((TYPE_
ccd0: 53 49 5a 45 29 20 2b 20 37 29 20 26 20 2d 38 29  SIZE) + 7) & -8)
cce0: 29 2c 20 5c 0a 09 20 30 29 29 09 09 09 09 09 09  ), \.. 0))......
ccf0: 09 09 09 5c 0a 20 20 20 3a 20 28 28 54 59 50 45  ...\.   : ((TYPE
cd00: 5f 53 49 5a 45 29 20 3e 20 34 09 09 09 09 09 09  _SIZE) > 4......
cd10: 09 09 5c 0a 20 20 20 20 20 20 3f 20 28 28 28 4c  ..\.      ? (((L
cd20: 49 53 54 29 2e 61 70 74 72 20 3d 20 28 5f 5f 61  IST).aptr = (__a
cd30: 76 77 6f 72 64 2a 29 28 28 28 28 6c 6f 6e 67 29  vword*)((((long)
cd40: 28 4c 49 53 54 29 2e 61 70 74 72 20 26 20 2d 38  (LIST).aptr & -8
cd50: 29 20 2d 20 28 6c 6f 6e 67 29 28 54 59 50 45 5f  ) - (long)(TYPE_
cd60: 53 49 5a 45 29 29 20 26 20 2d 38 29 29 20 5c 0a  SIZE)) & -8)) \.
cd70: 09 20 20 3c 20 26 28 4c 49 53 54 29 2e 61 72 67  .  < &(LIST).arg
cd80: 73 5b 30 5d 09 09 09 09 09 09 09 5c 0a 09 20 20  s[0].......\..  
cd90: 3f 20 2d 31 20 3a 20 28 41 53 53 49 47 4e 28 54  ? -1 : (ASSIGN(T
cda0: 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59  YPE,TYPE_SIZE,TY
cdb0: 50 45 5f 41 4c 49 47 4e 2c 28 76 6f 69 64 2a 29  PE_ALIGN,(void*)
cdc0: 28 4c 49 53 54 29 2e 61 70 74 72 2c 56 41 4c 29  (LIST).aptr,VAL)
cdd0: 2c 20 30 29 29 09 5c 0a 20 20 20 20 20 20 3a 20  , 0)).\.      : 
cde0: 2f 2a 20 46 49 58 4d 45 3a 20 67 63 63 2d 32 2e  /* FIXME: gcc-2.
cdf0: 36 2e 33 20 70 61 73 73 65 73 20 73 74 72 75 63  6.3 passes struc
ce00: 74 75 72 65 73 20 3c 3d 20 34 20 62 79 74 65 73  tures <= 4 bytes
ce10: 20 69 6e 20 6d 65 6d 6f 72 79 20 6c 65 66 74 2d   in memory left-
ce20: 61 64 6a 75 73 74 65 64 21 20 3f 3f 20 2a 2f 5c  adjusted! ?? */\
ce30: 0a 20 20 20 20 20 20 20 20 28 28 28 4c 49 53 54  .        (((LIST
ce40: 29 2e 61 70 74 72 20 3d 20 28 5f 5f 61 76 77 6f  ).aptr = (__avwo
ce50: 72 64 2a 29 28 28 28 6c 6f 6e 67 29 28 4c 49 53  rd*)(((long)(LIS
ce60: 54 29 2e 61 70 74 72 20 26 20 2d 34 29 20 2d 20  T).aptr & -4) - 
ce70: 28 6c 6f 6e 67 29 28 54 59 50 45 5f 53 49 5a 45  (long)(TYPE_SIZE
ce80: 29 29 29 20 5c 0a 09 20 20 3c 20 26 28 4c 49 53  ))) \..  < &(LIS
ce90: 54 29 2e 61 72 67 73 5b 30 5d 09 09 09 09 09 09  T).args[0]......
cea0: 09 5c 0a 09 20 20 3f 20 2d 31 20 3a 20 28 41 53  .\..  ? -1 : (AS
ceb0: 53 49 47 4e 28 54 59 50 45 2c 54 59 50 45 5f 53  SIGN(TYPE,TYPE_S
cec0: 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 28  IZE,TYPE_ALIGN,(
ced0: 76 6f 69 64 2a 29 28 4c 49 53 54 29 2e 61 70 74  void*)(LIST).apt
cee0: 72 2c 56 41 4c 29 2c 09 5c 0a 09 09 20 20 28 4c  r,VAL),.\...  (L
cef0: 49 53 54 29 2e 61 70 74 72 20 3d 20 28 5f 5f 61  IST).aptr = (__a
cf00: 76 77 6f 72 64 2a 29 28 28 6c 6f 6e 67 29 28 4c  vword*)((long)(L
cf10: 49 53 54 29 2e 61 70 74 72 20 26 20 2d 34 29 2c  IST).aptr & -4),
cf20: 09 09 5c 0a 09 09 20 20 30 29 29 29 29 0a 23 65  ..\...  0)))).#e
cf30: 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64  ndif.#if defined
cf40: 28 5f 5f 78 38 36 5f 36 34 5f 5f 29 0a 2f 2a 20  (__x86_64__)./* 
cf50: 53 74 72 75 63 74 75 72 65 73 20 3c 3d 20 31 36  Structures <= 16
cf60: 20 62 79 74 65 73 20 63 61 6e 20 62 65 20 70 61   bytes can be pa
cf70: 73 73 65 64 20 69 6e 20 69 6e 74 65 67 65 72 20  ssed in integer 
cf80: 6f 72 20 66 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e  or floating-poin
cf90: 74 20 72 65 67 69 73 74 65 72 73 0a 20 20 20 69  t registers.   i
cfa0: 66 20 74 68 65 72 65 20 69 73 20 65 6e 6f 75 67  f there is enoug
cfb0: 68 20 72 6f 6f 6d 20 66 6f 72 20 74 68 65 20 77  h room for the w
cfc0: 68 6f 6c 65 20 6e 75 6d 62 65 72 20 6f 66 20 77  hole number of w
cfd0: 6f 72 64 73 20 6e 65 65 64 65 64 20 62 79 20 74  ords needed by t
cfe0: 68 65 20 73 74 72 75 63 74 75 72 65 0a 20 20 20  he structure.   
cff0: 69 6e 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e  in the correspon
d000: 64 69 6e 67 20 69 61 72 67 73 2f 66 61 72 67 73  ding iargs/fargs
d010: 20 62 6c 6f 63 6b 2e 20 57 65 20 63 61 6e 27 74   block. We can't
d020: 20 64 69 73 74 69 6e 67 75 69 73 68 20 74 68 65   distinguish the
d030: 20 74 77 6f 20 63 61 73 65 73 0a 20 20 20 61 6e   two cases.   an
d040: 64 20 73 75 70 70 6f 72 74 20 6f 6e 6c 79 20 70  d support only p
d050: 61 73 73 69 6e 67 20 69 6e 20 69 6e 74 65 67 65  assing in intege
d060: 72 20 72 65 67 69 73 74 65 72 73 2e 20 4f 74 68  r registers. Oth
d070: 65 72 20 73 74 72 75 63 74 75 72 65 73 20 61 72  er structures ar
d080: 65 20 70 61 73 73 65 64 0a 20 20 20 6f 6e 20 74  e passed.   on t
d090: 68 65 20 61 72 67 20 73 74 61 63 6b 2e 20 2a 2f  he arg stack. */
d0a0: 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74  .#define __av_st
d0b0: 72 75 63 74 28 4c 49 53 54 2c 54 59 50 45 2c 54  ruct(LIST,TYPE,T
d0c0: 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c  YPE_SIZE,TYPE_AL
d0d0: 49 47 4e 2c 41 53 53 49 47 4e 2c 56 41 4c 29 09  IGN,ASSIGN,VAL).
d0e0: 09 09 5c 0a 20 20 28 28 4c 49 53 54 29 2e 69 61  ..\.  ((LIST).ia
d0f0: 70 74 72 20 2b 20 28 28 54 59 50 45 5f 53 49 5a  ptr + ((TYPE_SIZ
d100: 45 29 20 2b 20 73 69 7a 65 6f 66 28 5f 5f 61 76  E) + sizeof(__av
d110: 77 6f 72 64 29 2d 31 29 20 2f 20 73 69 7a 65 6f  word)-1) / sizeo
d120: 66 28 5f 5f 61 76 77 6f 72 64 29 20 3c 3d 20 26  f(__avword) <= &
d130: 28 4c 49 53 54 29 2e 69 61 72 67 73 5b 36 5d 20  (LIST).iargs[6] 
d140: 5c 0a 20 20 20 3f 20 28 41 53 53 49 47 4e 28 54  \.   ? (ASSIGN(T
d150: 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59  YPE,TYPE_SIZE,TY
d160: 50 45 5f 41 4c 49 47 4e 2c 28 76 6f 69 64 2a 29  PE_ALIGN,(void*)
d170: 28 4c 49 53 54 29 2e 69 61 70 74 72 2c 56 41 4c  (LIST).iaptr,VAL
d180: 29 2c 09 09 5c 0a 20 20 20 20 20 20 28 4c 49 53  ),..\.      (LIS
d190: 54 29 2e 69 61 70 74 72 20 2b 3d 20 28 28 54 59  T).iaptr += ((TY
d1a0: 50 45 5f 53 49 5a 45 29 20 2b 20 73 69 7a 65 6f  PE_SIZE) + sizeo
d1b0: 66 28 5f 5f 61 76 77 6f 72 64 29 2d 31 29 20 2f  f(__avword)-1) /
d1c0: 20 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64   sizeof(__avword
d1d0: 29 2c 09 5c 0a 20 20 20 20 20 20 30 29 09 09 09  ),.\.      0)...
d1e0: 09 09 09 09 09 09 5c 0a 20 20 20 3a 20 28 28 4c  ......\.   : ((L
d1f0: 49 53 54 29 2e 61 70 74 72 20 3d 20 28 5f 5f 61  IST).aptr = (__a
d200: 76 77 6f 72 64 2a 29 28 28 5f 5f 61 76 77 6f 72  vword*)((__avwor
d210: 64 29 28 4c 49 53 54 29 2e 61 70 74 72 20 2b 20  d)(LIST).aptr + 
d220: 28 28 28 54 59 50 45 5f 53 49 5a 45 29 2b 5f 5f  (((TYPE_SIZE)+__
d230: 61 76 5f 73 74 72 75 63 74 5f 61 6c 69 67 6e 6d  av_struct_alignm
d240: 65 6e 74 28 54 59 50 45 5f 41 4c 49 47 4e 29 2d  ent(TYPE_ALIGN)-
d250: 31 29 20 26 20 2d 28 6c 6f 6e 67 29 5f 5f 61 76  1) & -(long)__av
d260: 5f 73 74 72 75 63 74 5f 61 6c 69 67 6e 6d 65 6e  _struct_alignmen
d270: 74 28 54 59 50 45 5f 41 4c 49 47 4e 29 29 29 2c  t(TYPE_ALIGN))),
d280: 20 5c 0a 20 20 20 20 20 20 28 28 4c 49 53 54 29   \.      ((LIST)
d290: 2e 61 70 74 72 20 3e 20 5f 5f 61 76 5f 65 70 74  .aptr > __av_ept
d2a0: 72 28 4c 49 53 54 29 09 09 09 09 09 09 5c 0a 20  r(LIST)......\. 
d2b0: 20 20 20 20 20 20 3f 20 2d 31 20 3a 20 28 41 53        ? -1 : (AS
d2c0: 53 49 47 4e 28 54 59 50 45 2c 54 59 50 45 5f 53  SIGN(TYPE,TYPE_S
d2d0: 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 28  IZE,TYPE_ALIGN,(
d2e0: 76 6f 69 64 2a 29 28 28 5f 5f 61 76 77 6f 72 64  void*)((__avword
d2f0: 29 28 4c 49 53 54 29 2e 61 70 74 72 20 2d 20 28  )(LIST).aptr - (
d300: 28 28 54 59 50 45 5f 53 49 5a 45 29 2b 5f 5f 61  ((TYPE_SIZE)+__a
d310: 76 5f 73 74 72 75 63 74 5f 61 6c 69 67 6e 6d 65  v_struct_alignme
d320: 6e 74 28 54 59 50 45 5f 41 4c 49 47 4e 29 2d 31  nt(TYPE_ALIGN)-1
d330: 29 20 26 20 2d 28 6c 6f 6e 67 29 5f 5f 61 76 5f  ) & -(long)__av_
d340: 73 74 72 75 63 74 5f 61 6c 69 67 6e 6d 65 6e 74  struct_alignment
d350: 28 54 59 50 45 5f 41 4c 49 47 4e 29 29 29 2c 56  (TYPE_ALIGN))),V
d360: 41 4c 29 2c 5c 0a 09 20 20 20 20 20 20 20 30 29  AL),\..       0)
d370: 29 29 29 0a 23 65 6e 64 69 66 0a 0a 2f 2a 0a 20  ))).#endif../*. 
d380: 2a 20 63 61 6c 6c 69 6e 67 20 74 68 65 20 66 75  * calling the fu
d390: 6e 63 74 69 6f 6e 0a 20 2a 2f 0a 0a 23 64 65 66  nction. */..#def
d3a0: 69 6e 65 20 61 76 5f 63 61 6c 6c 28 4c 49 53 54  ine av_call(LIST
d3b0: 29 20 5f 5f 62 75 69 6c 74 69 6e 5f 61 76 63 61  ) __builtin_avca
d3c0: 6c 6c 28 26 28 4c 49 53 54 29 29 0a 0a 2f 2a 20  ll(&(LIST))../* 
d3d0: 44 65 74 65 72 6d 69 6e 65 20 77 68 65 74 68 65  Determine whethe
d3e0: 72 20 61 20 73 74 72 75 63 74 20 74 79 70 65 20  r a struct type 
d3f0: 69 73 20 77 6f 72 64 2d 73 70 6c 69 74 74 61 62  is word-splittab
d400: 6c 65 2c 20 69 2e 65 2e 20 77 68 65 74 68 65 72  le, i.e. whether
d410: 20 65 61 63 68 20 6f 66 0a 20 2a 20 69 74 73 20   each of. * its 
d420: 63 6f 6d 70 6f 6e 65 6e 74 73 20 66 69 74 20 69  components fit i
d430: 6e 74 6f 20 61 20 72 65 67 69 73 74 65 72 2e 0a  nto a register..
d440: 20 2a 20 54 68 65 20 65 6e 74 69 72 65 20 63 6f   * The entire co
d450: 6d 70 75 74 61 74 69 6f 6e 20 69 73 20 64 6f 6e  mputation is don
d460: 65 20 61 74 20 63 6f 6d 70 69 6c 65 20 74 69 6d  e at compile tim
d470: 65 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 61  e.. */.#define a
d480: 76 5f 77 6f 72 64 5f 73 70 6c 69 74 74 61 62 6c  v_word_splittabl
d490: 65 5f 31 28 73 6c 6f 74 31 29 20 20 5c 0a 20 20  e_1(slot1)  \.  
d4a0: 28 5f 5f 61 76 5f 6f 66 66 73 65 74 31 28 73 6c  (__av_offset1(sl
d4b0: 6f 74 31 29 2f 73 69 7a 65 6f 66 28 5f 5f 61 76  ot1)/sizeof(__av
d4c0: 77 6f 72 64 29 20 3d 3d 20 28 5f 5f 61 76 5f 6f  word) == (__av_o
d4d0: 66 66 73 65 74 31 28 73 6c 6f 74 31 29 2b 73 69  ffset1(slot1)+si
d4e0: 7a 65 6f 66 28 73 6c 6f 74 31 29 2d 31 29 2f 73  zeof(slot1)-1)/s
d4f0: 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 29  izeof(__avword))
d500: 0a 23 64 65 66 69 6e 65 20 61 76 5f 77 6f 72 64  .#define av_word
d510: 5f 73 70 6c 69 74 74 61 62 6c 65 5f 32 28 73 6c  _splittable_2(sl
d520: 6f 74 31 2c 73 6c 6f 74 32 29 20 20 5c 0a 20 20  ot1,slot2)  \.  
d530: 28 28 5f 5f 61 76 5f 6f 66 66 73 65 74 31 28 73  ((__av_offset1(s
d540: 6c 6f 74 31 29 2f 73 69 7a 65 6f 66 28 5f 5f 61  lot1)/sizeof(__a
d550: 76 77 6f 72 64 29 20 3d 3d 20 28 5f 5f 61 76 5f  vword) == (__av_
d560: 6f 66 66 73 65 74 31 28 73 6c 6f 74 31 29 2b 73  offset1(slot1)+s
d570: 69 7a 65 6f 66 28 73 6c 6f 74 31 29 2d 31 29 2f  izeof(slot1)-1)/
d580: 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29  sizeof(__avword)
d590: 29 20 5c 0a 20 20 20 26 26 20 28 5f 5f 61 76 5f  ) \.   && (__av_
d5a0: 6f 66 66 73 65 74 32 28 73 6c 6f 74 31 2c 73 6c  offset2(slot1,sl
d5b0: 6f 74 32 29 2f 73 69 7a 65 6f 66 28 5f 5f 61 76  ot2)/sizeof(__av
d5c0: 77 6f 72 64 29 20 3d 3d 20 28 5f 5f 61 76 5f 6f  word) == (__av_o
d5d0: 66 66 73 65 74 32 28 73 6c 6f 74 31 2c 73 6c 6f  ffset2(slot1,slo
d5e0: 74 32 29 2b 73 69 7a 65 6f 66 28 73 6c 6f 74 32  t2)+sizeof(slot2
d5f0: 29 2d 31 29 2f 73 69 7a 65 6f 66 28 5f 5f 61 76  )-1)/sizeof(__av
d600: 77 6f 72 64 29 29 20 5c 0a 20 20 29 0a 23 64 65  word)) \.  ).#de
d610: 66 69 6e 65 20 61 76 5f 77 6f 72 64 5f 73 70 6c  fine av_word_spl
d620: 69 74 74 61 62 6c 65 5f 33 28 73 6c 6f 74 31 2c  ittable_3(slot1,
d630: 73 6c 6f 74 32 2c 73 6c 6f 74 33 29 20 20 5c 0a  slot2,slot3)  \.
d640: 20 20 28 28 5f 5f 61 76 5f 6f 66 66 73 65 74 31    ((__av_offset1
d650: 28 73 6c 6f 74 31 29 2f 73 69 7a 65 6f 66 28 5f  (slot1)/sizeof(_
d660: 5f 61 76 77 6f 72 64 29 20 3d 3d 20 28 5f 5f 61  _avword) == (__a
d670: 76 5f 6f 66 66 73 65 74 31 28 73 6c 6f 74 31 29  v_offset1(slot1)
d680: 2b 73 69 7a 65 6f 66 28 73 6c 6f 74 31 29 2d 31  +sizeof(slot1)-1
d690: 29 2f 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72  )/sizeof(__avwor
d6a0: 64 29 29 20 5c 0a 20 20 20 26 26 20 28 5f 5f 61  d)) \.   && (__a
d6b0: 76 5f 6f 66 66 73 65 74 32 28 73 6c 6f 74 31 2c  v_offset2(slot1,
d6c0: 73 6c 6f 74 32 29 2f 73 69 7a 65 6f 66 28 5f 5f  slot2)/sizeof(__
d6d0: 61 76 77 6f 72 64 29 20 3d 3d 20 28 5f 5f 61 76  avword) == (__av
d6e0: 5f 6f 66 66 73 65 74 32 28 73 6c 6f 74 31 2c 73  _offset2(slot1,s
d6f0: 6c 6f 74 32 29 2b 73 69 7a 65 6f 66 28 73 6c 6f  lot2)+sizeof(slo
d700: 74 32 29 2d 31 29 2f 73 69 7a 65 6f 66 28 5f 5f  t2)-1)/sizeof(__
d710: 61 76 77 6f 72 64 29 29 20 5c 0a 20 20 20 26 26  avword)) \.   &&
d720: 20 28 5f 5f 61 76 5f 6f 66 66 73 65 74 33 28 73   (__av_offset3(s
d730: 6c 6f 74 31 2c 73 6c 6f 74 32 2c 73 6c 6f 74 33  lot1,slot2,slot3
d740: 29 2f 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72  )/sizeof(__avwor
d750: 64 29 20 3d 3d 20 28 5f 5f 61 76 5f 6f 66 66 73  d) == (__av_offs
d760: 65 74 33 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 2c  et3(slot1,slot2,
d770: 73 6c 6f 74 33 29 2b 73 69 7a 65 6f 66 28 73 6c  slot3)+sizeof(sl
d780: 6f 74 33 29 2d 31 29 2f 73 69 7a 65 6f 66 28 5f  ot3)-1)/sizeof(_
d790: 5f 61 76 77 6f 72 64 29 29 20 5c 0a 20 20 29 0a  _avword)) \.  ).
d7a0: 23 64 65 66 69 6e 65 20 61 76 5f 77 6f 72 64 5f  #define av_word_
d7b0: 73 70 6c 69 74 74 61 62 6c 65 5f 34 28 73 6c 6f  splittable_4(slo
d7c0: 74 31 2c 73 6c 6f 74 32 2c 73 6c 6f 74 33 2c 73  t1,slot2,slot3,s
d7d0: 6c 6f 74 34 29 20 20 5c 0a 20 20 28 28 5f 5f 61  lot4)  \.  ((__a
d7e0: 76 5f 6f 66 66 73 65 74 31 28 73 6c 6f 74 31 29  v_offset1(slot1)
d7f0: 2f 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64  /sizeof(__avword
d800: 29 20 3d 3d 20 28 5f 5f 61 76 5f 6f 66 66 73 65  ) == (__av_offse
d810: 74 31 28 73 6c 6f 74 31 29 2b 73 69 7a 65 6f 66  t1(slot1)+sizeof
d820: 28 73 6c 6f 74 31 29 2d 31 29 2f 73 69 7a 65 6f  (slot1)-1)/sizeo
d830: 66 28 5f 5f 61 76 77 6f 72 64 29 29 20 5c 0a 20  f(__avword)) \. 
d840: 20 20 26 26 20 28 5f 5f 61 76 5f 6f 66 66 73 65    && (__av_offse
d850: 74 32 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 29 2f  t2(slot1,slot2)/
d860: 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29  sizeof(__avword)
d870: 20 3d 3d 20 28 5f 5f 61 76 5f 6f 66 66 73 65 74   == (__av_offset
d880: 32 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 29 2b 73  2(slot1,slot2)+s
d890: 69 7a 65 6f 66 28 73 6c 6f 74 32 29 2d 31 29 2f  izeof(slot2)-1)/
d8a0: 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29  sizeof(__avword)
d8b0: 29 20 5c 0a 20 20 20 26 26 20 28 5f 5f 61 76 5f  ) \.   && (__av_
d8c0: 6f 66 66 73 65 74 33 28 73 6c 6f 74 31 2c 73 6c  offset3(slot1,sl
d8d0: 6f 74 32 2c 73 6c 6f 74 33 29 2f 73 69 7a 65 6f  ot2,slot3)/sizeo
d8e0: 66 28 5f 5f 61 76 77 6f 72 64 29 20 3d 3d 20 28  f(__avword) == (
d8f0: 5f 5f 61 76 5f 6f 66 66 73 65 74 33 28 73 6c 6f  __av_offset3(slo
d900: 74 31 2c 73 6c 6f 74 32 2c 73 6c 6f 74 33 29 2b  t1,slot2,slot3)+
d910: 73 69 7a 65 6f 66 28 73 6c 6f 74 33 29 2d 31 29  sizeof(slot3)-1)
d920: 2f 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64  /sizeof(__avword
d930: 29 29 20 5c 0a 20 20 20 26 26 20 28 5f 5f 61 76  )) \.   && (__av
d940: 5f 6f 66 66 73 65 74 34 28 73 6c 6f 74 31 2c 73  _offset4(slot1,s
d950: 6c 6f 74 32 2c 73 6c 6f 74 33 2c 73 6c 6f 74 34  lot2,slot3,slot4
d960: 29 2f 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72  )/sizeof(__avwor
d970: 64 29 20 3d 3d 20 28 5f 5f 61 76 5f 6f 66 66 73  d) == (__av_offs
d980: 65 74 34 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 2c  et4(slot1,slot2,
d990: 73 6c 6f 74 33 2c 73 6c 6f 74 34 29 2b 73 69 7a  slot3,slot4)+siz
d9a0: 65 6f 66 28 73 6c 6f 74 34 29 2d 31 29 2f 73 69  eof(slot4)-1)/si
d9b0: 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 29 20  zeof(__avword)) 
d9c0: 5c 0a 20 20 29 0a 23 64 65 66 69 6e 65 20 5f 5f  \.  ).#define __
d9d0: 61 76 5f 6f 66 66 73 65 74 31 28 73 6c 6f 74 31  av_offset1(slot1
d9e0: 29 20 20 5c 0a 20 20 30 0a 23 64 65 66 69 6e 65  )  \.  0.#define
d9f0: 20 5f 5f 61 76 5f 6f 66 66 73 65 74 32 28 73 6c   __av_offset2(sl
da00: 6f 74 31 2c 73 6c 6f 74 32 29 20 20 5c 0a 20 20  ot1,slot2)  \.  
da10: 28 28 5f 5f 61 76 5f 6f 66 66 73 65 74 31 28 73  ((__av_offset1(s
da20: 6c 6f 74 31 29 2b 73 69 7a 65 6f 66 28 73 6c 6f  lot1)+sizeof(slo
da30: 74 31 29 2b 5f 5f 41 56 5f 61 6c 69 67 6e 6f 66  t1)+__AV_alignof
da40: 28 73 6c 6f 74 32 29 2d 31 29 20 26 20 2d 28 6c  (slot2)-1) & -(l
da50: 6f 6e 67 29 5f 5f 41 56 5f 61 6c 69 67 6e 6f 66  ong)__AV_alignof
da60: 28 73 6c 6f 74 32 29 29 0a 23 64 65 66 69 6e 65  (slot2)).#define
da70: 20 5f 5f 61 76 5f 6f 66 66 73 65 74 33 28 73 6c   __av_offset3(sl
da80: 6f 74 31 2c 73 6c 6f 74 32 2c 73 6c 6f 74 33 29  ot1,slot2,slot3)
da90: 20 20 5c 0a 20 20 28 28 5f 5f 61 76 5f 6f 66 66    \.  ((__av_off
daa0: 73 65 74 32 28 73 6c 6f 74 31 2c 73 6c 6f 74 32  set2(slot1,slot2
dab0: 29 2b 73 69 7a 65 6f 66 28 73 6c 6f 74 32 29 2b  )+sizeof(slot2)+
dac0: 5f 5f 41 56 5f 61 6c 69 67 6e 6f 66 28 73 6c 6f  __AV_alignof(slo
dad0: 74 33 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29  t3)-1) & -(long)
dae0: 5f 5f 41 56 5f 61 6c 69 67 6e 6f 66 28 73 6c 6f  __AV_alignof(slo
daf0: 74 33 29 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61  t3)).#define __a
db00: 76 5f 6f 66 66 73 65 74 34 28 73 6c 6f 74 31 2c  v_offset4(slot1,
db10: 73 6c 6f 74 32 2c 73 6c 6f 74 33 2c 73 6c 6f 74  slot2,slot3,slot
db20: 34 29 20 20 5c 0a 20 20 28 28 5f 5f 61 76 5f 6f  4)  \.  ((__av_o
db30: 66 66 73 65 74 33 28 73 6c 6f 74 31 2c 73 6c 6f  ffset3(slot1,slo
db40: 74 32 2c 73 6c 6f 74 33 29 2b 73 69 7a 65 6f 66  t2,slot3)+sizeof
db50: 28 73 6c 6f 74 33 29 2b 5f 5f 41 56 5f 61 6c 69  (slot3)+__AV_ali
db60: 67 6e 6f 66 28 73 6c 6f 74 34 29 2d 31 29 20 26  gnof(slot4)-1) &
db70: 20 2d 28 6c 6f 6e 67 29 5f 5f 41 56 5f 61 6c 69   -(long)__AV_ali
db80: 67 6e 6f 66 28 73 6c 6f 74 34 29 29 0a 0a 2f 2a  gnof(slot4))../*
db90: 0a 20 2a 20 4d 69 73 63 65 6c 6c 61 6e 65 6f 75  . * Miscellaneou
dba0: 73 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 2e 0a  s declarations..
dbb0: 20 2a 2f 0a 0a 23 69 66 20 64 65 66 69 6e 65 64   */..#if defined
dbc0: 28 5f 5f 53 54 44 43 5f 5f 29 20 7c 7c 20 64 65  (__STDC__) || de
dbd0: 66 69 6e 65 64 28 5f 5f 47 4e 55 43 5f 5f 29 20  fined(__GNUC__) 
dbe0: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 63 70 6c  || defined(__cpl
dbf0: 75 73 70 6c 75 73 29 0a 65 78 74 65 72 6e 20 69  usplus).extern i
dc00: 6e 74 20 5f 5f 62 75 69 6c 74 69 6e 5f 61 76 63  nt __builtin_avc
dc10: 61 6c 6c 20 28 61 76 5f 61 6c 69 73 74 2a 20 6c  all (av_alist* l
dc20: 29 3b 0a 65 78 74 65 72 6e 20 76 6f 69 64 20 5f  );.extern void _
dc30: 5f 73 74 72 75 63 74 63 70 79 20 28 76 6f 69 64  _structcpy (void
dc40: 2a 20 64 65 73 74 2c 20 76 6f 69 64 2a 20 73 72  * dest, void* sr
dc50: 63 2c 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67  c, unsigned long
dc60: 20 73 69 7a 65 2c 20 75 6e 73 69 67 6e 65 64 20   size, unsigned 
dc70: 6c 6f 6e 67 20 61 6c 69 67 6e 6d 65 6e 74 29 3b  long alignment);
dc80: 0a 23 65 6c 73 65 0a 65 78 74 65 72 6e 20 69 6e  .#else.extern in
dc90: 74 20 5f 5f 62 75 69 6c 74 69 6e 5f 61 76 63 61  t __builtin_avca
dca0: 6c 6c 20 28 29 3b 0a 65 78 74 65 72 6e 20 76 6f  ll ();.extern vo
dcb0: 69 64 20 5f 5f 73 74 72 75 63 74 63 70 79 20 28  id __structcpy (
dcc0: 29 3b 0a 23 65 6e 64 69 66 0a 0a 23 65 6e 64 69  );.#endif..#endi
dcd0: 66 20 2f 2a 5f 61 76 63 61 6c 6c 5f 68 20 2a 2f  f /*_avcall_h */
dce0: 0a                                               .