Artifact ddc8878acb0043bf9c0413eff7ffd25cc4c949ee:


0000: 2f 2a 20 61 76 63 61 6c 6c 2e 68 2e 20 20 47 65  /* avcall.h.  Ge
0010: 6e 65 72 61 74 65 64 20 62 79 20 63 6f 6e 66 69  nerated by confi
0020: 67 75 72 65 2e 20 20 2a 2f 0a 23 69 66 6e 64 65  gure.  */.#ifnde
0030: 66 20 5f 61 76 63 61 6c 6c 5f 68 09 09 09 09 2f  f _avcall_h..../
0040: 2a 2d 2a 2d 20 43 20 2d 2a 2d 2a 2f 0a 23 64 65  *-*- C -*-*/.#de
0050: 66 69 6e 65 20 5f 61 76 63 61 6c 6c 5f 68 0a 2f  fine _avcall_h./
0060: 2a 2a 0a 20 20 43 6f 70 79 72 69 67 68 74 20 31  **.  Copyright 1
0070: 39 39 33 20 42 69 6c 6c 20 54 72 69 67 67 73 2c  993 Bill Triggs,
0080: 20 3c 42 69 6c 6c 2e 54 72 69 67 67 73 40 69 6e   <Bill.Triggs@in
0090: 72 69 61 6c 70 65 73 2e 66 72 3e 0a 0a 20 20 43  rialpes.fr>..  C
00a0: 6f 70 79 72 69 67 68 74 20 31 39 39 35 2d 32 30  opyright 1995-20
00b0: 30 34 20 42 72 75 6e 6f 20 48 61 69 62 6c 65 2c  04 Bruno Haible,
00c0: 20 3c 62 72 75 6e 6f 40 63 6c 69 73 70 2e 6f 72   <bruno@clisp.or
00d0: 67 3e 0a 0a 20 20 54 68 69 73 20 69 73 20 66 72  g>..  This is fr
00e0: 65 65 20 73 6f 66 74 77 61 72 65 20 64 69 73 74  ee software dist
00f0: 72 69 62 75 74 65 64 20 75 6e 64 65 72 20 74 68  ributed under th
0100: 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75  e GNU General Pu
0110: 62 6c 69 63 0a 20 20 4c 69 63 65 6e 63 65 20 64  blic.  Licence d
0120: 65 73 63 72 69 62 65 64 20 69 6e 20 74 68 65 20  escribed in the 
0130: 66 69 6c 65 20 43 4f 50 59 49 4e 47 2e 20 43 6f  file COPYING. Co
0140: 6e 74 61 63 74 20 74 68 65 20 61 75 74 68 6f 72  ntact the author
0150: 20 69 66 0a 20 20 79 6f 75 20 64 6f 6e 27 74 20   if.  you don't 
0160: 68 61 76 65 20 74 68 69 73 20 6f 72 20 63 61 6e  have this or can
0170: 27 74 20 6c 69 76 65 20 77 69 74 68 20 69 74 2e  't live with it.
0180: 20 54 68 65 72 65 20 69 73 20 41 42 53 4f 4c 55   There is ABSOLU
0190: 54 45 4c 59 0a 20 20 4e 4f 20 57 41 52 52 41 4e  TELY.  NO WARRAN
01a0: 54 59 2c 20 65 78 70 6c 69 63 69 74 20 6f 72 20  TY, explicit or 
01b0: 69 6d 70 6c 69 65 64 2c 20 6f 6e 20 74 68 69 73  implied, on this
01c0: 20 73 6f 66 74 77 61 72 65 2e 0a 2a 2a 2f 0a 2f   software..**/./
01d0: 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  *---------------
01e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
01f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0200: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0210: 2d 2d 2d 2d 2d 2d 2d 0a 20 20 61 76 5f 63 61 6c  -------.  av_cal
0220: 6c 28 29 20 66 6f 72 65 69 67 6e 20 66 75 6e 63  l() foreign func
0230: 74 69 6f 6e 20 69 6e 74 65 72 66 61 63 65 2e 0a  tion interface..
0240: 0a 20 20 56 61 72 61 72 67 73 2d 73 74 79 6c 65  .  Varargs-style
0250: 20 6d 61 63 72 6f 73 20 74 6f 20 62 75 69 6c 64   macros to build
0260: 20 61 20 43 20 61 72 67 75 6d 65 6e 74 20 6c 69   a C argument li
0270: 73 74 20 69 6e 63 72 65 6d 65 6e 74 61 6c 6c 79  st incrementally
0280: 0a 20 20 61 6e 64 20 63 61 6c 6c 20 61 20 66 75  .  and call a fu
0290: 6e 63 74 69 6f 6e 20 6f 6e 20 69 74 2e 0a 20 2d  nction on it.. -
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 2d 2d 2d 2d 2d  ----------------
02c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
02d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
02e0: 2d 2d 2d 2d 2d 2a 2f 0a 0a 0a 2f 2a 20 54 68 65  -----*/.../* The
02f0: 73 65 20 64 65 66 69 6e 69 74 69 6f 6e 73 20 61  se definitions a
0300: 72 65 20 61 64 6a 75 73 74 65 64 20 62 79 20 60  re adjusted by `
0310: 63 6f 6e 66 69 67 75 72 65 27 20 61 75 74 6f 6d  configure' autom
0320: 61 74 69 63 61 6c 6c 79 2e 20 2a 2f 0a 0a 2f 2a  atically. */../*
0330: 20 43 50 55 20 2a 2f 0a 23 69 66 6e 64 65 66 20   CPU */.#ifndef 
0340: 5f 5f 69 33 38 36 5f 5f 0a 23 64 65 66 69 6e 65  __i386__.#define
0350: 20 5f 5f 69 33 38 36 5f 5f 20 31 0a 23 65 6e 64   __i386__ 1.#end
0360: 69 66 0a 23 69 66 6e 64 65 66 20 5f 5f 6d 36 38  if.#ifndef __m68
0370: 6b 5f 5f 0a 2f 2a 20 23 75 6e 64 65 66 20 5f 5f  k__./* #undef __
0380: 6d 36 38 6b 5f 5f 20 2a 2f 0a 23 65 6e 64 69 66  m68k__ */.#endif
0390: 0a 23 69 66 6e 64 65 66 20 5f 5f 6d 69 70 73 5f  .#ifndef __mips_
03a0: 5f 0a 2f 2a 20 23 75 6e 64 65 66 20 5f 5f 6d 69  _./* #undef __mi
03b0: 70 73 5f 5f 20 2a 2f 0a 23 65 6e 64 69 66 0a 23  ps__ */.#endif.#
03c0: 69 66 6e 64 65 66 20 5f 5f 6d 69 70 73 6e 33 32  ifndef __mipsn32
03d0: 5f 5f 0a 2f 2a 20 23 75 6e 64 65 66 20 5f 5f 6d  __./* #undef __m
03e0: 69 70 73 6e 33 32 5f 5f 20 2a 2f 0a 23 65 6e 64  ipsn32__ */.#end
03f0: 69 66 0a 23 69 66 6e 64 65 66 20 5f 5f 6d 69 70  if.#ifndef __mip
0400: 73 36 34 5f 5f 0a 2f 2a 20 23 75 6e 64 65 66 20  s64__./* #undef 
0410: 5f 5f 6d 69 70 73 36 34 5f 5f 20 2a 2f 0a 23 65  __mips64__ */.#e
0420: 6e 64 69 66 0a 23 69 66 6e 64 65 66 20 5f 5f 73  ndif.#ifndef __s
0430: 70 61 72 63 5f 5f 0a 2f 2a 20 23 75 6e 64 65 66  parc__./* #undef
0440: 20 5f 5f 73 70 61 72 63 5f 5f 20 2a 2f 0a 23 65   __sparc__ */.#e
0450: 6e 64 69 66 0a 23 69 66 6e 64 65 66 20 5f 5f 73  ndif.#ifndef __s
0460: 70 61 72 63 36 34 5f 5f 0a 2f 2a 20 23 75 6e 64  parc64__./* #und
0470: 65 66 20 5f 5f 73 70 61 72 63 36 34 5f 5f 20 2a  ef __sparc64__ *
0480: 2f 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64 65 66  /.#endif.#ifndef
0490: 20 5f 5f 61 6c 70 68 61 5f 5f 0a 2f 2a 20 23 75   __alpha__./* #u
04a0: 6e 64 65 66 20 5f 5f 61 6c 70 68 61 5f 5f 20 2a  ndef __alpha__ *
04b0: 2f 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64 65 66  /.#endif.#ifndef
04c0: 20 5f 5f 68 70 70 61 5f 5f 0a 2f 2a 20 23 75 6e   __hppa__./* #un
04d0: 64 65 66 20 5f 5f 68 70 70 61 5f 5f 20 2a 2f 0a  def __hppa__ */.
04e0: 23 65 6e 64 69 66 0a 23 69 66 6e 64 65 66 20 5f  #endif.#ifndef _
04f0: 5f 61 72 6d 5f 5f 0a 2f 2a 20 23 75 6e 64 65 66  _arm__./* #undef
0500: 20 5f 5f 61 72 6d 5f 5f 20 2a 2f 0a 23 65 6e 64   __arm__ */.#end
0510: 69 66 0a 23 69 66 6e 64 65 66 20 5f 5f 72 73 36  if.#ifndef __rs6
0520: 30 30 30 5f 5f 0a 2f 2a 20 23 75 6e 64 65 66 20  000__./* #undef 
0530: 5f 5f 72 73 36 30 30 30 5f 5f 20 2a 2f 0a 23 65  __rs6000__ */.#e
0540: 6e 64 69 66 0a 23 69 66 6e 64 65 66 20 5f 5f 73  ndif.#ifndef __s
0550: 33 39 30 5f 5f 0a 2f 2a 20 23 75 6e 64 65 66 20  390__./* #undef 
0560: 5f 5f 73 33 39 30 5f 5f 20 2a 2f 0a 23 65 6e 64  __s390__ */.#end
0570: 69 66 0a 23 69 66 6e 64 65 66 20 5f 5f 6d 38 38  if.#ifndef __m88
0580: 6b 5f 5f 0a 2f 2a 20 23 75 6e 64 65 66 20 5f 5f  k__./* #undef __
0590: 6d 38 38 6b 5f 5f 20 2a 2f 0a 23 65 6e 64 69 66  m88k__ */.#endif
05a0: 0a 23 69 66 6e 64 65 66 20 5f 5f 63 6f 6e 76 65  .#ifndef __conve
05b0: 78 5f 5f 0a 2f 2a 20 23 75 6e 64 65 66 20 5f 5f  x__./* #undef __
05c0: 63 6f 6e 76 65 78 5f 5f 20 2a 2f 0a 23 65 6e 64  convex__ */.#end
05d0: 69 66 0a 23 69 66 6e 64 65 66 20 5f 5f 69 61 36  if.#ifndef __ia6
05e0: 34 5f 5f 0a 2f 2a 20 23 75 6e 64 65 66 20 5f 5f  4__./* #undef __
05f0: 69 61 36 34 5f 5f 20 2a 2f 0a 23 65 6e 64 69 66  ia64__ */.#endif
0600: 0a 23 69 66 6e 64 65 66 20 5f 5f 78 38 36 5f 36  .#ifndef __x86_6
0610: 34 5f 5f 0a 2f 2a 20 23 75 6e 64 65 66 20 5f 5f  4__./* #undef __
0620: 78 38 36 5f 36 34 5f 5f 20 2a 2f 0a 23 65 6e 64  x86_64__ */.#end
0630: 69 66 0a 0a 2f 2a 20 43 61 6c 6c 69 6e 67 20 63  if../* Calling c
0640: 6f 6e 76 65 6e 74 69 6f 6e 20 2a 2f 0a 2f 2a 20  onvention */./* 
0650: 44 65 66 69 6e 65 20 69 66 20 75 73 69 6e 67 20  Define if using 
0660: 70 63 63 20 6e 6f 6e 2d 72 65 65 6e 74 72 61 6e  pcc non-reentran
0670: 74 20 73 74 72 75 63 74 20 72 65 74 75 72 6e 20  t struct return 
0680: 63 6f 6e 76 65 6e 74 69 6f 6e 20 2a 2f 0a 2f 2a  convention */./*
0690: 20 23 75 6e 64 65 66 20 5f 5f 50 43 43 5f 53 54   #undef __PCC_ST
06a0: 52 55 43 54 5f 52 45 54 55 52 4e 5f 5f 20 2a 2f  RUCT_RETURN__ */
06b0: 0a 2f 2a 20 44 65 66 69 6e 65 20 69 66 20 73 6d  ./* Define if sm
06c0: 61 6c 6c 20 73 74 72 75 63 74 73 20 61 72 65 20  all structs are 
06d0: 72 65 74 75 72 6e 65 64 20 69 6e 20 72 65 67 69  returned in regi
06e0: 73 74 65 72 73 20 2a 2f 0a 23 64 65 66 69 6e 65  sters */.#define
06f0: 20 5f 5f 53 4d 41 4c 4c 5f 53 54 52 55 43 54 5f   __SMALL_STRUCT_
0700: 52 45 54 55 52 4e 5f 5f 20 31 0a 2f 2a 20 44 65  RETURN__ 1./* De
0710: 66 69 6e 65 20 69 66 20 66 6c 6f 61 74 69 6e 67  fine if floating
0720: 2d 70 6f 69 6e 74 20 72 65 73 75 6c 74 73 20 61  -point results a
0730: 72 65 20 72 65 74 75 72 6e 65 64 20 69 6e 20 74  re returned in t
0740: 68 65 20 69 6e 74 65 67 65 72 20 72 65 67 69 73  he integer regis
0750: 74 65 72 73 20 2a 2f 0a 2f 2a 20 23 75 6e 64 65  ters */./* #unde
0760: 66 20 5f 5f 49 52 45 47 5f 46 4c 4f 41 54 5f 52  f __IREG_FLOAT_R
0770: 45 54 55 52 4e 5f 5f 20 2a 2f 0a 0a 2f 2a 20 43  ETURN__ */../* C
0780: 4c 5f 4c 4f 4e 47 4c 4f 4e 47 20 2a 2f 0a 2f 2a  L_LONGLONG */./*
0790: 20 44 65 66 69 6e 65 20 69 66 20 79 6f 75 72 20   Define if your 
07a0: 63 6f 6d 70 69 6c 65 72 20 73 75 70 70 6f 72 74  compiler support
07b0: 73 20 74 68 65 20 60 6c 6f 6e 67 20 6c 6f 6e 67  s the `long long
07c0: 27 20 74 79 70 65 2e 20 2a 2f 0a 23 64 65 66 69  ' type. */.#defi
07d0: 6e 65 20 48 41 56 45 5f 4c 4f 4e 47 4c 4f 4e 47  ne HAVE_LONGLONG
07e0: 20 0a 0a 2f 2a 20 45 6e 64 20 6f 66 20 64 65 66   ../* End of def
07f0: 69 6e 69 74 69 6f 6e 73 20 61 64 6a 75 73 74 65  initions adjuste
0800: 64 20 62 79 20 60 63 6f 6e 66 69 67 75 72 65 27  d by `configure'
0810: 2e 20 2a 2f 0a 0a 0a 2f 2a 20 4d 61 78 20 23 20  . */.../* Max # 
0820: 77 6f 72 64 73 20 69 6e 20 61 72 67 75 6d 65 6e  words in argumen
0830: 74 2d 6c 69 73 74 20 61 6e 64 20 74 65 6d 70 6f  t-list and tempo
0840: 72 61 72 79 20 73 74 72 75 63 74 75 72 65 20 73  rary structure s
0850: 74 6f 72 61 67 65 2e 0a 20 2a 2f 0a 23 69 66 6e  torage.. */.#ifn
0860: 64 65 66 20 5f 5f 41 56 5f 41 4c 49 53 54 5f 57  def __AV_ALIST_W
0870: 4f 52 44 53 0a 23 64 65 66 69 6e 65 20 5f 5f 41  ORDS.#define __A
0880: 56 5f 41 4c 49 53 54 5f 57 4f 52 44 53 20 20 32  V_ALIST_WORDS  2
0890: 35 36 0a 23 65 6e 64 69 66 0a 0a 2f 2a 20 44 65  56.#endif../* De
08a0: 74 65 72 6d 69 6e 65 20 74 68 65 20 61 6c 69 67  termine the alig
08b0: 6e 6d 65 6e 74 20 6f 66 20 61 20 74 79 70 65 20  nment of a type 
08c0: 61 74 20 63 6f 6d 70 69 6c 65 20 74 69 6d 65 2e  at compile time.
08d0: 0a 20 2a 2f 0a 23 69 66 20 64 65 66 69 6e 65 64  . */.#if defined
08e0: 28 5f 5f 47 4e 55 43 5f 5f 29 0a 23 64 65 66 69  (__GNUC__).#defi
08f0: 6e 65 20 5f 5f 41 56 5f 61 6c 69 67 6e 6f 66 20  ne __AV_alignof 
0900: 5f 5f 61 6c 69 67 6e 6f 66 5f 5f 0a 23 65 6c 73  __alignof__.#els
0910: 65 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  e.#if defined(__
0920: 6d 69 70 73 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  mips__) || defin
0930: 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20  ed(__mipsn32__) 
0940: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70  || defined(__mip
0950: 73 36 34 5f 5f 29 20 2f 2a 20 53 47 49 20 63 6f  s64__) /* SGI co
0960: 6d 70 69 6c 65 72 20 2a 2f 0a 23 64 65 66 69 6e  mpiler */.#defin
0970: 65 20 5f 5f 41 56 5f 61 6c 69 67 6e 6f 66 20 5f  e __AV_alignof _
0980: 5f 62 75 69 6c 74 69 6e 5f 61 6c 69 67 6e 6f 66  _builtin_alignof
0990: 0a 23 65 6c 73 65 0a 23 64 65 66 69 6e 65 20 5f  .#else.#define _
09a0: 5f 41 56 5f 6f 66 66 73 65 74 6f 66 28 74 79 70  _AV_offsetof(typ
09b0: 65 2c 69 64 65 6e 74 29 20 20 28 28 75 6e 73 69  e,ident)  ((unsi
09c0: 67 6e 65 64 20 6c 6f 6e 67 29 26 28 28 28 74 79  gned long)&(((ty
09d0: 70 65 2a 29 30 29 2d 3e 69 64 65 6e 74 29 29 0a  pe*)0)->ident)).
09e0: 23 64 65 66 69 6e 65 20 5f 5f 41 56 5f 61 6c 69  #define __AV_ali
09f0: 67 6e 6f 66 28 74 79 70 65 29 20 20 5f 5f 41 56  gnof(type)  __AV
0a00: 5f 6f 66 66 73 65 74 6f 66 28 73 74 72 75 63 74  _offsetof(struct
0a10: 20 7b 20 63 68 61 72 20 5f 5f 73 6c 6f 74 31 3b   { char __slot1;
0a20: 20 74 79 70 65 20 5f 5f 73 6c 6f 74 32 3b 20 7d   type __slot2; }
0a30: 2c 20 5f 5f 73 6c 6f 74 32 29 0a 23 65 6e 64 69  , __slot2).#endi
0a40: 66 0a 23 65 6e 64 69 66 0a 0a 2f 2a 20 43 20 62  f.#endif../* C b
0a50: 75 69 6c 74 69 6e 20 74 79 70 65 73 2e 0a 20 2a  uiltin types.. *
0a60: 2f 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  /.#if defined(__
0a70: 6d 69 70 73 6e 33 32 5f 5f 29 0a 74 79 70 65 64  mipsn32__).typed
0a80: 65 66 20 6c 6f 6e 67 20 6c 6f 6e 67 20 5f 5f 61  ef long long __a
0a90: 76 77 6f 72 64 3b 0a 23 65 6c 73 65 0a 74 79 70  vword;.#else.typ
0aa0: 65 64 65 66 20 6c 6f 6e 67 20 5f 5f 61 76 77 6f  edef long __avwo
0ab0: 72 64 3b 0a 23 65 6e 64 69 66 0a 0a 65 6e 75 6d  rd;.#endif..enum
0ac0: 20 5f 5f 41 56 74 79 70 65 0a 7b 0a 20 20 5f 5f   __AVtype.{.  __
0ad0: 41 56 77 6f 72 64 2c 0a 20 20 5f 5f 41 56 76 6f  AVword,.  __AVvo
0ae0: 69 64 2c 0a 20 20 5f 5f 41 56 63 68 61 72 2c 0a  id,.  __AVchar,.
0af0: 20 20 5f 5f 41 56 73 63 68 61 72 2c 0a 20 20 5f    __AVschar,.  _
0b00: 5f 41 56 75 63 68 61 72 2c 0a 20 20 5f 5f 41 56  _AVuchar,.  __AV
0b10: 73 68 6f 72 74 2c 0a 20 20 5f 5f 41 56 75 73 68  short,.  __AVush
0b20: 6f 72 74 2c 0a 20 20 5f 5f 41 56 69 6e 74 2c 0a  ort,.  __AVint,.
0b30: 20 20 5f 5f 41 56 75 69 6e 74 2c 0a 20 20 5f 5f    __AVuint,.  __
0b40: 41 56 6c 6f 6e 67 2c 0a 20 20 5f 5f 41 56 75 6c  AVlong,.  __AVul
0b50: 6f 6e 67 2c 0a 20 20 5f 5f 41 56 6c 6f 6e 67 6c  ong,.  __AVlongl
0b60: 6f 6e 67 2c 0a 20 20 5f 5f 41 56 75 6c 6f 6e 67  ong,.  __AVulong
0b70: 6c 6f 6e 67 2c 0a 20 20 5f 5f 41 56 66 6c 6f 61  long,.  __AVfloa
0b80: 74 2c 0a 20 20 5f 5f 41 56 64 6f 75 62 6c 65 2c  t,.  __AVdouble,
0b90: 0a 20 20 5f 5f 41 56 76 6f 69 64 70 2c 0a 20 20  .  __AVvoidp,.  
0ba0: 5f 5f 41 56 73 74 72 75 63 74 0a 7d 3b 0a 0a 65  __AVstruct.};..e
0bb0: 6e 75 6d 20 5f 5f 41 56 5f 61 6c 69 73 74 5f 66  num __AV_alist_f
0bc0: 6c 61 67 73 0a 7b 0a 0a 20 20 2f 2a 20 68 6f 77  lags.{..  /* how
0bd0: 20 74 6f 20 72 65 74 75 72 6e 20 73 74 72 75 63   to return struc
0be0: 74 73 20 2a 2f 0a 20 20 2f 2a 20 54 68 65 72 65  ts */.  /* There
0bf0: 20 61 72 65 20 62 61 73 69 63 61 6c 6c 79 20 33   are basically 3
0c00: 20 77 61 79 73 20 74 6f 20 72 65 74 75 72 6e 20   ways to return 
0c10: 73 74 72 75 63 74 73 3a 0a 20 20 20 2a 20 61 2e  structs:.   * a.
0c20: 20 54 68 65 20 63 61 6c 6c 65 64 20 66 75 6e 63   The called func
0c30: 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 61 20 70  tion returns a p
0c40: 6f 69 6e 74 65 72 20 74 6f 20 73 74 61 74 69 63  ointer to static
0c50: 20 64 61 74 61 2e 20 4e 6f 74 20 72 65 65 6e 74   data. Not reent
0c60: 72 61 6e 74 2e 0a 20 20 20 2a 20 62 2e 20 54 68  rant..   * b. Th
0c70: 65 20 63 61 6c 6c 65 72 20 70 61 73 73 65 73 20  e caller passes 
0c80: 74 68 65 20 72 65 74 75 72 6e 20 73 74 72 75 63  the return struc
0c90: 74 75 72 65 20 61 64 64 72 65 73 73 20 69 6e 20  ture address in 
0ca0: 61 20 64 65 64 69 63 61 74 65 64 20 72 65 67 69  a dedicated regi
0cb0: 73 74 65 72 0a 20 20 20 2a 20 20 20 20 6f 72 20  ster.   *    or 
0cc0: 61 73 20 61 20 66 69 72 73 74 20 28 6f 72 20 6c  as a first (or l
0cd0: 61 73 74 29 2c 20 69 6e 76 69 73 69 62 6c 65 20  ast), invisible 
0ce0: 61 72 67 75 6d 65 6e 74 2e 20 54 68 65 20 63 61  argument. The ca
0cf0: 6c 6c 65 64 20 66 75 6e 63 74 69 6f 6e 20 73 74  lled function st
0d00: 6f 72 65 73 0a 20 20 20 2a 20 20 20 20 69 74 73  ores.   *    its
0d10: 20 72 65 73 75 6c 74 20 74 68 65 72 65 2e 0a 20   result there.. 
0d20: 20 20 2a 20 63 2e 20 4c 69 6b 65 20 62 2c 20 61    * c. Like b, a
0d30: 6e 64 20 74 68 65 20 63 61 6c 6c 65 64 20 66 75  nd the called fu
0d40: 6e 63 74 69 6f 6e 20 61 6c 73 6f 20 72 65 74 75  nction also retu
0d50: 72 6e 73 20 74 68 65 20 72 65 74 75 72 6e 20 73  rns the return s
0d60: 74 72 75 63 74 75 72 65 0a 20 20 20 2a 20 20 20  tructure.   *   
0d70: 20 61 64 64 72 65 73 73 20 69 6e 20 74 68 65 20   address in the 
0d80: 72 65 74 75 72 6e 20 76 61 6c 75 65 20 72 65 67  return value reg
0d90: 69 73 74 65 72 2e 20 28 54 68 69 73 20 69 73 20  ister. (This is 
0da0: 6e 6f 74 20 76 65 72 79 20 64 69 73 74 69 6e 67  not very disting
0db0: 75 69 73 68 61 62 6c 65 0a 20 20 20 2a 20 20 20  uishable.   *   
0dc0: 20 66 72 6f 6d 20 62 2e 29 0a 20 20 20 2a 20 49   from b.).   * I
0dd0: 6e 64 65 70 65 6e 64 65 6e 74 6c 79 20 6f 66 20  ndependently of 
0de0: 74 68 69 73 2c 0a 20 20 20 2a 20 72 2e 20 73 6d  this,.   * r. sm
0df0: 61 6c 6c 20 73 74 72 75 63 74 75 72 65 73 20 28  all structures (
0e00: 3c 3d 20 34 20 6f 72 20 3c 3d 20 38 20 62 79 74  <= 4 or <= 8 byt
0e10: 65 73 29 20 6d 61 79 20 62 65 20 72 65 74 75 72  es) may be retur
0e20: 6e 65 64 20 69 6e 20 74 68 65 20 72 65 74 75 72  ned in the retur
0e30: 6e 0a 20 20 20 2a 20 20 20 20 76 61 6c 75 65 20  n.   *    value 
0e40: 72 65 67 69 73 74 65 72 28 73 29 2c 20 6f 72 0a  register(s), or.
0e50: 20 20 20 2a 20 6d 2e 20 65 76 65 6e 20 73 6d 61     * m. even sma
0e60: 6c 6c 20 73 74 72 75 63 74 75 72 65 73 20 61 72  ll structures ar
0e70: 65 20 70 61 73 73 65 64 20 69 6e 20 6d 65 6d 6f  e passed in memo
0e80: 72 79 2e 0a 20 20 20 2a 2f 0a 20 20 2f 2a 20 67  ry..   */.  /* g
0e90: 63 63 2d 32 2e 36 2e 33 20 65 6d 70 6c 6f 79 73  cc-2.6.3 employs
0ea0: 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 73   the following s
0eb0: 74 72 61 74 65 67 79 3a 0a 20 20 20 2a 20 20 20  trategy:.   *   
0ec0: 2d 20 49 66 20 50 43 43 5f 53 54 41 54 49 43 5f  - If PCC_STATIC_
0ed0: 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20 69 73  STRUCT_RETURN is
0ee0: 20 64 65 66 69 6e 65 64 20 69 6e 20 74 68 65 20   defined in the 
0ef0: 6d 61 63 68 69 6e 65 20 64 65 73 63 72 69 70 74  machine descript
0f00: 69 6f 6e 0a 20 20 20 2a 20 20 20 20 20 69 74 20  ion.   *     it 
0f10: 75 73 65 73 20 6d 65 74 68 6f 64 20 61 2c 20 65  uses method a, e
0f20: 6c 73 65 20 6d 65 74 68 6f 64 20 63 2e 0a 20 20  lse method c..  
0f30: 20 2a 20 20 20 2d 20 49 66 20 66 6c 61 67 5f 70   *   - If flag_p
0f40: 63 63 5f 73 74 72 75 63 74 5f 72 65 74 75 72 6e  cc_struct_return
0f50: 20 69 73 20 73 65 74 20 28 65 69 74 68 65 72 20   is set (either 
0f60: 62 79 20 2d 66 70 63 63 2d 73 74 72 75 63 74 2d  by -fpcc-struct-
0f70: 72 65 74 75 72 6e 20 6f 72 20 69 66 0a 20 20 20  return or if.   
0f80: 2a 20 20 20 20 20 44 45 46 41 55 4c 54 5f 50 43  *     DEFAULT_PC
0f90: 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20  C_STRUCT_RETURN 
0fa0: 69 73 20 64 65 66 69 6e 65 64 20 74 6f 20 31 20  is defined to 1 
0fb0: 69 6e 20 74 68 65 20 6d 61 63 68 69 6e 65 20 64  in the machine d
0fc0: 65 73 63 72 69 70 74 69 6f 6e 29 0a 20 20 20 2a  escription).   *
0fd0: 20 20 20 20 20 69 74 20 75 73 65 73 20 6d 65 74       it uses met
0fe0: 68 6f 64 20 6d 2c 20 65 6c 73 65 20 28 65 69 74  hod m, else (eit
0ff0: 68 65 72 20 62 79 20 2d 66 72 65 67 2d 73 74 72  her by -freg-str
1000: 75 63 74 2d 72 65 74 75 72 6e 20 6f 72 20 69 66  uct-return or if
1010: 0a 20 20 20 2a 20 20 20 20 20 44 45 46 41 55 4c  .   *     DEFAUL
1020: 54 5f 50 43 43 5f 53 54 52 55 43 54 5f 52 45 54  T_PCC_STRUCT_RET
1030: 55 52 4e 20 69 73 20 64 65 66 69 6e 65 64 20 74  URN is defined t
1040: 6f 20 30 20 69 6e 20 74 68 65 20 6d 61 63 68 69  o 0 in the machi
1050: 6e 65 20 64 65 73 63 72 69 70 74 69 6f 6e 29 0a  ne description).
1060: 20 20 20 2a 20 20 20 20 20 6d 65 74 68 6f 64 20     *     method 
1070: 72 2e 0a 20 20 20 2a 2f 0a 20 20 5f 5f 41 56 5f  r..   */.  __AV_
1080: 50 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52  PCC_STRUCT_RETUR
1090: 4e 09 3d 20 31 3c 3c 30 2c 09 2f 2a 20 61 3a 20  N.= 1<<0,./* a: 
10a0: 6e 65 65 64 20 74 6f 20 63 6f 70 79 20 74 68 65  need to copy the
10b0: 20 73 74 72 75 63 74 20 2a 2f 0a 20 20 5f 5f 41   struct */.  __A
10c0: 56 5f 53 4d 41 4c 4c 5f 53 54 52 55 43 54 5f 52  V_SMALL_STRUCT_R
10d0: 45 54 55 52 4e 09 3d 20 31 3c 3c 31 2c 09 2f 2a  ETURN.= 1<<1,./*
10e0: 20 72 3a 20 73 70 65 63 69 61 6c 20 63 61 73 65   r: special case
10f0: 20 66 6f 72 20 73 6d 61 6c 6c 20 73 74 72 75 63   for small struc
1100: 74 73 20 2a 2f 0a 20 20 5f 5f 41 56 5f 47 43 43  ts */.  __AV_GCC
1110: 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 09 3d  _STRUCT_RETURN.=
1120: 20 31 3c 3c 32 2c 09 2f 2a 20 63 6f 6e 73 69 64   1<<2,./* consid
1130: 65 72 20 38 20 62 79 74 65 20 73 74 72 75 63 74  er 8 byte struct
1140: 73 20 61 73 20 73 6d 61 6c 6c 20 2a 2f 0a 23 69  s as small */.#i
1150: 66 20 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72  f defined(__spar
1160: 63 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64  c__) && !defined
1170: 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29 0a 20 20  (__sparc64__).  
1180: 5f 5f 41 56 5f 53 55 4e 43 43 5f 53 54 52 55 43  __AV_SUNCC_STRUC
1190: 54 5f 52 45 54 55 52 4e 09 3d 20 31 3c 3c 33 2c  T_RETURN.= 1<<3,
11a0: 0a 20 20 5f 5f 41 56 5f 53 55 4e 50 52 4f 43 43  .  __AV_SUNPROCC
11b0: 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 09 3d  _STRUCT_RETURN.=
11c0: 20 31 3c 3c 34 2c 0a 23 65 6e 64 69 66 0a 23 69   1<<4,.#endif.#i
11d0: 66 20 64 65 66 69 6e 65 64 28 5f 5f 69 33 38 36  f defined(__i386
11e0: 5f 5f 29 0a 20 20 5f 5f 41 56 5f 4e 45 58 54 47  __).  __AV_NEXTG
11f0: 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e  CC_STRUCT_RETURN
1200: 09 3d 20 31 3c 3c 33 2c 0a 20 20 5f 5f 41 56 5f  .= 1<<3,.  __AV_
1210: 4d 53 56 43 5f 53 54 52 55 43 54 5f 52 45 54 55  MSVC_STRUCT_RETU
1220: 52 4e 09 3d 20 31 3c 3c 34 2c 0a 23 65 6e 64 69  RN.= 1<<4,.#endi
1230: 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  f.#if defined(__
1240: 68 70 70 61 5f 5f 29 0a 20 20 5f 5f 41 56 5f 4f  hppa__).  __AV_O
1250: 4c 44 47 43 43 5f 53 54 52 55 43 54 5f 52 45 54  LDGCC_STRUCT_RET
1260: 55 52 4e 09 3d 20 31 3c 3c 33 2c 0a 23 65 6e 64  URN.= 1<<3,.#end
1270: 69 66 0a 20 20 2f 2a 20 74 68 65 20 64 65 66 61  if.  /* the defa
1280: 75 6c 74 20 77 61 79 20 74 6f 20 72 65 74 75 72  ult way to retur
1290: 6e 20 73 74 72 75 63 74 73 20 2a 2f 0a 20 20 2f  n structs */.  /
12a0: 2a 20 54 68 69 73 20 63 68 6f 69 63 65 20 68 65  * This choice he
12b0: 72 65 20 69 73 20 62 61 73 65 64 20 6f 6e 20 74  re is based on t
12c0: 68 65 20 61 73 73 75 6d 70 74 69 6f 6e 20 74 68  he assumption th
12d0: 61 74 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20  at the function 
12e0: 79 6f 75 20 61 72 65 0a 20 20 20 2a 20 67 6f 69  you are.   * goi
12f0: 6e 67 20 74 6f 20 63 61 6c 6c 20 68 61 73 20 62  ng to call has b
1300: 65 65 6e 20 63 6f 6d 70 69 6c 65 64 20 77 69 74  een compiled wit
1310: 68 20 74 68 65 20 73 61 6d 65 20 63 6f 6d 70 69  h the same compi
1320: 6c 65 72 20 79 6f 75 20 61 72 65 20 75 73 69 6e  ler you are usin
1330: 67 20 74 6f 0a 20 20 20 2a 20 69 6e 63 6c 75 64  g to.   * includ
1340: 65 20 74 68 69 73 20 66 69 6c 65 2e 0a 20 20 20  e this file..   
1350: 2a 20 49 66 20 79 6f 75 20 77 61 6e 74 20 74 6f  * If you want to
1360: 20 63 61 6c 6c 20 66 75 6e 63 74 69 6f 6e 73 20   call functions 
1370: 77 69 74 68 20 61 6e 6f 74 68 65 72 20 73 74 72  with another str
1380: 75 63 74 20 72 65 74 75 72 6e 69 6e 67 20 63 6f  uct returning co
1390: 6e 76 65 6e 74 69 6f 6e 2c 0a 20 20 20 2a 20 6a  nvention,.   * j
13a0: 75 73 74 20 20 23 64 65 66 69 6e 65 20 5f 5f 41  ust  #define __A
13b0: 56 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20  V_STRUCT_RETURN 
13c0: 2e 2e 2e 0a 20 20 20 2a 20 62 65 66 6f 72 65 20  ....   * before 
13d0: 6f 72 20 61 66 74 65 72 20 23 69 6e 63 6c 75 64  or after #includ
13e0: 69 6e 67 20 3c 61 76 63 61 6c 6c 2e 68 3e 2e 0a  ing <avcall.h>..
13f0: 20 20 20 2a 2f 0a 23 69 66 6e 64 65 66 20 5f 5f     */.#ifndef __
1400: 41 56 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e  AV_STRUCT_RETURN
1410: 0a 20 20 5f 5f 41 56 5f 53 54 52 55 43 54 5f 52  .  __AV_STRUCT_R
1420: 45 54 55 52 4e 09 09 3d 0a 23 69 66 20 64 65 66  ETURN..=.#if def
1430: 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f 5f 29 20  ined(__sparc__) 
1440: 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 73 70  && !defined(__sp
1450: 61 72 63 36 34 5f 5f 29 20 26 26 20 64 65 66 69  arc64__) && defi
1460: 6e 65 64 28 73 75 6e 29 20 26 26 20 64 65 66 69  ned(sun) && defi
1470: 6e 65 64 28 5f 5f 53 55 4e 50 52 4f 5f 43 29 20  ned(__SUNPRO_C) 
1480: 2f 2a 20 53 55 4e 57 73 70 72 6f 20 63 63 20 2a  /* SUNWspro cc *
1490: 2f 0a 09 09 09 09 20 20 5f 5f 41 56 5f 53 55 4e  /.....  __AV_SUN
14a0: 50 52 4f 43 43 5f 53 54 52 55 43 54 5f 52 45 54  PROCC_STRUCT_RET
14b0: 55 52 4e 2c 0a 23 65 6c 73 65 0a 23 69 66 20 64  URN,.#else.#if d
14c0: 65 66 69 6e 65 64 28 5f 5f 50 43 43 5f 53 54 52  efined(__PCC_STR
14d0: 55 43 54 5f 52 45 54 55 52 4e 5f 5f 29 20 2f 2a  UCT_RETURN__) /*
14e0: 20 64 65 66 69 6e 65 64 20 74 68 72 6f 75 67 68   defined through
14f0: 20 63 6f 6e 66 69 67 75 72 65 2c 20 73 65 65 20   configure, see 
1500: 61 62 6f 76 65 20 2a 2f 0a 09 09 09 09 20 20 5f  above */.....  _
1510: 5f 41 56 5f 50 43 43 5f 53 54 52 55 43 54 5f 52  _AV_PCC_STRUCT_R
1520: 45 54 55 52 4e 20 7c 0a 23 69 66 20 64 65 66 69  ETURN |.#if defi
1530: 6e 65 64 28 5f 5f 73 70 61 72 63 5f 5f 29 20 26  ned(__sparc__) &
1540: 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 73 70 61  & !defined(__spa
1550: 72 63 36 34 5f 5f 29 20 26 26 20 64 65 66 69 6e  rc64__) && defin
1560: 65 64 28 73 75 6e 29 20 26 26 20 21 28 64 65 66  ed(sun) && !(def
1570: 69 6e 65 64 28 5f 5f 53 54 44 43 5f 5f 29 20 7c  ined(__STDC__) |
1580: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 47 4e 55 43  | defined(__GNUC
1590: 5f 5f 29 29 20 2f 2a 20 73 75 6e 20 63 63 20 2a  __)) /* sun cc *
15a0: 2f 0a 20 20 09 09 09 09 20 20 5f 5f 41 56 5f 53  /.  ....  __AV_S
15b0: 55 4e 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55  UNCC_STRUCT_RETU
15c0: 52 4e 2c 0a 23 65 6c 73 65 0a 20 20 09 09 09 09  RN,.#else.  ....
15d0: 20 20 30 2c 0a 23 65 6e 64 69 66 0a 23 65 6c 73    0,.#endif.#els
15e0: 65 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  e.#if defined(__
15f0: 53 4d 41 4c 4c 5f 53 54 52 55 43 54 5f 52 45 54  SMALL_STRUCT_RET
1600: 55 52 4e 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65  URN__) || define
1610: 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 7c  d(__mipsn32__) |
1620: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73  | defined(__mips
1630: 36 34 5f 5f 29 20 2f 2a 20 64 65 66 69 6e 65 64  64__) /* defined
1640: 20 74 68 72 6f 75 67 68 20 63 6f 6e 66 69 67 75   through configu
1650: 72 65 2c 20 73 65 65 20 61 62 6f 76 65 20 2a 2f  re, see above */
1660: 0a 09 09 09 09 20 20 5f 5f 41 56 5f 53 4d 41 4c  .....  __AV_SMAL
1670: 4c 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20  L_STRUCT_RETURN 
1680: 7c 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66  |.#endif.#if def
1690: 69 6e 65 64 28 5f 5f 47 4e 55 43 5f 5f 29 0a 09  ined(__GNUC__)..
16a0: 09 09 09 20 20 5f 5f 41 56 5f 47 43 43 5f 53 54  ...  __AV_GCC_ST
16b0: 52 55 43 54 5f 52 45 54 55 52 4e 20 7c 0a 23 65  RUCT_RETURN |.#e
16c0: 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64  ndif.#if defined
16d0: 28 5f 5f 69 33 38 36 5f 5f 29 20 26 26 20 64 65  (__i386__) && de
16e0: 66 69 6e 65 64 28 4e 65 58 54 29 20 26 26 20 64  fined(NeXT) && d
16f0: 65 66 69 6e 65 64 28 5f 5f 47 4e 55 43 5f 5f 29  efined(__GNUC__)
1700: 20 2f 2a 20 4e 65 58 54 20 67 63 63 2d 32 2e 35   /* NeXT gcc-2.5
1710: 2e 38 20 2a 2f 0a 09 09 09 09 20 20 5f 5f 41 56  .8 */.....  __AV
1720: 5f 4e 45 58 54 47 43 43 5f 53 54 52 55 43 54 5f  _NEXTGCC_STRUCT_
1730: 52 45 54 55 52 4e 20 7c 0a 23 65 6e 64 69 66 0a  RETURN |.#endif.
1740: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 69 33  #if defined(__i3
1750: 38 36 5f 5f 29 20 26 26 20 64 65 66 69 6e 65 64  86__) && defined
1760: 28 5f 4d 53 43 5f 56 45 52 29 20 2f 2a 20 4d 53  (_MSC_VER) /* MS
1770: 56 43 20 34 2e 30 20 2a 2f 0a 09 09 09 09 20 20  VC 4.0 */.....  
1780: 5f 5f 41 56 5f 4d 53 56 43 5f 53 54 52 55 43 54  __AV_MSVC_STRUCT
1790: 5f 52 45 54 55 52 4e 20 7c 0a 23 65 6e 64 69 66  _RETURN |.#endif
17a0: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 68  .#if defined(__h
17b0: 70 70 61 5f 5f 29 20 26 26 20 64 65 66 69 6e 65  ppa__) && define
17c0: 64 28 5f 5f 47 4e 55 43 5f 5f 29 20 26 26 20 28  d(__GNUC__) && (
17d0: 5f 5f 47 4e 55 43 5f 5f 20 3c 20 33 29 20 26 26  __GNUC__ < 3) &&
17e0: 20 28 5f 5f 47 4e 55 43 5f 4d 49 4e 4f 52 5f 5f   (__GNUC_MINOR__
17f0: 20 3c 20 37 29 0a 09 09 09 09 20 20 5f 5f 41 56   < 7).....  __AV
1800: 5f 4f 4c 44 47 43 43 5f 53 54 52 55 43 54 5f 52  _OLDGCC_STRUCT_R
1810: 45 54 55 52 4e 20 7c 0a 23 65 6e 64 69 66 0a 20  ETURN |.#endif. 
1820: 20 09 09 09 09 20 20 30 2c 0a 23 65 6e 64 69 66   ....  0,.#endif
1830: 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69 66 0a 0a  .#endif.#endif..
1840: 20 20 2f 2a 20 68 6f 77 20 74 6f 20 72 65 74 75    /* how to retu
1850: 72 6e 20 66 6c 6f 61 74 73 20 2a 2f 0a 23 69 66  rn floats */.#if
1860: 20 64 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f   defined(__m68k_
1870: 5f 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f  _) || (defined(_
1880: 5f 73 70 61 72 63 5f 5f 29 20 26 26 20 21 64 65  _sparc__) && !de
1890: 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f  fined(__sparc64_
18a0: 5f 29 29 0a 20 20 5f 5f 41 56 5f 53 55 4e 43 43  _)).  __AV_SUNCC
18b0: 5f 46 4c 4f 41 54 5f 52 45 54 55 52 4e 09 3d 20  _FLOAT_RETURN.= 
18c0: 31 3c 3c 35 2c 0a 23 65 6e 64 69 66 0a 23 69 66  1<<5,.#endif.#if
18d0: 20 64 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f   defined(__m68k_
18e0: 5f 29 0a 20 20 5f 5f 41 56 5f 46 52 45 47 5f 46  _).  __AV_FREG_F
18f0: 4c 4f 41 54 5f 52 45 54 55 52 4e 09 3d 20 31 3c  LOAT_RETURN.= 1<
1900: 3c 36 2c 0a 23 65 6e 64 69 66 0a 20 20 2f 2a 20  <6,.#endif.  /* 
1910: 74 68 65 20 64 65 66 61 75 6c 74 20 77 61 79 20  the default way 
1920: 74 6f 20 72 65 74 75 72 6e 20 66 6c 6f 61 74 73  to return floats
1930: 20 2a 2f 0a 20 20 2f 2a 20 54 68 69 73 20 63 68   */.  /* This ch
1940: 6f 69 63 65 20 68 65 72 65 20 69 73 20 62 61 73  oice here is bas
1950: 65 64 20 6f 6e 20 74 68 65 20 61 73 73 75 6d 70  ed on the assump
1960: 74 69 6f 6e 20 74 68 61 74 20 74 68 65 20 66 75  tion that the fu
1970: 6e 63 74 69 6f 6e 20 79 6f 75 20 61 72 65 0a 20  nction you are. 
1980: 20 20 2a 20 67 6f 69 6e 67 20 74 6f 20 63 61 6c    * going to cal
1990: 6c 20 68 61 73 20 62 65 65 6e 20 63 6f 6d 70 69  l has been compi
19a0: 6c 65 64 20 77 69 74 68 20 74 68 65 20 73 61 6d  led with the sam
19b0: 65 20 63 6f 6d 70 69 6c 65 72 20 79 6f 75 20 61  e compiler you a
19c0: 72 65 20 75 73 69 6e 67 20 74 6f 0a 20 20 20 2a  re using to.   *
19d0: 20 69 6e 63 6c 75 64 65 20 74 68 69 73 20 66 69   include this fi
19e0: 6c 65 2e 0a 20 20 20 2a 20 49 66 20 79 6f 75 20  le..   * If you 
19f0: 77 61 6e 74 20 74 6f 20 63 61 6c 6c 20 66 75 6e  want to call fun
1a00: 63 74 69 6f 6e 73 20 77 69 74 68 20 61 6e 6f 74  ctions with anot
1a10: 68 65 72 20 66 6c 6f 61 74 20 72 65 74 75 72 6e  her float return
1a20: 69 6e 67 20 63 6f 6e 76 65 6e 74 69 6f 6e 2c 0a  ing convention,.
1a30: 20 20 20 2a 20 6a 75 73 74 20 20 23 64 65 66 69     * just  #defi
1a40: 6e 65 20 5f 5f 41 56 5f 46 4c 4f 41 54 5f 52 45  ne __AV_FLOAT_RE
1a50: 54 55 52 4e 20 2e 2e 2e 0a 20 20 20 2a 20 62 65  TURN ....   * be
1a60: 66 6f 72 65 20 6f 72 20 61 66 74 65 72 20 23 69  fore or after #i
1a70: 6e 63 6c 75 64 69 6e 67 20 3c 61 76 63 61 6c 6c  ncluding <avcall
1a80: 2e 68 3e 2e 0a 20 20 20 2a 2f 0a 23 69 66 6e 64  .h>..   */.#ifnd
1a90: 65 66 20 5f 5f 41 56 5f 46 4c 4f 41 54 5f 52 45  ef __AV_FLOAT_RE
1aa0: 54 55 52 4e 0a 23 69 66 20 28 64 65 66 69 6e 65  TURN.#if (define
1ab0: 64 28 5f 5f 6d 36 38 6b 5f 5f 29 20 7c 7c 20 28  d(__m68k__) || (
1ac0: 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f  defined(__sparc_
1ad0: 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f  _) && !defined(_
1ae0: 5f 73 70 61 72 63 36 34 5f 5f 29 29 29 20 26 26  _sparc64__))) &&
1af0: 20 21 64 65 66 69 6e 65 64 28 5f 5f 47 4e 55 43   !defined(__GNUC
1b00: 5f 5f 29 20 26 26 20 64 65 66 69 6e 65 64 28 73  __) && defined(s
1b10: 75 6e 29 20 26 26 20 21 64 65 66 69 6e 65 64 28  un) && !defined(
1b20: 5f 5f 53 55 4e 50 52 4f 5f 43 29 20 20 2f 2a 20  __SUNPRO_C)  /* 
1b30: 73 75 6e 20 63 63 20 2a 2f 0a 20 20 5f 5f 41 56  sun cc */.  __AV
1b40: 5f 46 4c 4f 41 54 5f 52 45 54 55 52 4e 09 09 3d  _FLOAT_RETURN..=
1b50: 20 5f 5f 41 56 5f 53 55 4e 43 43 5f 46 4c 4f 41   __AV_SUNCC_FLOA
1b60: 54 5f 52 45 54 55 52 4e 2c 0a 23 65 6c 69 66 20  T_RETURN,.#elif 
1b70: 28 64 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f  (defined(__m68k_
1b80: 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f  _) && !defined(_
1b90: 5f 49 52 45 47 5f 46 4c 4f 41 54 5f 52 45 54 55  _IREG_FLOAT_RETU
1ba0: 52 4e 5f 5f 29 29 0a 20 20 5f 5f 41 56 5f 46 4c  RN__)).  __AV_FL
1bb0: 4f 41 54 5f 52 45 54 55 52 4e 09 09 3d 20 5f 5f  OAT_RETURN..= __
1bc0: 41 56 5f 46 52 45 47 5f 46 4c 4f 41 54 5f 52 45  AV_FREG_FLOAT_RE
1bd0: 54 55 52 4e 2c 0a 23 65 6c 73 65 0a 20 20 5f 5f  TURN,.#else.  __
1be0: 41 56 5f 46 4c 4f 41 54 5f 52 45 54 55 52 4e 09  AV_FLOAT_RETURN.
1bf0: 09 3d 20 30 2c 0a 23 65 6e 64 69 66 0a 23 65 6e  .= 0,.#endif.#en
1c00: 64 69 66 0a 0a 20 20 2f 2a 20 68 6f 77 20 74 6f  dif..  /* how to
1c10: 20 70 61 73 73 20 73 74 72 75 63 74 73 20 2a 2f   pass structs */
1c20: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d  .#if defined(__m
1c30: 69 70 73 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65  ips__) || define
1c40: 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 7c  d(__mipsn32__) |
1c50: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73  | defined(__mips
1c60: 36 34 5f 5f 29 0a 20 20 5f 5f 41 56 5f 53 47 49  64__).  __AV_SGI
1c70: 43 43 5f 53 54 52 55 43 54 5f 41 52 47 53 09 3d  CC_STRUCT_ARGS.=
1c80: 20 31 3c 3c 37 2c 0a 23 65 6e 64 69 66 0a 23 69   1<<7,.#endif.#i
1c90: 66 20 64 65 66 69 6e 65 64 28 5f 5f 72 73 36 30  f defined(__rs60
1ca0: 30 30 5f 5f 29 0a 20 20 5f 5f 41 56 5f 41 49 58  00__).  __AV_AIX
1cb0: 43 43 5f 53 54 52 55 43 54 5f 41 52 47 53 09 3d  CC_STRUCT_ARGS.=
1cc0: 20 31 3c 3c 37 2c 0a 23 65 6e 64 69 66 0a 20 20   1<<7,.#endif.  
1cd0: 2f 2a 20 74 68 65 20 64 65 66 61 75 6c 74 20 77  /* the default w
1ce0: 61 79 20 74 6f 20 70 61 73 73 20 66 6c 6f 61 74  ay to pass float
1cf0: 73 20 2a 2f 0a 20 20 2f 2a 20 54 68 69 73 20 63  s */.  /* This c
1d00: 68 6f 69 63 65 20 68 65 72 65 20 69 73 20 62 61  hoice here is ba
1d10: 73 65 64 20 6f 6e 20 74 68 65 20 61 73 73 75 6d  sed on the assum
1d20: 70 74 69 6f 6e 20 74 68 61 74 20 74 68 65 20 66  ption that the f
1d30: 75 6e 63 74 69 6f 6e 20 79 6f 75 20 61 72 65 0a  unction you are.
1d40: 20 20 20 2a 20 67 6f 69 6e 67 20 74 6f 20 63 61     * going to ca
1d50: 6c 6c 20 68 61 73 20 62 65 65 6e 20 63 6f 6d 70  ll has been comp
1d60: 69 6c 65 64 20 77 69 74 68 20 74 68 65 20 73 61  iled with the sa
1d70: 6d 65 20 63 6f 6d 70 69 6c 65 72 20 79 6f 75 20  me compiler you 
1d80: 61 72 65 20 75 73 69 6e 67 20 74 6f 0a 20 20 20  are using to.   
1d90: 2a 20 69 6e 63 6c 75 64 65 20 74 68 69 73 20 66  * include this f
1da0: 69 6c 65 2e 0a 20 20 20 2a 20 49 66 20 79 6f 75  ile..   * If you
1db0: 20 77 61 6e 74 20 74 6f 20 63 61 6c 6c 20 66 75   want to call fu
1dc0: 6e 63 74 69 6f 6e 73 20 77 69 74 68 20 61 6e 6f  nctions with ano
1dd0: 74 68 65 72 20 66 6c 6f 61 74 20 70 61 73 73 69  ther float passi
1de0: 6e 67 20 63 6f 6e 76 65 6e 74 69 6f 6e 2c 0a 20  ng convention,. 
1df0: 20 20 2a 20 6a 75 73 74 20 20 23 64 65 66 69 6e    * just  #defin
1e00: 65 20 5f 5f 41 56 5f 53 54 52 55 43 54 5f 41 52  e __AV_STRUCT_AR
1e10: 47 53 20 2e 2e 2e 0a 20 20 20 2a 20 62 65 66 6f  GS ....   * befo
1e20: 72 65 20 6f 72 20 61 66 74 65 72 20 23 69 6e 63  re or after #inc
1e30: 6c 75 64 69 6e 67 20 3c 61 76 63 61 6c 6c 2e 68  luding <avcall.h
1e40: 3e 2e 0a 20 20 20 2a 2f 0a 23 69 66 6e 64 65 66  >..   */.#ifndef
1e50: 20 5f 5f 41 56 5f 53 54 52 55 43 54 5f 41 52 47   __AV_STRUCT_ARG
1e60: 53 0a 23 69 66 20 28 64 65 66 69 6e 65 64 28 5f  S.#if (defined(_
1e70: 5f 6d 69 70 73 5f 5f 29 20 7c 7c 20 64 65 66 69  _mips__) || defi
1e80: 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29  ned(__mipsn32__)
1e90: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69   || defined(__mi
1ea0: 70 73 36 34 5f 5f 29 29 20 26 26 20 21 64 65 66  ps64__)) && !def
1eb0: 69 6e 65 64 28 5f 5f 47 4e 55 43 5f 5f 29 20 2f  ined(__GNUC__) /
1ec0: 2a 20 53 47 49 20 6d 69 70 73 20 63 63 20 2a 2f  * SGI mips cc */
1ed0: 0a 20 20 5f 5f 41 56 5f 53 54 52 55 43 54 5f 41  .  __AV_STRUCT_A
1ee0: 52 47 53 09 09 3d 20 5f 5f 41 56 5f 53 47 49 43  RGS..= __AV_SGIC
1ef0: 43 5f 53 54 52 55 43 54 5f 41 52 47 53 2c 0a 23  C_STRUCT_ARGS,.#
1f00: 65 6c 73 65 0a 23 69 66 20 64 65 66 69 6e 65 64  else.#if defined
1f10: 28 5f 5f 72 73 36 30 30 30 5f 5f 29 20 26 26 20  (__rs6000__) && 
1f20: 64 65 66 69 6e 65 64 28 5f 41 49 58 29 20 26 26  defined(_AIX) &&
1f30: 20 21 64 65 66 69 6e 65 64 28 5f 5f 47 4e 55 43   !defined(__GNUC
1f40: 5f 5f 29 20 2f 2a 20 41 49 58 20 63 63 2c 20 78  __) /* AIX cc, x
1f50: 6c 63 20 2a 2f 0a 20 20 5f 5f 41 56 5f 53 54 52  lc */.  __AV_STR
1f60: 55 43 54 5f 41 52 47 53 09 09 3d 20 5f 5f 41 56  UCT_ARGS..= __AV
1f70: 5f 41 49 58 43 43 5f 53 54 52 55 43 54 5f 41 52  _AIXCC_STRUCT_AR
1f80: 47 53 2c 0a 23 65 6c 73 65 0a 20 20 5f 5f 41 56  GS,.#else.  __AV
1f90: 5f 53 54 52 55 43 54 5f 41 52 47 53 09 09 3d 20  _STRUCT_ARGS..= 
1fa0: 30 2c 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69 66  0,.#endif.#endif
1fb0: 0a 23 65 6e 64 69 66 0a 0a 20 20 2f 2a 20 68 6f  .#endif..  /* ho
1fc0: 77 20 74 6f 20 70 61 73 73 20 66 6c 6f 61 74 73  w to pass floats
1fd0: 20 2a 2f 0a 20 20 2f 2a 20 41 4e 53 49 20 43 20   */.  /* ANSI C 
1fe0: 63 6f 6d 70 69 6c 65 72 73 20 61 6e 64 20 47 4e  compilers and GN
1ff0: 55 20 67 63 63 20 70 61 73 73 20 66 6c 6f 61 74  U gcc pass float
2000: 73 20 61 73 20 66 6c 6f 61 74 73 2e 0a 20 20 20  s as floats..   
2010: 2a 20 4b 26 52 20 43 20 63 6f 6d 70 69 6c 65 72  * K&R C compiler
2020: 73 20 70 61 73 73 20 66 6c 6f 61 74 73 20 61 73  s pass floats as
2030: 20 64 6f 75 62 6c 65 73 2e 0a 20 20 20 2a 20 28   doubles..   * (
2040: 45 78 63 65 70 74 20 73 6f 6d 65 20 63 6f 6d 70  Except some comp
2050: 69 6c 65 72 73 20 6c 69 6b 65 20 53 47 49 20 4d  ilers like SGI M
2060: 49 50 53 20 22 63 63 22 20 61 6e 64 20 22 63 63  IPS "cc" and "cc
2070: 20 2d 63 63 6b 72 22 20 69 66 20 61 20 70 72 6f   -cckr" if a pro
2080: 74 6f 74 79 70 65 20 69 73 0a 20 20 20 2a 20 6b  totype is.   * k
2090: 6e 6f 77 6e 20 66 6f 72 20 74 68 65 20 63 61 6c  nown for the cal
20a0: 6c 65 64 20 66 75 6e 63 74 69 6f 6e 73 2e 20 42  led functions. B
20b0: 75 74 20 74 6f 20 63 6f 6d 70 69 6c 65 20 61 20  ut to compile a 
20c0: 70 72 6f 67 72 61 6d 20 77 69 74 68 20 70 72 6f  program with pro
20d0: 74 6f 74 79 70 65 73 2c 0a 20 20 20 2a 20 22 63  totypes,.   * "c
20e0: 63 20 2d 61 6e 73 69 22 20 69 73 20 62 65 74 74  c -ansi" is bett
20f0: 65 72 20 61 6e 79 77 61 79 2e 0a 20 20 20 2a 2f  er anyway..   */
2100: 0a 20 20 5f 5f 41 56 5f 41 4e 53 49 5f 46 4c 4f  .  __AV_ANSI_FLO
2110: 41 54 5f 41 52 47 53 09 09 3d 20 30 2c 20 20 20  AT_ARGS..= 0,   
2120: 20 2f 2a 20 70 61 73 73 20 66 6c 6f 61 74 73 20   /* pass floats 
2130: 61 73 20 66 6c 6f 61 74 73 20 2a 2f 0a 20 20 5f  as floats */.  _
2140: 5f 41 56 5f 54 52 41 44 49 54 49 4f 4e 41 4c 5f  _AV_TRADITIONAL_
2150: 46 4c 4f 41 54 5f 41 52 47 53 09 3d 20 31 3c 3c  FLOAT_ARGS.= 1<<
2160: 38 2c 20 2f 2a 20 70 61 73 73 20 66 6c 6f 61 74  8, /* pass float
2170: 73 20 61 73 20 64 6f 75 62 6c 65 73 20 2a 2f 0a  s as doubles */.
2180: 20 20 2f 2a 20 74 68 65 20 64 65 66 61 75 6c 74    /* the default
2190: 20 77 61 79 20 74 6f 20 70 61 73 73 20 66 6c 6f   way to pass flo
21a0: 61 74 73 20 2a 2f 0a 20 20 2f 2a 20 54 68 69 73  ats */.  /* This
21b0: 20 63 68 6f 69 63 65 20 68 65 72 65 20 69 73 20   choice here is 
21c0: 62 61 73 65 64 20 6f 6e 20 74 68 65 20 61 73 73  based on the ass
21d0: 75 6d 70 74 69 6f 6e 20 74 68 61 74 20 74 68 65  umption that the
21e0: 20 66 75 6e 63 74 69 6f 6e 20 79 6f 75 20 61 72   function you ar
21f0: 65 0a 20 20 20 2a 20 67 6f 69 6e 67 20 74 6f 20  e.   * going to 
2200: 63 61 6c 6c 20 68 61 73 20 62 65 65 6e 20 63 6f  call has been co
2210: 6d 70 69 6c 65 64 20 77 69 74 68 20 74 68 65 20  mpiled with the 
2220: 73 61 6d 65 20 63 6f 6d 70 69 6c 65 72 20 79 6f  same compiler yo
2230: 75 20 61 72 65 20 75 73 69 6e 67 20 74 6f 0a 20  u are using to. 
2240: 20 20 2a 20 69 6e 63 6c 75 64 65 20 74 68 69 73    * include this
2250: 20 66 69 6c 65 2e 0a 20 20 20 2a 20 49 66 20 79   file..   * If y
2260: 6f 75 20 77 61 6e 74 20 74 6f 20 63 61 6c 6c 20  ou want to call 
2270: 66 75 6e 63 74 69 6f 6e 73 20 77 69 74 68 20 61  functions with a
2280: 6e 6f 74 68 65 72 20 66 6c 6f 61 74 20 70 61 73  nother float pas
2290: 73 69 6e 67 20 63 6f 6e 76 65 6e 74 69 6f 6e 2c  sing convention,
22a0: 0a 20 20 20 2a 20 6a 75 73 74 20 20 23 64 65 66  .   * just  #def
22b0: 69 6e 65 20 5f 5f 41 56 5f 46 4c 4f 41 54 5f 41  ine __AV_FLOAT_A
22c0: 52 47 53 20 2e 2e 2e 0a 20 20 20 2a 20 62 65 66  RGS ....   * bef
22d0: 6f 72 65 20 6f 72 20 61 66 74 65 72 20 23 69 6e  ore or after #in
22e0: 63 6c 75 64 69 6e 67 20 3c 61 76 63 61 6c 6c 2e  cluding <avcall.
22f0: 68 3e 2e 0a 20 20 20 2a 2f 0a 23 69 66 6e 64 65  h>..   */.#ifnde
2300: 66 20 5f 5f 41 56 5f 46 4c 4f 41 54 5f 41 52 47  f __AV_FLOAT_ARG
2310: 53 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  S.#if defined(__
2320: 53 54 44 43 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  STDC__) || defin
2330: 65 64 28 5f 5f 47 4e 55 43 5f 5f 29 20 2f 2a 20  ed(__GNUC__) /* 
2340: 77 68 61 74 20 61 62 6f 75 74 20 68 70 70 61 20  what about hppa 
2350: 22 63 63 20 2d 41 61 22 20 3f 3f 20 2a 2f 0a 20  "cc -Aa" ?? */. 
2360: 20 5f 5f 41 56 5f 46 4c 4f 41 54 5f 41 52 47 53   __AV_FLOAT_ARGS
2370: 09 09 3d 20 5f 5f 41 56 5f 41 4e 53 49 5f 46 4c  ..= __AV_ANSI_FL
2380: 4f 41 54 5f 41 52 47 53 2c 0a 23 65 6c 73 65 0a  OAT_ARGS,.#else.
2390: 20 20 5f 5f 41 56 5f 46 4c 4f 41 54 5f 41 52 47    __AV_FLOAT_ARG
23a0: 53 09 09 3d 20 5f 5f 41 56 5f 54 52 41 44 49 54  S..= __AV_TRADIT
23b0: 49 4f 4e 41 4c 5f 46 4c 4f 41 54 5f 41 52 47 53  IONAL_FLOAT_ARGS
23c0: 2c 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69 66 0a  ,.#endif.#endif.
23d0: 0a 20 20 2f 2a 20 68 6f 77 20 74 6f 20 70 61 73  .  /* how to pas
23e0: 73 20 61 6e 64 20 72 65 74 75 72 6e 20 73 6d 61  s and return sma
23f0: 6c 6c 20 69 6e 74 65 67 65 72 20 61 72 67 75 6d  ll integer argum
2400: 65 6e 74 73 20 2a 2f 0a 20 20 5f 5f 41 56 5f 41  ents */.  __AV_A
2410: 4e 53 49 5f 49 4e 54 45 47 45 52 53 09 09 3d 20  NSI_INTEGERS..= 
2420: 30 2c 20 2f 2a 20 6e 6f 20 70 72 6f 6d 6f 74 69  0, /* no promoti
2430: 6f 6e 73 20 2a 2f 0a 20 20 5f 5f 41 56 5f 54 52  ons */.  __AV_TR
2440: 41 44 49 54 49 4f 4e 41 4c 5f 49 4e 54 45 47 45  ADITIONAL_INTEGE
2450: 52 53 09 3d 20 30 2c 20 2f 2a 20 70 72 6f 6d 6f  RS.= 0, /* promo
2460: 74 65 20 5b 75 5d 63 68 61 72 2c 20 5b 75 5d 73  te [u]char, [u]s
2470: 68 6f 72 74 20 74 6f 20 5b 75 5d 69 6e 74 20 2a  hort to [u]int *
2480: 2f 0a 20 20 2f 2a 20 46 6f 72 74 75 6e 61 74 65  /.  /* Fortunate
2490: 6c 79 20 74 68 65 73 65 20 74 77 6f 20 6d 65 74  ly these two met
24a0: 68 6f 64 73 20 61 72 65 20 63 6f 6d 70 61 74 69  hods are compati
24b0: 62 6c 65 2e 20 4f 75 72 20 6d 61 63 72 6f 73 20  ble. Our macros 
24c0: 77 6f 72 6b 20 77 69 74 68 20 62 6f 74 68 2e 20  work with both. 
24d0: 2a 2f 0a 20 20 2f 2a 20 74 68 65 20 64 65 66 61  */.  /* the defa
24e0: 75 6c 74 20 77 61 79 20 74 6f 20 70 61 73 73 20  ult way to pass 
24f0: 61 6e 64 20 72 65 74 75 72 6e 20 73 6d 61 6c 6c  and return small
2500: 20 69 6e 74 65 67 65 72 20 61 72 67 75 6d 65 6e   integer argumen
2510: 74 73 20 2a 2f 0a 20 20 2f 2a 20 54 68 69 73 20  ts */.  /* This 
2520: 63 68 6f 69 63 65 20 68 65 72 65 20 69 73 20 62  choice here is b
2530: 61 73 65 64 20 6f 6e 20 74 68 65 20 61 73 73 75  ased on the assu
2540: 6d 70 74 69 6f 6e 20 74 68 61 74 20 74 68 65 20  mption that the 
2550: 66 75 6e 63 74 69 6f 6e 20 79 6f 75 20 61 72 65  function you are
2560: 0a 20 20 20 2a 20 67 6f 69 6e 67 20 74 6f 20 63  .   * going to c
2570: 61 6c 6c 20 68 61 73 20 62 65 65 6e 20 63 6f 6d  all has been com
2580: 70 69 6c 65 64 20 77 69 74 68 20 74 68 65 20 73  piled with the s
2590: 61 6d 65 20 63 6f 6d 70 69 6c 65 72 20 79 6f 75  ame compiler you
25a0: 20 61 72 65 20 75 73 69 6e 67 20 74 6f 0a 20 20   are using to.  
25b0: 20 2a 20 69 6e 63 6c 75 64 65 20 74 68 69 73 20   * include this 
25c0: 66 69 6c 65 2e 0a 20 20 20 2a 20 49 66 20 79 6f  file..   * If yo
25d0: 75 20 77 61 6e 74 20 74 6f 20 63 61 6c 6c 20 66  u want to call f
25e0: 75 6e 63 74 69 6f 6e 73 20 77 69 74 68 20 61 6e  unctions with an
25f0: 6f 74 68 65 72 20 66 6c 6f 61 74 20 70 61 73 73  other float pass
2600: 69 6e 67 20 63 6f 6e 76 65 6e 74 69 6f 6e 2c 0a  ing convention,.
2610: 20 20 20 2a 20 6a 75 73 74 20 20 23 64 65 66 69     * just  #defi
2620: 6e 65 20 5f 5f 41 56 5f 49 4e 54 45 47 45 52 53  ne __AV_INTEGERS
2630: 20 2e 2e 2e 0a 20 20 20 2a 20 62 65 66 6f 72 65   ....   * before
2640: 20 6f 72 20 61 66 74 65 72 20 23 69 6e 63 6c 75   or after #inclu
2650: 64 69 6e 67 20 3c 61 76 63 61 6c 6c 2e 68 3e 2e  ding <avcall.h>.
2660: 0a 20 20 20 2a 2f 0a 23 69 66 6e 64 65 66 20 5f  .   */.#ifndef _
2670: 5f 41 56 5f 49 4e 54 45 47 45 52 53 0a 23 69 66  _AV_INTEGERS.#if
2680: 20 64 65 66 69 6e 65 64 28 5f 5f 53 54 44 43 5f   defined(__STDC_
2690: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  _) || defined(__
26a0: 47 4e 55 43 5f 5f 29 0a 20 20 5f 5f 41 56 5f 49  GNUC__).  __AV_I
26b0: 4e 54 45 47 45 52 53 09 09 09 3d 20 5f 5f 41 56  NTEGERS...= __AV
26c0: 5f 41 4e 53 49 5f 49 4e 54 45 47 45 52 53 2c 0a  _ANSI_INTEGERS,.
26d0: 23 65 6c 73 65 0a 20 20 5f 5f 41 56 5f 49 4e 54  #else.  __AV_INT
26e0: 45 47 45 52 53 09 09 09 3d 20 5f 5f 41 56 5f 54  EGERS...= __AV_T
26f0: 52 41 44 49 54 49 4f 4e 41 4c 5f 49 4e 54 45 47  RADITIONAL_INTEG
2700: 45 52 53 2c 0a 23 65 6e 64 69 66 0a 23 65 6e 64  ERS,.#endif.#end
2710: 69 66 0a 0a 20 20 2f 2a 20 73 74 61 63 6b 20 63  if..  /* stack c
2720: 6c 65 61 6e 75 70 20 70 6f 6c 69 63 79 20 2a 2f  leanup policy */
2730: 0a 20 20 5f 5f 41 56 5f 43 44 45 43 4c 5f 43 4c  .  __AV_CDECL_CL
2740: 45 41 4e 55 50 09 09 3d 20 30 2c 20 2f 2a 20 63  EANUP..= 0, /* c
2750: 61 6c 6c 65 72 20 70 6f 70 73 20 61 72 67 73 20  aller pops args 
2760: 61 66 74 65 72 20 72 65 74 75 72 6e 20 2a 2f 0a  after return */.
2770: 20 20 5f 5f 41 56 5f 53 54 44 43 41 4c 4c 5f 43    __AV_STDCALL_C
2780: 4c 45 41 4e 55 50 09 09 3d 20 30 2c 20 2f 2a 20  LEANUP..= 0, /* 
2790: 63 61 6c 6c 65 65 20 70 6f 70 73 20 61 72 67 73  callee pops args
27a0: 20 62 65 66 6f 72 65 20 72 65 74 75 72 6e 20 2a   before return *
27b0: 2f 0a 09 09 09 09 20 20 20 20 20 2f 2a 20 63 75  /.....     /* cu
27c0: 72 72 65 6e 74 6c 79 20 6f 6e 6c 79 20 73 75 70  rrently only sup
27d0: 70 6f 72 74 65 64 20 6f 6e 20 5f 5f 69 33 38 36  ported on __i386
27e0: 5f 5f 20 2a 2f 0a 23 69 66 6e 64 65 66 20 5f 5f  __ */.#ifndef __
27f0: 41 56 5f 43 4c 45 41 4e 55 50 0a 20 20 5f 5f 41  AV_CLEANUP.  __A
2800: 56 5f 43 4c 45 41 4e 55 50 09 09 09 3d 20 5f 5f  V_CLEANUP...= __
2810: 41 56 5f 43 44 45 43 4c 5f 43 4c 45 41 4e 55 50  AV_CDECL_CLEANUP
2820: 2c 0a 23 65 6e 64 69 66 0a 0a 20 20 2f 2a 20 54  ,.#endif..  /* T
2830: 68 65 73 65 20 61 72 65 20 66 6f 72 20 69 6e 74  hese are for int
2840: 65 72 6e 61 6c 20 75 73 65 20 6f 6e 6c 79 20 2a  ernal use only *
2850: 2f 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  /.#if defined(__
2860: 69 33 38 36 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  i386__) || defin
2870: 65 64 28 5f 5f 6d 36 38 6b 5f 5f 29 20 7c 7c 20  ed(__m68k__) || 
2880: 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33  defined(__mipsn3
2890: 32 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  2__) || defined(
28a0: 5f 5f 6d 69 70 73 36 34 5f 5f 29 20 7c 7c 20 64  __mips64__) || d
28b0: 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34  efined(__sparc64
28c0: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
28d0: 5f 61 6c 70 68 61 5f 5f 29 20 7c 7c 20 64 65 66  _alpha__) || def
28e0: 69 6e 65 64 28 5f 5f 61 72 6d 5f 5f 29 20 7c 7c  ined(__arm__) ||
28f0: 20 64 65 66 69 6e 65 64 28 5f 5f 72 73 36 30 30   defined(__rs600
2900: 30 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  0__) || defined(
2910: 5f 5f 63 6f 6e 76 65 78 5f 5f 29 20 7c 7c 20 64  __convex__) || d
2920: 65 66 69 6e 65 64 28 5f 5f 69 61 36 34 5f 5f 29  efined(__ia64__)
2930: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 78 38   || defined(__x8
2940: 36 5f 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  6_64__) || defin
2950: 65 64 28 5f 5f 73 33 39 30 5f 5f 29 0a 20 20 5f  ed(__s390__).  _
2960: 5f 41 56 5f 52 45 47 49 53 54 45 52 5f 53 54 52  _AV_REGISTER_STR
2970: 55 43 54 5f 52 45 54 55 52 4e 09 3d 20 31 3c 3c  UCT_RETURN.= 1<<
2980: 39 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65  9,.#endif.#if de
2990: 66 69 6e 65 64 28 5f 5f 6d 69 70 73 5f 5f 29 20  fined(__mips__) 
29a0: 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 6d 69  && !defined(__mi
29b0: 70 73 6e 33 32 5f 5f 29 0a 20 20 5f 5f 41 56 5f  psn32__).  __AV_
29c0: 46 4c 4f 41 54 5f 31 09 09 09 3d 20 31 3c 3c 31  FLOAT_1...= 1<<1
29d0: 30 2c 0a 20 20 5f 5f 41 56 5f 46 4c 4f 41 54 5f  0,.  __AV_FLOAT_
29e0: 32 09 09 09 3d 20 31 3c 3c 31 31 2c 0a 23 65 6e  2...= 1<<11,.#en
29f0: 64 69 66 0a 0a 20 20 5f 5f 41 56 5f 66 6c 61 67  dif..  __AV_flag
2a00: 5f 66 6f 72 5f 62 72 6f 6b 65 6e 5f 63 6f 6d 70  _for_broken_comp
2a10: 69 6c 65 72 73 5f 74 68 61 74 5f 64 6f 6e 74 5f  ilers_that_dont_
2a20: 6c 69 6b 65 5f 74 72 61 69 6c 69 6e 67 5f 63 6f  like_trailing_co
2a30: 6d 6d 61 73 0a 7d 3b 0a 0a 74 79 70 65 64 65 66  mmas.};..typedef
2a40: 20 73 74 72 75 63 74 0a 7b 0a 20 20 2f 2a 20 66   struct.{.  /* f
2a50: 75 6e 63 74 69 6f 6e 20 74 6f 20 62 65 20 63 61  unction to be ca
2a60: 6c 6c 65 64 20 2a 2f 0a 20 20 5f 5f 61 76 77 6f  lled */.  __avwo
2a70: 72 64 09 09 28 2a 66 75 6e 63 29 28 29 3b 0a 20  rd..(*func)();. 
2a80: 20 2f 2a 20 73 6f 6d 65 20 61 76 5f 2e 2e 2e 20   /* some av_... 
2a90: 6d 61 63 72 6f 73 20 6e 65 65 64 20 74 68 65 73  macros need thes
2aa0: 65 20 66 6c 61 67 73 20 2a 2f 0a 20 20 69 6e 74  e flags */.  int
2ab0: 09 09 09 66 6c 61 67 73 3b 0a 20 20 2f 2a 20 72  ...flags;.  /* r
2ac0: 65 74 75 72 6e 20 74 79 70 65 2c 20 61 64 64 72  eturn type, addr
2ad0: 65 73 73 20 66 6f 72 20 74 68 65 20 72 65 73 75  ess for the resu
2ae0: 6c 74 20 2a 2f 0a 20 20 76 6f 69 64 2a 09 09 09  lt */.  void*...
2af0: 72 61 64 64 72 3b 0a 20 20 65 6e 75 6d 20 5f 5f  raddr;.  enum __
2b00: 41 56 74 79 70 65 09 09 72 74 79 70 65 3b 0a 20  AVtype..rtype;. 
2b10: 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 09 09   unsigned long..
2b20: 72 73 69 7a 65 3b 0a 20 20 2f 2a 20 63 75 72 72  rsize;.  /* curr
2b30: 65 6e 74 20 70 6f 69 6e 74 65 72 20 69 6e 74 6f  ent pointer into
2b40: 20 74 68 65 20 61 72 67 73 5b 5d 20 61 72 72 61   the args[] arra
2b50: 79 20 2a 2f 0a 20 20 5f 5f 61 76 77 6f 72 64 2a  y */.  __avword*
2b60: 09 09 61 70 74 72 3b 0a 23 69 66 20 64 65 66 69  ..aptr;.#if defi
2b70: 6e 65 64 28 5f 5f 73 70 61 72 63 5f 5f 29 20 7c  ned(__sparc__) |
2b80: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72  | defined(__spar
2b90: 63 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65  c64__) || define
2ba0: 64 28 5f 5f 68 70 70 61 5f 5f 29 20 7c 7c 20 28  d(__hppa__) || (
2bb0: 64 65 66 69 6e 65 64 28 5f 5f 72 73 36 30 30 30  defined(__rs6000
2bc0: 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 28  __) && !defined(
2bd0: 5f 41 49 58 29 20 26 26 20 21 28 64 65 66 69 6e  _AIX) && !(defin
2be0: 65 64 28 5f 5f 4d 41 43 48 5f 5f 29 20 26 26 20  ed(__MACH__) && 
2bf0: 64 65 66 69 6e 65 64 28 5f 5f 41 50 50 4c 45 5f  defined(__APPLE_
2c00: 5f 29 29 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  _))) || defined(
2c10: 5f 5f 73 33 39 30 5f 5f 29 0a 20 20 2f 2a 20 6c  __s390__).  /* l
2c20: 69 6d 69 74 20 70 6f 69 6e 74 65 72 20 69 6e 74  imit pointer int
2c30: 6f 20 74 68 65 20 61 72 67 73 5b 5d 20 61 72 72  o the args[] arr
2c40: 61 79 20 2a 2f 0a 20 20 5f 5f 61 76 77 6f 72 64  ay */.  __avword
2c50: 2a 09 09 65 70 74 72 3b 0a 23 65 6e 64 69 66 0a  *..eptr;.#endif.
2c60: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 69 33  #if defined(__i3
2c70: 38 36 5f 5f 29 20 26 26 20 30 0a 20 20 2f 2a 20  86__) && 0.  /* 
2c80: 46 69 6c 6c 65 72 20 77 6f 72 64 2c 20 6e 65 65  Filler word, nee
2c90: 64 65 64 20 69 66 20 74 68 65 20 6e 75 6d 62 65  ded if the numbe
2ca0: 72 73 20 6f 66 20 77 6f 72 64 73 20 75 70 20 74  rs of words up t
2cb0: 6f 20 6e 6f 77 20 69 6e 20 74 68 69 73 20 73 74  o now in this st
2cc0: 72 75 63 74 75 72 65 20 2a 2f 0a 20 20 2f 2a 20  ructure */.  /* 
2cd0: 69 73 20 6f 64 64 20 28 62 65 63 61 75 73 65 20  is odd (because 
2ce0: 6f 6e 20 4d 53 56 43 2c 20 61 6c 69 67 6e 6f 66  on MSVC, alignof
2cf0: 28 64 6f 75 62 6c 65 29 20 3d 20 38 2c 20 6e 6f  (double) = 8, no
2d00: 72 6d 61 6c 6c 79 20 3d 20 34 29 2e 20 20 20 20  rmally = 4).    
2d10: 20 20 20 20 20 20 20 20 2a 2f 0a 20 20 5f 5f 61          */.  __a
2d20: 76 77 6f 72 64 09 09 66 69 6c 6c 65 72 31 3b 0a  vword..filler1;.
2d30: 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e  #endif.#if defin
2d40: 65 64 28 5f 5f 69 33 38 36 5f 5f 29 20 7c 7c 20  ed(__i386__) || 
2d50: 64 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f 5f  defined(__m68k__
2d60: 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f  ) || (defined(__
2d70: 73 70 61 72 63 5f 5f 29 20 26 26 20 21 64 65 66  sparc__) && !def
2d80: 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f  ined(__sparc64__
2d90: 29 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  )) || defined(__
2da0: 68 70 70 61 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  hppa__) || defin
2db0: 65 64 28 5f 5f 61 72 6d 5f 5f 29 20 7c 7c 20 64  ed(__arm__) || d
2dc0: 65 66 69 6e 65 64 28 5f 5f 72 73 36 30 30 30 5f  efined(__rs6000_
2dd0: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  _) || defined(__
2de0: 63 6f 6e 76 65 78 5f 5f 29 20 7c 7c 20 64 65 66  convex__) || def
2df0: 69 6e 65 64 28 5f 5f 73 33 39 30 5f 5f 29 0a 20  ined(__s390__). 
2e00: 20 2f 2a 20 74 65 6d 70 6f 72 61 72 79 20 73 74   /* temporary st
2e10: 6f 72 61 67 65 2c 20 75 73 65 64 20 74 6f 20 73  orage, used to s
2e20: 70 6c 69 74 20 64 6f 75 62 6c 65 73 20 69 6e 74  plit doubles int
2e30: 6f 20 74 77 6f 20 77 6f 72 64 73 20 2a 2f 0a 20  o two words */. 
2e40: 20 75 6e 69 6f 6e 20 7b 0a 20 20 20 20 64 6f 75   union {.    dou
2e50: 62 6c 65 09 5f 64 6f 75 62 6c 65 3b 0a 23 69 66  ble._double;.#if
2e60: 20 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63   defined(__sparc
2e70: 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 28  __) && !defined(
2e80: 5f 5f 73 70 61 72 63 36 34 5f 5f 29 20 26 26 20  __sparc64__) && 
2e90: 64 65 66 69 6e 65 64 28 48 41 56 45 5f 4c 4f 4e  defined(HAVE_LON
2ea0: 47 4c 4f 4e 47 29 0a 20 20 20 20 6c 6f 6e 67 20  GLONG).    long 
2eb0: 6c 6f 6e 67 09 5f 6c 6f 6e 67 6c 6f 6e 67 3b 0a  long._longlong;.
2ec0: 23 65 6e 64 69 66 0a 20 20 20 20 5f 5f 61 76 77  #endif.    __avw
2ed0: 6f 72 64 09 77 6f 72 64 73 5b 32 5d 3b 0a 20 20  ord.words[2];.  
2ee0: 7d 09 09 09 74 6d 70 3b 0a 23 65 6e 64 69 66 0a  }...tmp;.#endif.
2ef0: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 78 38  #if defined(__x8
2f00: 36 5f 36 34 5f 5f 29 0a 20 20 2f 2a 20 73 74 6f  6_64__).  /* sto
2f10: 72 65 20 74 68 65 20 69 6e 74 65 67 65 72 20 61  re the integer a
2f20: 72 67 75 6d 65 6e 74 73 20 69 6e 20 61 6e 20 65  rguments in an e
2f30: 78 74 72 61 20 61 72 72 61 79 20 2a 2f 0a 20 20  xtra array */.  
2f40: 5f 5f 61 76 77 6f 72 64 2a 09 09 69 61 70 74 72  __avword*..iaptr
2f50: 3b 0a 20 20 5f 5f 61 76 77 6f 72 64 09 09 69 61  ;.  __avword..ia
2f60: 72 67 73 5b 36 5d 3b 0a 23 65 6e 64 69 66 0a 23  rgs[6];.#endif.#
2f70: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70  if defined(__mip
2f80: 73 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64  s__) && !defined
2f90: 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 0a 20 20  (__mipsn32__).  
2fa0: 2f 2a 20 73 74 6f 72 65 20 74 68 65 20 66 6c 6f  /* store the flo
2fb0: 61 74 69 6e 67 2d 70 6f 69 6e 74 20 61 72 67 75  ating-point argu
2fc0: 6d 65 6e 74 73 20 69 6e 20 61 6e 20 65 78 74 72  ments in an extr
2fd0: 61 20 61 72 72 61 79 20 2a 2f 0a 20 20 69 6e 74  a array */.  int
2fe0: 09 09 09 61 6e 75 6d 3b 0a 20 20 64 6f 75 62 6c  ...anum;.  doubl
2ff0: 65 09 09 66 6c 6f 61 74 61 72 67 5b 32 5d 3b 0a  e..floatarg[2];.
3000: 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e  #endif.#if defin
3010: 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20  ed(__mipsn32__) 
3020: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70  || defined(__mip
3030: 73 36 34 5f 5f 29 0a 20 20 2f 2a 20 73 74 6f 72  s64__).  /* stor
3040: 65 20 74 68 65 20 66 6c 6f 61 74 69 6e 67 2d 70  e the floating-p
3050: 6f 69 6e 74 20 61 72 67 75 6d 65 6e 74 73 20 69  oint arguments i
3060: 6e 20 61 6e 20 65 78 74 72 61 20 61 72 72 61 79  n an extra array
3070: 20 2a 2f 0a 20 20 69 6e 74 09 09 09 61 6e 75 6d   */.  int...anum
3080: 3b 09 09 2f 2a 20 72 65 64 75 6e 64 61 6e 74 3a  ;../* redundant:
3090: 20 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 26   (LIST).aptr = &
30a0: 28 4c 49 53 54 29 2e 61 72 67 73 5b 28 4c 49 53  (LIST).args[(LIS
30b0: 54 29 2e 61 6e 75 6d 5d 20 2a 2f 0a 20 20 75 6e  T).anum] */.  un
30c0: 73 69 67 6e 65 64 20 69 6e 74 09 09 66 61 72 67  signed int..farg
30d0: 5f 6d 61 73 6b 3b 09 2f 2a 20 62 69 74 6d 61 73  _mask;./* bitmas
30e0: 6b 20 6f 66 20 74 68 6f 73 65 20 65 6e 74 72 69  k of those entri
30f0: 65 73 20 69 6e 20 66 61 72 67 5b 5d 20 77 68 69  es in farg[] whi
3100: 63 68 20 68 61 76 65 20 61 20 76 61 6c 75 65 20  ch have a value 
3110: 2a 2f 0a 20 20 75 6e 73 69 67 6e 65 64 20 69 6e  */.  unsigned in
3120: 74 09 09 64 61 72 67 5f 6d 61 73 6b 3b 09 2f 2a  t..darg_mask;./*
3130: 20 62 69 74 6d 61 73 6b 20 6f 66 20 74 68 6f 73   bitmask of thos
3140: 65 20 65 6e 74 72 69 65 73 20 69 6e 20 61 72 67  e entries in arg
3150: 73 5b 5d 20 77 68 69 63 68 20 68 61 76 65 20 61  s[] which have a
3160: 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 20 2a 2f   double value */
3170: 0a 20 20 66 6c 6f 61 74 09 09 09 66 61 72 67 5b  .  float...farg[
3180: 38 5d 3b 0a 23 65 6e 64 69 66 0a 23 69 66 20 64  8];.#endif.#if d
3190: 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34  efined(__sparc64
31a0: 5f 5f 29 0a 20 20 2f 2a 20 73 74 6f 72 65 20 74  __).  /* store t
31b0: 68 65 20 66 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e  he floating-poin
31c0: 74 20 61 72 67 75 6d 65 6e 74 73 20 69 6e 20 61  t arguments in a
31d0: 6e 20 65 78 74 72 61 20 61 72 72 61 79 20 2a 2f  n extra array */
31e0: 0a 20 20 69 6e 74 09 09 09 61 6e 75 6d 3b 09 09  .  int...anum;..
31f0: 2f 2a 20 72 65 64 75 6e 64 61 6e 74 3a 20 28 4c  /* redundant: (L
3200: 49 53 54 29 2e 61 70 74 72 20 3d 20 26 28 4c 49  IST).aptr = &(LI
3210: 53 54 29 2e 61 72 67 73 5b 28 4c 49 53 54 29 2e  ST).args[(LIST).
3220: 61 6e 75 6d 5d 20 2a 2f 0a 20 20 75 6e 73 69 67  anum] */.  unsig
3230: 6e 65 64 20 69 6e 74 09 09 66 61 72 67 5f 6d 61  ned int..farg_ma
3240: 73 6b 3b 09 2f 2a 20 62 69 74 6d 61 73 6b 20 6f  sk;./* bitmask o
3250: 66 20 74 68 6f 73 65 20 65 6e 74 72 69 65 73 20  f those entries 
3260: 69 6e 20 66 61 72 67 5b 5d 20 77 68 69 63 68 20  in farg[] which 
3270: 68 61 76 65 20 61 20 76 61 6c 75 65 20 2a 2f 0a  have a value */.
3280: 20 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 09 09    unsigned int..
3290: 64 61 72 67 5f 6d 61 73 6b 3b 09 2f 2a 20 62 69  darg_mask;./* bi
32a0: 74 6d 61 73 6b 20 6f 66 20 74 68 6f 73 65 20 65  tmask of those e
32b0: 6e 74 72 69 65 73 20 69 6e 20 61 72 67 73 5b 5d  ntries in args[]
32c0: 20 77 68 69 63 68 20 68 61 76 65 20 61 20 64 6f   which have a do
32d0: 75 62 6c 65 20 76 61 6c 75 65 20 2a 2f 0a 23 65  uble value */.#e
32e0: 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64  ndif.#if defined
32f0: 28 5f 5f 69 61 36 34 5f 5f 29 20 7c 7c 20 64 65  (__ia64__) || de
3300: 66 69 6e 65 64 28 5f 5f 78 38 36 5f 36 34 5f 5f  fined(__x86_64__
3310: 29 0a 20 20 2f 2a 20 73 74 6f 72 65 20 74 68 65  ).  /* store the
3320: 20 66 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e 74 20   floating-point 
3330: 61 72 67 75 6d 65 6e 74 73 20 69 6e 20 61 6e 20  arguments in an 
3340: 65 78 74 72 61 20 61 72 72 61 79 20 2a 2f 0a 20  extra array */. 
3350: 20 64 6f 75 62 6c 65 2a 09 09 66 61 70 74 72 3b   double*..faptr;
3360: 0a 20 20 64 6f 75 62 6c 65 09 09 66 61 72 67 73  .  double..fargs
3370: 5b 38 5d 3b 0a 23 65 6e 64 69 66 0a 20 20 5f 5f  [8];.#endif.  __
3380: 61 76 77 6f 72 64 09 09 61 72 67 73 5b 5f 5f 41  avword..args[__A
3390: 56 5f 41 4c 49 53 54 5f 57 4f 52 44 53 5d 3b 20  V_ALIST_WORDS]; 
33a0: 2f 2a 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65  /* sizeof(double
33b0: 29 2d 61 6c 69 67 6e 65 64 20 2a 2f 0a 23 69 66  )-aligned */.#if
33c0: 20 64 65 66 69 6e 65 64 28 5f 5f 72 73 36 30 30   defined(__rs600
33d0: 30 5f 5f 29 0a 20 20 2f 2a 20 73 74 6f 72 65 20  0__).  /* store 
33e0: 74 68 65 20 66 6c 6f 61 74 69 6e 67 2d 70 6f 69  the floating-poi
33f0: 6e 74 20 61 72 67 75 6d 65 6e 74 73 20 69 6e 20  nt arguments in 
3400: 61 6e 20 65 78 74 72 61 20 61 72 72 61 79 20 2a  an extra array *
3410: 2f 0a 20 20 64 6f 75 62 6c 65 2a 09 09 66 61 70  /.  double*..fap
3420: 74 72 3b 0a 20 20 64 6f 75 62 6c 65 09 09 66 61  tr;.  double..fa
3430: 72 67 73 5b 31 33 5d 3b 0a 23 65 6e 64 69 66 0a  rgs[13];.#endif.
3440: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 73 33  #if defined(__s3
3450: 39 30 5f 5f 29 0a 20 20 2f 2a 20 73 74 6f 72 65  90__).  /* store
3460: 20 74 68 65 20 66 6c 6f 61 74 69 6e 67 2d 70 6f   the floating-po
3470: 69 6e 74 20 61 72 67 75 6d 65 6e 74 73 20 69 6e  int arguments in
3480: 20 61 6e 20 65 78 74 72 61 20 61 72 72 61 79 20   an extra array 
3490: 2a 2f 0a 20 20 69 6e 74 20 20 20 09 09 66 61 72  */.  int   ..far
34a0: 67 77 6f 72 64 73 3b 0a 20 20 66 6c 6f 61 74 2a  gwords;.  float*
34b0: 09 09 66 61 70 74 72 3b 0a 20 20 66 6c 6f 61 74  ..faptr;.  float
34c0: 20 09 09 66 61 72 67 73 5b 32 5d 3b 0a 20 20 69   ..fargs[2];.  i
34d0: 6e 74 2a 09 09 09 66 61 72 67 73 75 73 65 64 70  nt*...fargsusedp
34e0: 74 72 3b 0a 20 20 69 6e 74 09 09 09 66 61 72 67  tr;.  int...farg
34f0: 73 75 73 65 64 5b 32 5d 3b 0a 20 20 64 6f 75 62  sused[2];.  doub
3500: 6c 65 2a 09 09 64 61 70 74 72 3b 0a 20 20 64 6f  le*..daptr;.  do
3510: 75 62 6c 65 09 09 64 61 72 67 73 5b 32 5d 3b 0a  uble..dargs[2];.
3520: 20 20 69 6e 74 2a 09 09 09 64 61 72 67 73 75 73    int*...dargsus
3530: 65 64 70 74 72 3b 0a 20 20 69 6e 74 09 09 09 64  edptr;.  int...d
3540: 61 72 67 73 75 73 65 64 5b 32 5d 3b 0a 23 65 6e  argsused[2];.#en
3550: 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28  dif.#if defined(
3560: 41 4d 49 47 41 29 0a 20 20 2f 2a 20 73 74 6f 72  AMIGA).  /* stor
3570: 65 20 74 68 65 20 61 72 67 75 6d 65 6e 74 73 20  e the arguments 
3580: 70 61 73 73 65 64 20 69 6e 20 72 65 67 69 73 74  passed in regist
3590: 65 72 73 20 69 6e 20 61 6e 20 65 78 74 72 61 20  ers in an extra 
35a0: 61 72 72 61 79 20 2a 2f 0a 20 20 5f 5f 61 76 77  array */.  __avw
35b0: 6f 72 64 09 09 72 65 67 61 72 67 73 5b 38 2b 37  ord..regargs[8+7
35c0: 5d 3b 0a 23 65 6e 64 69 66 0a 7d 20 61 76 5f 61  ];.#endif.} av_a
35d0: 6c 69 73 74 3b 0a 0a 2f 2a 20 54 68 65 20 6c 69  list;../* The li
35e0: 6d 69 74 20 66 6f 72 20 74 68 65 20 70 6f 69 6e  mit for the poin
35f0: 74 65 72 20 69 6e 74 6f 20 74 68 65 20 61 72 67  ter into the arg
3600: 73 5b 5d 20 61 72 72 61 79 2e 20 2a 2f 0a 23 69  s[] array. */.#i
3610: 66 20 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72  f defined(__spar
3620: 63 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  c__) || defined(
3630: 5f 5f 73 70 61 72 63 36 34 5f 5f 29 20 7c 7c 20  __sparc64__) || 
3640: 64 65 66 69 6e 65 64 28 5f 5f 68 70 70 61 5f 5f  defined(__hppa__
3650: 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f  ) || (defined(__
3660: 72 73 36 30 30 30 5f 5f 29 20 26 26 20 21 64 65  rs6000__) && !de
3670: 66 69 6e 65 64 28 5f 41 49 58 29 20 26 26 20 21  fined(_AIX) && !
3680: 28 64 65 66 69 6e 65 64 28 5f 5f 4d 41 43 48 5f  (defined(__MACH_
3690: 5f 29 20 26 26 20 64 65 66 69 6e 65 64 28 5f 5f  _) && defined(__
36a0: 41 50 50 4c 45 5f 5f 29 29 29 20 7c 7c 20 64 65  APPLE__))) || de
36b0: 66 69 6e 65 64 28 5f 5f 73 33 39 30 29 0a 23 64  fined(__s390).#d
36c0: 65 66 69 6e 65 20 5f 5f 61 76 5f 65 70 74 72 28  efine __av_eptr(
36d0: 4c 49 53 54 29 09 28 28 4c 49 53 54 29 2e 65 70  LIST).((LIST).ep
36e0: 74 72 29 0a 23 65 6c 73 65 0a 23 64 65 66 69 6e  tr).#else.#defin
36f0: 65 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54  e __av_eptr(LIST
3700: 29 09 28 26 28 4c 49 53 54 29 2e 61 72 67 73 5b  ).(&(LIST).args[
3710: 5f 5f 41 56 5f 41 4c 49 53 54 5f 57 4f 52 44 53  __AV_ALIST_WORDS
3720: 5d 29 0a 23 65 6e 64 69 66 0a 0a 2f 2a 20 44 65  ]).#endif../* De
3730: 6c 61 79 65 64 20 6f 76 65 72 66 6c 6f 77 20 64  layed overflow d
3740: 65 74 65 63 74 69 6f 6e 20 2a 2f 0a 23 69 66 20  etection */.#if 
3750: 64 65 66 69 6e 65 64 28 5f 5f 68 70 70 61 5f 5f  defined(__hppa__
3760: 29 0a 23 64 65 66 69 6e 65 20 61 76 5f 6f 76 65  ).#define av_ove
3770: 72 66 6c 6f 77 6e 28 4c 49 53 54 29 20 28 28 4c  rflown(LIST) ((L
3780: 49 53 54 29 2e 61 70 74 72 20 3c 20 5f 5f 61 76  IST).aptr < __av
3790: 5f 65 70 74 72 28 4c 49 53 54 29 29 0a 23 65 6c  _eptr(LIST)).#el
37a0: 73 65 0a 23 64 65 66 69 6e 65 20 61 76 5f 6f 76  se.#define av_ov
37b0: 65 72 66 6c 6f 77 6e 28 4c 49 53 54 29 20 28 28  erflown(LIST) ((
37c0: 4c 49 53 54 29 2e 61 70 74 72 20 3e 20 5f 5f 61  LIST).aptr > __a
37d0: 76 5f 65 70 74 72 28 4c 49 53 54 29 29 0a 23 65  v_eptr(LIST)).#e
37e0: 6e 64 69 66 0a 0a 0a 2f 2a 0a 20 2a 20 20 61 76  ndif.../*. *  av
37f0: 5f 73 74 61 72 74 5f 3c 74 79 70 65 3e 20 6d 61  _start_<type> ma
3800: 63 72 6f 73 20 77 68 69 63 68 20 73 70 65 63 69  cros which speci
3810: 66 79 20 74 68 65 20 72 65 74 75 72 6e 20 74 79  fy the return ty
3820: 70 65 0a 20 2a 2f 0a 0a 23 64 65 66 69 6e 65 20  pe. */..#define 
3830: 5f 5f 41 56 5f 53 54 41 52 54 5f 46 4c 41 47 53  __AV_START_FLAGS
3840: 20 20 5c 0a 20 20 5f 5f 41 56 5f 53 54 52 55 43    \.  __AV_STRUC
3850: 54 5f 52 45 54 55 52 4e 20 7c 20 5f 5f 41 56 5f  T_RETURN | __AV_
3860: 46 4c 4f 41 54 5f 52 45 54 55 52 4e 20 7c 20 5f  FLOAT_RETURN | _
3870: 5f 41 56 5f 53 54 52 55 43 54 5f 41 52 47 53 20  _AV_STRUCT_ARGS 
3880: 7c 20 5f 5f 41 56 5f 46 4c 4f 41 54 5f 41 52 47  | __AV_FLOAT_ARG
3890: 53 20 7c 20 5f 5f 41 56 5f 49 4e 54 45 47 45 52  S | __AV_INTEGER
38a0: 53 20 7c 20 5f 5f 41 56 5f 43 4c 45 41 4e 55 50  S | __AV_CLEANUP
38b0: 0a 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73  ..#define __av_s
38c0: 74 61 72 74 28 4c 49 53 54 2c 46 55 4e 43 2c 52  tart(LIST,FUNC,R
38d0: 41 44 44 52 2c 52 45 54 54 59 50 45 29 09 09 09  ADDR,RETTYPE)...
38e0: 09 5c 0a 20 20 28 28 4c 49 53 54 29 2e 66 75 6e  .\.  ((LIST).fun
38f0: 63 20 3d 20 28 5f 5f 61 76 77 6f 72 64 28 2a 29  c = (__avword(*)
3900: 28 29 29 28 46 55 4e 43 29 2c 09 09 09 09 09 5c  ())(FUNC),.....\
3910: 0a 20 20 20 28 4c 49 53 54 29 2e 72 61 64 64 72  .   (LIST).raddr
3920: 20 3d 20 28 76 6f 69 64 2a 29 28 52 41 44 44 52   = (void*)(RADDR
3930: 29 2c 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 53  ),.....\.   (LIS
3940: 54 29 2e 72 74 79 70 65 20 3d 20 28 52 45 54 54  T).rtype = (RETT
3950: 59 50 45 29 2c 09 09 09 09 09 09 5c 0a 20 20 20  YPE),......\.   
3960: 5f 5f 61 76 5f 73 74 61 72 74 31 28 4c 49 53 54  __av_start1(LIST
3970: 29 09 09 09 09 09 09 09 5c 0a 20 20 20 28 4c 49  ).......\.   (LI
3980: 53 54 29 2e 66 6c 61 67 73 20 3d 20 5f 5f 41 56  ST).flags = __AV
3990: 5f 53 54 41 52 54 5f 46 4c 41 47 53 29 0a 0a 23  _START_FLAGS)..#
39a0: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 69 33 38  if defined(__i38
39b0: 36 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  6__) || defined(
39c0: 5f 5f 6d 36 38 6b 5f 5f 29 20 7c 7c 20 64 65 66  __m68k__) || def
39d0: 69 6e 65 64 28 5f 5f 61 6c 70 68 61 5f 5f 29 20  ined(__alpha__) 
39e0: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 61 72 6d  || defined(__arm
39f0: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
3a00: 5f 6d 38 38 6b 5f 5f 29 20 7c 7c 20 64 65 66 69  _m88k__) || defi
3a10: 6e 65 64 28 5f 5f 63 6f 6e 76 65 78 5f 5f 29 0a  ned(__convex__).
3a20: 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61  #define __av_sta
3a30: 72 74 31 28 4c 49 53 54 29 09 09 09 09 09 09 5c  rt1(LIST)......\
3a40: 0a 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72 20  .   (LIST).aptr 
3a50: 3d 20 26 28 4c 49 53 54 29 2e 61 72 67 73 5b 30  = &(LIST).args[0
3a60: 5d 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65  ],.#endif.#if de
3a70: 66 69 6e 65 64 28 5f 5f 6d 69 70 73 5f 5f 29 20  fined(__mips__) 
3a80: 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 6d 69  && !defined(__mi
3a90: 70 73 6e 33 32 5f 5f 29 0a 23 64 65 66 69 6e 65  psn32__).#define
3aa0: 20 5f 5f 61 76 5f 73 74 61 72 74 31 28 4c 49 53   __av_start1(LIS
3ab0: 54 29 09 09 09 09 09 09 5c 0a 20 20 20 28 4c 49  T)......\.   (LI
3ac0: 53 54 29 2e 61 6e 75 6d 20 3d 20 30 2c 09 09 09  ST).anum = 0,...
3ad0: 09 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2e  ....\.   (LIST).
3ae0: 61 70 74 72 20 3d 20 26 28 4c 49 53 54 29 2e 61  aptr = &(LIST).a
3af0: 72 67 73 5b 30 5d 2c 0a 23 65 6e 64 69 66 0a 23  rgs[0],.#endif.#
3b00: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70  if defined(__mip
3b10: 73 6e 33 32 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  sn32__) || defin
3b20: 65 64 28 5f 5f 6d 69 70 73 36 34 5f 5f 29 0a 23  ed(__mips64__).#
3b30: 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72  define __av_star
3b40: 74 31 28 4c 49 53 54 29 09 09 09 09 09 09 5c 0a  t1(LIST)......\.
3b50: 20 20 20 28 4c 49 53 54 29 2e 61 6e 75 6d 20 3d     (LIST).anum =
3b60: 20 30 2c 09 09 09 09 09 09 09 5c 0a 20 20 20 28   0,.......\.   (
3b70: 4c 49 53 54 29 2e 66 61 72 67 5f 6d 61 73 6b 20  LIST).farg_mask 
3b80: 3d 20 30 2c 09 09 09 09 09 09 5c 0a 20 20 20 28  = 0,......\.   (
3b90: 4c 49 53 54 29 2e 64 61 72 67 5f 6d 61 73 6b 20  LIST).darg_mask 
3ba0: 3d 20 30 2c 09 09 09 09 09 09 5c 0a 20 20 20 28  = 0,......\.   (
3bb0: 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 26 28 4c  LIST).aptr = &(L
3bc0: 49 53 54 29 2e 61 72 67 73 5b 30 5d 2c 0a 23 65  IST).args[0],.#e
3bd0: 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64  ndif.#if defined
3be0: 28 5f 5f 73 70 61 72 63 5f 5f 29 20 26 26 20 21  (__sparc__) && !
3bf0: 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36  defined(__sparc6
3c00: 34 5f 5f 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61  4__).#define __a
3c10: 76 5f 73 74 61 72 74 31 28 4c 49 53 54 29 09 09  v_start1(LIST)..
3c20: 09 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2e  ....\.   (LIST).
3c30: 61 70 74 72 20 3d 20 26 28 4c 49 53 54 29 2e 61  aptr = &(LIST).a
3c40: 72 67 73 5b 30 5d 2c 09 09 09 09 09 5c 0a 20 20  rgs[0],.....\.  
3c50: 20 28 4c 49 53 54 29 2e 65 70 74 72 20 3d 20 26   (LIST).eptr = &
3c60: 28 4c 49 53 54 29 2e 61 72 67 73 5b 5f 5f 41 56  (LIST).args[__AV
3c70: 5f 41 4c 49 53 54 5f 57 4f 52 44 53 5d 2c 0a 23  _ALIST_WORDS],.#
3c80: 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65  endif.#if define
3c90: 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29 0a 23  d(__sparc64__).#
3ca0: 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72  define __av_star
3cb0: 74 31 28 4c 49 53 54 29 09 09 09 09 09 09 5c 0a  t1(LIST)......\.
3cc0: 20 20 20 28 4c 49 53 54 29 2e 61 6e 75 6d 20 3d     (LIST).anum =
3cd0: 20 30 2c 09 09 09 09 09 09 09 5c 0a 20 20 20 28   0,.......\.   (
3ce0: 4c 49 53 54 29 2e 66 61 72 67 5f 6d 61 73 6b 20  LIST).farg_mask 
3cf0: 3d 20 30 2c 09 09 09 09 09 09 5c 0a 20 20 20 28  = 0,......\.   (
3d00: 4c 49 53 54 29 2e 64 61 72 67 5f 6d 61 73 6b 20  LIST).darg_mask 
3d10: 3d 20 30 2c 09 09 09 09 09 09 5c 0a 20 20 20 28  = 0,......\.   (
3d20: 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 26 28 4c  LIST).aptr = &(L
3d30: 49 53 54 29 2e 61 72 67 73 5b 30 5d 2c 09 09 09  IST).args[0],...
3d40: 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2e 65 70  ..\.   (LIST).ep
3d50: 74 72 20 3d 20 26 28 4c 49 53 54 29 2e 61 72 67  tr = &(LIST).arg
3d60: 73 5b 5f 5f 41 56 5f 41 4c 49 53 54 5f 57 4f 52  s[__AV_ALIST_WOR
3d70: 44 53 5d 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  DS],.#endif.#if 
3d80: 64 65 66 69 6e 65 64 28 5f 5f 68 70 70 61 5f 5f  defined(__hppa__
3d90: 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73  ).#define __av_s
3da0: 74 61 72 74 31 28 4c 49 53 54 29 09 09 09 09 09  tart1(LIST).....
3db0: 09 5c 0a 20 20 20 28 4c 49 53 54 29 2e 61 70 74  .\.   (LIST).apt
3dc0: 72 20 3d 20 26 28 4c 49 53 54 29 2e 61 72 67 73  r = &(LIST).args
3dd0: 5b 5f 5f 41 56 5f 41 4c 49 53 54 5f 57 4f 52 44  [__AV_ALIST_WORD
3de0: 53 5d 2c 09 09 09 5c 0a 20 20 20 28 4c 49 53 54  S],...\.   (LIST
3df0: 29 2e 65 70 74 72 20 3d 20 26 28 4c 49 53 54 29  ).eptr = &(LIST)
3e00: 2e 61 72 67 73 5b 30 5d 2c 0a 23 65 6e 64 69 66  .args[0],.#endif
3e10: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 72  .#if defined(__r
3e20: 73 36 30 30 30 5f 5f 29 0a 23 69 66 20 64 65 66  s6000__).#if def
3e30: 69 6e 65 64 28 5f 41 49 58 29 20 7c 7c 20 28 64  ined(_AIX) || (d
3e40: 65 66 69 6e 65 64 28 5f 5f 4d 41 43 48 5f 5f 29  efined(__MACH__)
3e50: 20 26 26 20 64 65 66 69 6e 65 64 28 5f 5f 41 50   && defined(__AP
3e60: 50 4c 45 5f 5f 29 29 0a 23 64 65 66 69 6e 65 20  PLE__)).#define 
3e70: 5f 5f 61 76 5f 73 74 61 72 74 31 28 4c 49 53 54  __av_start1(LIST
3e80: 29 09 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 53  )......\.   (LIS
3e90: 54 29 2e 61 70 74 72 20 3d 20 26 28 4c 49 53 54  T).aptr = &(LIST
3ea0: 29 2e 61 72 67 73 5b 30 5d 2c 09 09 09 09 09 5c  ).args[0],.....\
3eb0: 0a 20 20 20 28 4c 49 53 54 29 2e 66 61 70 74 72  .   (LIST).faptr
3ec0: 20 3d 20 26 28 4c 49 53 54 29 2e 66 61 72 67 73   = &(LIST).fargs
3ed0: 5b 30 5d 2c 0a 23 65 6c 73 65 0a 23 64 65 66 69  [0],.#else.#defi
3ee0: 6e 65 20 5f 5f 61 76 5f 73 74 61 72 74 31 28 4c  ne __av_start1(L
3ef0: 49 53 54 29 09 09 09 09 09 09 5c 0a 20 20 20 28  IST)......\.   (
3f00: 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 26 28 4c  LIST).aptr = &(L
3f10: 49 53 54 29 2e 61 72 67 73 5b 30 5d 2c 09 09 09  IST).args[0],...
3f20: 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2e 66 61  ..\.   (LIST).fa
3f30: 70 74 72 20 3d 20 26 28 4c 49 53 54 29 2e 66 61  ptr = &(LIST).fa
3f40: 72 67 73 5b 30 5d 2c 20 20 20 20 20 20 20 20 20  rgs[0],         
3f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3f60: 20 20 20 20 20 20 20 20 20 20 20 20 5c 0a 20 20              \.  
3f70: 20 28 4c 49 53 54 29 2e 65 70 74 72 20 3d 20 26   (LIST).eptr = &
3f80: 28 4c 49 53 54 29 2e 61 72 67 73 5b 5f 5f 41 56  (LIST).args[__AV
3f90: 5f 41 4c 49 53 54 5f 57 4f 52 44 53 5d 2c 0a 23  _ALIST_WORDS],.#
3fa0: 65 6e 64 69 66 0a 23 65 6e 64 69 66 0a 23 69 66  endif.#endif.#if
3fb0: 20 64 65 66 69 6e 65 64 28 5f 5f 73 33 39 30 5f   defined(__s390_
3fc0: 5f 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f  _).#define __av_
3fd0: 73 74 61 72 74 31 28 4c 49 53 54 29 09 09 09 09  start1(LIST)....
3fe0: 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2e 61 70  ..\.   (LIST).ap
3ff0: 74 72 20 3d 20 26 28 4c 49 53 54 29 2e 61 72 67  tr = &(LIST).arg
4000: 73 5b 30 5d 2c 09 09 09 09 09 5c 0a 20 20 20 28  s[0],.....\.   (
4010: 4c 49 53 54 29 2e 66 61 72 67 77 6f 72 64 73 20  LIST).fargwords 
4020: 3d 20 30 2c 09 09 09 09 09 09 5c 0a 20 20 20 28  = 0,......\.   (
4030: 4c 49 53 54 29 2e 66 61 70 74 72 20 3d 20 26 28  LIST).faptr = &(
4040: 4c 49 53 54 29 2e 66 61 72 67 73 5b 30 5d 2c 20  LIST).fargs[0], 
4050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4070: 20 20 20 20 5c 0a 20 20 20 28 4c 49 53 54 29 2e      \.   (LIST).
4080: 64 61 70 74 72 20 3d 20 26 28 4c 49 53 54 29 2e  daptr = &(LIST).
4090: 64 61 72 67 73 5b 30 5d 2c 20 20 20 20 20 20 20  dargs[0],       
40a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
40b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 0a                \.
40c0: 20 20 20 28 4c 49 53 54 29 2e 66 61 72 67 73 75     (LIST).fargsu
40d0: 73 65 64 70 74 72 20 3d 20 26 28 4c 49 53 54 29  sedptr = &(LIST)
40e0: 2e 66 61 72 67 73 75 73 65 64 5b 30 5d 2c 20 20  .fargsused[0],  
40f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4100: 20 20 20 20 20 20 20 20 5c 0a 20 20 20 28 4c 49          \.   (LI
4110: 53 54 29 2e 64 61 72 67 73 75 73 65 64 70 74 72  ST).dargsusedptr
4120: 20 3d 20 26 28 4c 49 53 54 29 2e 64 61 72 67 73   = &(LIST).dargs
4130: 75 73 65 64 5b 30 5d 2c 20 20 20 20 20 20 20 20  used[0],        
4140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4150: 20 20 5c 0a 20 20 20 28 4c 49 53 54 29 2e 65 70    \.   (LIST).ep
4160: 74 72 20 3d 20 26 28 4c 49 53 54 29 2e 61 72 67  tr = &(LIST).arg
4170: 73 5b 5f 5f 41 56 5f 41 4c 49 53 54 5f 57 4f 52  s[__AV_ALIST_WOR
4180: 44 53 5d 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  DS],.#endif.#if 
4190: 64 65 66 69 6e 65 64 28 5f 5f 69 61 36 34 5f 5f  defined(__ia64__
41a0: 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73  ).#define __av_s
41b0: 74 61 72 74 31 28 4c 49 53 54 29 09 09 09 09 09  tart1(LIST).....
41c0: 09 5c 0a 20 20 20 28 4c 49 53 54 29 2e 61 70 74  .\.   (LIST).apt
41d0: 72 20 3d 20 26 28 4c 49 53 54 29 2e 61 72 67 73  r = &(LIST).args
41e0: 5b 30 5d 2c 09 09 09 09 09 5c 0a 20 20 20 28 4c  [0],.....\.   (L
41f0: 49 53 54 29 2e 66 61 70 74 72 20 3d 20 26 28 4c  IST).faptr = &(L
4200: 49 53 54 29 2e 66 61 72 67 73 5b 30 5d 2c 0a 23  IST).fargs[0],.#
4210: 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65  endif.#if define
4220: 64 28 5f 5f 78 38 36 5f 36 34 5f 5f 29 0a 23 64  d(__x86_64__).#d
4230: 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72 74  efine __av_start
4240: 31 28 4c 49 53 54 29 09 09 09 09 09 09 5c 0a 20  1(LIST)......\. 
4250: 20 20 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20    (LIST).aptr = 
4260: 26 28 4c 49 53 54 29 2e 61 72 67 73 5b 30 5d 2c  &(LIST).args[0],
4270: 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 29  .....\.   (LIST)
4280: 2e 69 61 70 74 72 20 3d 20 26 28 4c 49 53 54 29  .iaptr = &(LIST)
4290: 2e 69 61 72 67 73 5b 30 5d 2c 09 09 09 09 09 5c  .iargs[0],.....\
42a0: 0a 20 20 20 28 4c 49 53 54 29 2e 66 61 70 74 72  .   (LIST).faptr
42b0: 20 3d 20 26 28 4c 49 53 54 29 2e 66 61 72 67 73   = &(LIST).fargs
42c0: 5b 30 5d 2c 0a 23 65 6e 64 69 66 0a 0a 23 64 65  [0],.#endif..#de
42d0: 66 69 6e 65 20 61 76 5f 73 74 61 72 74 5f 76 6f  fine av_start_vo
42e0: 69 64 28 4c 49 53 54 2c 46 55 4e 43 29 09 09 5f  id(LIST,FUNC).._
42f0: 5f 61 76 5f 73 74 61 72 74 28 4c 49 53 54 2c 46  _av_start(LIST,F
4300: 55 4e 43 2c 30 2c 20 20 20 20 5f 5f 41 56 76 6f  UNC,0,    __AVvo
4310: 69 64 29 0a 23 64 65 66 69 6e 65 20 61 76 5f 73  id).#define av_s
4320: 74 61 72 74 5f 63 68 61 72 28 4c 49 53 54 2c 46  tart_char(LIST,F
4330: 55 4e 43 2c 52 41 44 44 52 29 09 09 5f 5f 61 76  UNC,RADDR)..__av
4340: 5f 73 74 61 72 74 28 4c 49 53 54 2c 46 55 4e 43  _start(LIST,FUNC
4350: 2c 52 41 44 44 52 2c 5f 5f 41 56 63 68 61 72 29  ,RADDR,__AVchar)
4360: 0a 23 64 65 66 69 6e 65 20 61 76 5f 73 74 61 72  .#define av_star
4370: 74 5f 73 63 68 61 72 28 4c 49 53 54 2c 46 55 4e  t_schar(LIST,FUN
4380: 43 2c 52 41 44 44 52 29 09 09 5f 5f 61 76 5f 73  C,RADDR)..__av_s
4390: 74 61 72 74 28 4c 49 53 54 2c 46 55 4e 43 2c 52  tart(LIST,FUNC,R
43a0: 41 44 44 52 2c 5f 5f 41 56 73 63 68 61 72 29 0a  ADDR,__AVschar).
43b0: 23 64 65 66 69 6e 65 20 61 76 5f 73 74 61 72 74  #define av_start
43c0: 5f 75 63 68 61 72 28 4c 49 53 54 2c 46 55 4e 43  _uchar(LIST,FUNC
43d0: 2c 52 41 44 44 52 29 09 09 5f 5f 61 76 5f 73 74  ,RADDR)..__av_st
43e0: 61 72 74 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41  art(LIST,FUNC,RA
43f0: 44 44 52 2c 5f 5f 41 56 75 63 68 61 72 29 0a 23  DDR,__AVuchar).#
4400: 64 65 66 69 6e 65 20 61 76 5f 73 74 61 72 74 5f  define av_start_
4410: 73 68 6f 72 74 28 4c 49 53 54 2c 46 55 4e 43 2c  short(LIST,FUNC,
4420: 52 41 44 44 52 29 09 09 5f 5f 61 76 5f 73 74 61  RADDR)..__av_sta
4430: 72 74 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44  rt(LIST,FUNC,RAD
4440: 44 52 2c 5f 5f 41 56 73 68 6f 72 74 29 0a 23 64  DR,__AVshort).#d
4450: 65 66 69 6e 65 20 61 76 5f 73 74 61 72 74 5f 75  efine av_start_u
4460: 73 68 6f 72 74 28 4c 49 53 54 2c 46 55 4e 43 2c  short(LIST,FUNC,
4470: 52 41 44 44 52 29 09 5f 5f 61 76 5f 73 74 61 72  RADDR).__av_star
4480: 74 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44 44  t(LIST,FUNC,RADD
4490: 52 2c 5f 5f 41 56 75 73 68 6f 72 74 29 0a 23 64  R,__AVushort).#d
44a0: 65 66 69 6e 65 20 61 76 5f 73 74 61 72 74 5f 69  efine av_start_i
44b0: 6e 74 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44  nt(LIST,FUNC,RAD
44c0: 44 52 29 09 09 5f 5f 61 76 5f 73 74 61 72 74 28  DR)..__av_start(
44d0: 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44 44 52 2c  LIST,FUNC,RADDR,
44e0: 5f 5f 41 56 69 6e 74 29 0a 23 64 65 66 69 6e 65  __AVint).#define
44f0: 20 61 76 5f 73 74 61 72 74 5f 75 69 6e 74 28 4c   av_start_uint(L
4500: 49 53 54 2c 46 55 4e 43 2c 52 41 44 44 52 29 09  IST,FUNC,RADDR).
4510: 09 5f 5f 61 76 5f 73 74 61 72 74 28 4c 49 53 54  .__av_start(LIST
4520: 2c 46 55 4e 43 2c 52 41 44 44 52 2c 5f 5f 41 56  ,FUNC,RADDR,__AV
4530: 75 69 6e 74 29 0a 23 64 65 66 69 6e 65 20 61 76  uint).#define av
4540: 5f 73 74 61 72 74 5f 6c 6f 6e 67 28 4c 49 53 54  _start_long(LIST
4550: 2c 46 55 4e 43 2c 52 41 44 44 52 29 09 09 5f 5f  ,FUNC,RADDR)..__
4560: 61 76 5f 73 74 61 72 74 28 4c 49 53 54 2c 46 55  av_start(LIST,FU
4570: 4e 43 2c 52 41 44 44 52 2c 5f 5f 41 56 6c 6f 6e  NC,RADDR,__AVlon
4580: 67 29 0a 23 64 65 66 69 6e 65 20 61 76 5f 73 74  g).#define av_st
4590: 61 72 74 5f 75 6c 6f 6e 67 28 4c 49 53 54 2c 46  art_ulong(LIST,F
45a0: 55 4e 43 2c 52 41 44 44 52 29 09 09 5f 5f 61 76  UNC,RADDR)..__av
45b0: 5f 73 74 61 72 74 28 4c 49 53 54 2c 46 55 4e 43  _start(LIST,FUNC
45c0: 2c 52 41 44 44 52 2c 5f 5f 41 56 75 6c 6f 6e 67  ,RADDR,__AVulong
45d0: 29 0a 23 64 65 66 69 6e 65 20 61 76 5f 73 74 61  ).#define av_sta
45e0: 72 74 5f 6c 6f 6e 67 6c 6f 6e 67 28 4c 49 53 54  rt_longlong(LIST
45f0: 2c 46 55 4e 43 2c 52 41 44 44 52 29 09 5f 5f 61  ,FUNC,RADDR).__a
4600: 76 5f 73 74 61 72 74 28 4c 49 53 54 2c 46 55 4e  v_start(LIST,FUN
4610: 43 2c 52 41 44 44 52 2c 5f 5f 41 56 6c 6f 6e 67  C,RADDR,__AVlong
4620: 6c 6f 6e 67 29 0a 23 64 65 66 69 6e 65 20 61 76  long).#define av
4630: 5f 73 74 61 72 74 5f 75 6c 6f 6e 67 6c 6f 6e 67  _start_ulonglong
4640: 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44 44 52  (LIST,FUNC,RADDR
4650: 29 09 5f 5f 61 76 5f 73 74 61 72 74 28 4c 49 53  ).__av_start(LIS
4660: 54 2c 46 55 4e 43 2c 52 41 44 44 52 2c 5f 5f 41  T,FUNC,RADDR,__A
4670: 56 75 6c 6f 6e 67 6c 6f 6e 67 29 0a 23 64 65 66  Vulonglong).#def
4680: 69 6e 65 20 61 76 5f 73 74 61 72 74 5f 66 6c 6f  ine av_start_flo
4690: 61 74 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44  at(LIST,FUNC,RAD
46a0: 44 52 29 09 09 5f 5f 61 76 5f 73 74 61 72 74 28  DR)..__av_start(
46b0: 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44 44 52 2c  LIST,FUNC,RADDR,
46c0: 5f 5f 41 56 66 6c 6f 61 74 29 0a 23 64 65 66 69  __AVfloat).#defi
46d0: 6e 65 20 61 76 5f 73 74 61 72 74 5f 64 6f 75 62  ne av_start_doub
46e0: 6c 65 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44  le(LIST,FUNC,RAD
46f0: 44 52 29 09 5f 5f 61 76 5f 73 74 61 72 74 28 4c  DR).__av_start(L
4700: 49 53 54 2c 46 55 4e 43 2c 52 41 44 44 52 2c 5f  IST,FUNC,RADDR,_
4710: 5f 41 56 64 6f 75 62 6c 65 29 0a 23 64 65 66 69  _AVdouble).#defi
4720: 6e 65 20 61 76 5f 73 74 61 72 74 5f 70 74 72 28  ne av_start_ptr(
4730: 4c 49 53 54 2c 46 55 4e 43 2c 54 59 50 45 2c 52  LIST,FUNC,TYPE,R
4740: 41 44 44 52 29 09 5f 5f 61 76 5f 73 74 61 72 74  ADDR).__av_start
4750: 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44 44 52  (LIST,FUNC,RADDR
4760: 2c 5f 5f 41 56 76 6f 69 64 70 29 0a 0a 23 64 65  ,__AVvoidp)..#de
4770: 66 69 6e 65 20 61 76 5f 73 74 61 72 74 5f 73 74  fine av_start_st
4780: 72 75 63 74 28 4c 49 53 54 2c 46 55 4e 43 2c 54  ruct(LIST,FUNC,T
4790: 59 50 45 2c 54 59 50 45 5f 53 50 4c 49 54 54 41  YPE,TYPE_SPLITTA
47a0: 42 4c 45 2c 52 41 44 44 52 29 09 09 5c 0a 20 20  BLE,RADDR)..\.  
47b0: 5f 61 76 5f 73 74 61 72 74 5f 73 74 72 75 63 74  _av_start_struct
47c0: 28 4c 49 53 54 2c 46 55 4e 43 2c 73 69 7a 65 6f  (LIST,FUNC,sizeo
47d0: 66 28 54 59 50 45 29 2c 54 59 50 45 5f 53 50 4c  f(TYPE),TYPE_SPL
47e0: 49 54 54 41 42 4c 45 2c 52 41 44 44 52 29 0a 23  ITTABLE,RADDR).#
47f0: 64 65 66 69 6e 65 20 5f 61 76 5f 73 74 61 72 74  define _av_start
4800: 5f 73 74 72 75 63 74 28 4c 49 53 54 2c 46 55 4e  _struct(LIST,FUN
4810: 43 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45  C,TYPE_SIZE,TYPE
4820: 5f 53 50 4c 49 54 54 41 42 4c 45 2c 52 41 44 44  _SPLITTABLE,RADD
4830: 52 29 09 5c 0a 20 20 28 5f 5f 61 76 5f 73 74 61  R).\.  (__av_sta
4840: 72 74 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44  rt(LIST,FUNC,RAD
4850: 44 52 2c 5f 5f 41 56 73 74 72 75 63 74 29 2c 09  DR,__AVstruct),.
4860: 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2e 72  ...\.   (LIST).r
4870: 73 69 7a 65 20 3d 20 54 59 50 45 5f 53 49 5a 45  size = TYPE_SIZE
4880: 2c 09 09 09 09 09 09 5c 0a 20 20 20 5f 5f 61 76  ,......\.   __av
4890: 5f 73 74 61 72 74 5f 73 74 72 75 63 74 31 28 4c  _start_struct1(L
48a0: 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59  IST,TYPE_SIZE,TY
48b0: 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 2c 09  PE_SPLITTABLE),.
48c0: 09 09 5c 0a 20 20 20 30 29 0a 0a 23 64 65 66 69  ..\.   0)..#defi
48d0: 6e 65 20 5f 5f 61 76 5f 73 74 61 72 74 5f 73 74  ne __av_start_st
48e0: 72 75 63 74 31 28 4c 49 53 54 2c 54 59 50 45 5f  ruct1(LIST,TYPE_
48f0: 53 49 5a 45 2c 54 59 50 45 5f 53 50 4c 49 54 54  SIZE,TYPE_SPLITT
4900: 41 42 4c 45 29 20 20 5c 0a 20 20 28 28 4c 49 53  ABLE)  \.  ((LIS
4910: 54 29 2e 66 6c 61 67 73 20 26 20 5f 5f 41 56 5f  T).flags & __AV_
4920: 50 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52  PCC_STRUCT_RETUR
4930: 4e 09 09 09 09 5c 0a 20 20 20 3f 20 2f 2a 20 70  N....\.   ? /* p
4940: 63 63 20 73 74 72 75 63 74 20 72 65 74 75 72 6e  cc struct return
4950: 20 63 6f 6e 76 65 6e 74 69 6f 6e 3a 09 09 09 09   convention:....
4960: 09 5c 0a 20 20 20 20 20 20 2a 20 63 61 6c 6c 65  .\.      * calle
4970: 64 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72  d function retur
4980: 6e 73 20 70 6f 69 6e 74 65 72 20 74 6f 20 76 61  ns pointer to va
4990: 6c 75 65 2c 20 77 65 27 6c 6c 20 63 6f 70 79 20  lue, we'll copy 
49a0: 69 74 73 20 63 6f 6e 74 65 6e 74 73 20 61 66 74  its contents aft
49b0: 65 72 77 61 72 64 73 2e 20 5c 0a 20 20 20 20 20  erwards. \.     
49c0: 20 2a 2f 09 09 09 09 09 09 09 09 5c 0a 20 20 20   */........\.   
49d0: 20 20 30 09 09 09 09 09 09 09 09 09 5c 0a 20 20    0.........\.  
49e0: 20 3a 20 5f 5f 61 76 5f 73 74 61 72 74 5f 73 74   : __av_start_st
49f0: 72 75 63 74 32 28 4c 49 53 54 2c 54 59 50 45 5f  ruct2(LIST,TYPE_
4a00: 53 49 5a 45 2c 54 59 50 45 5f 53 50 4c 49 54 54  SIZE,TYPE_SPLITT
4a10: 41 42 4c 45 29 09 09 09 5c 0a 20 20 29 0a 23 69  ABLE)...\.  ).#i
4a20: 66 20 28 64 65 66 69 6e 65 64 28 5f 5f 73 70 61  f (defined(__spa
4a30: 72 63 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65  rc__) && !define
4a40: 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29 29 20  d(__sparc64__)) 
4a50: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 38 38  || defined(__m88
4a60: 6b 5f 5f 29 0a 2f 2a 20 52 65 74 75 72 6e 20 73  k__)./* Return s
4a70: 74 72 75 63 74 75 72 65 20 70 6f 69 6e 74 65 72  tructure pointer
4a80: 20 69 73 20 70 61 73 73 65 64 20 69 6e 20 61 20   is passed in a 
4a90: 73 70 65 63 69 61 6c 20 72 65 67 69 73 74 65 72  special register
4aa0: 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f  .. */.#define __
4ab0: 61 76 5f 73 74 61 72 74 5f 73 74 72 75 63 74 32  av_start_struct2
4ac0: 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c  (LIST,TYPE_SIZE,
4ad0: 54 59 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 29  TYPE_SPLITTABLE)
4ae0: 20 20 30 0a 23 65 6c 73 65 0a 23 64 65 66 69 6e    0.#else.#defin
4af0: 65 20 5f 5f 61 76 5f 73 74 61 72 74 5f 73 74 72  e __av_start_str
4b00: 75 63 74 32 28 4c 49 53 54 2c 54 59 50 45 5f 53  uct2(LIST,TYPE_S
4b10: 49 5a 45 2c 54 59 50 45 5f 53 50 4c 49 54 54 41  IZE,TYPE_SPLITTA
4b20: 42 4c 45 29 20 20 5c 0a 20 20 28 28 28 4c 49 53  BLE)  \.  (((LIS
4b30: 54 29 2e 66 6c 61 67 73 20 26 20 5f 5f 41 56 5f  T).flags & __AV_
4b40: 53 4d 41 4c 4c 5f 53 54 52 55 43 54 5f 52 45 54  SMALL_STRUCT_RET
4b50: 55 52 4e 29 09 09 09 09 5c 0a 20 20 20 26 26 20  URN)....\.   && 
4b60: 5f 5f 61 76 5f 72 65 67 5f 73 74 72 75 63 74 5f  __av_reg_struct_
4b70: 72 65 74 75 72 6e 28 4c 49 53 54 2c 54 59 50 45  return(LIST,TYPE
4b80: 5f 53 49 5a 45 2c 54 59 50 45 5f 53 50 4c 49 54  _SIZE,TYPE_SPLIT
4b90: 54 41 42 4c 45 29 09 09 5c 0a 20 20 20 3f 20 2f  TABLE)..\.   ? /
4ba0: 2a 20 3c 3d 20 57 6f 72 64 2d 73 69 7a 65 64 20  * <= Word-sized 
4bb0: 73 74 72 75 63 74 75 72 65 73 20 61 72 65 20 72  structures are r
4bc0: 65 74 75 72 6e 65 64 20 69 6e 20 61 20 72 65 67  eturned in a reg
4bd0: 69 73 74 65 72 2e 20 2a 2f 09 09 5c 0a 20 20 20  ister. */..\.   
4be0: 20 20 5f 5f 61 76 5f 73 74 61 72 74 5f 73 74 72    __av_start_str
4bf0: 75 63 74 33 28 4c 49 53 54 29 09 09 09 09 09 09  uct3(LIST)......
4c00: 5c 0a 20 20 20 3a 20 5f 5f 61 76 5f 73 74 61 72  \.   : __av_star
4c10: 74 5f 73 74 72 75 63 74 34 28 4c 49 53 54 2c 54  t_struct4(LIST,T
4c20: 59 50 45 5f 53 49 5a 45 29 09 09 09 09 09 5c 0a  YPE_SIZE).....\.
4c30: 20 20 29 0a 2f 2a 20 44 65 74 65 72 6d 69 6e 65    )./* Determine
4c40: 73 20 77 68 65 74 68 65 72 20 61 20 73 74 72 75  s whether a stru
4c50: 63 74 75 72 65 20 69 73 20 72 65 74 75 72 6e 65  cture is returne
4c60: 64 20 69 6e 20 72 65 67 69 73 74 65 72 73 2c 0a  d in registers,.
4c70: 20 2a 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20   * depending on 
4c80: 69 74 73 20 73 69 7a 65 20 61 6e 64 20 69 74 73  its size and its
4c90: 20 77 6f 72 64 2d 73 70 6c 69 74 74 61 62 6c 65   word-splittable
4ca0: 20 66 6c 61 67 2e 0a 20 2a 2f 0a 23 69 66 20 28   flag.. */.#if (
4cb0: 64 65 66 69 6e 65 64 28 5f 5f 69 33 38 36 5f 5f  defined(__i386__
4cc0: 29 20 26 26 20 64 65 66 69 6e 65 64 28 5f 57 49  ) && defined(_WI
4cd0: 4e 33 32 29 29 0a 23 64 65 66 69 6e 65 20 5f 5f  N32)).#define __
4ce0: 61 76 5f 72 65 67 5f 73 74 72 75 63 74 5f 72 65  av_reg_struct_re
4cf0: 74 75 72 6e 28 4c 49 53 54 2c 54 59 50 45 5f 53  turn(LIST,TYPE_S
4d00: 49 5a 45 2c 54 59 50 45 5f 53 50 4c 49 54 54 41  IZE,TYPE_SPLITTA
4d10: 42 4c 45 29 20 20 5c 0a 20 20 28 28 54 59 50 45  BLE)  \.  ((TYPE
4d20: 5f 53 49 5a 45 29 20 3d 3d 20 31 20 7c 7c 20 28  _SIZE) == 1 || (
4d30: 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 32 20  TYPE_SIZE) == 2 
4d40: 7c 7c 20 28 54 59 50 45 5f 53 49 5a 45 29 20 3d  || (TYPE_SIZE) =
4d50: 3d 20 34 09 09 5c 0a 20 20 20 7c 7c 20 28 28 54  = 4..\.   || ((T
4d60: 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 38 09 09  YPE_SIZE) == 8..
4d70: 09 09 09 09 09 5c 0a 20 20 20 20 20 20 20 26 26  .....\.       &&
4d80: 20 28 28 28 4c 49 53 54 29 2e 66 6c 61 67 73 20   (((LIST).flags 
4d90: 26 20 5f 5f 41 56 5f 4d 53 56 43 5f 53 54 52 55  & __AV_MSVC_STRU
4da0: 43 54 5f 52 45 54 55 52 4e 29 09 09 09 5c 0a 20  CT_RETURN)...\. 
4db0: 20 20 20 20 20 20 20 20 20 20 7c 7c 20 28 28 54            || ((T
4dc0: 59 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 09  YPE_SPLITTABLE).
4dd0: 09 09 09 09 5c 0a 20 20 20 20 20 20 20 20 20 20  ....\.          
4de0: 20 20 20 20 20 26 26 20 28 28 4c 49 53 54 29 2e       && ((LIST).
4df0: 66 6c 61 67 73 20 26 20 5f 5f 41 56 5f 47 43 43  flags & __AV_GCC
4e00: 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 29 09  _STRUCT_RETURN).
4e10: 09 5c 0a 20 20 29 20 20 20 29 20 20 20 29 20 20  .\.  )   )   )  
4e20: 20 29 0a 2f 2a 20 54 75 72 6e 20 6f 6e 20 5f 5f   )./* Turn on __
4e30: 41 56 5f 52 45 47 49 53 54 45 52 5f 53 54 52 55  AV_REGISTER_STRU
4e40: 43 54 5f 52 45 54 55 52 4e 20 69 66 20 5f 5f 41  CT_RETURN if __A
4e50: 56 5f 53 4d 41 4c 4c 5f 53 54 52 55 43 54 5f 52  V_SMALL_STRUCT_R
4e60: 45 54 55 52 4e 20 77 61 73 20 73 65 74 0a 20 2a  ETURN was set. *
4e70: 20 61 6e 64 20 74 68 65 20 73 74 72 75 63 74 20   and the struct 
4e80: 77 69 6c 6c 20 61 63 74 75 61 6c 6c 79 20 62 65  will actually be
4e90: 20 72 65 74 75 72 6e 65 64 20 69 6e 20 72 65 67   returned in reg
4ea0: 69 73 74 65 72 73 2e 0a 20 2a 2f 0a 23 64 65 66  isters.. */.#def
4eb0: 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72 74 5f 73  ine __av_start_s
4ec0: 74 72 75 63 74 33 28 4c 49 53 54 29 20 20 5c 0a  truct3(LIST)  \.
4ed0: 20 20 28 28 4c 49 53 54 29 2e 66 6c 61 67 73 20    ((LIST).flags 
4ee0: 7c 3d 20 5f 5f 41 56 5f 52 45 47 49 53 54 45 52  |= __AV_REGISTER
4ef0: 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 2c 20  _STRUCT_RETURN, 
4f00: 30 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 28 64  0).#endif.#if (d
4f10: 65 66 69 6e 65 64 28 5f 5f 69 33 38 36 5f 5f 29  efined(__i386__)
4f20: 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 57 49   && !defined(_WI
4f30: 4e 33 32 29 29 20 7c 7c 20 64 65 66 69 6e 65 64  N32)) || defined
4f40: 28 5f 5f 6d 36 38 6b 5f 5f 29 20 7c 7c 20 64 65  (__m68k__) || de
4f50: 66 69 6e 65 64 28 5f 5f 61 72 6d 5f 5f 29 20 7c  fined(__arm__) |
4f60: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 72 73 36 30  | defined(__rs60
4f70: 30 30 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  00__) || defined
4f80: 28 5f 5f 63 6f 6e 76 65 78 5f 5f 29 20 7c 7c 20  (__convex__) || 
4f90: 64 65 66 69 6e 65 64 28 5f 5f 73 33 39 30 5f 5f  defined(__s390__
4fa0: 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 72  ).#define __av_r
4fb0: 65 67 5f 73 74 72 75 63 74 5f 72 65 74 75 72 6e  eg_struct_return
4fc0: 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c  (LIST,TYPE_SIZE,
4fd0: 54 59 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 29  TYPE_SPLITTABLE)
4fe0: 20 20 5c 0a 20 20 28 28 54 59 50 45 5f 53 49 5a    \.  ((TYPE_SIZ
4ff0: 45 29 20 3d 3d 20 31 20 7c 7c 20 28 54 59 50 45  E) == 1 || (TYPE
5000: 5f 53 49 5a 45 29 20 3d 3d 20 32 20 7c 7c 20 28  _SIZE) == 2 || (
5010: 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 34 09  TYPE_SIZE) == 4.
5020: 09 5c 0a 20 20 20 7c 7c 20 28 28 54 59 50 45 5f  .\.   || ((TYPE_
5030: 53 49 5a 45 29 20 3d 3d 20 38 20 26 26 20 28 54  SIZE) == 8 && (T
5040: 59 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 09  YPE_SPLITTABLE).
5050: 09 09 09 5c 0a 20 20 20 20 20 20 20 26 26 20 28  ...\.       && (
5060: 28 4c 49 53 54 29 2e 66 6c 61 67 73 20 26 20 5f  (LIST).flags & _
5070: 5f 41 56 5f 47 43 43 5f 53 54 52 55 43 54 5f 52  _AV_GCC_STRUCT_R
5080: 45 54 55 52 4e 29 09 09 09 5c 0a 20 20 29 20 20  ETURN)...\.  )  
5090: 20 29 0a 2f 2a 20 54 75 72 6e 20 6f 6e 20 5f 5f   )./* Turn on __
50a0: 41 56 5f 52 45 47 49 53 54 45 52 5f 53 54 52 55  AV_REGISTER_STRU
50b0: 43 54 5f 52 45 54 55 52 4e 20 69 66 20 5f 5f 41  CT_RETURN if __A
50c0: 56 5f 53 4d 41 4c 4c 5f 53 54 52 55 43 54 5f 52  V_SMALL_STRUCT_R
50d0: 45 54 55 52 4e 20 77 61 73 20 73 65 74 0a 20 2a  ETURN was set. *
50e0: 20 61 6e 64 20 74 68 65 20 73 74 72 75 63 74 20   and the struct 
50f0: 77 69 6c 6c 20 61 63 74 75 61 6c 6c 79 20 62 65  will actually be
5100: 20 72 65 74 75 72 6e 65 64 20 69 6e 20 72 65 67   returned in reg
5110: 69 73 74 65 72 73 2e 0a 20 2a 2f 0a 23 64 65 66  isters.. */.#def
5120: 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72 74 5f 73  ine __av_start_s
5130: 74 72 75 63 74 33 28 4c 49 53 54 29 20 20 5c 0a  truct3(LIST)  \.
5140: 20 20 28 28 4c 49 53 54 29 2e 66 6c 61 67 73 20    ((LIST).flags 
5150: 7c 3d 20 5f 5f 41 56 5f 52 45 47 49 53 54 45 52  |= __AV_REGISTER
5160: 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 2c 20  _STRUCT_RETURN, 
5170: 30 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65  0).#endif.#if de
5180: 66 69 6e 65 64 28 5f 5f 61 6c 70 68 61 5f 5f 29  fined(__alpha__)
5190: 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 72 65  .#define __av_re
51a0: 67 5f 73 74 72 75 63 74 5f 72 65 74 75 72 6e 28  g_struct_return(
51b0: 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54  LIST,TYPE_SIZE,T
51c0: 59 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 20  YPE_SPLITTABLE) 
51d0: 20 5c 0a 20 20 28 28 54 59 50 45 5f 53 49 5a 45   \.  ((TYPE_SIZE
51e0: 29 20 3d 3d 20 31 20 7c 7c 20 28 54 59 50 45 5f  ) == 1 || (TYPE_
51f0: 53 49 5a 45 29 20 3d 3d 20 32 20 7c 7c 20 28 54  SIZE) == 2 || (T
5200: 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 34 20 7c  YPE_SIZE) == 4 |
5210: 7c 20 28 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d  | (TYPE_SIZE) ==
5220: 20 38 09 5c 0a 20 20 20 7c 7c 20 28 28 54 59 50   8.\.   || ((TYP
5230: 45 5f 53 49 5a 45 29 20 3d 3d 20 31 36 20 26 26  E_SIZE) == 16 &&
5240: 20 28 54 59 50 45 5f 53 50 4c 49 54 54 41 42 4c   (TYPE_SPLITTABL
5250: 45 29 09 09 09 09 5c 0a 20 20 20 20 20 20 20 26  E)....\.       &
5260: 26 20 28 28 4c 49 53 54 29 2e 66 6c 61 67 73 20  & ((LIST).flags 
5270: 26 20 5f 5f 41 56 5f 47 43 43 5f 53 54 52 55 43  & __AV_GCC_STRUC
5280: 54 5f 52 45 54 55 52 4e 29 09 09 09 5c 0a 20 20  T_RETURN)...\.  
5290: 29 20 20 20 29 0a 2f 2a 20 54 75 72 6e 20 6f 6e  )   )./* Turn on
52a0: 20 5f 5f 41 56 5f 52 45 47 49 53 54 45 52 5f 53   __AV_REGISTER_S
52b0: 54 52 55 43 54 5f 52 45 54 55 52 4e 20 69 66 20  TRUCT_RETURN if 
52c0: 5f 5f 41 56 5f 53 4d 41 4c 4c 5f 53 54 52 55 43  __AV_SMALL_STRUC
52d0: 54 5f 52 45 54 55 52 4e 20 77 61 73 20 73 65 74  T_RETURN was set
52e0: 0a 20 2a 20 61 6e 64 20 74 68 65 20 73 74 72 75  . * and the stru
52f0: 63 74 20 77 69 6c 6c 20 61 63 74 75 61 6c 6c 79  ct will actually
5300: 20 62 65 20 72 65 74 75 72 6e 65 64 20 69 6e 20   be returned in 
5310: 72 65 67 69 73 74 65 72 73 2e 0a 20 2a 2f 0a 23  registers.. */.#
5320: 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72  define __av_star
5330: 74 5f 73 74 72 75 63 74 33 28 4c 49 53 54 29 20  t_struct3(LIST) 
5340: 20 5c 0a 20 20 28 28 4c 49 53 54 29 2e 66 6c 61   \.  ((LIST).fla
5350: 67 73 20 7c 3d 20 5f 5f 41 56 5f 52 45 47 49 53  gs |= __AV_REGIS
5360: 54 45 52 5f 53 54 52 55 43 54 5f 52 45 54 55 52  TER_STRUCT_RETUR
5370: 4e 2c 20 30 29 0a 23 65 6e 64 69 66 0a 23 69 66  N, 0).#endif.#if
5380: 20 64 65 66 69 6e 65 64 28 5f 5f 68 70 70 61 5f   defined(__hppa_
5390: 5f 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f  _).#define __av_
53a0: 72 65 67 5f 73 74 72 75 63 74 5f 72 65 74 75 72  reg_struct_retur
53b0: 6e 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45  n(LIST,TYPE_SIZE
53c0: 2c 54 59 50 45 5f 53 50 4c 49 54 54 41 42 4c 45  ,TYPE_SPLITTABLE
53d0: 29 20 20 5c 0a 20 20 28 28 4c 49 53 54 29 2e 66  )  \.  ((LIST).f
53e0: 6c 61 67 73 20 26 20 5f 5f 41 56 5f 4f 4c 44 47  lags & __AV_OLDG
53f0: 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e  CC_STRUCT_RETURN
5400: 09 09 09 09 5c 0a 20 20 20 3f 20 28 28 54 59 50  ....\.   ? ((TYP
5410: 45 5f 53 49 5a 45 29 20 3d 3d 20 31 20 7c 7c 20  E_SIZE) == 1 || 
5420: 28 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 32  (TYPE_SIZE) == 2
5430: 20 7c 7c 20 28 54 59 50 45 5f 53 49 5a 45 29 20   || (TYPE_SIZE) 
5440: 3d 3d 20 34 29 09 09 5c 0a 20 20 20 3a 20 28 28  == 4)..\.   : ((
5450: 54 59 50 45 5f 53 49 5a 45 29 20 3c 3d 20 38 29  TYPE_SIZE) <= 8)
5460: 09 09 09 09 09 09 09 5c 0a 20 20 29 0a 2f 2a 20  .......\.  )./* 
5470: 54 65 73 74 20 62 6f 74 68 20 5f 5f 41 56 5f 4f  Test both __AV_O
5480: 4c 44 47 43 43 5f 53 54 52 55 43 54 5f 52 45 54  LDGCC_STRUCT_RET
5490: 55 52 4e 20 61 6e 64 20 5f 5f 41 56 5f 53 4d 41  URN and __AV_SMA
54a0: 4c 4c 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e  LL_STRUCT_RETURN
54b0: 20 61 74 20 72 75 6e 20 74 69 6d 65 2e 20 2a 2f   at run time. */
54c0: 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74  .#define __av_st
54d0: 61 72 74 5f 73 74 72 75 63 74 33 28 4c 49 53 54  art_struct3(LIST
54e0: 29 20 20 5c 0a 20 20 30 0a 23 65 6e 64 69 66 0a  )  \.  0.#endif.
54f0: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69  #if defined(__mi
5500: 70 73 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65  ps__) && !define
5510: 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 0a 23  d(__mipsn32__).#
5520: 64 65 66 69 6e 65 20 5f 5f 61 76 5f 72 65 67 5f  define __av_reg_
5530: 73 74 72 75 63 74 5f 72 65 74 75 72 6e 28 4c 49  struct_return(LI
5540: 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50  ST,TYPE_SIZE,TYP
5550: 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 20 20 5c  E_SPLITTABLE)  \
5560: 0a 20 20 28 28 54 59 50 45 5f 53 49 5a 45 29 20  .  ((TYPE_SIZE) 
5570: 3d 3d 20 31 20 7c 7c 20 28 54 59 50 45 5f 53 49  == 1 || (TYPE_SI
5580: 5a 45 29 20 3d 3d 20 32 20 7c 7c 20 28 54 59 50  ZE) == 2 || (TYP
5590: 45 5f 53 49 5a 45 29 20 3d 3d 20 34 29 0a 2f 2a  E_SIZE) == 4)./*
55a0: 20 54 65 73 74 20 5f 5f 41 56 5f 53 4d 41 4c 4c   Test __AV_SMALL
55b0: 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20 69  _STRUCT_RETURN i
55c0: 6e 73 74 65 61 64 20 6f 66 20 5f 5f 41 56 5f 52  nstead of __AV_R
55d0: 45 47 49 53 54 45 52 5f 53 54 52 55 43 54 5f 52  EGISTER_STRUCT_R
55e0: 45 54 55 52 4e 2e 20 2a 2f 0a 23 64 65 66 69 6e  ETURN. */.#defin
55f0: 65 20 5f 5f 61 76 5f 73 74 61 72 74 5f 73 74 72  e __av_start_str
5600: 75 63 74 33 28 4c 49 53 54 29 20 20 5c 0a 20 20  uct3(LIST)  \.  
5610: 30 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66  0.#endif.#if def
5620: 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f  ined(__mipsn32__
5630: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d  ) || defined(__m
5640: 69 70 73 36 34 5f 5f 29 0a 23 64 65 66 69 6e 65  ips64__).#define
5650: 20 5f 5f 61 76 5f 72 65 67 5f 73 74 72 75 63 74   __av_reg_struct
5660: 5f 72 65 74 75 72 6e 28 4c 49 53 54 2c 54 59 50  _return(LIST,TYP
5670: 45 5f 53 49 5a 45 2c 54 59 50 45 5f 53 50 4c 49  E_SIZE,TYPE_SPLI
5680: 54 54 41 42 4c 45 29 20 20 5c 0a 20 20 28 28 4c  TTABLE)  \.  ((L
5690: 49 53 54 29 2e 66 6c 61 67 73 20 26 20 5f 5f 41  IST).flags & __A
56a0: 56 5f 47 43 43 5f 53 54 52 55 43 54 5f 52 45 54  V_GCC_STRUCT_RET
56b0: 55 52 4e 09 09 09 09 5c 0a 20 20 20 3f 20 28 28  URN....\.   ? ((
56c0: 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 31 20  TYPE_SIZE) == 1 
56d0: 7c 7c 20 28 54 59 50 45 5f 53 49 5a 45 29 20 3d  || (TYPE_SIZE) =
56e0: 3d 20 32 20 7c 7c 20 28 54 59 50 45 5f 53 49 5a  = 2 || (TYPE_SIZ
56f0: 45 29 20 3d 3d 20 34 20 7c 7c 20 28 54 59 50 45  E) == 4 || (TYPE
5700: 5f 53 49 5a 45 29 20 3d 3d 20 38 29 20 5c 0a 20  _SIZE) == 8) \. 
5710: 20 20 3a 20 28 28 54 59 50 45 5f 53 49 5a 45 29    : ((TYPE_SIZE)
5720: 20 3c 3d 20 31 36 29 09 09 09 09 09 09 5c 0a 20   <= 16)......\. 
5730: 20 29 0a 2f 2a 20 54 75 72 6e 20 6f 6e 20 5f 5f   )./* Turn on __
5740: 41 56 5f 52 45 47 49 53 54 45 52 5f 53 54 52 55  AV_REGISTER_STRU
5750: 43 54 5f 52 45 54 55 52 4e 20 69 66 20 5f 5f 41  CT_RETURN if __A
5760: 56 5f 53 4d 41 4c 4c 5f 53 54 52 55 43 54 5f 52  V_SMALL_STRUCT_R
5770: 45 54 55 52 4e 20 77 61 73 20 73 65 74 0a 20 2a  ETURN was set. *
5780: 20 61 6e 64 20 74 68 65 20 73 74 72 75 63 74 20   and the struct 
5790: 77 69 6c 6c 20 61 63 74 75 61 6c 6c 79 20 62 65  will actually be
57a0: 20 72 65 74 75 72 6e 65 64 20 69 6e 20 72 65 67   returned in reg
57b0: 69 73 74 65 72 73 2e 0a 20 2a 2f 0a 23 64 65 66  isters.. */.#def
57c0: 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72 74 5f 73  ine __av_start_s
57d0: 74 72 75 63 74 33 28 4c 49 53 54 29 20 20 5c 0a  truct3(LIST)  \.
57e0: 20 20 28 28 4c 49 53 54 29 2e 66 6c 61 67 73 20    ((LIST).flags 
57f0: 7c 3d 20 5f 5f 41 56 5f 52 45 47 49 53 54 45 52  |= __AV_REGISTER
5800: 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 2c 20  _STRUCT_RETURN, 
5810: 30 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65  0).#endif.#if de
5820: 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f  fined(__sparc64_
5830: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  _) || defined(__
5840: 69 61 36 34 5f 5f 29 0a 23 64 65 66 69 6e 65 20  ia64__).#define 
5850: 5f 5f 61 76 5f 72 65 67 5f 73 74 72 75 63 74 5f  __av_reg_struct_
5860: 72 65 74 75 72 6e 28 4c 49 53 54 2c 54 59 50 45  return(LIST,TYPE
5870: 5f 53 49 5a 45 2c 54 59 50 45 5f 53 50 4c 49 54  _SIZE,TYPE_SPLIT
5880: 54 41 42 4c 45 29 20 20 5c 0a 20 20 28 28 54 59  TABLE)  \.  ((TY
5890: 50 45 5f 53 49 5a 45 29 20 3c 3d 20 33 32 29 0a  PE_SIZE) <= 32).
58a0: 2f 2a 20 54 75 72 6e 20 6f 6e 20 5f 5f 41 56 5f  /* Turn on __AV_
58b0: 52 45 47 49 53 54 45 52 5f 53 54 52 55 43 54 5f  REGISTER_STRUCT_
58c0: 52 45 54 55 52 4e 20 69 66 20 5f 5f 41 56 5f 53  RETURN if __AV_S
58d0: 4d 41 4c 4c 5f 53 54 52 55 43 54 5f 52 45 54 55  MALL_STRUCT_RETU
58e0: 52 4e 20 77 61 73 20 73 65 74 0a 20 2a 20 61 6e  RN was set. * an
58f0: 64 20 74 68 65 20 73 74 72 75 63 74 20 77 69 6c  d the struct wil
5900: 6c 20 61 63 74 75 61 6c 6c 79 20 62 65 20 72 65  l actually be re
5910: 74 75 72 6e 65 64 20 69 6e 20 72 65 67 69 73 74  turned in regist
5920: 65 72 73 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65  ers.. */.#define
5930: 20 5f 5f 61 76 5f 73 74 61 72 74 5f 73 74 72 75   __av_start_stru
5940: 63 74 33 28 4c 49 53 54 29 20 20 5c 0a 20 20 28  ct3(LIST)  \.  (
5950: 28 4c 49 53 54 29 2e 66 6c 61 67 73 20 7c 3d 20  (LIST).flags |= 
5960: 5f 5f 41 56 5f 52 45 47 49 53 54 45 52 5f 53 54  __AV_REGISTER_ST
5970: 52 55 43 54 5f 52 45 54 55 52 4e 2c 20 30 29 0a  RUCT_RETURN, 0).
5980: 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e  #endif.#if defin
5990: 65 64 28 5f 5f 78 38 36 5f 36 34 5f 5f 29 0a 23  ed(__x86_64__).#
59a0: 64 65 66 69 6e 65 20 5f 5f 61 76 5f 72 65 67 5f  define __av_reg_
59b0: 73 74 72 75 63 74 5f 72 65 74 75 72 6e 28 4c 49  struct_return(LI
59c0: 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50  ST,TYPE_SIZE,TYP
59d0: 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 20 20 5c  E_SPLITTABLE)  \
59e0: 0a 20 20 28 28 54 59 50 45 5f 53 49 5a 45 29 20  .  ((TYPE_SIZE) 
59f0: 3c 3d 20 31 36 29 0a 2f 2a 20 54 75 72 6e 20 6f  <= 16)./* Turn o
5a00: 6e 20 5f 5f 41 56 5f 52 45 47 49 53 54 45 52 5f  n __AV_REGISTER_
5a10: 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20 69 66  STRUCT_RETURN if
5a20: 20 5f 5f 41 56 5f 53 4d 41 4c 4c 5f 53 54 52 55   __AV_SMALL_STRU
5a30: 43 54 5f 52 45 54 55 52 4e 20 77 61 73 20 73 65  CT_RETURN was se
5a40: 74 0a 20 2a 20 61 6e 64 20 74 68 65 20 73 74 72  t. * and the str
5a50: 75 63 74 20 77 69 6c 6c 20 61 63 74 75 61 6c 6c  uct will actuall
5a60: 79 20 62 65 20 72 65 74 75 72 6e 65 64 20 69 6e  y be returned in
5a70: 20 72 65 67 69 73 74 65 72 73 2e 0a 20 2a 2f 0a   registers.. */.
5a80: 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61  #define __av_sta
5a90: 72 74 5f 73 74 72 75 63 74 33 28 4c 49 53 54 29  rt_struct3(LIST)
5aa0: 20 20 5c 0a 20 20 28 28 4c 49 53 54 29 2e 66 6c    \.  ((LIST).fl
5ab0: 61 67 73 20 7c 3d 20 5f 5f 41 56 5f 52 45 47 49  ags |= __AV_REGI
5ac0: 53 54 45 52 5f 53 54 52 55 43 54 5f 52 45 54 55  STER_STRUCT_RETU
5ad0: 52 4e 2c 20 30 29 0a 23 65 6e 64 69 66 0a 23 69  RN, 0).#endif.#i
5ae0: 66 20 64 65 66 69 6e 65 64 28 5f 5f 69 33 38 36  f defined(__i386
5af0: 5f 5f 29 0a 2f 2a 20 52 65 74 75 72 6e 20 73 74  __)./* Return st
5b00: 72 75 63 74 75 72 65 20 70 6f 69 6e 74 65 72 20  ructure pointer 
5b10: 69 73 20 70 61 73 73 65 64 20 69 6e 20 61 20 73  is passed in a s
5b20: 70 65 63 69 61 6c 20 72 65 67 69 73 74 65 72 20  pecial register 
5b30: 6f 72 20 61 73 20 66 69 72 73 74 20 61 72 67 2e  or as first arg.
5b40: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76   */.#define __av
5b50: 5f 73 74 61 72 74 5f 73 74 72 75 63 74 34 28 4c  _start_struct4(L
5b60: 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 29 09 09  IST,TYPE_SIZE)..
5b70: 09 09 5c 0a 20 20 28 28 4c 49 53 54 29 2e 66 6c  ..\.  ((LIST).fl
5b80: 61 67 73 20 26 20 5f 5f 41 56 5f 4e 45 58 54 47  ags & __AV_NEXTG
5b90: 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e  CC_STRUCT_RETURN
5ba0: 09 09 09 09 5c 0a 20 20 20 3f 20 30 09 09 09 09  ....\.   ? 0....
5bb0: 09 09 20 2f 2a 20 73 70 65 63 69 61 6c 20 72 65  .. /* special re
5bc0: 67 69 73 74 65 72 20 2a 2f 09 5c 0a 20 20 20 3a  gister */.\.   :
5bd0: 20 28 2a 28 4c 49 53 54 29 2e 61 70 74 72 2b 2b   (*(LIST).aptr++
5be0: 20 3d 20 28 5f 5f 61 76 77 6f 72 64 29 28 28 4c   = (__avword)((L
5bf0: 49 53 54 29 2e 72 61 64 64 72 29 2c 20 30 29 09  IST).raddr), 0).
5c00: 2f 2a 20 66 69 72 73 74 20 61 72 67 20 2a 2f 09  /* first arg */.
5c10: 5c 0a 20 20 29 0a 23 65 6e 64 69 66 0a 23 69 66  \.  ).#endif.#if
5c20: 20 64 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f   defined(__m68k_
5c30: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  _) || defined(__
5c40: 68 70 70 61 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  hppa__) || defin
5c50: 65 64 28 5f 5f 69 61 36 34 5f 5f 29 0a 2f 2a 20  ed(__ia64__)./* 
5c60: 52 65 74 75 72 6e 20 73 74 72 75 63 74 75 72 65  Return structure
5c70: 20 70 6f 69 6e 74 65 72 20 69 73 20 70 61 73 73   pointer is pass
5c80: 65 64 20 69 6e 20 61 20 73 70 65 63 69 61 6c 20  ed in a special 
5c90: 72 65 67 69 73 74 65 72 2e 0a 20 2a 2f 0a 23 64  register.. */.#d
5ca0: 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72 74  efine __av_start
5cb0: 5f 73 74 72 75 63 74 34 28 4c 49 53 54 2c 54 59  _struct4(LIST,TY
5cc0: 50 45 5f 53 49 5a 45 29 20 20 30 0a 23 65 6e 64  PE_SIZE)  0.#end
5cd0: 69 66 0a 2f 2a 20 52 65 74 75 72 6e 20 73 74 72  if./* Return str
5ce0: 75 63 74 75 72 65 20 70 6f 69 6e 74 65 72 20 69  ucture pointer i
5cf0: 73 20 70 61 73 73 65 64 20 61 73 20 66 69 72 73  s passed as firs
5d00: 74 20 61 72 67 2e 0a 20 2a 2f 0a 23 69 66 20 64  t arg.. */.#if d
5d10: 65 66 69 6e 65 64 28 5f 5f 61 6c 70 68 61 5f 5f  efined(__alpha__
5d20: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 61  ) || defined(__a
5d30: 72 6d 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  rm__) || defined
5d40: 28 5f 5f 72 73 36 30 30 30 5f 5f 29 20 7c 7c 20  (__rs6000__) || 
5d50: 64 65 66 69 6e 65 64 28 5f 5f 63 6f 6e 76 65 78  defined(__convex
5d60: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
5d70: 5f 73 33 39 30 5f 5f 29 0a 23 64 65 66 69 6e 65  _s390__).#define
5d80: 20 5f 5f 61 76 5f 73 74 61 72 74 5f 73 74 72 75   __av_start_stru
5d90: 63 74 34 28 4c 49 53 54 2c 54 59 50 45 5f 53 49  ct4(LIST,TYPE_SI
5da0: 5a 45 29 09 09 09 09 5c 0a 20 20 20 28 2a 28 4c  ZE)....\.   (*(L
5db0: 49 53 54 29 2e 61 70 74 72 2b 2b 20 3d 20 28 5f  IST).aptr++ = (_
5dc0: 5f 61 76 77 6f 72 64 29 28 28 4c 49 53 54 29 2e  _avword)((LIST).
5dd0: 72 61 64 64 72 29 2c 20 30 29 0a 23 65 6e 64 69  raddr), 0).#endi
5de0: 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  f.#if defined(__
5df0: 6d 69 70 73 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  mips__) || defin
5e00: 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20  ed(__mipsn32__) 
5e10: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70  || defined(__mip
5e20: 73 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65  s64__) || define
5e30: 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29 0a 23  d(__sparc64__).#
5e40: 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72  define __av_star
5e50: 74 5f 73 74 72 75 63 74 34 28 4c 49 53 54 2c 54  t_struct4(LIST,T
5e60: 59 50 45 5f 53 49 5a 45 29 09 09 09 09 5c 0a 20  YPE_SIZE)....\. 
5e70: 20 20 28 2a 28 4c 49 53 54 29 2e 61 70 74 72 2b    (*(LIST).aptr+
5e80: 2b 20 3d 20 28 5f 5f 61 76 77 6f 72 64 29 28 28  + = (__avword)((
5e90: 4c 49 53 54 29 2e 72 61 64 64 72 29 2c 09 09 09  LIST).raddr),...
5ea0: 09 5c 0a 20 20 20 20 28 4c 49 53 54 29 2e 61 6e  .\.    (LIST).an
5eb0: 75 6d 2b 2b 2c 09 09 09 09 09 09 09 5c 0a 20 20  um++,.......\.  
5ec0: 20 20 30 09 09 09 09 09 09 09 09 09 5c 0a 20 20    0.........\.  
5ed0: 20 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65   ).#endif.#if de
5ee0: 66 69 6e 65 64 28 5f 5f 78 38 36 5f 36 34 5f 5f  fined(__x86_64__
5ef0: 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73  ).#define __av_s
5f00: 74 61 72 74 5f 73 74 72 75 63 74 34 28 4c 49 53  tart_struct4(LIS
5f10: 54 2c 54 59 50 45 5f 53 49 5a 45 29 09 09 09 09  T,TYPE_SIZE)....
5f20: 5c 0a 20 20 20 28 2a 28 4c 49 53 54 29 2e 69 61  \.   (*(LIST).ia
5f30: 70 74 72 2b 2b 20 3d 20 28 5f 5f 61 76 77 6f 72  ptr++ = (__avwor
5f40: 64 29 28 28 4c 49 53 54 29 2e 72 61 64 64 72 29  d)((LIST).raddr)
5f50: 2c 20 30 29 0a 23 65 6e 64 69 66 0a 23 65 6e 64  , 0).#endif.#end
5f60: 69 66 0a 0a 0a 2f 2a 0a 20 2a 20 61 76 5f 3c 74  if.../*. * av_<t
5f70: 79 70 65 3e 20 6d 61 63 72 6f 73 20 77 68 69 63  ype> macros whic
5f80: 68 20 73 70 65 63 69 66 79 20 74 68 65 20 61 72  h specify the ar
5f90: 67 75 6d 65 6e 74 20 61 6e 64 20 69 74 73 20 74  gument and its t
5fa0: 79 70 65 0a 20 2a 2f 0a 0a 2f 2a 0a 20 2a 20 73  ype. */../*. * s
5fb0: 63 61 6c 61 72 20 61 72 67 75 6d 65 6e 74 20 74  calar argument t
5fc0: 79 70 65 73 0a 20 2a 2f 0a 0a 23 69 66 20 64 65  ypes. */..#if de
5fd0: 66 69 6e 65 64 28 5f 5f 69 33 38 36 5f 5f 29 20  fined(__i386__) 
5fe0: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 36 38  || defined(__m68
5ff0: 6b 5f 5f 29 20 7c 7c 20 28 64 65 66 69 6e 65 64  k__) || (defined
6000: 28 5f 5f 73 70 61 72 63 5f 5f 29 20 26 26 20 21  (__sparc__) && !
6010: 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36  defined(__sparc6
6020: 34 5f 5f 29 29 20 7c 7c 20 64 65 66 69 6e 65 64  4__)) || defined
6030: 28 5f 5f 61 6c 70 68 61 5f 5f 29 20 7c 7c 20 64  (__alpha__) || d
6040: 65 66 69 6e 65 64 28 5f 5f 61 72 6d 5f 5f 29 20  efined(__arm__) 
6050: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 72 73 36  || defined(__rs6
6060: 30 30 30 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65  000__) || define
6070: 64 28 5f 5f 6d 38 38 6b 5f 5f 29 20 7c 7c 20 64  d(__m88k__) || d
6080: 65 66 69 6e 65 64 28 5f 5f 63 6f 6e 76 65 78 5f  efined(__convex_
6090: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  _) || defined(__
60a0: 69 61 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  ia64__) || defin
60b0: 65 64 28 5f 5f 78 38 36 5f 36 34 5f 5f 29 20 7c  ed(__x86_64__) |
60c0: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 73 33 39 30  | defined(__s390
60d0: 5f 5f 29 0a 2f 2a 20 46 6c 6f 61 74 73 20 61 6e  __)./* Floats an
60e0: 64 20 61 6c 6c 20 69 6e 74 65 67 65 72 20 74 79  d all integer ty
60f0: 70 65 73 20 61 72 65 20 70 61 73 73 65 64 20 61  pes are passed a
6100: 73 20 77 6f 72 64 73 2c 0a 20 2a 20 64 6f 75 62  s words,. * doub
6110: 6c 65 73 20 61 73 20 74 77 6f 20 77 6f 72 64 73  les as two words
6120: 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f  .. */.#define __
6130: 61 76 5f 77 6f 72 64 28 4c 49 53 54 2c 56 41 4c  av_word(LIST,VAL
6140: 29 09 09 09 09 09 09 5c 0a 20 20 28 2b 2b 28 4c  )......\.  (++(L
6150: 49 53 54 29 2e 61 70 74 72 20 3e 20 5f 5f 61 76  IST).aptr > __av
6160: 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09 09 09  _eptr(LIST).....
6170: 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 28 28 4c 49  \.   ? -1 : ((LI
6180: 53 54 29 2e 61 70 74 72 5b 2d 31 5d 20 3d 20 28  ST).aptr[-1] = (
6190: 5f 5f 61 76 77 6f 72 64 29 28 56 41 4c 29 2c 20  __avword)(VAL), 
61a0: 30 29 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64  0)).#endif.#if d
61b0: 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 5f 5f 29  efined(__mips__)
61c0: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69   || defined(__mi
61d0: 70 73 6e 33 32 5f 5f 29 20 7c 7c 20 64 65 66 69  psn32__) || defi
61e0: 6e 65 64 28 5f 5f 6d 69 70 73 36 34 5f 5f 29 20  ned(__mips64__) 
61f0: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 73 70 61  || defined(__spa
6200: 72 63 36 34 5f 5f 29 0a 2f 2a 20 4d 6f 73 74 20  rc64__)./* Most 
6210: 74 68 69 6e 67 73 20 61 72 65 20 70 61 73 73 65  things are passe
6220: 64 20 61 73 20 69 6e 74 65 67 65 72 73 3a 0a 20  d as integers:. 
6230: 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f  */.#define __av_
6240: 77 6f 72 64 28 4c 49 53 54 2c 56 41 4c 29 09 09  word(LIST,VAL)..
6250: 09 09 09 09 5c 0a 20 20 28 2b 2b 28 4c 49 53 54  ....\.  (++(LIST
6260: 29 2e 61 70 74 72 20 3e 20 5f 5f 61 76 5f 65 70  ).aptr > __av_ep
6270: 74 72 28 4c 49 53 54 29 09 09 09 09 09 5c 0a 20  tr(LIST).....\. 
6280: 20 20 3f 20 2d 31 20 3a 20 28 28 4c 49 53 54 29    ? -1 : ((LIST)
6290: 2e 61 6e 75 6d 2b 2b 2c 20 28 4c 49 53 54 29 2e  .anum++, (LIST).
62a0: 61 70 74 72 5b 2d 31 5d 20 3d 20 28 5f 5f 61 76  aptr[-1] = (__av
62b0: 77 6f 72 64 29 28 56 41 4c 29 2c 20 30 29 29 0a  word)(VAL), 0)).
62c0: 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e  #endif.#if defin
62d0: 65 64 28 5f 5f 68 70 70 61 5f 5f 29 0a 2f 2a 20  ed(__hppa__)./* 
62e0: 46 6c 6f 61 74 73 20 61 6e 64 20 61 6c 6c 20 69  Floats and all i
62f0: 6e 74 65 67 65 72 20 74 79 70 65 73 20 61 72 65  nteger types are
6300: 20 70 61 73 73 65 64 20 61 73 20 77 6f 72 64 73   passed as words
6310: 2c 0a 20 2a 20 64 6f 75 62 6c 65 73 20 61 73 20  ,. * doubles as 
6320: 74 77 6f 20 77 6f 72 64 73 2e 0a 20 2a 2f 0a 23  two words.. */.#
6330: 64 65 66 69 6e 65 20 5f 5f 61 76 5f 77 6f 72 64  define __av_word
6340: 28 4c 49 53 54 2c 56 41 4c 29 09 09 09 09 09 09  (LIST,VAL)......
6350: 5c 0a 20 20 28 2d 2d 28 4c 49 53 54 29 2e 61 70  \.  (--(LIST).ap
6360: 74 72 20 3c 20 5f 5f 61 76 5f 65 70 74 72 28 4c  tr < __av_eptr(L
6370: 49 53 54 29 09 09 09 09 09 5c 0a 20 20 20 3f 20  IST).....\.   ? 
6380: 2d 31 20 3a 20 28 2a 28 4c 49 53 54 29 2e 61 70  -1 : (*(LIST).ap
6390: 74 72 20 3d 20 28 5f 5f 61 76 77 6f 72 64 29 28  tr = (__avword)(
63a0: 56 41 4c 29 2c 20 30 29 29 0a 23 65 6e 64 69 66  VAL), 0)).#endif
63b0: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 41 4d 49  .#if defined(AMI
63c0: 47 41 29 0a 2f 2a 20 53 6f 6d 65 20 61 72 67 75  GA)./* Some argu
63d0: 6d 65 6e 74 73 20 61 72 65 20 70 61 73 73 65 64  ments are passed
63e0: 20 69 6e 20 72 65 67 69 73 74 65 72 73 2e 20 51   in registers. Q
63f0: 75 65 72 79 20 74 68 65 20 6d 61 63 72 6f 20 41  uery the macro A
6400: 56 5f 41 52 47 5f 52 45 47 4e 55 4d 2e 0a 20 2a  V_ARG_REGNUM.. *
6410: 20 54 68 69 73 20 73 68 6f 75 6c 64 20 72 65 61   This should rea
6420: 6c 6c 79 20 62 65 20 61 6e 20 61 72 67 75 6d 65  lly be an argume
6430: 6e 74 20 74 6f 20 5f 5f 61 76 5f 77 6f 72 64 2e  nt to __av_word.
6440: 0a 20 2a 2f 0a 2f 2a 20 23 75 6e 64 65 66 20 5f  . */./* #undef _
6450: 5f 61 76 5f 77 6f 72 64 20 2a 2f 20 2f 2a 2a 2f  _av_word */ /**/
6460: 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 77 6f  .#define __av_wo
6470: 72 64 28 4c 49 53 54 2c 56 41 4c 29 09 09 09 09  rd(LIST,VAL)....
6480: 09 09 5c 0a 20 20 28 28 41 56 5f 41 52 47 5f 52  ..\.  ((AV_ARG_R
6490: 45 47 4e 55 4d 29 20 3e 3d 20 30 09 09 09 09 09  EGNUM) >= 0.....
64a0: 09 09 5c 0a 20 20 20 3f 20 28 28 41 56 5f 41 52  ..\.   ? ((AV_AR
64b0: 47 5f 52 45 47 4e 55 4d 29 20 3c 20 38 2b 37 09  G_REGNUM) < 8+7.
64c0: 09 09 09 09 09 5c 0a 20 20 20 20 20 20 3f 20 2d  .....\.      ? -
64d0: 31 20 3a 20 28 28 4c 49 53 54 29 2e 72 65 67 61  1 : ((LIST).rega
64e0: 72 67 73 5b 28 41 56 5f 41 52 47 5f 52 45 47 4e  rgs[(AV_ARG_REGN
64f0: 55 4d 29 5d 20 3d 20 28 5f 5f 61 76 77 6f 72 64  UM)] = (__avword
6500: 29 28 56 41 4c 29 2c 20 30 29 29 09 5c 0a 20 20  )(VAL), 0)).\.  
6510: 20 3a 20 28 2b 2b 28 4c 49 53 54 29 2e 61 70 74   : (++(LIST).apt
6520: 72 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49  r > __av_eptr(LI
6530: 53 54 29 09 09 09 09 09 5c 0a 20 20 20 20 20 20  ST).....\.      
6540: 3f 20 2d 31 20 3a 20 28 28 4c 49 53 54 29 2e 61  ? -1 : ((LIST).a
6550: 70 74 72 5b 2d 31 5d 20 3d 20 28 5f 5f 61 76 77  ptr[-1] = (__avw
6560: 6f 72 64 29 28 56 41 4c 29 2c 20 30 29 29 29 0a  ord)(VAL), 0))).
6570: 23 65 6e 64 69 66 0a 0a 2f 2a 20 69 6e 74 65 67  #endif../* integ
6580: 65 72 20 61 72 67 75 6d 65 6e 74 20 74 79 70 65  er argument type
6590: 73 20 2a 2f 0a 0a 23 69 66 20 64 65 66 69 6e 65  s */..#if define
65a0: 64 28 5f 5f 78 38 36 5f 36 34 5f 5f 29 0a 2f 2a  d(__x86_64__)./*
65b0: 20 54 68 65 20 66 69 72 73 74 20 36 20 69 6e 74   The first 6 int
65c0: 65 67 65 72 20 61 72 67 75 6d 65 6e 74 73 20 61  eger arguments a
65d0: 72 65 20 70 61 73 73 65 64 20 69 6e 20 72 65 67  re passed in reg
65e0: 69 73 74 65 72 73 2e 20 2a 2f 0a 23 64 65 66 69  isters. */.#defi
65f0: 6e 65 20 61 76 5f 6c 6f 6e 67 28 4c 49 53 54 2c  ne av_long(LIST,
6600: 56 41 4c 29 09 09 09 09 09 09 5c 0a 20 20 28 28  VAL)......\.  ((
6610: 4c 49 53 54 29 2e 69 61 70 74 72 20 3c 20 26 28  LIST).iaptr < &(
6620: 4c 49 53 54 29 2e 69 61 72 67 73 5b 36 5d 09 09  LIST).iargs[6]..
6630: 09 09 09 5c 0a 20 20 20 3f 20 28 2a 28 4c 49 53  ...\.   ? (*(LIS
6640: 54 29 2e 69 61 70 74 72 2b 2b 20 3d 20 28 6c 6f  T).iaptr++ = (lo
6650: 6e 67 29 28 56 41 4c 29 2c 20 30 29 09 09 09 09  ng)(VAL), 0)....
6660: 09 5c 0a 20 20 20 3a 20 5f 5f 61 76 5f 77 6f 72  .\.   : __av_wor
6670: 64 28 4c 49 53 54 2c 28 6c 6f 6e 67 29 28 56 41  d(LIST,(long)(VA
6680: 4c 29 29 29 0a 23 65 6c 73 65 0a 23 64 65 66 69  L))).#else.#defi
6690: 6e 65 20 61 76 5f 6c 6f 6e 67 28 4c 49 53 54 2c  ne av_long(LIST,
66a0: 56 41 4c 29 09 5f 5f 61 76 5f 77 6f 72 64 28 4c  VAL).__av_word(L
66b0: 49 53 54 2c 28 6c 6f 6e 67 29 28 56 41 4c 29 29  IST,(long)(VAL))
66c0: 0a 23 65 6e 64 69 66 0a 0a 23 69 66 20 64 65 66  .#endif..#if def
66d0: 69 6e 65 64 28 5f 5f 78 38 36 5f 36 34 5f 5f 29  ined(__x86_64__)
66e0: 0a 2f 2a 20 54 68 65 20 66 69 72 73 74 20 36 20  ./* The first 6 
66f0: 69 6e 74 65 67 65 72 20 61 72 67 75 6d 65 6e 74  integer argument
6700: 73 20 61 72 65 20 70 61 73 73 65 64 20 69 6e 20  s are passed in 
6710: 72 65 67 69 73 74 65 72 73 2e 20 2a 2f 0a 23 64  registers. */.#d
6720: 65 66 69 6e 65 20 61 76 5f 75 6c 6f 6e 67 28 4c  efine av_ulong(L
6730: 49 53 54 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a  IST,VAL)......\.
6740: 20 20 28 28 4c 49 53 54 29 2e 69 61 70 74 72 20    ((LIST).iaptr 
6750: 3c 20 26 28 4c 49 53 54 29 2e 69 61 72 67 73 5b  < &(LIST).iargs[
6760: 36 5d 09 09 09 09 09 5c 0a 20 20 20 3f 20 28 2a  6].....\.   ? (*
6770: 28 4c 49 53 54 29 2e 69 61 70 74 72 2b 2b 20 3d  (LIST).iaptr++ =
6780: 20 28 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 29   (unsigned long)
6790: 28 56 41 4c 29 2c 20 30 29 09 09 09 5c 0a 20 20  (VAL), 0)...\.  
67a0: 20 3a 20 5f 5f 61 76 5f 77 6f 72 64 28 4c 49 53   : __av_word(LIS
67b0: 54 2c 28 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67  T,(unsigned long
67c0: 29 28 56 41 4c 29 29 29 0a 23 65 6c 73 65 0a 23  )(VAL))).#else.#
67d0: 64 65 66 69 6e 65 20 61 76 5f 75 6c 6f 6e 67 28  define av_ulong(
67e0: 4c 49 53 54 2c 56 41 4c 29 09 5f 5f 61 76 5f 77  LIST,VAL).__av_w
67f0: 6f 72 64 28 4c 49 53 54 2c 28 75 6e 73 69 67 6e  ord(LIST,(unsign
6800: 65 64 20 6c 6f 6e 67 29 28 56 41 4c 29 29 0a 23  ed long)(VAL)).#
6810: 65 6e 64 69 66 0a 0a 23 69 66 20 64 65 66 69 6e  endif..#if defin
6820: 65 64 28 5f 5f 78 38 36 5f 36 34 5f 5f 29 0a 2f  ed(__x86_64__)./
6830: 2a 20 54 68 65 20 66 69 72 73 74 20 36 20 69 6e  * The first 6 in
6840: 74 65 67 65 72 20 61 72 67 75 6d 65 6e 74 73 20  teger arguments 
6850: 61 72 65 20 70 61 73 73 65 64 20 69 6e 20 72 65  are passed in re
6860: 67 69 73 74 65 72 73 2e 20 2a 2f 0a 23 64 65 66  gisters. */.#def
6870: 69 6e 65 20 61 76 5f 70 74 72 28 4c 49 53 54 2c  ine av_ptr(LIST,
6880: 54 59 50 45 2c 56 41 4c 29 09 09 09 09 09 09 5c  TYPE,VAL)......\
6890: 0a 20 20 28 28 4c 49 53 54 29 2e 69 61 70 74 72  .  ((LIST).iaptr
68a0: 20 3c 20 26 28 4c 49 53 54 29 2e 69 61 72 67 73   < &(LIST).iargs
68b0: 5b 36 5d 09 09 09 09 09 5c 0a 20 20 20 3f 20 28  [6].....\.   ? (
68c0: 2a 28 4c 49 53 54 29 2e 69 61 70 74 72 2b 2b 20  *(LIST).iaptr++ 
68d0: 3d 20 28 5f 5f 61 76 77 6f 72 64 29 28 54 59 50  = (__avword)(TYP
68e0: 45 29 28 56 41 4c 29 2c 20 30 29 09 09 09 5c 0a  E)(VAL), 0)...\.
68f0: 20 20 20 3a 20 5f 5f 61 76 5f 77 6f 72 64 28 4c     : __av_word(L
6900: 49 53 54 2c 28 54 59 50 45 29 28 56 41 4c 29 29  IST,(TYPE)(VAL))
6910: 29 0a 23 65 6c 73 65 0a 23 64 65 66 69 6e 65 20  ).#else.#define 
6920: 61 76 5f 70 74 72 28 4c 49 53 54 2c 54 59 50 45  av_ptr(LIST,TYPE
6930: 2c 56 41 4c 29 09 5f 5f 61 76 5f 77 6f 72 64 28  ,VAL).__av_word(
6940: 4c 49 53 54 2c 28 54 59 50 45 29 28 56 41 4c 29  LIST,(TYPE)(VAL)
6950: 29 0a 23 65 6e 64 69 66 0a 0a 23 64 65 66 69 6e  ).#endif..#defin
6960: 65 20 61 76 5f 63 68 61 72 09 09 09 61 76 5f 6c  e av_char...av_l
6970: 6f 6e 67 0a 23 64 65 66 69 6e 65 20 61 76 5f 73  ong.#define av_s
6980: 63 68 61 72 09 09 61 76 5f 6c 6f 6e 67 0a 23 64  char..av_long.#d
6990: 65 66 69 6e 65 20 61 76 5f 73 68 6f 72 74 09 09  efine av_short..
69a0: 61 76 5f 6c 6f 6e 67 0a 23 64 65 66 69 6e 65 20  av_long.#define 
69b0: 61 76 5f 69 6e 74 09 09 09 61 76 5f 6c 6f 6e 67  av_int...av_long
69c0: 0a 23 64 65 66 69 6e 65 20 61 76 5f 75 63 68 61  .#define av_ucha
69d0: 72 09 09 61 76 5f 75 6c 6f 6e 67 0a 23 64 65 66  r..av_ulong.#def
69e0: 69 6e 65 20 61 76 5f 75 73 68 6f 72 74 09 09 61  ine av_ushort..a
69f0: 76 5f 75 6c 6f 6e 67 0a 23 64 65 66 69 6e 65 20  v_ulong.#define 
6a00: 61 76 5f 75 69 6e 74 09 09 09 61 76 5f 75 6c 6f  av_uint...av_ulo
6a10: 6e 67 0a 0a 23 69 66 20 64 65 66 69 6e 65 64 28  ng..#if defined(
6a20: 5f 5f 6d 69 70 73 36 34 5f 5f 29 20 7c 7c 20 64  __mips64__) || d
6a30: 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34  efined(__sparc64
6a40: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
6a50: 5f 61 6c 70 68 61 5f 5f 29 20 7c 7c 20 64 65 66  _alpha__) || def
6a60: 69 6e 65 64 28 5f 5f 69 61 36 34 5f 5f 29 20 7c  ined(__ia64__) |
6a70: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 78 38 36 5f  | defined(__x86_
6a80: 36 34 5f 5f 29 0a 2f 2a 20 60 6c 6f 6e 67 20 6c  64__)./* `long l
6a90: 6f 6e 67 27 20 61 6e 64 20 60 6c 6f 6e 67 27 20  ong' and `long' 
6aa0: 61 72 65 20 69 64 65 6e 74 69 63 61 6c 2e 20 2a  are identical. *
6ab0: 2f 0a 23 64 65 66 69 6e 65 20 61 76 5f 6c 6f 6e  /.#define av_lon
6ac0: 67 6c 6f 6e 67 09 09 61 76 5f 6c 6f 6e 67 0a 23  glong..av_long.#
6ad0: 64 65 66 69 6e 65 20 61 76 5f 75 6c 6f 6e 67 6c  define av_ulongl
6ae0: 6f 6e 67 09 09 61 76 5f 75 6c 6f 6e 67 0a 23 65  ong..av_ulong.#e
6af0: 6c 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69  lif defined(__mi
6b00: 70 73 6e 33 32 5f 5f 29 0a 2f 2a 20 60 6c 6f 6e  psn32__)./* `lon
6b10: 67 20 6c 6f 6e 67 27 20 66 69 74 73 20 69 6e 20  g long' fits in 
6b20: 5f 5f 61 76 77 6f 72 64 2e 20 2a 2f 0a 23 64 65  __avword. */.#de
6b30: 66 69 6e 65 20 61 76 5f 6c 6f 6e 67 6c 6f 6e 67  fine av_longlong
6b40: 09 09 5f 5f 61 76 5f 77 6f 72 64 0a 23 64 65 66  ..__av_word.#def
6b50: 69 6e 65 20 61 76 5f 75 6c 6f 6e 67 6c 6f 6e 67  ine av_ulonglong
6b60: 28 4c 49 53 54 2c 56 41 4c 29 09 5f 5f 61 76 5f  (LIST,VAL).__av_
6b70: 77 6f 72 64 28 4c 49 53 54 2c 28 75 6e 73 69 67  word(LIST,(unsig
6b80: 6e 65 64 20 6c 6f 6e 67 20 6c 6f 6e 67 29 28 56  ned long long)(V
6b90: 41 4c 29 29 0a 23 65 6c 69 66 20 64 65 66 69 6e  AL)).#elif defin
6ba0: 65 64 28 5f 5f 69 33 38 36 5f 5f 29 20 7c 7c 20  ed(__i386__) || 
6bb0: 64 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f 5f  defined(__m68k__
6bc0: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d  ) || defined(__m
6bd0: 69 70 73 5f 5f 29 20 7c 7c 20 28 64 65 66 69 6e  ips__) || (defin
6be0: 65 64 28 5f 5f 73 70 61 72 63 5f 5f 29 20 26 26  ed(__sparc__) &&
6bf0: 20 21 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72   !defined(__spar
6c00: 63 36 34 5f 5f 29 29 20 7c 7c 20 64 65 66 69 6e  c64__)) || defin
6c10: 65 64 28 5f 5f 68 70 70 61 5f 5f 29 20 7c 7c 20  ed(__hppa__) || 
6c20: 64 65 66 69 6e 65 64 28 5f 5f 61 72 6d 5f 5f 29  defined(__arm__)
6c30: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 72 73   || defined(__rs
6c40: 36 30 30 30 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  6000__) || defin
6c50: 65 64 28 5f 5f 6d 38 38 6b 5f 5f 29 20 7c 7c 20  ed(__m88k__) || 
6c60: 64 65 66 69 6e 65 64 28 5f 5f 63 6f 6e 76 65 78  defined(__convex
6c70: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
6c80: 5f 73 33 39 30 5f 5f 29 0a 2f 2a 20 60 6c 6f 6e  _s390__)./* `lon
6c90: 67 20 6c 6f 6e 67 27 73 20 61 72 65 20 70 61 73  g long's are pas
6ca0: 73 65 64 20 65 6d 62 65 64 64 65 64 20 6f 6e 20  sed embedded on 
6cb0: 74 68 65 20 61 72 67 20 73 74 61 63 6b 2e 20 2a  the arg stack. *
6cc0: 2f 0a 23 64 65 66 69 6e 65 20 61 76 5f 6c 6f 6e  /.#define av_lon
6cd0: 67 6c 6f 6e 67 28 4c 49 53 54 2c 56 41 4c 29 09  glong(LIST,VAL).
6ce0: 5f 5f 61 76 5f 6c 6f 6e 67 6c 6f 6e 67 28 4c 49  __av_longlong(LI
6cf0: 53 54 2c 6c 6f 6e 67 20 6c 6f 6e 67 2c 56 41 4c  ST,long long,VAL
6d00: 29 0a 23 64 65 66 69 6e 65 20 61 76 5f 75 6c 6f  ).#define av_ulo
6d10: 6e 67 6c 6f 6e 67 28 4c 49 53 54 2c 56 41 4c 29  nglong(LIST,VAL)
6d20: 09 5f 5f 61 76 5f 6c 6f 6e 67 6c 6f 6e 67 28 4c  .__av_longlong(L
6d30: 49 53 54 2c 75 6e 73 69 67 6e 65 64 20 6c 6f 6e  IST,unsigned lon
6d40: 67 20 6c 6f 6e 67 2c 56 41 4c 29 0a 23 69 66 20  g long,VAL).#if 
6d50: 64 65 66 69 6e 65 64 28 5f 5f 69 33 38 36 5f 5f  defined(__i386__
6d60: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d  ) || defined(__m
6d70: 36 38 6b 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65  68k__) || define
6d80: 64 28 5f 5f 61 72 6d 5f 5f 29 20 7c 7c 20 28 64  d(__arm__) || (d
6d90: 65 66 69 6e 65 64 28 5f 5f 72 73 36 30 30 30 5f  efined(__rs6000_
6da0: 5f 29 20 26 26 20 28 64 65 66 69 6e 65 64 28 5f  _) && (defined(_
6db0: 41 49 58 29 20 7c 7c 20 28 64 65 66 69 6e 65 64  AIX) || (defined
6dc0: 28 5f 5f 4d 41 43 48 5f 5f 29 20 26 26 20 64 65  (__MACH__) && de
6dd0: 66 69 6e 65 64 28 5f 5f 41 50 50 4c 45 5f 5f 29  fined(__APPLE__)
6de0: 29 29 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  ))) || defined(_
6df0: 5f 63 6f 6e 76 65 78 5f 5f 29 0a 2f 2a 20 60 6c  _convex__)./* `l
6e00: 6f 6e 67 20 6c 6f 6e 67 27 73 20 61 72 65 20 28  ong long's are (
6e10: 61 74 20 6d 6f 73 74 29 20 77 6f 72 64 2d 61 6c  at most) word-al
6e20: 69 67 6e 65 64 2e 20 2a 2f 0a 23 64 65 66 69 6e  igned. */.#defin
6e30: 65 20 5f 5f 61 76 5f 6c 6f 6e 67 6c 6f 6e 67 28  e __av_longlong(
6e40: 4c 49 53 54 2c 54 59 50 45 2c 56 41 4c 29 09 09  LIST,TYPE,VAL)..
6e50: 09 09 09 5c 0a 20 20 28 28 28 4c 49 53 54 29 2e  ...\.  (((LIST).
6e60: 61 70 74 72 20 2b 3d 20 73 69 7a 65 6f 66 28 54  aptr += sizeof(T
6e70: 59 50 45 29 2f 73 69 7a 65 6f 66 28 5f 5f 61 76  YPE)/sizeof(__av
6e80: 77 6f 72 64 29 29 20 3e 20 5f 5f 61 76 5f 65 70  word)) > __av_ep
6e90: 74 72 28 4c 49 53 54 29 09 5c 0a 20 20 20 3f 20  tr(LIST).\.   ? 
6ea0: 2d 31 20 3a 20 28 28 28 54 59 50 45 2a 29 28 4c  -1 : (((TYPE*)(L
6eb0: 49 53 54 29 2e 61 70 74 72 29 5b 2d 31 5d 20 3d  IST).aptr)[-1] =
6ec0: 20 28 54 59 50 45 29 28 56 41 4c 29 2c 20 30 29   (TYPE)(VAL), 0)
6ed0: 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66  ).#endif.#if def
6ee0: 69 6e 65 64 28 5f 5f 6d 69 70 73 5f 5f 29 20 7c  ined(__mips__) |
6ef0: 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f 73 70 61  | (defined(__spa
6f00: 72 63 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65  rc__) && !define
6f10: 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29 29 20  d(__sparc64__)) 
6f20: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 68 70 70  || defined(__hpp
6f30: 61 5f 5f 29 20 7c 7c 20 28 64 65 66 69 6e 65 64  a__) || (defined
6f40: 28 5f 5f 72 73 36 30 30 30 5f 5f 29 20 26 26 20  (__rs6000__) && 
6f50: 21 28 64 65 66 69 6e 65 64 28 5f 41 49 58 29 20  !(defined(_AIX) 
6f60: 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f 4d 41  || (defined(__MA
6f70: 43 48 5f 5f 29 20 26 26 20 64 65 66 69 6e 65 64  CH__) && defined
6f80: 28 5f 5f 41 50 50 4c 45 5f 5f 29 29 29 29 20 7c  (__APPLE__)))) |
6f90: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 38 38 6b  | defined(__m88k
6fa0: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
6fb0: 5f 73 33 39 30 5f 5f 29 0a 2f 2a 20 60 6c 6f 6e  _s390__)./* `lon
6fc0: 67 20 6c 6f 6e 67 27 73 20 68 61 76 65 20 61 6c  g long's have al
6fd0: 69 67 6e 6d 65 6e 74 20 38 2e 20 2a 2f 0a 23 69  ignment 8. */.#i
6fe0: 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73  f defined(__mips
6ff0: 5f 5f 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76  __).#define __av
7000: 5f 6c 6f 6e 67 6c 6f 6e 67 28 4c 49 53 54 2c 54  _longlong(LIST,T
7010: 59 50 45 2c 56 41 4c 29 09 09 09 09 09 5c 0a 20  YPE,VAL).....\. 
7020: 20 28 28 28 4c 49 53 54 29 2e 61 70 74 72 20 3d   (((LIST).aptr =
7030: 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28 28 28 5f   (__avword*)(((_
7040: 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e 61  _avword)(LIST).a
7050: 70 74 72 2b 73 69 7a 65 6f 66 28 54 59 50 45 29  ptr+sizeof(TYPE)
7060: 2b 5f 5f 41 56 5f 61 6c 69 67 6e 6f 66 28 54 59  +__AV_alignof(TY
7070: 50 45 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29  PE)-1) & -(long)
7080: 5f 5f 41 56 5f 61 6c 69 67 6e 6f 66 28 54 59 50  __AV_alignof(TYP
7090: 45 29 29 29 20 3e 20 5f 5f 61 76 5f 65 70 74 72  E))) > __av_eptr
70a0: 28 4c 49 53 54 29 20 5c 0a 20 20 20 3f 20 2d 31  (LIST) \.   ? -1
70b0: 20 3a 20 28 28 4c 49 53 54 29 2e 61 6e 75 6d 2b   : ((LIST).anum+
70c0: 2b 2c 20 28 28 54 59 50 45 2a 29 28 4c 49 53 54  +, ((TYPE*)(LIST
70d0: 29 2e 61 70 74 72 29 5b 2d 31 5d 20 3d 20 28 54  ).aptr)[-1] = (T
70e0: 59 50 45 29 28 56 41 4c 29 2c 20 30 29 29 0a 23  YPE)(VAL), 0)).#
70f0: 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65  endif.#if define
7100: 64 28 5f 5f 73 70 61 72 63 5f 5f 29 20 26 26 20  d(__sparc__) && 
7110: 21 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63  !defined(__sparc
7120: 36 34 5f 5f 29 0a 2f 2a 20 57 69 74 68 69 6e 20  64__)./* Within 
7130: 74 68 65 20 61 72 67 20 73 74 61 63 6b 2c 20 74  the arg stack, t
7140: 68 65 20 61 6c 69 67 6e 6d 65 6e 74 20 69 73 20  he alignment is 
7150: 6f 6e 6c 79 20 34 2c 20 6e 6f 74 20 38 2e 20 2a  only 4, not 8. *
7160: 2f 0a 2f 2a 20 54 68 69 73 20 61 73 73 75 6d 65  /./* This assume
7170: 73 20 73 69 7a 65 6f 66 28 6c 6f 6e 67 20 6c 6f  s sizeof(long lo
7180: 6e 67 29 20 3d 3d 20 32 2a 73 69 7a 65 6f 66 28  ng) == 2*sizeof(
7190: 5f 5f 61 76 77 6f 72 64 29 2e 20 2a 2f 0a 23 64  __avword). */.#d
71a0: 65 66 69 6e 65 20 5f 5f 61 76 5f 6c 6f 6e 67 6c  efine __av_longl
71b0: 6f 6e 67 28 4c 49 53 54 2c 54 59 50 45 2c 56 41  ong(LIST,TYPE,VA
71c0: 4c 29 09 09 09 09 09 5c 0a 20 20 28 28 28 4c 49  L).....\.  (((LI
71d0: 53 54 29 2e 61 70 74 72 20 2b 3d 20 73 69 7a 65  ST).aptr += size
71e0: 6f 66 28 54 59 50 45 29 2f 73 69 7a 65 6f 66 28  of(TYPE)/sizeof(
71f0: 5f 5f 61 76 77 6f 72 64 29 29 20 3e 20 5f 5f 61  __avword)) > __a
7200: 76 5f 65 70 74 72 28 4c 49 53 54 29 09 5c 0a 20  v_eptr(LIST).\. 
7210: 20 20 3f 20 2d 31 20 3a 09 09 09 09 09 09 09 09    ? -1 :........
7220: 5c 0a 20 20 20 28 28 4c 49 53 54 29 2e 74 6d 70  \.   ((LIST).tmp
7230: 2e 5f 6c 6f 6e 67 6c 6f 6e 67 20 3d 20 28 54 59  ._longlong = (TY
7240: 50 45 29 28 56 41 4c 29 2c 09 09 09 09 09 5c 0a  PE)(VAL),.....\.
7250: 20 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72 5b      (LIST).aptr[
7260: 2d 32 5d 20 3d 20 28 4c 49 53 54 29 2e 74 6d 70  -2] = (LIST).tmp
7270: 2e 77 6f 72 64 73 5b 30 5d 2c 09 09 09 09 5c 0a  .words[0],....\.
7280: 20 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72 5b      (LIST).aptr[
7290: 2d 31 5d 20 3d 20 28 4c 49 53 54 29 2e 74 6d 70  -1] = (LIST).tmp
72a0: 2e 77 6f 72 64 73 5b 31 5d 2c 09 09 09 09 5c 0a  .words[1],....\.
72b0: 20 20 20 20 30 29 29 0a 23 65 6e 64 69 66 0a 23      0)).#endif.#
72c0: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 68 70 70  if defined(__hpp
72d0: 61 5f 5f 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61  a__).#define __a
72e0: 76 5f 6c 6f 6e 67 6c 6f 6e 67 28 4c 49 53 54 2c  v_longlong(LIST,
72f0: 54 59 50 45 2c 56 41 4c 29 09 09 09 09 09 5c 0a  TYPE,VAL).....\.
7300: 20 20 28 28 28 4c 49 53 54 29 2e 61 70 74 72 20    (((LIST).aptr 
7310: 3d 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28 28 28  = (__avword*)(((
7320: 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e  __avword)(LIST).
7330: 61 70 74 72 20 26 20 2d 28 6c 6f 6e 67 29 5f 5f  aptr & -(long)__
7340: 41 56 5f 61 6c 69 67 6e 6f 66 28 54 59 50 45 29  AV_alignof(TYPE)
7350: 29 20 2d 20 73 69 7a 65 6f 66 28 54 59 50 45 29  ) - sizeof(TYPE)
7360: 29 29 20 3c 20 5f 5f 61 76 5f 65 70 74 72 28 4c  )) < __av_eptr(L
7370: 49 53 54 29 20 5c 0a 20 20 20 3f 20 2d 31 20 3a  IST) \.   ? -1 :
7380: 20 28 2a 28 54 59 50 45 2a 29 28 4c 49 53 54 29   (*(TYPE*)(LIST)
7390: 2e 61 70 74 72 20 3d 20 28 54 59 50 45 29 28 56  .aptr = (TYPE)(V
73a0: 41 4c 29 2c 20 30 29 29 0a 23 65 6e 64 69 66 0a  AL), 0)).#endif.
73b0: 23 69 66 20 28 64 65 66 69 6e 65 64 28 5f 5f 72  #if (defined(__r
73c0: 73 36 30 30 30 5f 5f 29 20 26 26 20 21 28 64 65  s6000__) && !(de
73d0: 66 69 6e 65 64 28 5f 41 49 58 29 20 7c 7c 20 28  fined(_AIX) || (
73e0: 64 65 66 69 6e 65 64 28 5f 5f 4d 41 43 48 5f 5f  defined(__MACH__
73f0: 29 20 26 26 20 64 65 66 69 6e 65 64 28 5f 5f 41  ) && defined(__A
7400: 50 50 4c 45 5f 5f 29 29 29 29 20 7c 7c 20 64 65  PPLE__)))) || de
7410: 66 69 6e 65 64 28 5f 5f 6d 38 38 6b 5f 5f 29 0a  fined(__m88k__).
7420: 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 6c 6f 6e  #define __av_lon
7430: 67 6c 6f 6e 67 28 4c 49 53 54 2c 54 59 50 45 2c  glong(LIST,TYPE,
7440: 56 41 4c 29 09 09 09 09 09 5c 0a 20 20 28 28 28  VAL).....\.  (((
7450: 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 28 5f 5f  LIST).aptr = (__
7460: 61 76 77 6f 72 64 2a 29 28 28 28 5f 5f 61 76 77  avword*)(((__avw
7470: 6f 72 64 29 28 4c 49 53 54 29 2e 61 70 74 72 2b  ord)(LIST).aptr+
7480: 73 69 7a 65 6f 66 28 54 59 50 45 29 2b 5f 5f 41  sizeof(TYPE)+__A
7490: 56 5f 61 6c 69 67 6e 6f 66 28 54 59 50 45 29 2d  V_alignof(TYPE)-
74a0: 31 29 20 26 20 2d 28 6c 6f 6e 67 29 5f 5f 41 56  1) & -(long)__AV
74b0: 5f 61 6c 69 67 6e 6f 66 28 54 59 50 45 29 29 29  _alignof(TYPE)))
74c0: 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53   > __av_eptr(LIS
74d0: 54 29 20 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 28  T) \.   ? -1 : (
74e0: 28 28 54 59 50 45 2a 29 28 4c 49 53 54 29 2e 61  ((TYPE*)(LIST).a
74f0: 70 74 72 29 5b 2d 31 5d 20 3d 20 28 54 59 50 45  ptr)[-1] = (TYPE
7500: 29 28 56 41 4c 29 2c 20 30 29 29 0a 23 65 6e 64  )(VAL), 0)).#end
7510: 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f  if.#if defined(_
7520: 5f 73 33 39 30 5f 5f 29 0a 23 64 65 66 69 6e 65  _s390__).#define
7530: 20 5f 5f 61 76 5f 6c 6f 6e 67 6c 6f 6e 67 28 4c   __av_longlong(L
7540: 49 53 54 2c 54 59 50 45 2c 56 41 4c 29 09 09 09  IST,TYPE,VAL)...
7550: 09 09 5c 0a 20 20 28 28 28 4c 49 53 54 29 2e 61  ..\.  (((LIST).a
7560: 70 74 72 20 3d 20 28 5f 5f 61 76 77 6f 72 64 2a  ptr = (__avword*
7570: 29 28 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49  )(((__avword)(LI
7580: 53 54 29 2e 61 70 74 72 2b 73 69 7a 65 6f 66 28  ST).aptr+sizeof(
7590: 54 59 50 45 29 2b 5f 5f 41 56 5f 61 6c 69 67 6e  TYPE)+__AV_align
75a0: 6f 66 28 54 59 50 45 29 2d 31 29 20 26 20 2d 28  of(TYPE)-1) & -(
75b0: 6c 6f 6e 67 29 5f 5f 41 56 5f 61 6c 69 67 6e 6f  long)__AV_aligno
75c0: 66 28 54 59 50 45 29 29 29 20 3e 20 5f 5f 61 76  f(TYPE))) > __av
75d0: 5f 65 70 74 72 28 4c 49 53 54 29 20 5c 0a 20 20  _eptr(LIST) \.  
75e0: 20 3f 20 2d 31 20 3a 09 09 09 09 09 09 5c 0a 20   ? -1 :......\. 
75f0: 20 20 28 28 28 4c 49 53 54 29 2e 61 70 74 72 20    (((LIST).aptr 
7600: 2d 20 28 4c 49 53 54 29 2e 61 72 67 73 20 2d 20  - (LIST).args - 
7610: 28 4c 49 53 54 29 2e 66 61 72 67 77 6f 72 64 73  (LIST).fargwords
7620: 20 3d 3d 20 34 20 3f 20 2b 2b 28 4c 49 53 54 29   == 4 ? ++(LIST)
7630: 2e 61 70 74 72 2c 30 20 3a 20 30 29 2c 20 5c 0a  .aptr,0 : 0), \.
7640: 20 20 20 20 28 28 28 54 59 50 45 2a 29 28 4c 49      (((TYPE*)(LI
7650: 53 54 29 2e 61 70 74 72 29 5b 2d 31 5d 20 3d 20  ST).aptr)[-1] = 
7660: 28 54 59 50 45 29 28 56 41 4c 29 2c 20 30 29 29  (TYPE)(VAL), 0))
7670: 29 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69 66 0a  ).#endif.#endif.
7680: 23 65 6e 64 69 66 0a 0a 2f 2a 20 66 6c 6f 61 74  #endif../* float
7690: 69 6e 67 2d 70 6f 69 6e 74 20 61 72 67 75 6d 65  ing-point argume
76a0: 6e 74 20 74 79 70 65 73 20 2a 2f 0a 0a 23 64 65  nt types */..#de
76b0: 66 69 6e 65 20 61 76 5f 66 6c 6f 61 74 28 4c 49  fine av_float(LI
76c0: 53 54 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a 20  ST,VAL)......\. 
76d0: 20 28 28 4c 49 53 54 29 2e 66 6c 61 67 73 20 26   ((LIST).flags &
76e0: 20 5f 5f 41 56 5f 54 52 41 44 49 54 49 4f 4e 41   __AV_TRADITIONA
76f0: 4c 5f 46 4c 4f 41 54 5f 41 52 47 53 09 09 09 09  L_FLOAT_ARGS....
7700: 5c 0a 20 20 20 3f 20 61 76 5f 64 6f 75 62 6c 65  \.   ? av_double
7710: 28 4c 49 53 54 2c 28 66 6c 6f 61 74 29 28 56 41  (LIST,(float)(VA
7720: 4c 29 29 09 09 09 09 09 5c 0a 20 20 20 3a 20 5f  L)).....\.   : _
7730: 5f 61 76 5f 66 6c 6f 61 74 28 4c 49 53 54 2c 56  _av_float(LIST,V
7740: 41 4c 29 29 0a 0a 23 69 66 20 64 65 66 69 6e 65  AL))..#if define
7750: 64 28 5f 5f 69 33 38 36 5f 5f 29 20 7c 7c 20 64  d(__i386__) || d
7760: 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f 5f 29  efined(__m68k__)
7770: 20 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f 73   || (defined(__s
7780: 70 61 72 63 5f 5f 29 20 26 26 20 21 64 65 66 69  parc__) && !defi
7790: 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29  ned(__sparc64__)
77a0: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 61  ) || defined(__a
77b0: 72 6d 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  rm__) || defined
77c0: 28 5f 5f 63 6f 6e 76 65 78 5f 5f 29 0a 0a 23 64  (__convex__)..#d
77d0: 65 66 69 6e 65 20 5f 5f 61 76 5f 66 6c 6f 61 74  efine __av_float
77e0: 28 4c 49 53 54 2c 56 41 4c 29 09 09 09 09 09 09  (LIST,VAL)......
77f0: 5c 0a 20 20 28 2b 2b 28 4c 49 53 54 29 2e 61 70  \.  (++(LIST).ap
7800: 74 72 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c  tr > __av_eptr(L
7810: 49 53 54 29 09 09 09 09 09 5c 0a 20 20 20 3f 20  IST).....\.   ? 
7820: 2d 31 20 3a 20 28 28 28 66 6c 6f 61 74 2a 29 28  -1 : (((float*)(
7830: 4c 49 53 54 29 2e 61 70 74 72 29 5b 2d 31 5d 20  LIST).aptr)[-1] 
7840: 3d 20 28 66 6c 6f 61 74 29 28 56 41 4c 29 2c 20  = (float)(VAL), 
7850: 30 29 29 0a 0a 2f 2a 20 54 68 69 73 20 61 73 73  0))../* This ass
7860: 75 6d 65 73 20 73 69 7a 65 6f 66 28 64 6f 75 62  umes sizeof(doub
7870: 6c 65 29 20 3d 3d 20 32 2a 73 69 7a 65 6f 66 28  le) == 2*sizeof(
7880: 5f 5f 61 76 77 6f 72 64 29 2e 20 2a 2f 0a 23 64  __avword). */.#d
7890: 65 66 69 6e 65 20 61 76 5f 64 6f 75 62 6c 65 28  efine av_double(
78a0: 4c 49 53 54 2c 56 41 4c 29 09 09 09 09 09 09 5c  LIST,VAL)......\
78b0: 0a 20 20 20 28 28 28 4c 49 53 54 29 2e 61 70 74  .   (((LIST).apt
78c0: 72 20 2b 3d 20 32 29 20 3e 20 5f 5f 61 76 5f 65  r += 2) > __av_e
78d0: 70 74 72 28 4c 49 53 54 29 09 09 09 09 5c 0a 20  ptr(LIST)....\. 
78e0: 20 20 20 3f 20 2d 31 20 3a 09 09 09 09 09 09 09     ? -1 :.......
78f0: 09 5c 0a 20 20 20 20 28 28 4c 49 53 54 29 2e 74  .\.    ((LIST).t
7900: 6d 70 2e 5f 64 6f 75 62 6c 65 20 3d 20 28 64 6f  mp._double = (do
7910: 75 62 6c 65 29 28 56 41 4c 29 2c 09 09 09 09 5c  uble)(VAL),....\
7920: 0a 20 20 20 20 20 28 4c 49 53 54 29 2e 61 70 74  .     (LIST).apt
7930: 72 5b 2d 32 5d 20 3d 20 28 4c 49 53 54 29 2e 74  r[-2] = (LIST).t
7940: 6d 70 2e 77 6f 72 64 73 5b 30 5d 2c 09 09 09 09  mp.words[0],....
7950: 5c 0a 20 20 20 20 20 28 4c 49 53 54 29 2e 61 70  \.     (LIST).ap
7960: 74 72 5b 2d 31 5d 20 3d 20 28 4c 49 53 54 29 2e  tr[-1] = (LIST).
7970: 74 6d 70 2e 77 6f 72 64 73 5b 31 5d 2c 09 09 09  tmp.words[1],...
7980: 09 5c 0a 20 20 20 20 20 30 29 29 0a 0a 23 65 6e  .\.     0))..#en
7990: 64 69 66 0a 0a 23 69 66 20 64 65 66 69 6e 65 64  dif..#if defined
79a0: 28 5f 5f 6d 69 70 73 5f 5f 29 20 26 26 20 21 64  (__mips__) && !d
79b0: 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32  efined(__mipsn32
79c0: 5f 5f 29 0a 0a 2f 2a 20 55 70 20 74 6f 20 32 20  __)../* Up to 2 
79d0: 6c 65 61 64 69 6e 67 20 66 6c 6f 61 74 20 6f 72  leading float or
79e0: 20 64 6f 75 62 6c 65 20 6e 6f 6e 2d 76 61 72 61   double non-vara
79f0: 72 67 73 20 61 72 67 73 20 63 61 6e 20 62 65 20  rgs args can be 
7a00: 70 61 73 73 65 64 20 69 6e 0a 20 2a 20 66 6c 6f  passed in. * flo
7a10: 61 74 20 72 65 67 69 73 74 65 72 73 2c 20 62 75  at registers, bu
7a20: 74 20 77 65 20 61 6c 73 6f 20 70 75 73 68 20 74  t we also push t
7a30: 68 65 6d 20 69 6e 74 6f 20 74 68 65 20 63 6f 72  hem into the cor
7a40: 72 65 73 70 6f 6e 64 69 6e 67 20 69 6e 74 0a 20  responding int. 
7a50: 2a 20 72 65 67 69 73 74 65 72 73 20 69 6e 20 63  * registers in c
7a60: 61 73 65 20 6f 66 20 76 61 72 61 72 67 73 2e 20  ase of varargs. 
7a70: 46 6f 72 20 64 6f 75 62 6c 65 73 20 77 65 20 6e  For doubles we n
7a80: 65 65 64 20 74 6f 20 61 6c 69 67 6e 20 74 68 65  eed to align the
7a90: 20 61 70 74 72 0a 20 2a 20 74 6f 20 61 6e 20 65   aptr. * to an e
7aa0: 76 65 6e 20 62 6f 75 6e 64 61 72 79 2e 0a 20 2a  ven boundary.. *
7ab0: 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 66  /.#define __av_f
7ac0: 6c 6f 61 74 28 4c 49 53 54 2c 56 41 4c 29 09 09  loat(LIST,VAL)..
7ad0: 09 09 09 09 5c 0a 20 20 28 2b 2b 28 4c 49 53 54  ....\.  (++(LIST
7ae0: 29 2e 61 70 74 72 20 3e 20 5f 5f 61 76 5f 65 70  ).aptr > __av_ep
7af0: 74 72 28 4c 49 53 54 29 09 09 09 09 09 5c 0a 20  tr(LIST).....\. 
7b00: 20 20 3f 20 2d 31 20 3a 20 28 28 2b 2b 28 4c 49    ? -1 : ((++(LI
7b10: 53 54 29 2e 61 6e 75 6d 20 3d 3d 20 31 09 09 09  ST).anum == 1...
7b20: 09 09 09 5c 0a 09 20 20 20 20 3f 20 28 28 4c 49  ...\..    ? ((LI
7b30: 53 54 29 2e 66 6c 61 67 73 20 7c 3d 20 5f 5f 41  ST).flags |= __A
7b40: 56 5f 46 4c 4f 41 54 5f 31 2c 09 09 09 09 5c 0a  V_FLOAT_1,....\.
7b50: 09 20 20 20 20 20 20 20 28 28 66 6c 6f 61 74 2a  .       ((float*
7b60: 29 28 4c 49 53 54 29 2e 66 6c 6f 61 74 61 72 67  )(LIST).floatarg
7b70: 29 5b 31 5d 20 3d 20 28 28 66 6c 6f 61 74 2a 29  )[1] = ((float*)
7b80: 28 4c 49 53 54 29 2e 61 70 74 72 29 5b 2d 31 5d  (LIST).aptr)[-1]
7b90: 20 3d 20 28 66 6c 6f 61 74 29 28 56 41 4c 29 29   = (float)(VAL))
7ba0: 5c 0a 09 20 20 20 20 3a 20 28 4c 49 53 54 29 2e  \..    : (LIST).
7bb0: 61 6e 75 6d 20 3d 3d 20 32 20 26 26 20 28 28 4c  anum == 2 && ((L
7bc0: 49 53 54 29 2e 66 6c 61 67 73 20 26 20 5f 5f 41  IST).flags & __A
7bd0: 56 5f 46 4c 4f 41 54 5f 31 29 09 09 5c 0a 09 20  V_FLOAT_1)..\.. 
7be0: 20 20 20 3f 20 28 28 4c 49 53 54 29 2e 66 6c 61     ? ((LIST).fla
7bf0: 67 73 20 7c 3d 20 5f 5f 41 56 5f 46 4c 4f 41 54  gs |= __AV_FLOAT
7c00: 5f 32 2c 09 09 09 09 5c 0a 09 20 20 20 20 20 20  _2,....\..      
7c10: 20 28 28 66 6c 6f 61 74 2a 29 28 4c 49 53 54 29   ((float*)(LIST)
7c20: 2e 66 6c 6f 61 74 61 72 67 29 5b 33 5d 20 3d 20  .floatarg)[3] = 
7c30: 28 28 66 6c 6f 61 74 2a 29 28 4c 49 53 54 29 2e  ((float*)(LIST).
7c40: 61 70 74 72 29 5b 2d 31 5d 20 3d 20 28 66 6c 6f  aptr)[-1] = (flo
7c50: 61 74 29 28 56 41 4c 29 29 5c 0a 09 20 20 20 20  at)(VAL))\..    
7c60: 3a 20 28 2a 28 66 6c 6f 61 74 2a 29 26 28 4c 49  : (*(float*)&(LI
7c70: 53 54 29 2e 61 70 74 72 5b 2d 31 5d 20 3d 20 28  ST).aptr[-1] = (
7c80: 66 6c 6f 61 74 29 28 56 41 4c 29 29 29 2c 09 09  float)(VAL))),..
7c90: 5c 0a 09 20 20 20 30 29 29 0a 0a 23 64 65 66 69  \..   0))..#defi
7ca0: 6e 65 20 61 76 5f 64 6f 75 62 6c 65 28 4c 49 53  ne av_double(LIS
7cb0: 54 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a 20 20  T,VAL)......\.  
7cc0: 28 28 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20  (((LIST).aptr = 
7cd0: 28 5f 5f 61 76 77 6f 72 64 2a 29 28 28 28 5f 5f  (__avword*)(((__
7ce0: 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e 61 70  avword)(LIST).ap
7cf0: 74 72 2b 31 35 29 26 2d 38 29 29 09 09 5c 0a 20  tr+15)&-8))..\. 
7d00: 20 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49    > __av_eptr(LI
7d10: 53 54 29 09 09 09 09 09 09 09 5c 0a 20 20 20 3f  ST).......\.   ?
7d20: 20 2d 31 20 3a 20 28 28 2b 2b 28 4c 49 53 54 29   -1 : ((++(LIST)
7d30: 2e 61 6e 75 6d 20 3d 3d 20 31 09 09 09 09 09 09  .anum == 1......
7d40: 5c 0a 09 20 20 20 20 3f 20 28 28 4c 49 53 54 29  \..    ? ((LIST)
7d50: 2e 66 6c 61 67 73 20 7c 3d 20 5f 5f 41 56 5f 46  .flags |= __AV_F
7d60: 4c 4f 41 54 5f 31 2c 09 09 09 09 5c 0a 09 20 20  LOAT_1,....\..  
7d70: 20 20 20 20 20 28 4c 49 53 54 29 2e 66 6c 6f 61       (LIST).floa
7d80: 74 61 72 67 5b 30 5d 20 3d 20 28 28 64 6f 75 62  targ[0] = ((doub
7d90: 6c 65 2a 29 28 4c 49 53 54 29 2e 61 70 74 72 29  le*)(LIST).aptr)
7da0: 5b 2d 31 5d 20 3d 20 28 64 6f 75 62 6c 65 29 28  [-1] = (double)(
7db0: 56 41 4c 29 29 5c 0a 09 20 20 20 20 3a 20 28 4c  VAL))\..    : (L
7dc0: 49 53 54 29 2e 61 6e 75 6d 20 3d 3d 20 32 20 26  IST).anum == 2 &
7dd0: 26 20 28 28 4c 49 53 54 29 2e 66 6c 61 67 73 20  & ((LIST).flags 
7de0: 26 20 5f 5f 41 56 5f 46 4c 4f 41 54 5f 31 29 09  & __AV_FLOAT_1).
7df0: 09 5c 0a 09 20 20 20 20 3f 20 28 28 4c 49 53 54  .\..    ? ((LIST
7e00: 29 2e 66 6c 61 67 73 20 7c 3d 20 5f 5f 41 56 5f  ).flags |= __AV_
7e10: 46 4c 4f 41 54 5f 32 2c 09 09 09 09 5c 0a 09 20  FLOAT_2,....\.. 
7e20: 20 20 20 20 20 20 28 4c 49 53 54 29 2e 66 6c 6f        (LIST).flo
7e30: 61 74 61 72 67 5b 31 5d 20 3d 20 28 28 64 6f 75  atarg[1] = ((dou
7e40: 62 6c 65 2a 29 28 4c 49 53 54 29 2e 61 70 74 72  ble*)(LIST).aptr
7e50: 29 5b 2d 31 5d 20 3d 20 28 64 6f 75 62 6c 65 29  )[-1] = (double)
7e60: 28 56 41 4c 29 29 5c 0a 09 20 20 20 20 3a 20 28  (VAL))\..    : (
7e70: 28 28 64 6f 75 62 6c 65 2a 29 28 4c 49 53 54 29  ((double*)(LIST)
7e80: 2e 61 70 74 72 29 5b 2d 31 5d 20 3d 20 28 64 6f  .aptr)[-1] = (do
7e90: 75 62 6c 65 29 28 56 41 4c 29 29 29 2c 09 09 5c  uble)(VAL))),..\
7ea0: 0a 09 20 20 20 30 29 29 0a 0a 23 65 6e 64 69 66  ..   0))..#endif
7eb0: 0a 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  ..#if defined(__
7ec0: 6d 69 70 73 6e 33 32 5f 5f 29 20 7c 7c 20 64 65  mipsn32__) || de
7ed0: 66 69 6e 65 64 28 5f 5f 6d 69 70 73 36 34 5f 5f  fined(__mips64__
7ee0: 29 0a 0a 2f 2a 20 55 70 20 74 6f 20 38 20 6c 65  )../* Up to 8 le
7ef0: 61 64 69 6e 67 20 66 6c 6f 61 74 20 6f 72 20 64  ading float or d
7f00: 6f 75 62 6c 65 20 6e 6f 6e 2d 76 61 72 61 72 67  ouble non-vararg
7f10: 73 20 61 72 67 73 20 63 61 6e 20 62 65 20 70 61  s args can be pa
7f20: 73 73 65 64 20 69 6e 0a 20 2a 20 66 6c 6f 61 74  ssed in. * float
7f30: 20 72 65 67 69 73 74 65 72 73 2c 20 62 75 74 20   registers, but 
7f40: 77 65 20 61 6c 73 6f 20 70 75 73 68 20 74 68 65  we also push the
7f50: 6d 20 69 6e 74 6f 20 74 68 65 20 63 6f 72 72 65  m into the corre
7f60: 73 70 6f 6e 64 69 6e 67 20 69 6e 74 0a 20 2a 20  sponding int. * 
7f70: 72 65 67 69 73 74 65 72 73 20 69 6e 20 63 61 73  registers in cas
7f80: 65 20 6f 66 20 76 61 72 61 72 67 73 2e 0a 20 2a  e of varargs.. *
7f90: 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 66  /.#define __av_f
7fa0: 6c 6f 61 74 28 4c 49 53 54 2c 56 41 4c 29 09 09  loat(LIST,VAL)..
7fb0: 09 09 09 09 5c 0a 20 20 28 28 4c 49 53 54 29 2e  ....\.  ((LIST).
7fc0: 61 70 74 72 20 3e 3d 20 5f 5f 61 76 5f 65 70 74  aptr >= __av_ept
7fd0: 72 28 4c 49 53 54 29 09 09 09 09 09 5c 0a 20 20  r(LIST).....\.  
7fe0: 20 3f 20 2d 31 20 3a 20 28 28 28 4c 49 53 54 29   ? -1 : (((LIST)
7ff0: 2e 61 6e 75 6d 20 3c 20 38 09 09 09 09 09 09 5c  .anum < 8......\
8000: 0a 09 20 20 20 20 3f 20 28 28 4c 49 53 54 29 2e  ..    ? ((LIST).
8010: 66 61 72 67 5f 6d 61 73 6b 20 7c 3d 20 28 31 20  farg_mask |= (1 
8020: 3c 3c 20 28 4c 49 53 54 29 2e 61 6e 75 6d 29 2c  << (LIST).anum),
8030: 09 09 09 5c 0a 09 20 20 20 20 20 20 20 28 4c 49  ...\..       (LI
8040: 53 54 29 2e 66 61 72 67 5b 28 4c 49 53 54 29 2e  ST).farg[(LIST).
8050: 61 6e 75 6d 5d 20 3d 20 2a 28 66 6c 6f 61 74 2a  anum] = *(float*
8060: 29 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 28  )(LIST).aptr = (
8070: 66 6c 6f 61 74 29 28 56 41 4c 29 29 20 5c 0a 09  float)(VAL)) \..
8080: 20 20 20 20 3a 20 28 2a 28 66 6c 6f 61 74 2a 29      : (*(float*)
8090: 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 28 66  (LIST).aptr = (f
80a0: 6c 6f 61 74 29 28 56 41 4c 29 29 29 2c 09 09 09  loat)(VAL))),...
80b0: 5c 0a 09 20 20 20 28 4c 49 53 54 29 2e 61 6e 75  \..   (LIST).anu
80c0: 6d 2b 2b 2c 09 09 09 09 09 09 5c 0a 09 20 20 20  m++,......\..   
80d0: 28 4c 49 53 54 29 2e 61 70 74 72 2b 2b 2c 09 09  (LIST).aptr++,..
80e0: 09 09 09 09 5c 0a 09 20 20 20 30 29 29 0a 0a 23  ....\..   0))..#
80f0: 64 65 66 69 6e 65 20 61 76 5f 64 6f 75 62 6c 65  define av_double
8100: 28 4c 49 53 54 2c 56 41 4c 29 09 09 09 09 09 09  (LIST,VAL)......
8110: 5c 0a 20 20 28 28 4c 49 53 54 29 2e 61 70 74 72  \.  ((LIST).aptr
8120: 20 3e 3d 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49   >= __av_eptr(LI
8130: 53 54 29 09 09 09 09 09 5c 0a 20 20 20 3f 20 2d  ST).....\.   ? -
8140: 31 20 3a 20 28 28 28 4c 49 53 54 29 2e 61 6e 75  1 : (((LIST).anu
8150: 6d 20 3c 20 38 20 26 26 20 28 28 4c 49 53 54 29  m < 8 && ((LIST)
8160: 2e 64 61 72 67 5f 6d 61 73 6b 20 7c 3d 20 28 31  .darg_mask |= (1
8170: 20 3c 3c 20 28 4c 49 53 54 29 2e 61 6e 75 6d 29   << (LIST).anum)
8180: 29 29 2c 20 5c 0a 09 20 20 20 2a 28 64 6f 75 62  )), \..   *(doub
8190: 6c 65 2a 29 28 4c 49 53 54 29 2e 61 70 74 72 20  le*)(LIST).aptr 
81a0: 3d 20 28 64 6f 75 62 6c 65 29 28 56 41 4c 29 2c  = (double)(VAL),
81b0: 09 09 09 5c 0a 09 20 20 20 28 4c 49 53 54 29 2e  ...\..   (LIST).
81c0: 61 6e 75 6d 2b 2b 2c 09 09 09 09 09 09 5c 0a 09  anum++,......\..
81d0: 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72 2b 2b     (LIST).aptr++
81e0: 2c 09 09 09 09 09 09 5c 0a 09 20 20 20 30 29 29  ,......\..   0))
81f0: 0a 0a 23 65 6e 64 69 66 0a 0a 23 69 66 20 64 65  ..#endif..#if de
8200: 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f  fined(__sparc64_
8210: 5f 29 0a 0a 2f 2a 20 55 70 20 74 6f 20 31 36 20  _)../* Up to 16 
8220: 6c 65 61 64 69 6e 67 20 66 6c 6f 61 74 20 6f 72  leading float or
8230: 20 64 6f 75 62 6c 65 20 6e 6f 6e 2d 76 61 72 61   double non-vara
8240: 72 67 73 20 61 72 67 73 20 63 61 6e 20 62 65 20  rgs args can be 
8250: 70 61 73 73 65 64 20 69 6e 0a 20 2a 20 66 6c 6f  passed in. * flo
8260: 61 74 20 72 65 67 69 73 74 65 72 73 2c 20 62 75  at registers, bu
8270: 74 20 77 65 20 61 6c 73 6f 20 70 75 73 68 20 74  t we also push t
8280: 68 65 6d 20 69 6e 74 6f 20 74 68 65 20 63 6f 72  hem into the cor
8290: 72 65 73 70 6f 6e 64 69 6e 67 20 69 6e 74 0a 20  responding int. 
82a0: 2a 20 72 65 67 69 73 74 65 72 73 20 69 6e 20 63  * registers in c
82b0: 61 73 65 20 6f 66 20 76 61 72 61 72 67 73 2e 0a  ase of varargs..
82c0: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76   */.#define __av
82d0: 5f 66 6c 6f 61 74 28 4c 49 53 54 2c 56 41 4c 29  _float(LIST,VAL)
82e0: 09 09 09 09 09 09 5c 0a 20 20 28 28 4c 49 53 54  ......\.  ((LIST
82f0: 29 2e 61 70 74 72 20 3e 3d 20 5f 5f 61 76 5f 65  ).aptr >= __av_e
8300: 70 74 72 28 4c 49 53 54 29 09 09 09 09 09 5c 0a  ptr(LIST).....\.
8310: 20 20 20 3f 20 2d 31 20 3a 20 28 28 28 4c 49 53     ? -1 : (((LIS
8320: 54 29 2e 61 6e 75 6d 20 3c 20 31 36 20 26 26 20  T).anum < 16 && 
8330: 28 28 4c 49 53 54 29 2e 66 61 72 67 5f 6d 61 73  ((LIST).farg_mas
8340: 6b 20 7c 3d 20 28 31 20 3c 3c 20 28 4c 49 53 54  k |= (1 << (LIST
8350: 29 2e 61 6e 75 6d 29 29 29 2c 20 5c 0a 09 20 20  ).anum))), \..  
8360: 20 28 2a 28 66 6c 6f 61 74 2a 29 28 4c 49 53 54   (*(float*)(LIST
8370: 29 2e 61 70 74 72 20 3d 20 28 66 6c 6f 61 74 29  ).aptr = (float)
8380: 28 56 41 4c 29 29 2c 09 09 09 5c 0a 09 20 20 20  (VAL)),...\..   
8390: 28 4c 49 53 54 29 2e 61 6e 75 6d 2b 2b 2c 09 09  (LIST).anum++,..
83a0: 09 09 09 09 5c 0a 09 20 20 20 28 4c 49 53 54 29  ....\..   (LIST)
83b0: 2e 61 70 74 72 2b 2b 2c 09 09 09 09 09 09 5c 0a  .aptr++,......\.
83c0: 09 20 20 20 30 29 29 0a 0a 23 64 65 66 69 6e 65  .   0))..#define
83d0: 20 61 76 5f 64 6f 75 62 6c 65 28 4c 49 53 54 2c   av_double(LIST,
83e0: 56 41 4c 29 09 09 09 09 09 09 5c 0a 20 20 28 28  VAL)......\.  ((
83f0: 4c 49 53 54 29 2e 61 70 74 72 20 3e 3d 20 5f 5f  LIST).aptr >= __
8400: 61 76 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09  av_eptr(LIST)...
8410: 09 09 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 28 28  ..\.   ? -1 : ((
8420: 28 4c 49 53 54 29 2e 61 6e 75 6d 20 3c 20 31 36  (LIST).anum < 16
8430: 20 26 26 20 28 28 4c 49 53 54 29 2e 64 61 72 67   && ((LIST).darg
8440: 5f 6d 61 73 6b 20 7c 3d 20 28 31 20 3c 3c 20 28  _mask |= (1 << (
8450: 4c 49 53 54 29 2e 61 6e 75 6d 29 29 29 2c 20 5c  LIST).anum))), \
8460: 0a 09 20 20 20 2a 28 64 6f 75 62 6c 65 2a 29 28  ..   *(double*)(
8470: 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 28 64 6f  LIST).aptr = (do
8480: 75 62 6c 65 29 28 56 41 4c 29 2c 09 09 09 5c 0a  uble)(VAL),...\.
8490: 09 20 20 20 28 4c 49 53 54 29 2e 61 6e 75 6d 2b  .   (LIST).anum+
84a0: 2b 2c 09 09 09 09 09 09 5c 0a 09 20 20 20 28 4c  +,......\..   (L
84b0: 49 53 54 29 2e 61 70 74 72 2b 2b 2c 09 09 09 09  IST).aptr++,....
84c0: 09 09 5c 0a 09 20 20 20 30 29 29 0a 0a 23 65 6e  ..\..   0))..#en
84d0: 64 69 66 0a 0a 23 69 66 20 64 65 66 69 6e 65 64  dif..#if defined
84e0: 28 5f 5f 61 6c 70 68 61 5f 5f 29 0a 0a 23 64 65  (__alpha__)..#de
84f0: 66 69 6e 65 20 61 76 5f 64 6f 75 62 6c 65 28 4c  fine av_double(L
8500: 49 53 54 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a  IST,VAL)......\.
8510: 20 20 28 2b 2b 28 4c 49 53 54 29 2e 61 70 74 72    (++(LIST).aptr
8520: 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53   > __av_eptr(LIS
8530: 54 29 09 09 09 09 09 5c 0a 20 20 20 3f 20 2d 31  T).....\.   ? -1
8540: 20 3a 20 28 28 28 64 6f 75 62 6c 65 2a 29 28 4c   : (((double*)(L
8550: 49 53 54 29 2e 61 70 74 72 29 5b 2d 31 5d 20 3d  IST).aptr)[-1] =
8560: 20 28 64 6f 75 62 6c 65 29 28 56 41 4c 29 2c 20   (double)(VAL), 
8570: 30 29 29 0a 0a 23 64 65 66 69 6e 65 20 5f 5f 61  0))..#define __a
8580: 76 5f 66 6c 6f 61 74 28 4c 49 53 54 2c 56 41 4c  v_float(LIST,VAL
8590: 29 09 09 09 09 09 09 5c 0a 20 20 28 2b 2b 28 4c  )......\.  (++(L
85a0: 49 53 54 29 2e 61 70 74 72 20 3e 20 5f 5f 61 76  IST).aptr > __av
85b0: 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09 09 09  _eptr(LIST).....
85c0: 5c 0a 20 20 20 3f 20 2d 31 09 09 09 09 09 09 09  \.   ? -1.......
85d0: 09 09 5c 0a 20 20 20 3a 20 28 28 28 4c 49 53 54  ..\.   : (((LIST
85e0: 29 2e 61 70 74 72 20 3e 20 26 28 4c 49 53 54 29  ).aptr > &(LIST)
85f0: 2e 61 72 67 73 5b 36 5d 09 09 09 09 09 5c 0a 20  .args[6].....\. 
8600: 20 20 20 20 20 20 3f 20 2f 2a 20 54 68 65 73 65        ? /* These
8610: 20 61 72 67 73 20 77 69 6c 6c 20 62 65 20 66 65   args will be fe
8620: 74 63 68 65 64 20 66 72 6f 6d 20 6d 65 6d 6f 72  tched from memor
8630: 79 20 75 73 69 6e 67 20 22 6c 64 73 22 20 69 6e  y using "lds" in
8640: 73 74 72 75 63 74 69 6f 6e 73 20 2a 2f 20 5c 0a  structions */ \.
8650: 09 20 2f 2a 20 74 68 65 72 65 66 6f 72 65 20 73  . /* therefore s
8660: 74 6f 72 65 20 74 68 65 6d 20 61 73 20 66 6c 6f  tore them as flo
8670: 61 74 73 20 2a 2f 09 09 09 09 5c 0a 09 20 28 2a  ats */....\.. (*
8680: 28 66 6c 6f 61 74 2a 29 28 28 4c 49 53 54 29 2e  (float*)((LIST).
8690: 61 70 74 72 2d 31 29 20 3d 20 28 66 6c 6f 61 74  aptr-1) = (float
86a0: 29 28 56 41 4c 29 29 09 09 09 5c 0a 20 20 20 20  )(VAL))...\.    
86b0: 20 20 20 3a 20 2f 2a 20 54 68 65 20 66 69 72 73     : /* The firs
86c0: 74 20 36 20 61 72 67 73 20 77 69 6c 6c 20 62 65  t 6 args will be
86d0: 20 70 75 74 20 69 6e 74 6f 20 72 65 67 69 73 74   put into regist
86e0: 65 72 73 20 62 79 20 22 6c 64 74 22 20 69 6e 73  ers by "ldt" ins
86f0: 74 72 75 63 74 69 6f 6e 73 20 2a 2f 20 5c 0a 09  tructions */ \..
8700: 20 2f 2a 20 28 73 65 65 20 61 76 63 61 6c 6c 2d   /* (see avcall-
8710: 61 6c 70 68 61 2e 63 21 29 2e 20 54 68 65 72 65  alpha.c!). There
8720: 66 6f 72 65 20 73 74 6f 72 65 20 74 68 65 6d 20  fore store them 
8730: 61 73 20 64 6f 75 62 6c 65 73 2e 20 2a 2f 09 5c  as doubles. */.\
8740: 0a 09 20 2f 2a 20 57 68 65 6e 20 76 69 65 77 65  .. /* When viewe
8750: 64 20 61 73 20 66 6c 6f 61 74 73 2c 20 74 68 65  d as floats, the
8760: 20 76 61 6c 75 65 20 77 69 6c 6c 20 62 65 20 74   value will be t
8770: 68 65 20 63 6f 72 72 65 63 74 20 6f 6e 65 2e 20  he correct one. 
8780: 2a 2f 5c 0a 09 20 28 2a 28 64 6f 75 62 6c 65 2a  */\.. (*(double*
8790: 29 28 28 4c 49 53 54 29 2e 61 70 74 72 2d 31 29  )((LIST).aptr-1)
87a0: 20 3d 20 28 64 6f 75 62 6c 65 29 28 66 6c 6f 61   = (double)(floa
87b0: 74 29 28 56 41 4c 29 29 09 09 5c 0a 20 20 20 20  t)(VAL))..\.    
87c0: 20 29 2c 20 30 29 29 0a 0a 23 65 6e 64 69 66 0a   ), 0))..#endif.
87d0: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 68  .#if defined(__h
87e0: 70 70 61 5f 5f 29 0a 0a 23 64 65 66 69 6e 65 20  ppa__)..#define 
87f0: 5f 5f 61 76 5f 66 6c 6f 61 74 28 4c 49 53 54 2c  __av_float(LIST,
8800: 56 41 4c 29 09 09 09 09 09 09 5c 0a 20 20 28 2d  VAL)......\.  (-
8810: 2d 28 4c 49 53 54 29 2e 61 70 74 72 20 3c 20 5f  -(LIST).aptr < _
8820: 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29 09 09  _av_eptr(LIST)..
8830: 09 09 09 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 28  ...\.   ? -1 : (
8840: 2a 28 66 6c 6f 61 74 2a 29 28 4c 49 53 54 29 2e  *(float*)(LIST).
8850: 61 70 74 72 20 3d 20 28 66 6c 6f 61 74 29 28 56  aptr = (float)(V
8860: 41 4c 29 2c 20 30 29 29 0a 0a 23 64 65 66 69 6e  AL), 0))..#defin
8870: 65 20 61 76 5f 64 6f 75 62 6c 65 28 4c 49 53 54  e av_double(LIST
8880: 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a 20 20 28  ,VAL)......\.  (
8890: 28 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 28  ((LIST).aptr = (
88a0: 5f 5f 61 76 77 6f 72 64 2a 29 28 28 28 6c 6f 6e  __avword*)(((lon
88b0: 67 29 28 4c 49 53 54 29 2e 61 70 74 72 2d 73 69  g)(LIST).aptr-si
88c0: 7a 65 6f 66 28 64 6f 75 62 6c 65 29 29 20 26 20  zeof(double)) & 
88d0: 2d 28 6c 6f 6e 67 29 73 69 7a 65 6f 66 28 64 6f  -(long)sizeof(do
88e0: 75 62 6c 65 29 29 29 20 5c 0a 20 20 20 20 3c 20  uble))) \.    < 
88f0: 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29 09  __av_eptr(LIST).
8900: 09 09 09 09 09 09 5c 0a 20 20 20 20 3f 20 2d 31  ......\.    ? -1
8910: 20 3a 20 28 2a 28 64 6f 75 62 6c 65 2a 29 28 4c   : (*(double*)(L
8920: 49 53 54 29 2e 61 70 74 72 20 3d 20 28 64 6f 75  IST).aptr = (dou
8930: 62 6c 65 29 28 56 41 4c 29 2c 20 30 29 29 0a 0a  ble)(VAL), 0))..
8940: 23 65 6e 64 69 66 0a 0a 23 69 66 20 64 65 66 69  #endif..#if defi
8950: 6e 65 64 28 5f 5f 72 73 36 30 30 30 5f 5f 29 20  ned(__rs6000__) 
8960: 26 26 20 28 64 65 66 69 6e 65 64 28 5f 41 49 58  && (defined(_AIX
8970: 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f  ) || (defined(__
8980: 4d 41 43 48 5f 5f 29 20 26 26 20 64 65 66 69 6e  MACH__) && defin
8990: 65 64 28 5f 5f 41 50 50 4c 45 5f 5f 29 29 29 0a  ed(__APPLE__))).
89a0: 0a 2f 2a 20 55 70 20 74 6f 20 31 33 20 66 6c 6f  ./* Up to 13 flo
89b0: 61 74 20 6f 72 20 64 6f 75 62 6c 65 20 6e 6f 6e  at or double non
89c0: 2d 76 61 72 61 72 67 73 20 61 72 67 73 20 63 61  -varargs args ca
89d0: 6e 20 62 65 20 70 61 73 73 65 64 20 69 6e 0a 20  n be passed in. 
89e0: 2a 20 66 6c 6f 61 74 20 72 65 67 69 73 74 65 72  * float register
89f0: 73 2c 20 62 75 74 20 77 65 20 61 6c 73 6f 20 70  s, but we also p
8a00: 75 73 68 20 74 68 65 6d 20 69 6e 74 6f 20 74 68  ush them into th
8a10: 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20  e corresponding 
8a20: 69 6e 74 0a 20 2a 20 72 65 67 69 73 74 65 72 73  int. * registers
8a30: 20 69 6e 20 63 61 73 65 20 6f 66 20 76 61 72 61   in case of vara
8a40: 72 67 73 2e 0a 20 2a 2f 0a 0a 23 64 65 66 69 6e  rgs.. */..#defin
8a50: 65 20 5f 5f 61 76 5f 66 6c 6f 61 74 28 4c 49 53  e __av_float(LIS
8a60: 54 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a 20 20  T,VAL)......\.  
8a70: 28 2b 2b 28 4c 49 53 54 29 2e 61 70 74 72 20 3e  (++(LIST).aptr >
8a80: 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29   __av_eptr(LIST)
8a90: 09 09 09 09 09 5c 0a 20 20 20 3f 20 2d 31 20 3a  .....\.   ? -1 :
8aa0: 20 28 28 28 66 6c 6f 61 74 2a 29 28 4c 49 53 54   (((float*)(LIST
8ab0: 29 2e 61 70 74 72 29 5b 2d 31 5d 20 3d 20 28 66  ).aptr)[-1] = (f
8ac0: 6c 6f 61 74 29 28 56 41 4c 29 2c 09 09 09 5c 0a  loat)(VAL),...\.
8ad0: 09 20 20 20 28 4c 49 53 54 29 2e 66 61 70 74 72  .   (LIST).faptr
8ae0: 20 3c 20 26 28 4c 49 53 54 29 2e 66 61 72 67 73   < &(LIST).fargs
8af0: 5b 31 33 5d 20 26 26 09 09 09 09 5c 0a 09 09 28  [13] &&....\...(
8b00: 2a 28 4c 49 53 54 29 2e 66 61 70 74 72 2b 2b 20  *(LIST).faptr++ 
8b10: 3d 20 28 64 6f 75 62 6c 65 29 28 66 6c 6f 61 74  = (double)(float
8b20: 29 28 56 41 4c 29 29 2c 09 09 5c 0a 09 20 20 20  )(VAL)),..\..   
8b30: 30 29 29 0a 0a 23 64 65 66 69 6e 65 20 61 76 5f  0))..#define av_
8b40: 64 6f 75 62 6c 65 28 4c 49 53 54 2c 56 41 4c 29  double(LIST,VAL)
8b50: 09 09 09 09 09 09 5c 0a 20 20 20 28 28 28 4c 49  ......\.   (((LI
8b60: 53 54 29 2e 61 70 74 72 20 2b 3d 20 32 29 20 3e  ST).aptr += 2) >
8b70: 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29   __av_eptr(LIST)
8b80: 09 09 09 09 5c 0a 20 20 20 20 3f 20 2d 31 20 3a  ....\.    ? -1 :
8b90: 09 09 09 09 09 09 09 09 5c 0a 20 20 20 20 28 28  ........\.    ((
8ba0: 4c 49 53 54 29 2e 74 6d 70 2e 5f 64 6f 75 62 6c  LIST).tmp._doubl
8bb0: 65 20 3d 20 28 64 6f 75 62 6c 65 29 28 56 41 4c  e = (double)(VAL
8bc0: 29 2c 09 09 09 09 5c 0a 20 20 20 20 20 28 4c 49  ),....\.     (LI
8bd0: 53 54 29 2e 61 70 74 72 5b 2d 32 5d 20 3d 20 28  ST).aptr[-2] = (
8be0: 4c 49 53 54 29 2e 74 6d 70 2e 77 6f 72 64 73 5b  LIST).tmp.words[
8bf0: 30 5d 2c 09 09 09 09 5c 0a 20 20 20 20 20 28 4c  0],....\.     (L
8c00: 49 53 54 29 2e 61 70 74 72 5b 2d 31 5d 20 3d 20  IST).aptr[-1] = 
8c10: 28 4c 49 53 54 29 2e 74 6d 70 2e 77 6f 72 64 73  (LIST).tmp.words
8c20: 5b 31 5d 2c 09 09 09 09 5c 0a 20 20 20 20 20 28  [1],....\.     (
8c30: 4c 49 53 54 29 2e 66 61 70 74 72 20 3c 20 26 28  LIST).faptr < &(
8c40: 4c 49 53 54 29 2e 66 61 72 67 73 5b 31 33 5d 20  LIST).fargs[13] 
8c50: 26 26 09 09 09 09 5c 0a 09 28 2a 28 4c 49 53 54  &&....\..(*(LIST
8c60: 29 2e 66 61 70 74 72 2b 2b 20 3d 20 28 4c 49 53  ).faptr++ = (LIS
8c70: 54 29 2e 74 6d 70 2e 5f 64 6f 75 62 6c 65 29 2c  T).tmp._double),
8c80: 09 09 09 09 5c 0a 20 20 20 20 20 30 29 29 0a 0a  ....\.     0))..
8c90: 23 65 6e 64 69 66 0a 0a 23 69 66 20 64 65 66 69  #endif..#if defi
8ca0: 6e 65 64 28 5f 5f 72 73 36 30 30 30 5f 5f 29 20  ned(__rs6000__) 
8cb0: 26 26 20 21 28 64 65 66 69 6e 65 64 28 5f 41 49  && !(defined(_AI
8cc0: 58 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f  X) || (defined(_
8cd0: 5f 4d 41 43 48 5f 5f 29 20 26 26 20 64 65 66 69  _MACH__) && defi
8ce0: 6e 65 64 28 5f 5f 41 50 50 4c 45 5f 5f 29 29 29  ned(__APPLE__)))
8cf0: 0a 0a 2f 2a 20 55 70 20 74 6f 20 38 20 66 6c 6f  ../* Up to 8 flo
8d00: 61 74 20 6f 72 20 64 6f 75 62 6c 65 20 6e 6f 6e  at or double non
8d10: 2d 76 61 72 61 72 67 73 20 61 72 67 73 20 63 61  -varargs args ca
8d20: 6e 20 62 65 20 70 61 73 73 65 64 20 69 6e 0a 20  n be passed in. 
8d30: 2a 20 66 6c 6f 61 74 20 72 65 67 69 73 74 65 72  * float register
8d40: 73 2c 20 77 69 74 68 6f 75 74 20 6f 63 63 75 70  s, without occup
8d50: 79 69 6e 67 20 73 70 61 63 65 20 69 6e 20 74 68  ying space in th
8d60: 65 20 67 65 6e 65 72 61 6c 20 72 65 67 69 73 74  e general regist
8d70: 65 72 73 2e 0a 20 2a 2f 0a 0a 23 64 65 66 69 6e  ers.. */..#defin
8d80: 65 20 5f 5f 61 76 5f 66 6c 6f 61 74 28 4c 49 53  e __av_float(LIS
8d90: 54 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a 20 20  T,VAL)......\.  
8da0: 28 28 4c 49 53 54 29 2e 66 61 70 74 72 20 3c 20  ((LIST).faptr < 
8db0: 26 28 4c 49 53 54 29 2e 66 61 72 67 73 5b 38 5d  &(LIST).fargs[8]
8dc0: 09 09 09 09 09 5c 0a 20 20 20 3f 20 28 28 2a 28  .....\.   ? ((*(
8dd0: 4c 49 53 54 29 2e 66 61 70 74 72 2b 2b 20 3d 20  LIST).faptr++ = 
8de0: 28 64 6f 75 62 6c 65 29 28 66 6c 6f 61 74 29 28  (double)(float)(
8df0: 56 41 4c 29 29 2c 20 30 29 09 09 09 5c 0a 20 20  VAL)), 0)...\.  
8e00: 20 3a 20 28 2b 2b 28 4c 49 53 54 29 2e 61 70 74   : (++(LIST).apt
8e10: 72 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49  r > __av_eptr(LI
8e20: 53 54 29 09 09 09 09 09 5c 0a 20 20 20 20 20 20  ST).....\.      
8e30: 3f 20 2d 31 20 3a 20 28 28 28 66 6c 6f 61 74 2a  ? -1 : (((float*
8e40: 29 28 4c 49 53 54 29 2e 61 70 74 72 29 5b 2d 31  )(LIST).aptr)[-1
8e50: 5d 20 3d 20 28 66 6c 6f 61 74 29 28 56 41 4c 29  ] = (float)(VAL)
8e60: 2c 20 30 29 29 29 0a 0a 23 64 65 66 69 6e 65 20  , 0)))..#define 
8e70: 61 76 5f 64 6f 75 62 6c 65 28 4c 49 53 54 2c 56  av_double(LIST,V
8e80: 41 4c 29 09 09 09 09 09 09 5c 0a 20 20 28 28 4c  AL)......\.  ((L
8e90: 49 53 54 29 2e 66 61 70 74 72 20 3c 20 26 28 4c  IST).faptr < &(L
8ea0: 49 53 54 29 2e 66 61 72 67 73 5b 38 5d 09 09 09  IST).fargs[8]...
8eb0: 09 09 5c 0a 20 20 20 3f 20 28 28 2a 28 4c 49 53  ..\.   ? ((*(LIS
8ec0: 54 29 2e 66 61 70 74 72 2b 2b 20 3d 20 28 64 6f  T).faptr++ = (do
8ed0: 75 62 6c 65 29 28 56 41 4c 29 29 2c 20 30 29 09  uble)(VAL)), 0).
8ee0: 09 09 09 5c 0a 20 20 20 3a 20 28 28 28 4c 49 53  ...\.   : (((LIS
8ef0: 54 29 2e 61 70 74 72 20 2b 3d 20 32 29 20 3e 20  T).aptr += 2) > 
8f00: 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29 09  __av_eptr(LIST).
8f10: 09 09 09 5c 0a 20 20 20 20 20 20 3f 20 2d 31 20  ...\.      ? -1 
8f20: 3a 09 09 09 09 09 09 09 09 5c 0a 20 20 20 20 20  :........\.     
8f30: 20 28 28 4c 49 53 54 29 2e 74 6d 70 2e 5f 64 6f   ((LIST).tmp._do
8f40: 75 62 6c 65 20 3d 20 28 64 6f 75 62 6c 65 29 28  uble = (double)(
8f50: 56 41 4c 29 2c 09 09 09 09 5c 0a 20 20 20 20 20  VAL),....\.     
8f60: 20 20 28 4c 49 53 54 29 2e 61 70 74 72 5b 2d 32    (LIST).aptr[-2
8f70: 5d 20 3d 20 28 4c 49 53 54 29 2e 74 6d 70 2e 77  ] = (LIST).tmp.w
8f80: 6f 72 64 73 5b 30 5d 2c 09 09 09 09 5c 0a 20 20  ords[0],....\.  
8f90: 20 20 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72       (LIST).aptr
8fa0: 5b 2d 31 5d 20 3d 20 28 4c 49 53 54 29 2e 74 6d  [-1] = (LIST).tm
8fb0: 70 2e 77 6f 72 64 73 5b 31 5d 2c 09 09 09 09 5c  p.words[1],....\
8fc0: 0a 20 20 20 20 20 20 20 30 29 29 29 0a 0a 23 65  .       0)))..#e
8fd0: 6e 64 69 66 0a 0a 23 69 66 20 64 65 66 69 6e 65  ndif..#if define
8fe0: 64 28 5f 5f 73 33 39 30 5f 5f 29 0a 0a 2f 2a 20  d(__s390__)../* 
8ff0: 55 70 20 74 6f 20 32 20 66 6c 6f 61 74 20 6f 72  Up to 2 float or
9000: 20 64 6f 75 62 6c 65 20 6e 6f 6e 2d 76 61 72 61   double non-vara
9010: 72 67 73 20 61 72 67 73 20 63 61 6e 20 62 65 20  rgs args can be 
9020: 70 61 73 73 65 64 20 69 6e 0a 20 2a 20 66 6c 6f  passed in. * flo
9030: 61 74 20 72 65 67 69 73 74 65 72 73 2c 20 77 69  at registers, wi
9040: 74 68 6f 75 74 20 6f 63 63 75 70 79 69 6e 67 20  thout occupying 
9050: 73 70 61 63 65 20 69 6e 20 74 68 65 20 67 65 6e  space in the gen
9060: 65 72 61 6c 20 72 65 67 69 73 74 65 72 73 2e 0a  eral registers..
9070: 20 2a 2f 0a 0a 23 64 65 66 69 6e 65 20 5f 5f 61   */..#define __a
9080: 76 5f 66 6c 6f 61 74 28 4c 49 53 54 2c 56 41 4c  v_float(LIST,VAL
9090: 29 09 09 09 09 09 09 5c 0a 20 20 28 28 4c 49 53  )......\.  ((LIS
90a0: 54 29 2e 66 61 70 74 72 20 3c 20 26 28 4c 49 53  T).faptr < &(LIS
90b0: 54 29 2e 66 61 72 67 73 5b 32 5d 09 09 09 09 09  T).fargs[2].....
90c0: 5c 0a 20 20 20 3f 20 28 4c 49 53 54 29 2e 64 61  \.   ? (LIST).da
90d0: 70 74 72 2b 2b 2c 20 2a 28 4c 49 53 54 29 2e 66  ptr++, *(LIST).f
90e0: 61 72 67 73 75 73 65 64 70 74 72 2b 2b 20 3d 20  argsusedptr++ = 
90f0: 31 2c 20 2a 28 4c 49 53 54 29 2e 64 61 72 67 73  1, *(LIST).dargs
9100: 75 73 65 64 70 74 72 2b 2b 20 3d 20 30 2c 20 28  usedptr++ = 0, (
9110: 28 2a 28 4c 49 53 54 29 2e 66 61 70 74 72 2b 2b  (*(LIST).faptr++
9120: 20 3d 20 28 66 6c 6f 61 74 29 28 56 41 4c 29 29   = (float)(VAL))
9130: 2c 20 30 29 09 09 5c 0a 20 20 20 3a 20 28 2b 2b  , 0)..\.   : (++
9140: 28 4c 49 53 54 29 2e 61 70 74 72 20 3e 20 5f 5f  (LIST).aptr > __
9150: 61 76 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09  av_eptr(LIST)...
9160: 09 09 5c 0a 20 20 20 20 20 20 3f 20 2d 31 20 3a  ..\.      ? -1 :
9170: 20 28 28 4c 49 53 54 29 2e 66 61 72 67 77 6f 72   ((LIST).fargwor
9180: 64 73 2b 2b 2c 20 28 28 66 6c 6f 61 74 2a 29 28  ds++, ((float*)(
9190: 4c 49 53 54 29 2e 61 70 74 72 29 5b 2d 31 5d 20  LIST).aptr)[-1] 
91a0: 3d 20 28 66 6c 6f 61 74 29 28 56 41 4c 29 2c 20  = (float)(VAL), 
91b0: 30 29 29 29 0a 0a 23 64 65 66 69 6e 65 20 61 76  0)))..#define av
91c0: 5f 64 6f 75 62 6c 65 28 4c 49 53 54 2c 56 41 4c  _double(LIST,VAL
91d0: 29 09 09 09 09 09 09 5c 0a 20 20 28 28 4c 49 53  )......\.  ((LIS
91e0: 54 29 2e 64 61 70 74 72 20 3c 20 26 28 4c 49 53  T).daptr < &(LIS
91f0: 54 29 2e 64 61 72 67 73 5b 32 5d 09 09 09 09 09  T).dargs[2].....
9200: 5c 0a 20 20 20 3f 20 28 4c 49 53 54 29 2e 66 61  \.   ? (LIST).fa
9210: 70 74 72 2b 2b 2c 20 2a 28 4c 49 53 54 29 2e 64  ptr++, *(LIST).d
9220: 61 72 67 73 75 73 65 64 70 74 72 2b 2b 20 3d 20  argsusedptr++ = 
9230: 31 2c 20 2a 28 4c 49 53 54 29 2e 66 61 72 67 73  1, *(LIST).fargs
9240: 75 73 65 64 70 74 72 2b 2b 20 3d 20 30 2c 20 28  usedptr++ = 0, (
9250: 28 2a 28 4c 49 53 54 29 2e 64 61 70 74 72 2b 2b  (*(LIST).daptr++
9260: 20 3d 20 28 64 6f 75 62 6c 65 29 28 56 41 4c 29   = (double)(VAL)
9270: 29 2c 20 30 29 09 09 5c 0a 20 20 20 3a 20 28 28  ), 0)..\.   : ((
9280: 28 4c 49 53 54 29 2e 61 70 74 72 20 2b 3d 20 32  (LIST).aptr += 2
9290: 29 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49  ) > __av_eptr(LI
92a0: 53 54 29 09 09 09 09 5c 0a 20 20 20 20 20 20 3f  ST)....\.      ?
92b0: 20 2d 31 20 3a 09 09 09 09 09 09 09 09 5c 0a 20   -1 :........\. 
92c0: 20 20 20 20 20 28 28 4c 49 53 54 29 2e 66 61 72       ((LIST).far
92d0: 67 77 6f 72 64 73 2b 3d 32 2c 20 28 4c 49 53 54  gwords+=2, (LIST
92e0: 29 2e 74 6d 70 2e 5f 64 6f 75 62 6c 65 20 3d 20  ).tmp._double = 
92f0: 28 64 6f 75 62 6c 65 29 28 56 41 4c 29 2c 09 09  (double)(VAL),..
9300: 09 5c 0a 20 20 20 20 20 20 20 28 4c 49 53 54 29  .\.       (LIST)
9310: 2e 61 70 74 72 5b 2d 32 5d 20 3d 20 28 4c 49 53  .aptr[-2] = (LIS
9320: 54 29 2e 74 6d 70 2e 77 6f 72 64 73 5b 30 5d 2c  T).tmp.words[0],
9330: 09 09 09 09 5c 0a 20 20 20 20 20 20 20 28 4c 49  ....\.       (LI
9340: 53 54 29 2e 61 70 74 72 5b 2d 31 5d 20 3d 20 28  ST).aptr[-1] = (
9350: 4c 49 53 54 29 2e 74 6d 70 2e 77 6f 72 64 73 5b  LIST).tmp.words[
9360: 31 5d 2c 09 09 09 09 5c 0a 20 20 20 20 20 20 20  1],....\.       
9370: 30 29 29 29 0a 0a 23 65 6e 64 69 66 0a 0a 23 69  0)))..#endif..#i
9380: 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 38 38 6b  f defined(__m88k
9390: 5f 5f 29 0a 0a 23 64 65 66 69 6e 65 20 5f 5f 61  __)..#define __a
93a0: 76 5f 66 6c 6f 61 74 28 4c 49 53 54 2c 56 41 4c  v_float(LIST,VAL
93b0: 29 09 09 09 09 09 09 5c 0a 20 20 28 2b 2b 28 4c  )......\.  (++(L
93c0: 49 53 54 29 2e 61 70 74 72 20 3e 20 5f 5f 61 76  IST).aptr > __av
93d0: 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09 09 09  _eptr(LIST).....
93e0: 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 28 28 28 66  \.   ? -1 : (((f
93f0: 6c 6f 61 74 2a 29 28 4c 49 53 54 29 2e 61 70 74  loat*)(LIST).apt
9400: 72 29 5b 2d 31 5d 20 3d 20 28 66 6c 6f 61 74 29  r)[-1] = (float)
9410: 28 56 41 4c 29 2c 20 30 29 29 0a 0a 23 64 65 66  (VAL), 0))..#def
9420: 69 6e 65 20 61 76 5f 64 6f 75 62 6c 65 28 4c 49  ine av_double(LI
9430: 53 54 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a 20  ST,VAL)......\. 
9440: 20 20 28 28 28 4c 49 53 54 29 2e 61 70 74 72 20    (((LIST).aptr 
9450: 3d 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28 28 28  = (__avword*)(((
9460: 6c 6f 6e 67 29 28 4c 49 53 54 29 2e 61 70 74 72  long)(LIST).aptr
9470: 2b 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29 2b  +sizeof(double)+
9480: 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29 2d 31  sizeof(double)-1
9490: 29 20 26 20 2d 28 6c 6f 6e 67 29 73 69 7a 65 6f  ) & -(long)sizeo
94a0: 66 28 64 6f 75 62 6c 65 29 29 29 20 5c 0a 20 20  f(double))) \.  
94b0: 20 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49    > __av_eptr(LI
94c0: 53 54 29 09 09 09 09 09 09 09 5c 0a 20 20 20 20  ST).......\.    
94d0: 3f 20 2d 31 20 3a 20 28 28 28 64 6f 75 62 6c 65  ? -1 : (((double
94e0: 2a 29 28 4c 49 53 54 29 2e 61 70 74 72 29 5b 2d  *)(LIST).aptr)[-
94f0: 31 5d 20 3d 20 28 64 6f 75 62 6c 65 29 28 56 41  1] = (double)(VA
9500: 4c 29 2c 20 30 29 29 0a 0a 23 65 6e 64 69 66 0a  L), 0))..#endif.
9510: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 69  .#if defined(__i
9520: 61 36 34 5f 5f 29 0a 0a 2f 2a 20 55 70 20 74 6f  a64__)../* Up to
9530: 20 38 20 6c 65 61 64 69 6e 67 20 66 6c 6f 61 74   8 leading float
9540: 20 6f 72 20 64 6f 75 62 6c 65 20 6e 6f 6e 2d 76   or double non-v
9550: 61 72 61 72 67 73 20 61 72 67 73 20 63 61 6e 20  arargs args can 
9560: 62 65 20 70 61 73 73 65 64 20 69 6e 0a 20 2a 20  be passed in. * 
9570: 66 6c 6f 61 74 20 72 65 67 69 73 74 65 72 73 2c  float registers,
9580: 20 62 75 74 20 77 65 20 61 6c 73 6f 20 70 75 73   but we also pus
9590: 68 20 74 68 65 6d 20 69 6e 74 6f 20 74 68 65 20  h them into the 
95a0: 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 69 6e  corresponding in
95b0: 74 0a 20 2a 20 72 65 67 69 73 74 65 72 73 20 69  t. * registers i
95c0: 6e 20 63 61 73 65 20 6f 66 20 76 61 72 61 72 67  n case of vararg
95d0: 73 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f  s.. */.#define _
95e0: 5f 61 76 5f 66 6c 6f 61 74 28 4c 49 53 54 2c 56  _av_float(LIST,V
95f0: 41 4c 29 09 09 09 09 09 09 5c 0a 20 20 28 28 4c  AL)......\.  ((L
9600: 49 53 54 29 2e 61 70 74 72 20 3e 3d 20 5f 5f 61  IST).aptr >= __a
9610: 76 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09 09  v_eptr(LIST)....
9620: 09 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 28 28 2a  .\.   ? -1 : ((*
9630: 28 66 6c 6f 61 74 2a 29 28 4c 49 53 54 29 2e 61  (float*)(LIST).a
9640: 70 74 72 20 3d 20 28 66 6c 6f 61 74 29 28 56 41  ptr = (float)(VA
9650: 4c 29 29 2c 09 09 09 5c 0a 09 20 20 20 28 28 4c  L)),...\..   ((L
9660: 49 53 54 29 2e 66 61 70 74 72 20 3c 20 26 28 4c  IST).faptr < &(L
9670: 49 53 54 29 2e 66 61 72 67 73 5b 38 5d 20 26 26  IST).fargs[8] &&
9680: 20 28 2a 28 4c 49 53 54 29 2e 66 61 70 74 72 20   (*(LIST).faptr 
9690: 3d 20 2a 28 66 6c 6f 61 74 2a 29 28 4c 49 53 54  = *(float*)(LIST
96a0: 29 2e 61 70 74 72 2c 20 28 4c 49 53 54 29 2e 66  ).aptr, (LIST).f
96b0: 61 70 74 72 2b 2b 29 29 2c 20 5c 0a 09 20 20 20  aptr++)), \..   
96c0: 28 4c 49 53 54 29 2e 61 70 74 72 2b 2b 2c 09 09  (LIST).aptr++,..
96d0: 09 09 09 09 5c 0a 09 20 20 20 30 29 29 0a 0a 23  ....\..   0))..#
96e0: 64 65 66 69 6e 65 20 61 76 5f 64 6f 75 62 6c 65  define av_double
96f0: 28 4c 49 53 54 2c 56 41 4c 29 09 09 09 09 09 09  (LIST,VAL)......
9700: 5c 0a 20 20 28 28 4c 49 53 54 29 2e 61 70 74 72  \.  ((LIST).aptr
9710: 20 3e 3d 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49   >= __av_eptr(LI
9720: 53 54 29 09 09 09 09 09 5c 0a 20 20 20 3f 20 2d  ST).....\.   ? -
9730: 31 20 3a 20 28 2a 28 64 6f 75 62 6c 65 2a 29 28  1 : (*(double*)(
9740: 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 28 64 6f  LIST).aptr = (do
9750: 75 62 6c 65 29 28 56 41 4c 29 2c 09 09 09 5c 0a  uble)(VAL),...\.
9760: 09 20 20 20 28 28 4c 49 53 54 29 2e 66 61 70 74  .   ((LIST).fapt
9770: 72 20 3c 20 26 28 4c 49 53 54 29 2e 66 61 72 67  r < &(LIST).farg
9780: 73 5b 38 5d 20 26 26 20 28 2a 28 4c 49 53 54 29  s[8] && (*(LIST)
9790: 2e 66 61 70 74 72 20 3d 20 2a 28 64 6f 75 62 6c  .faptr = *(doubl
97a0: 65 2a 29 28 4c 49 53 54 29 2e 61 70 74 72 2c 20  e*)(LIST).aptr, 
97b0: 28 4c 49 53 54 29 2e 66 61 70 74 72 2b 2b 29 29  (LIST).faptr++))
97c0: 2c 20 5c 0a 09 20 20 20 28 4c 49 53 54 29 2e 61  , \..   (LIST).a
97d0: 70 74 72 2b 2b 2c 09 09 09 09 09 09 5c 0a 09 20  ptr++,......\.. 
97e0: 20 20 30 29 29 0a 0a 23 65 6e 64 69 66 0a 0a 23    0))..#endif..#
97f0: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 78 38 36  if defined(__x86
9800: 5f 36 34 5f 5f 29 0a 0a 2f 2a 20 55 70 20 74 6f  _64__)../* Up to
9810: 20 38 20 6c 65 61 64 69 6e 67 20 66 6c 6f 61 74   8 leading float
9820: 20 6f 72 20 64 6f 75 62 6c 65 20 61 72 67 73 20   or double args 
9830: 63 61 6e 20 62 65 20 70 61 73 73 65 64 20 69 6e  can be passed in
9840: 20 66 6c 6f 61 74 20 72 65 67 69 73 74 65 72 73   float registers
9850: 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f  .. */.#define __
9860: 61 76 5f 66 6c 6f 61 74 28 4c 49 53 54 2c 56 41  av_float(LIST,VA
9870: 4c 29 09 09 09 09 09 09 5c 0a 20 20 28 28 4c 49  L)......\.  ((LI
9880: 53 54 29 2e 66 61 70 74 72 20 3c 20 26 28 4c 49  ST).faptr < &(LI
9890: 53 54 29 2e 66 61 72 67 73 5b 38 5d 09 09 09 09  ST).fargs[8]....
98a0: 09 5c 0a 20 20 20 3f 20 28 2a 28 4c 49 53 54 29  .\.   ? (*(LIST)
98b0: 2e 66 61 70 74 72 20 3d 20 30 2e 30 2c 20 2a 28  .faptr = 0.0, *(
98c0: 66 6c 6f 61 74 2a 29 28 4c 49 53 54 29 2e 66 61  float*)(LIST).fa
98d0: 70 74 72 20 3d 20 28 66 6c 6f 61 74 29 28 56 41  ptr = (float)(VA
98e0: 4c 29 2c 09 5c 0a 20 20 20 20 20 20 28 4c 49 53  L),.\.      (LIS
98f0: 54 29 2e 66 61 70 74 72 2b 2b 2c 09 09 09 09 09  T).faptr++,.....
9900: 09 09 5c 0a 20 20 20 20 20 20 30 29 09 09 09 09  ..\.      0)....
9910: 09 09 09 09 5c 0a 20 20 20 3a 20 28 28 4c 49 53  ....\.   : ((LIS
9920: 54 29 2e 61 70 74 72 20 3e 3d 20 5f 5f 61 76 5f  T).aptr >= __av_
9930: 65 70 74 72 28 4c 49 53 54 29 09 09 09 09 09 5c  eptr(LIST).....\
9940: 0a 20 20 20 20 20 20 3f 20 2d 31 20 3a 20 28 28  .      ? -1 : ((
9950: 2a 28 66 6c 6f 61 74 2a 29 28 4c 49 53 54 29 2e  *(float*)(LIST).
9960: 61 70 74 72 20 3d 20 28 66 6c 6f 61 74 29 28 56  aptr = (float)(V
9970: 41 4c 29 29 2c 09 09 09 5c 0a 09 20 20 20 20 20  AL)),...\..     
9980: 20 28 4c 49 53 54 29 2e 61 70 74 72 2b 2b 2c 09   (LIST).aptr++,.
9990: 09 09 09 09 09 5c 0a 09 20 20 20 20 20 20 30 29  .....\..      0)
99a0: 29 29 0a 0a 23 64 65 66 69 6e 65 20 61 76 5f 64  ))..#define av_d
99b0: 6f 75 62 6c 65 28 4c 49 53 54 2c 56 41 4c 29 09  ouble(LIST,VAL).
99c0: 09 09 09 09 09 5c 0a 20 20 28 28 4c 49 53 54 29  .....\.  ((LIST)
99d0: 2e 66 61 70 74 72 20 3c 20 26 28 4c 49 53 54 29  .faptr < &(LIST)
99e0: 2e 66 61 72 67 73 5b 38 5d 09 09 09 09 09 5c 0a  .fargs[8].....\.
99f0: 20 20 20 3f 20 28 2a 28 4c 49 53 54 29 2e 66 61     ? (*(LIST).fa
9a00: 70 74 72 20 3d 20 28 64 6f 75 62 6c 65 29 28 56  ptr = (double)(V
9a10: 41 4c 29 2c 09 09 09 09 09 5c 0a 20 20 20 20 20  AL),.....\.     
9a20: 20 28 4c 49 53 54 29 2e 66 61 70 74 72 2b 2b 2c   (LIST).faptr++,
9a30: 09 09 09 09 09 09 09 5c 0a 20 20 20 20 20 20 30  .......\.      0
9a40: 29 09 09 09 09 09 09 09 09 5c 0a 20 20 20 3a 20  )........\.   : 
9a50: 28 28 4c 49 53 54 29 2e 61 70 74 72 20 3e 3d 20  ((LIST).aptr >= 
9a60: 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29 09  __av_eptr(LIST).
9a70: 09 09 09 09 5c 0a 20 20 20 20 20 20 3f 20 2d 31  ....\.      ? -1
9a80: 20 3a 20 28 28 2a 28 64 6f 75 62 6c 65 2a 29 28   : ((*(double*)(
9a90: 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 28 64 6f  LIST).aptr = (do
9aa0: 75 62 6c 65 29 28 56 41 4c 29 29 2c 09 09 09 5c  uble)(VAL)),...\
9ab0: 0a 09 20 20 20 20 20 20 28 4c 49 53 54 29 2e 61  ..      (LIST).a
9ac0: 70 74 72 2b 2b 2c 09 09 09 09 09 09 5c 0a 09 20  ptr++,......\.. 
9ad0: 20 20 20 20 20 30 29 29 29 0a 0a 23 65 6e 64 69       0)))..#endi
9ae0: 66 0a 0a 2f 2a 0a 20 2a 20 73 74 72 75 63 74 75  f../*. * structu
9af0: 72 65 20 61 72 67 75 6d 65 6e 74 20 74 79 70 65  re argument type
9b00: 73 0a 20 2a 2f 0a 0a 23 64 65 66 69 6e 65 20 61  s. */..#define a
9b10: 76 5f 73 74 72 75 63 74 28 4c 49 53 54 2c 54 59  v_struct(LIST,TY
9b20: 50 45 2c 56 41 4c 29 09 09 09 09 09 5c 0a 20 20  PE,VAL).....\.  
9b30: 5f 5f 61 76 5f 73 74 72 75 63 74 28 4c 49 53 54  __av_struct(LIST
9b40: 2c 54 59 50 45 2c 73 69 7a 65 6f 66 28 54 59 50  ,TYPE,sizeof(TYP
9b50: 45 29 2c 5f 5f 41 56 5f 61 6c 69 67 6e 6f 66 28  E),__AV_alignof(
9b60: 54 59 50 45 29 2c 5f 5f 61 76 5f 73 74 72 75 63  TYPE),__av_struc
9b70: 74 5f 61 73 73 69 67 6e 2c 56 41 4c 29 0a 23 64  t_assign,VAL).#d
9b80: 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 72 75 63  efine __av_struc
9b90: 74 5f 61 73 73 69 67 6e 28 54 59 50 45 2c 54 59  t_assign(TYPE,TY
9ba0: 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49  PE_SIZE,TYPE_ALI
9bb0: 47 4e 2c 50 4c 41 43 45 2c 56 41 4c 29 09 09 5c  GN,PLACE,VAL)..\
9bc0: 0a 20 20 2a 28 54 59 50 45 2a 29 28 50 4c 41 43  .  *(TYPE*)(PLAC
9bd0: 45 29 20 3d 20 28 56 41 4c 29 0a 2f 2a 20 5f 61  E) = (VAL)./* _a
9be0: 76 5f 73 74 72 75 63 74 28 29 20 69 73 20 6c 69  v_struct() is li
9bf0: 6b 65 20 61 76 5f 73 74 72 75 63 74 28 29 2c 20  ke av_struct(), 
9c00: 65 78 63 65 70 74 20 74 68 61 74 20 79 6f 75 20  except that you 
9c10: 70 61 73 73 20 74 68 65 20 74 79 70 65 27 73 20  pass the type's 
9c20: 73 69 7a 65 20 61 6e 64 20 61 6c 69 67 6e 6d 65  size and alignme
9c30: 6e 74 0a 20 2a 20 61 6e 64 20 74 68 65 20 76 61  nt. * and the va
9c40: 6c 75 65 27 73 20 61 64 64 72 65 73 73 20 69 6e  lue's address in
9c50: 73 74 65 61 64 20 6f 66 20 74 68 65 20 74 79 70  stead of the typ
9c60: 65 20 61 6e 64 20 74 68 65 20 76 61 6c 75 65 20  e and the value 
9c70: 74 68 65 6d 73 65 6c 76 65 73 2e 0a 20 2a 2f 0a  themselves.. */.
9c80: 23 64 65 66 69 6e 65 20 5f 61 76 5f 73 74 72 75  #define _av_stru
9c90: 63 74 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a  ct(LIST,TYPE_SIZ
9ca0: 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 56 41 4c  E,TYPE_ALIGN,VAL
9cb0: 5f 41 44 44 52 29 09 09 09 5c 0a 20 20 5f 5f 61  _ADDR)...\.  __a
9cc0: 76 5f 73 74 72 75 63 74 28 4c 49 53 54 2c 75 6e  v_struct(LIST,un
9cd0: 6b 6e 6f 77 6e 2c 54 59 50 45 5f 53 49 5a 45 2c  known,TYPE_SIZE,
9ce0: 54 59 50 45 5f 41 4c 49 47 4e 2c 5f 5f 61 76 5f  TYPE_ALIGN,__av_
9cf0: 73 74 72 75 63 74 5f 63 6f 70 79 2c 56 41 4c 5f  struct_copy,VAL_
9d00: 41 44 44 52 29 0a 23 64 65 66 69 6e 65 20 5f 5f  ADDR).#define __
9d10: 61 76 5f 73 74 72 75 63 74 5f 63 6f 70 79 28 54  av_struct_copy(T
9d20: 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59  YPE,TYPE_SIZE,TY
9d30: 50 45 5f 41 4c 49 47 4e 2c 50 4c 41 43 45 2c 56  PE_ALIGN,PLACE,V
9d40: 41 4c 5f 41 44 44 52 29 09 5c 0a 20 20 5f 5f 73  AL_ADDR).\.  __s
9d50: 74 72 75 63 74 63 70 79 28 50 4c 41 43 45 2c 56  tructcpy(PLACE,V
9d60: 41 4c 5f 41 44 44 52 2c 54 59 50 45 5f 53 49 5a  AL_ADDR,TYPE_SIZ
9d70: 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29 0a 2f 2a  E,TYPE_ALIGN)./*
9d80: 20 53 74 72 75 63 74 75 72 65 20 61 72 67 75 6d   Structure argum
9d90: 65 6e 74 20 61 6c 69 67 6e 6d 65 6e 74 2e 20 2a  ent alignment. *
9da0: 2f 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  /.#if defined(__
9db0: 69 33 38 36 5f 5f 29 20 26 26 20 64 65 66 69 6e  i386__) && defin
9dc0: 65 64 28 5f 4d 53 43 5f 56 45 52 29 0a 2f 2a 20  ed(_MSC_VER)./* 
9dd0: 49 6e 20 4d 53 56 43 2c 20 64 6f 75 62 6c 65 73  In MSVC, doubles
9de0: 20 69 6e 73 69 64 65 20 73 74 72 75 63 74 75 72   inside structur
9df0: 65 73 20 68 61 76 65 20 61 6c 69 67 6e 6d 65 6e  es have alignmen
9e00: 74 20 38 2c 20 69 2e 65 2e 0a 20 2a 20 5f 5f 41  t 8, i.e.. * __A
9e10: 56 5f 61 6c 69 67 6e 6f 66 28 64 6f 75 62 6c 65  V_alignof(double
9e20: 29 20 3d 20 38 2c 20 62 75 74 20 64 6f 75 62 6c  ) = 8, but doubl
9e30: 65 73 20 28 61 6e 64 20 61 6c 73 6f 20 73 74 72  es (and also str
9e40: 75 63 74 75 72 65 73 20 63 6f 6e 74 61 69 6e 69  uctures containi
9e50: 6e 67 0a 20 2a 20 64 6f 75 62 6c 65 73 29 20 61  ng. * doubles) a
9e60: 72 65 20 70 61 73 73 65 64 20 6f 6e 20 74 68 65  re passed on the
9e70: 20 73 74 61 63 6b 20 77 69 74 68 20 61 6c 69 67   stack with alig
9e80: 6e 6d 65 6e 74 20 34 2e 20 4c 6f 6f 6b 73 20 72  nment 4. Looks r
9e90: 65 61 6c 6c 79 20 77 65 69 72 64 2e 0a 20 2a 2f  eally weird.. */
9ea0: 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74  .#define __av_st
9eb0: 72 75 63 74 5f 61 6c 69 67 6e 6d 65 6e 74 28 54  ruct_alignment(T
9ec0: 59 50 45 5f 41 4c 49 47 4e 29 20 20 5c 0a 20 20  YPE_ALIGN)  \.  
9ed0: 28 28 54 59 50 45 5f 41 4c 49 47 4e 29 20 3c 3d  ((TYPE_ALIGN) <=
9ee0: 20 34 20 3f 20 28 54 59 50 45 5f 41 4c 49 47 4e   4 ? (TYPE_ALIGN
9ef0: 29 20 3a 20 34 29 0a 23 65 6c 73 65 0a 23 64 65  ) : 4).#else.#de
9f00: 66 69 6e 65 20 5f 5f 61 76 5f 73 74 72 75 63 74  fine __av_struct
9f10: 5f 61 6c 69 67 6e 6d 65 6e 74 28 54 59 50 45 5f  _alignment(TYPE_
9f20: 41 4c 49 47 4e 29 20 20 5c 0a 20 20 28 54 59 50  ALIGN)  \.  (TYP
9f30: 45 5f 41 4c 49 47 4e 29 0a 23 65 6e 64 69 66 0a  E_ALIGN).#endif.
9f40: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 69 33  #if defined(__i3
9f50: 38 36 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  86__) || defined
9f60: 28 5f 5f 6d 69 70 73 5f 5f 29 20 7c 7c 20 64 65  (__mips__) || de
9f70: 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f  fined(__mipsn32_
9f80: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  _) || defined(__
9f90: 6d 69 70 73 36 34 5f 5f 29 20 7c 7c 20 64 65 66  mips64__) || def
9fa0: 69 6e 65 64 28 5f 5f 61 6c 70 68 61 5f 5f 29 20  ined(__alpha__) 
9fb0: 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f 72 73  || (defined(__rs
9fc0: 36 30 30 30 5f 5f 29 20 26 26 20 28 64 65 66 69  6000__) && (defi
9fd0: 6e 65 64 28 5f 41 49 58 29 20 7c 7c 20 28 64 65  ned(_AIX) || (de
9fe0: 66 69 6e 65 64 28 5f 5f 4d 41 43 48 5f 5f 29 20  fined(__MACH__) 
9ff0: 26 26 20 64 65 66 69 6e 65 64 28 5f 5f 41 50 50  && defined(__APP
a000: 4c 45 5f 5f 29 29 29 29 20 7c 7c 20 64 65 66 69  LE__)))) || defi
a010: 6e 65 64 28 5f 5f 6d 38 38 6b 5f 5f 29 20 7c 7c  ned(__m88k__) ||
a020: 20 64 65 66 69 6e 65 64 28 5f 5f 69 61 36 34 5f   defined(__ia64_
a030: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  _) || defined(__
a040: 73 33 39 30 5f 5f 29 0a 2f 2a 20 53 74 72 75 63  s390__)./* Struc
a050: 74 75 72 65 73 20 61 72 65 20 70 61 73 73 65 64  tures are passed
a060: 20 61 73 20 66 75 6c 6c 79 20 61 6c 69 67 6e 65   as fully aligne
a070: 64 20 73 74 72 75 63 74 75 72 65 73 20 6f 6e 20  d structures on 
a080: 74 68 65 20 61 72 67 20 73 74 61 63 6b 2e 0a 20  the arg stack.. 
a090: 2a 20 57 65 20 61 6c 69 67 6e 20 74 68 65 20 61  * We align the a
a0a0: 70 74 72 2c 20 73 74 6f 72 65 20 74 68 65 20 73  ptr, store the s
a0b0: 74 72 75 63 74 75 72 65 2c 20 74 68 65 6e 20 66  tructure, then f
a0c0: 69 6c 6c 20 74 6f 20 77 6f 72 64 20 61 6c 69 67  ill to word alig
a0d0: 6e 6d 65 6e 74 2e 0a 20 2a 20 53 69 6e 67 6c 65  nment.. * Single
a0e0: 2d 73 6d 61 6c 6c 2d 69 6e 74 65 67 65 72 20 73  -small-integer s
a0f0: 74 72 75 63 74 75 72 65 73 20 61 72 65 20 4e 4f  tructures are NO
a100: 54 20 70 72 6f 6d 6f 74 65 64 20 74 6f 20 69 6e  T promoted to in
a110: 74 65 67 65 72 73 20 61 6e 64 20 68 61 76 65 0a  tegers and have.
a120: 20 2a 20 64 69 66 66 65 72 65 6e 74 20 61 6c 69   * different ali
a130: 67 6e 6d 65 6e 74 2e 0a 20 2a 2f 0a 2f 2a 20 6c  gnment.. */./* l
a140: 69 74 74 6c 65 20 65 6e 64 69 61 6e 20 2d 3e 20  ittle endian -> 
a150: 73 6d 61 6c 6c 20 73 74 72 75 63 74 75 72 65 73  small structures
a160: 20 3c 20 31 20 77 6f 72 64 20 61 72 65 20 61 64   < 1 word are ad
a170: 6a 75 73 74 65 64 20 74 6f 20 74 68 65 20 6c 65  justed to the le
a180: 66 74 20 2a 2f 0a 23 69 66 20 64 65 66 69 6e 65  ft */.#if define
a190: 64 28 5f 5f 69 33 38 36 5f 5f 29 20 7c 7c 20 64  d(__i386__) || d
a1a0: 65 66 69 6e 65 64 28 5f 5f 61 6c 70 68 61 5f 5f  efined(__alpha__
a1b0: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 78  ) || defined(__x
a1c0: 38 36 5f 36 34 5f 5f 29 0a 23 64 65 66 69 6e 65  86_64__).#define
a1d0: 20 5f 5f 61 76 5f 73 74 72 75 63 74 28 4c 49 53   __av_struct(LIS
a1e0: 54 2c 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45  T,TYPE,TYPE_SIZE
a1f0: 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49  ,TYPE_ALIGN,ASSI
a200: 47 4e 2c 56 41 4c 29 09 09 5c 0a 20 20 28 28 28  GN,VAL)..\.  (((
a210: 4c 49 53 54 29 2e 61 70 74 72 20 3d 09 09 09 09  LIST).aptr =....
a220: 09 09 09 5c 0a 20 20 20 20 28 5f 5f 61 76 77 6f  ...\.    (__avwo
a230: 72 64 2a 29 28 28 28 5f 5f 61 76 77 6f 72 64 29  rd*)(((__avword)
a240: 28 4c 49 53 54 29 2e 61 70 74 72 2b 28 54 59 50  (LIST).aptr+(TYP
a250: 45 5f 53 49 5a 45 29 2b 5f 5f 61 76 5f 73 74 72  E_SIZE)+__av_str
a260: 75 63 74 5f 61 6c 69 67 6e 6d 65 6e 74 28 54 59  uct_alignment(TY
a270: 50 45 5f 41 4c 49 47 4e 29 2d 31 29 20 26 20 2d  PE_ALIGN)-1) & -
a280: 28 6c 6f 6e 67 29 5f 5f 61 76 5f 73 74 72 75 63  (long)__av_struc
a290: 74 5f 61 6c 69 67 6e 6d 65 6e 74 28 54 59 50 45  t_alignment(TYPE
a2a0: 5f 41 4c 49 47 4e 29 29 29 5c 0a 20 20 20 3e 20  _ALIGN)))\.   > 
a2b0: 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29 09  __av_eptr(LIST).
a2c0: 09 09 09 09 09 09 5c 0a 20 20 20 3f 20 2d 31 20  ......\.   ? -1 
a2d0: 3a 20 28 41 53 53 49 47 4e 28 54 59 50 45 2c 54  : (ASSIGN(TYPE,T
a2e0: 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c  YPE_SIZE,TYPE_AL
a2f0: 49 47 4e 2c 28 76 6f 69 64 2a 29 28 28 5f 5f 61  IGN,(void*)((__a
a300: 76 77 6f 72 64 29 28 4c 49 53 54 29 2e 61 70 74  vword)(LIST).apt
a310: 72 2d 28 54 59 50 45 5f 53 49 5a 45 29 29 2c 56  r-(TYPE_SIZE)),V
a320: 41 4c 29 2c 5c 0a 09 20 20 20 28 4c 49 53 54 29  AL),\..   (LIST)
a330: 2e 61 70 74 72 20 3d 20 28 5f 5f 61 76 77 6f 72  .aptr = (__avwor
a340: 64 2a 29 28 28 28 5f 5f 61 76 77 6f 72 64 29 28  d*)(((__avword)(
a350: 4c 49 53 54 29 2e 61 70 74 72 2b 73 69 7a 65 6f  LIST).aptr+sizeo
a360: 66 28 5f 5f 61 76 77 6f 72 64 29 2d 31 29 20 26  f(__avword)-1) &
a370: 20 2d 28 6c 6f 6e 67 29 73 69 7a 65 6f 66 28 5f   -(long)sizeof(_
a380: 5f 61 76 77 6f 72 64 29 29 2c 5c 0a 09 20 20 20  _avword)),\..   
a390: 30 29 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64  0)).#endif.#if d
a3a0: 65 66 69 6e 65 64 28 5f 5f 69 61 36 34 5f 5f 29  efined(__ia64__)
a3b0: 0a 2f 2a 20 54 79 70 65 73 20 6c 61 72 67 65 72  ./* Types larger
a3c0: 20 74 68 61 6e 20 61 20 77 6f 72 64 20 68 61 76   than a word hav
a3d0: 65 20 32 2d 77 6f 72 64 20 61 6c 69 67 6e 6d 65  e 2-word alignme
a3e0: 6e 74 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f  nt. */.#define _
a3f0: 5f 61 76 5f 73 74 72 75 63 74 28 4c 49 53 54 2c  _av_struct(LIST,
a400: 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54  TYPE,TYPE_SIZE,T
a410: 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e  YPE_ALIGN,ASSIGN
a420: 2c 56 41 4c 29 09 09 5c 0a 20 20 28 28 4c 49 53  ,VAL)..\.  ((LIS
a430: 54 29 2e 61 70 74 72 20 3d 20 28 5f 5f 61 76 77  T).aptr = (__avw
a440: 6f 72 64 2a 29 28 28 28 5f 5f 61 76 77 6f 72 64  ord*)(((__avword
a450: 29 28 4c 49 53 54 29 2e 61 70 74 72 2b 28 54 59  )(LIST).aptr+(TY
a460: 50 45 5f 53 49 5a 45 29 2b 5f 5f 61 76 5f 73 74  PE_SIZE)+__av_st
a470: 72 75 63 74 5f 61 6c 69 67 6e 6d 65 6e 74 28 54  ruct_alignment(T
a480: 59 50 45 5f 41 4c 49 47 4e 29 2d 31 29 20 26 20  YPE_ALIGN)-1) & 
a490: 2d 28 6c 6f 6e 67 29 5f 5f 61 76 5f 73 74 72 75  -(long)__av_stru
a4a0: 63 74 5f 61 6c 69 67 6e 6d 65 6e 74 28 54 59 50  ct_alignment(TYP
a4b0: 45 5f 41 4c 49 47 4e 29 29 2c 20 5c 0a 20 20 20  E_ALIGN)), \.   
a4c0: 28 28 54 59 50 45 5f 53 49 5a 45 29 20 3e 20 73  ((TYPE_SIZE) > s
a4d0: 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 20  izeof(__avword) 
a4e0: 26 26 20 28 28 28 4c 49 53 54 29 2e 61 70 74 72  && (((LIST).aptr
a4f0: 20 2d 20 26 28 4c 49 53 54 29 2e 61 72 67 73 5b   - &(LIST).args[
a500: 30 5d 29 20 26 20 31 29 20 3f 20 2b 2b 28 4c 49  0]) & 1) ? ++(LI
a510: 53 54 29 2e 61 70 74 72 20 3a 20 30 29 2c 20 5c  ST).aptr : 0), \
a520: 0a 20 20 20 28 28 4c 49 53 54 29 2e 61 70 74 72  .   ((LIST).aptr
a530: 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53   > __av_eptr(LIS
a540: 54 29 09 09 09 09 09 5c 0a 20 20 20 20 3f 20 2d  T).....\.    ? -
a550: 31 20 3a 20 28 41 53 53 49 47 4e 28 54 59 50 45  1 : (ASSIGN(TYPE
a560: 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f  ,TYPE_SIZE,TYPE_
a570: 41 4c 49 47 4e 2c 28 76 6f 69 64 2a 29 28 28 5f  ALIGN,(void*)((_
a580: 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e 61  _avword)(LIST).a
a590: 70 74 72 2d 28 54 59 50 45 5f 53 49 5a 45 29 29  ptr-(TYPE_SIZE))
a5a0: 2c 56 41 4c 29 2c 5c 0a 09 20 20 20 20 28 4c 49  ,VAL),\..    (LI
a5b0: 53 54 29 2e 61 70 74 72 20 3d 20 28 5f 5f 61 76  ST).aptr = (__av
a5c0: 77 6f 72 64 2a 29 28 28 28 5f 5f 61 76 77 6f 72  word*)(((__avwor
a5d0: 64 29 28 4c 49 53 54 29 2e 61 70 74 72 2b 73 69  d)(LIST).aptr+si
a5e0: 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 2d 31  zeof(__avword)-1
a5f0: 29 20 26 20 2d 28 6c 6f 6e 67 29 73 69 7a 65 6f  ) & -(long)sizeo
a600: 66 28 5f 5f 61 76 77 6f 72 64 29 29 2c 5c 0a 09  f(__avword)),\..
a610: 20 20 20 20 30 29 29 29 0a 23 65 6e 64 69 66 0a      0))).#endif.
a620: 2f 2a 20 73 6d 61 6c 6c 20 73 74 72 75 63 74 75  /* small structu
a630: 72 65 73 20 3c 20 31 20 77 6f 72 64 20 61 72 65  res < 1 word are
a640: 20 61 64 6a 75 73 74 65 64 20 64 65 70 65 6e 64   adjusted depend
a650: 69 6e 67 20 6f 6e 20 63 6f 6d 70 69 6c 65 72 20  ing on compiler 
a660: 2a 2f 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f  */.#if defined(_
a670: 5f 6d 69 70 73 5f 5f 29 20 26 26 20 21 64 65 66  _mips__) && !def
a680: 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f  ined(__mipsn32__
a690: 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73  ).#define __av_s
a6a0: 74 72 75 63 74 5f 6c 65 66 74 61 64 6a 75 73 74  truct_leftadjust
a6b0: 65 64 28 4c 49 53 54 2c 54 59 50 45 2c 54 59 50  ed(LIST,TYPE,TYP
a6c0: 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47  E_SIZE,TYPE_ALIG
a6d0: 4e 2c 41 53 53 49 47 4e 2c 56 41 4c 29 20 5c 0a  N,ASSIGN,VAL) \.
a6e0: 20 20 28 28 28 4c 49 53 54 29 2e 61 70 74 72 20    (((LIST).aptr 
a6f0: 3d 09 09 09 09 09 09 09 5c 0a 20 20 20 20 28 5f  =.......\.    (_
a700: 5f 61 76 77 6f 72 64 2a 29 28 28 28 5f 5f 61 76  _avword*)(((__av
a710: 77 6f 72 64 29 28 4c 49 53 54 29 2e 61 70 74 72  word)(LIST).aptr
a720: 2b 28 54 59 50 45 5f 53 49 5a 45 29 2b 28 54 59  +(TYPE_SIZE)+(TY
a730: 50 45 5f 41 4c 49 47 4e 29 2d 31 29 20 26 20 2d  PE_ALIGN)-1) & -
a740: 28 6c 6f 6e 67 29 28 54 59 50 45 5f 41 4c 49 47  (long)(TYPE_ALIG
a750: 4e 29 29 29 5c 0a 20 20 20 3e 20 5f 5f 61 76 5f  N)))\.   > __av_
a760: 65 70 74 72 28 4c 49 53 54 29 09 09 09 09 09 09  eptr(LIST)......
a770: 09 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 28 2b 2b  .\.   ? -1 : (++
a780: 28 4c 49 53 54 29 2e 61 6e 75 6d 2c 09 09 09 09  (LIST).anum,....
a790: 09 09 5c 0a 09 20 20 20 41 53 53 49 47 4e 28 54  ..\..   ASSIGN(T
a7a0: 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59  YPE,TYPE_SIZE,TY
a7b0: 50 45 5f 41 4c 49 47 4e 2c 28 76 6f 69 64 2a 29  PE_ALIGN,(void*)
a7c0: 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54  ((__avword)(LIST
a7d0: 29 2e 61 70 74 72 2d 28 54 59 50 45 5f 53 49 5a  ).aptr-(TYPE_SIZ
a7e0: 45 29 29 2c 56 41 4c 29 2c 5c 0a 09 20 20 20 28  E)),VAL),\..   (
a7f0: 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 28 5f 5f  LIST).aptr = (__
a800: 61 76 77 6f 72 64 2a 29 28 28 28 5f 5f 61 76 77  avword*)(((__avw
a810: 6f 72 64 29 28 4c 49 53 54 29 2e 61 70 74 72 2b  ord)(LIST).aptr+
a820: 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29  sizeof(__avword)
a830: 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 73 69 7a  -1) & -(long)siz
a840: 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 29 2c 5c  eof(__avword)),\
a850: 0a 09 20 20 20 30 29 29 0a 23 64 65 66 69 6e 65  ..   0)).#define
a860: 20 5f 5f 61 76 5f 73 74 72 75 63 74 5f 72 69 67   __av_struct_rig
a870: 68 74 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c  htadjusted(LIST,
a880: 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54  TYPE,TYPE_SIZE,T
a890: 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e  YPE_ALIGN,ASSIGN
a8a0: 2c 56 41 4c 29 20 5c 0a 20 20 28 28 28 4c 49 53  ,VAL) \.  (((LIS
a8b0: 54 29 2e 61 70 74 72 20 3d 09 09 09 09 09 09 09  T).aptr =.......
a8c0: 5c 0a 20 20 20 20 28 5f 5f 61 76 77 6f 72 64 2a  \.    (__avword*
a8d0: 29 28 28 28 28 28 5f 5f 61 76 77 6f 72 64 29 28  )(((((__avword)(
a8e0: 4c 49 53 54 29 2e 61 70 74 72 2b 28 54 59 50 45  LIST).aptr+(TYPE
a8f0: 5f 53 49 5a 45 29 2b 28 54 59 50 45 5f 41 4c 49  _SIZE)+(TYPE_ALI
a900: 47 4e 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29  GN)-1) & -(long)
a910: 28 54 59 50 45 5f 41 4c 49 47 4e 29 29 5c 0a 09  (TYPE_ALIGN))\..
a920: 09 20 2b 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f  . +sizeof(__avwo
a930: 72 64 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29  rd)-1) & -(long)
a940: 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29  sizeof(__avword)
a950: 29 29 09 5c 0a 20 20 20 3e 20 5f 5f 61 76 5f 65  )).\.   > __av_e
a960: 70 74 72 28 4c 49 53 54 29 09 09 09 09 09 09 09  ptr(LIST).......
a970: 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 28 2b 2b 28  \.   ? -1 : (++(
a980: 4c 49 53 54 29 2e 61 6e 75 6d 2c 09 09 09 09 09  LIST).anum,.....
a990: 09 5c 0a 09 20 20 20 41 53 53 49 47 4e 28 54 59  .\..   ASSIGN(TY
a9a0: 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50  PE,TYPE_SIZE,TYP
a9b0: 45 5f 41 4c 49 47 4e 2c 28 76 6f 69 64 2a 29 28  E_ALIGN,(void*)(
a9c0: 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29  (__avword)(LIST)
a9d0: 2e 61 70 74 72 2d 28 54 59 50 45 5f 53 49 5a 45  .aptr-(TYPE_SIZE
a9e0: 29 29 2c 56 41 4c 29 2c 5c 0a 09 20 20 20 30 29  )),VAL),\..   0)
a9f0: 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73  ).#define __av_s
aa00: 74 72 75 63 74 28 4c 49 53 54 2c 54 59 50 45 2c  truct(LIST,TYPE,
aa10: 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41  TYPE_SIZE,TYPE_A
aa20: 4c 49 47 4e 2c 41 53 53 49 47 4e 2c 56 41 4c 29  LIGN,ASSIGN,VAL)
aa30: 09 09 5c 0a 20 20 28 28 4c 49 53 54 29 2e 66 6c  ..\.  ((LIST).fl
aa40: 61 67 73 20 26 20 5f 5f 41 56 5f 53 47 49 43 43  ags & __AV_SGICC
aa50: 5f 53 54 52 55 43 54 5f 41 52 47 53 09 09 09 09  _STRUCT_ARGS....
aa60: 5c 0a 20 20 20 3f 20 2f 2a 20 53 47 49 20 4d 49  \.   ? /* SGI MI
aa70: 50 53 20 63 63 20 70 61 73 73 65 73 20 73 6d 61  PS cc passes sma
aa80: 6c 6c 20 73 74 72 75 63 74 75 72 65 73 20 6c 65  ll structures le
aa90: 66 74 2d 61 64 6a 75 73 74 65 64 2c 20 61 6c 74  ft-adjusted, alt
aaa0: 68 6f 75 67 68 20 62 69 67 2d 65 6e 64 69 61 6e  hough big-endian
aab0: 21 20 2a 2f 5c 0a 20 20 20 20 20 5f 5f 61 76 5f  ! */\.     __av_
aac0: 73 74 72 75 63 74 5f 6c 65 66 74 61 64 6a 75 73  struct_leftadjus
aad0: 74 65 64 28 4c 49 53 54 2c 54 59 50 45 2c 54 59  ted(LIST,TYPE,TY
aae0: 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49  PE_SIZE,TYPE_ALI
aaf0: 47 4e 2c 41 53 53 49 47 4e 2c 56 41 4c 29 20 5c  GN,ASSIGN,VAL) \
ab00: 0a 20 20 20 3a 20 2f 2a 20 53 47 49 20 4d 49 50  .   : /* SGI MIP
ab10: 53 20 67 63 63 20 70 61 73 73 65 73 20 73 6d 61  S gcc passes sma
ab20: 6c 6c 20 73 74 72 75 63 74 75 72 65 73 20 77 69  ll structures wi
ab30: 74 68 69 6e 20 74 68 65 20 66 69 72 73 74 20 66  thin the first f
ab40: 6f 75 72 20 77 6f 72 64 73 20 6c 65 66 74 2d 09  our words left-.
ab50: 20 20 5c 0a 20 20 20 20 20 20 2a 20 61 64 6a 75    \.      * adju
ab60: 73 74 65 64 2c 20 66 6f 72 20 63 6f 6d 70 61 74  sted, for compat
ab70: 69 62 69 6c 69 74 79 20 77 69 74 68 20 63 63 2e  ibility with cc.
ab80: 20 42 75 74 20 73 74 72 75 63 74 75 72 65 73 20   But structures 
ab90: 69 6e 20 6d 65 6d 6f 72 79 20 61 72 65 20 70 61  in memory are pa
aba0: 73 73 65 64 20 20 5c 0a 20 20 20 20 20 20 2a 20  ssed  \.      * 
abb0: 72 69 67 68 74 2d 61 64 6a 75 73 74 65 64 21 21  right-adjusted!!
abc0: 20 53 65 65 20 67 63 63 2d 32 2e 36 2e 33 2f 63   See gcc-2.6.3/c
abd0: 6f 6e 66 69 67 2f 6d 69 70 73 2f 6d 69 70 73 2e  onfig/mips/mips.
abe0: 63 3a 66 75 6e 63 74 69 6f 6e 5f 61 72 67 28 29  c:function_arg()
abf0: 2e 09 20 20 5c 0a 20 20 20 20 20 20 2a 2f 09 09  ..  \.      */..
ac00: 09 09 09 09 09 09 09 20 20 5c 0a 20 20 20 20 20  .......  \.     
ac10: 28 28 4c 49 53 54 29 2e 61 70 74 72 20 3c 20 26  ((LIST).aptr < &
ac20: 28 4c 49 53 54 29 2e 61 72 67 73 5b 34 5d 09 09  (LIST).args[4]..
ac30: 09 09 09 09 5c 0a 20 20 20 20 20 20 3f 20 5f 5f  ....\.      ? __
ac40: 61 76 5f 73 74 72 75 63 74 5f 6c 65 66 74 61 64  av_struct_leftad
ac50: 6a 75 73 74 65 64 28 4c 49 53 54 2c 54 59 50 45  justed(LIST,TYPE
ac60: 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f  ,TYPE_SIZE,TYPE_
ac70: 41 4c 49 47 4e 2c 41 53 53 49 47 4e 2c 56 41 4c  ALIGN,ASSIGN,VAL
ac80: 29 09 5c 0a 20 20 20 20 20 20 3a 20 5f 5f 61 76  ).\.      : __av
ac90: 5f 73 74 72 75 63 74 5f 72 69 67 68 74 61 64 6a  _struct_rightadj
aca0: 75 73 74 65 64 28 4c 49 53 54 2c 54 59 50 45 2c  usted(LIST,TYPE,
acb0: 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41  TYPE_SIZE,TYPE_A
acc0: 4c 49 47 4e 2c 41 53 53 49 47 4e 2c 56 41 4c 29  LIGN,ASSIGN,VAL)
acd0: 29 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65  )).#endif.#if de
ace0: 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f  fined(__mipsn32_
acf0: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  _) || defined(__
ad00: 6d 69 70 73 36 34 5f 5f 29 0a 2f 2a 20 57 68 65  mips64__)./* Whe
ad10: 6e 20 61 20 73 74 72 75 63 74 75 72 65 20 69 73  n a structure is
ad20: 20 70 61 73 73 65 64 20 28 70 61 72 74 69 61 6c   passed (partial
ad30: 6c 79 29 20 69 6e 20 72 65 67 69 73 74 65 72 73  ly) in registers
ad40: 2c 20 69 74 20 69 73 20 70 61 73 73 65 64 20 69  , it is passed i
ad50: 6e 20 74 68 65 0a 20 2a 20 69 6e 74 65 67 65 72  n the. * integer
ad60: 20 72 65 67 69 73 74 65 72 73 2c 20 65 78 63 65   registers, exce
ad70: 70 74 20 74 68 61 74 20 64 6f 75 62 6c 65 73 20  pt that doubles 
ad80: 77 69 74 68 69 6e 20 74 68 65 20 73 74 72 75 63  within the struc
ad90: 74 75 72 65 20 61 72 65 20 70 61 73 73 65 64 20  ture are passed 
ada0: 69 6e 0a 20 2a 20 74 68 65 20 66 6c 6f 61 74 69  in. * the floati
adb0: 6e 67 20 70 6f 69 6e 74 20 72 65 67 69 73 74 65  ng point registe
adc0: 72 73 2e 20 49 6e 73 74 65 61 64 20 6f 66 20 64  rs. Instead of d
add0: 69 73 74 69 6e 67 75 69 73 68 69 6e 67 20 74 68  istinguishing th
ade0: 65 73 65 20 63 61 73 65 73 2c 20 77 65 0a 20 2a  ese cases, we. *
adf0: 20 61 6c 77 61 79 73 20 70 61 73 73 20 74 68 65   always pass the
ae00: 20 73 74 72 75 63 74 75 72 65 20 69 6e 20 62 6f   structure in bo
ae10: 74 68 20 74 68 65 20 69 6e 74 65 67 65 72 20 61  th the integer a
ae20: 6e 64 20 74 68 65 20 66 6c 6f 61 74 69 6e 67 20  nd the floating 
ae30: 70 6f 69 6e 74 0a 20 2a 20 72 65 67 69 73 74 65  point. * registe
ae40: 72 73 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20  rs.. */.#define 
ae50: 5f 5f 61 76 5f 73 74 72 75 63 74 5f 6c 65 66 74  __av_struct_left
ae60: 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c 54 59  adjusted(LIST,TY
ae70: 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50  PE,TYPE_SIZE,TYP
ae80: 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e 2c 56  E_ALIGN,ASSIGN,V
ae90: 41 4c 29 20 5c 0a 20 20 28 28 28 4c 49 53 54 29  AL) \.  (((LIST)
aea0: 2e 61 70 74 72 20 3d 09 09 09 09 09 09 09 5c 0a  .aptr =.......\.
aeb0: 20 20 20 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28      (__avword*)(
aec0: 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54  ((__avword)(LIST
aed0: 29 2e 61 70 74 72 2b 28 54 59 50 45 5f 53 49 5a  ).aptr+(TYPE_SIZ
aee0: 45 29 2b 28 54 59 50 45 5f 41 4c 49 47 4e 29 2d  E)+(TYPE_ALIGN)-
aef0: 31 29 20 26 20 2d 28 6c 6f 6e 67 29 28 54 59 50  1) & -(long)(TYP
af00: 45 5f 41 4c 49 47 4e 29 29 29 5c 0a 20 20 20 3e  E_ALIGN)))\.   >
af10: 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29   __av_eptr(LIST)
af20: 09 09 09 09 09 09 09 5c 0a 20 20 20 3f 20 2d 31  .......\.   ? -1
af30: 20 3a 20 28 41 53 53 49 47 4e 28 54 59 50 45 2c   : (ASSIGN(TYPE,
af40: 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41  TYPE_SIZE,TYPE_A
af50: 4c 49 47 4e 2c 28 76 6f 69 64 2a 29 28 28 5f 5f  LIGN,(void*)((__
af60: 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e 61 70  avword)(LIST).ap
af70: 74 72 2d 28 54 59 50 45 5f 53 49 5a 45 29 29 2c  tr-(TYPE_SIZE)),
af80: 56 41 4c 29 2c 5c 0a 09 20 20 20 28 4c 49 53 54  VAL),\..   (LIST
af90: 29 2e 61 70 74 72 20 3d 20 28 5f 5f 61 76 77 6f  ).aptr = (__avwo
afa0: 72 64 2a 29 28 28 28 5f 5f 61 76 77 6f 72 64 29  rd*)(((__avword)
afb0: 28 4c 49 53 54 29 2e 61 70 74 72 2b 73 69 7a 65  (LIST).aptr+size
afc0: 6f 66 28 5f 5f 61 76 77 6f 72 64 29 2d 31 29 20  of(__avword)-1) 
afd0: 26 20 2d 28 6c 6f 6e 67 29 73 69 7a 65 6f 66 28  & -(long)sizeof(
afe0: 5f 5f 61 76 77 6f 72 64 29 29 2c 5c 0a 09 20 20  __avword)),\..  
aff0: 20 28 28 4c 49 53 54 29 2e 61 6e 75 6d 20 3c 20   ((LIST).anum < 
b000: 38 20 26 26 20 28 28 4c 49 53 54 29 2e 64 61 72  8 && ((LIST).dar
b010: 67 5f 6d 61 73 6b 20 7c 3d 20 28 2d 31 20 3c 3c  g_mask |= (-1 <<
b020: 20 28 4c 49 53 54 29 2e 61 6e 75 6d 29 29 29 2c   (LIST).anum))),
b030: 20 5c 0a 09 20 20 20 28 4c 49 53 54 29 2e 61 6e   \..   (LIST).an
b040: 75 6d 20 2b 3d 20 28 28 28 28 28 54 59 50 45 5f  um += (((((TYPE_
b050: 53 49 5a 45 29 2b 28 54 59 50 45 5f 41 4c 49 47  SIZE)+(TYPE_ALIG
b060: 4e 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 28  N)-1) & -(long)(
b070: 54 59 50 45 5f 41 4c 49 47 4e 29 29 20 2b 20 73  TYPE_ALIGN)) + s
b080: 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 2d  izeof(__avword)-
b090: 31 29 20 26 20 2d 28 6c 6f 6e 67 29 73 69 7a 65  1) & -(long)size
b0a0: 6f 66 28 5f 5f 61 76 77 6f 72 64 29 29 2f 73 69  of(__avword))/si
b0b0: 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 2c 5c  zeof(__avword),\
b0c0: 0a 09 20 20 20 28 4c 49 53 54 29 2e 64 61 72 67  ..   (LIST).darg
b0d0: 5f 6d 61 73 6b 20 26 3d 20 28 31 20 3c 3c 20 28  _mask &= (1 << (
b0e0: 28 4c 49 53 54 29 2e 61 6e 75 6d 20 3c 20 38 20  (LIST).anum < 8 
b0f0: 3f 20 28 4c 49 53 54 29 2e 61 6e 75 6d 20 3a 20  ? (LIST).anum : 
b100: 38 29 29 20 2d 20 31 2c 20 5c 0a 09 20 20 20 30  8)) - 1, \..   0
b110: 29 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f  )).#define __av_
b120: 73 74 72 75 63 74 5f 72 69 67 68 74 61 64 6a 75  struct_rightadju
b130: 73 74 65 64 28 4c 49 53 54 2c 54 59 50 45 2c 54  sted(LIST,TYPE,T
b140: 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c  YPE_SIZE,TYPE_AL
b150: 49 47 4e 2c 41 53 53 49 47 4e 2c 56 41 4c 29 20  IGN,ASSIGN,VAL) 
b160: 5c 0a 20 20 28 28 28 4c 49 53 54 29 2e 61 70 74  \.  (((LIST).apt
b170: 72 20 3d 09 09 09 09 09 09 09 5c 0a 20 20 20 20  r =.......\.    
b180: 28 5f 5f 61 76 77 6f 72 64 2a 29 28 28 28 28 28  (__avword*)(((((
b190: 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e  __avword)(LIST).
b1a0: 61 70 74 72 2b 28 54 59 50 45 5f 53 49 5a 45 29  aptr+(TYPE_SIZE)
b1b0: 2b 28 54 59 50 45 5f 41 4c 49 47 4e 29 2d 31 29  +(TYPE_ALIGN)-1)
b1c0: 20 26 20 2d 28 6c 6f 6e 67 29 28 54 59 50 45 5f   & -(long)(TYPE_
b1d0: 41 4c 49 47 4e 29 29 5c 0a 09 09 20 2b 73 69 7a  ALIGN))\... +siz
b1e0: 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 2d 31 29  eof(__avword)-1)
b1f0: 20 26 20 2d 28 6c 6f 6e 67 29 73 69 7a 65 6f 66   & -(long)sizeof
b200: 28 5f 5f 61 76 77 6f 72 64 29 29 29 09 5c 0a 20  (__avword))).\. 
b210: 20 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49    > __av_eptr(LI
b220: 53 54 29 09 09 09 09 09 09 09 5c 0a 20 20 20 3f  ST).......\.   ?
b230: 20 2d 31 20 3a 20 28 41 53 53 49 47 4e 28 54 59   -1 : (ASSIGN(TY
b240: 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50  PE,TYPE_SIZE,TYP
b250: 45 5f 41 4c 49 47 4e 2c 28 76 6f 69 64 2a 29 28  E_ALIGN,(void*)(
b260: 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29  (__avword)(LIST)
b270: 2e 61 70 74 72 2d 28 54 59 50 45 5f 53 49 5a 45  .aptr-(TYPE_SIZE
b280: 29 29 2c 56 41 4c 29 2c 5c 0a 09 20 20 20 28 28  )),VAL),\..   ((
b290: 4c 49 53 54 29 2e 61 6e 75 6d 20 3c 20 38 20 26  LIST).anum < 8 &
b2a0: 26 20 28 28 4c 49 53 54 29 2e 64 61 72 67 5f 6d  & ((LIST).darg_m
b2b0: 61 73 6b 20 7c 3d 20 28 2d 31 20 3c 3c 20 28 4c  ask |= (-1 << (L
b2c0: 49 53 54 29 2e 61 6e 75 6d 29 29 29 2c 20 5c 0a  IST).anum))), \.
b2d0: 09 20 20 20 28 4c 49 53 54 29 2e 61 6e 75 6d 20  .   (LIST).anum 
b2e0: 2b 3d 20 28 28 28 28 28 54 59 50 45 5f 53 49 5a  += (((((TYPE_SIZ
b2f0: 45 29 2b 28 54 59 50 45 5f 41 4c 49 47 4e 29 2d  E)+(TYPE_ALIGN)-
b300: 31 29 20 26 20 2d 28 6c 6f 6e 67 29 28 54 59 50  1) & -(long)(TYP
b310: 45 5f 41 4c 49 47 4e 29 29 20 2b 20 73 69 7a 65  E_ALIGN)) + size
b320: 6f 66 28 5f 5f 61 76 77 6f 72 64 29 2d 31 29 20  of(__avword)-1) 
b330: 26 20 2d 28 6c 6f 6e 67 29 73 69 7a 65 6f 66 28  & -(long)sizeof(
b340: 5f 5f 61 76 77 6f 72 64 29 29 2f 73 69 7a 65 6f  __avword))/sizeo
b350: 66 28 5f 5f 61 76 77 6f 72 64 29 2c 5c 0a 09 20  f(__avword),\.. 
b360: 20 20 28 4c 49 53 54 29 2e 64 61 72 67 5f 6d 61    (LIST).darg_ma
b370: 73 6b 20 26 3d 20 28 31 20 3c 3c 20 28 28 4c 49  sk &= (1 << ((LI
b380: 53 54 29 2e 61 6e 75 6d 20 3c 20 38 20 3f 20 28  ST).anum < 8 ? (
b390: 4c 49 53 54 29 2e 61 6e 75 6d 20 3a 20 38 29 29  LIST).anum : 8))
b3a0: 20 2d 20 31 2c 20 5c 0a 09 20 20 20 30 29 29 0a   - 1, \..   0)).
b3b0: 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 72  #define __av_str
b3c0: 75 63 74 28 4c 49 53 54 2c 54 59 50 45 2c 54 59  uct(LIST,TYPE,TY
b3d0: 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49  PE_SIZE,TYPE_ALI
b3e0: 47 4e 2c 41 53 53 49 47 4e 2c 56 41 4c 29 09 09  GN,ASSIGN,VAL)..
b3f0: 5c 0a 20 20 28 28 4c 49 53 54 29 2e 66 6c 61 67  \.  ((LIST).flag
b400: 73 20 26 20 5f 5f 41 56 5f 53 47 49 43 43 5f 53  s & __AV_SGICC_S
b410: 54 52 55 43 54 5f 41 52 47 53 09 09 09 09 5c 0a  TRUCT_ARGS....\.
b420: 20 20 20 3f 20 2f 2a 20 53 47 49 20 4d 49 50 53     ? /* SGI MIPS
b430: 20 63 63 20 70 61 73 73 65 73 20 73 6d 61 6c 6c   cc passes small
b440: 20 73 74 72 75 63 74 75 72 65 73 20 6c 65 66 74   structures left
b450: 2d 61 64 6a 75 73 74 65 64 2c 20 61 6c 74 68 6f  -adjusted, altho
b460: 75 67 68 20 62 69 67 2d 65 6e 64 69 61 6e 21 20  ugh big-endian! 
b470: 2a 2f 5c 0a 20 20 20 20 20 5f 5f 61 76 5f 73 74  */\.     __av_st
b480: 72 75 63 74 5f 6c 65 66 74 61 64 6a 75 73 74 65  ruct_leftadjuste
b490: 64 28 4c 49 53 54 2c 54 59 50 45 2c 54 59 50 45  d(LIST,TYPE,TYPE
b4a0: 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e  _SIZE,TYPE_ALIGN
b4b0: 2c 41 53 53 49 47 4e 2c 56 41 4c 29 20 5c 0a 20  ,ASSIGN,VAL) \. 
b4c0: 20 20 3a 20 2f 2a 20 53 47 49 20 4d 49 50 53 20    : /* SGI MIPS 
b4d0: 67 63 63 20 70 61 73 73 65 73 20 73 6d 61 6c 6c  gcc passes small
b4e0: 20 73 74 72 75 63 74 75 72 65 73 20 72 69 67 68   structures righ
b4f0: 74 2d 61 64 6a 75 73 74 65 64 2e 20 2a 2f 09 09  t-adjusted. */..
b500: 5c 0a 20 20 20 20 20 5f 5f 61 76 5f 73 74 72 75  \.     __av_stru
b510: 63 74 5f 72 69 67 68 74 61 64 6a 75 73 74 65 64  ct_rightadjusted
b520: 28 4c 49 53 54 2c 54 59 50 45 2c 54 59 50 45 5f  (LIST,TYPE,TYPE_
b530: 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c  SIZE,TYPE_ALIGN,
b540: 41 53 53 49 47 4e 2c 56 41 4c 29 29 0a 23 65 6e  ASSIGN,VAL)).#en
b550: 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28  dif.#if defined(
b560: 5f 5f 72 73 36 30 30 30 5f 5f 29 0a 23 64 65 66  __rs6000__).#def
b570: 69 6e 65 20 5f 5f 61 76 5f 73 74 72 75 63 74 5f  ine __av_struct_
b580: 6c 65 66 74 61 64 6a 75 73 74 65 64 28 4c 49 53  leftadjusted(LIS
b590: 54 2c 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45  T,TYPE,TYPE_SIZE
b5a0: 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49  ,TYPE_ALIGN,ASSI
b5b0: 47 4e 2c 56 41 4c 29 5c 0a 20 20 28 28 28 4c 49  GN,VAL)\.  (((LI
b5c0: 53 54 29 2e 61 70 74 72 20 3d 09 09 09 09 09 09  ST).aptr =......
b5d0: 09 5c 0a 20 20 20 20 28 5f 5f 61 76 77 6f 72 64  .\.    (__avword
b5e0: 2a 29 28 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c  *)(((__avword)(L
b5f0: 49 53 54 29 2e 61 70 74 72 2b 28 54 59 50 45 5f  IST).aptr+(TYPE_
b600: 53 49 5a 45 29 2b 28 54 59 50 45 5f 41 4c 49 47  SIZE)+(TYPE_ALIG
b610: 4e 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 28  N)-1) & -(long)(
b620: 54 59 50 45 5f 41 4c 49 47 4e 29 29 29 5c 0a 20  TYPE_ALIGN)))\. 
b630: 20 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49    > __av_eptr(LI
b640: 53 54 29 09 09 09 09 09 09 09 5c 0a 20 20 20 3f  ST).......\.   ?
b650: 20 2d 31 20 3a 20 28 41 53 53 49 47 4e 28 54 59   -1 : (ASSIGN(TY
b660: 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50  PE,TYPE_SIZE,TYP
b670: 45 5f 41 4c 49 47 4e 2c 28 76 6f 69 64 2a 29 28  E_ALIGN,(void*)(
b680: 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29  (__avword)(LIST)
b690: 2e 61 70 74 72 2d 28 54 59 50 45 5f 53 49 5a 45  .aptr-(TYPE_SIZE
b6a0: 29 29 2c 56 41 4c 29 2c 5c 0a 09 20 20 20 28 4c  )),VAL),\..   (L
b6b0: 49 53 54 29 2e 61 70 74 72 20 3d 20 28 5f 5f 61  IST).aptr = (__a
b6c0: 76 77 6f 72 64 2a 29 28 28 28 5f 5f 61 76 77 6f  vword*)(((__avwo
b6d0: 72 64 29 28 4c 49 53 54 29 2e 61 70 74 72 2b 73  rd)(LIST).aptr+s
b6e0: 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 2d  izeof(__avword)-
b6f0: 31 29 20 26 20 2d 28 6c 6f 6e 67 29 73 69 7a 65  1) & -(long)size
b700: 6f 66 28 5f 5f 61 76 77 6f 72 64 29 29 2c 5c 0a  of(__avword)),\.
b710: 09 20 20 20 30 29 29 0a 23 64 65 66 69 6e 65 20  .   0)).#define 
b720: 5f 5f 61 76 5f 73 74 72 75 63 74 5f 72 69 67 68  __av_struct_righ
b730: 74 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c 54  tadjusted(LIST,T
b740: 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59  YPE,TYPE_SIZE,TY
b750: 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e 2c  PE_ALIGN,ASSIGN,
b760: 56 41 4c 29 5c 0a 20 20 28 28 28 4c 49 53 54 29  VAL)\.  (((LIST)
b770: 2e 61 70 74 72 20 3d 09 09 09 09 09 09 09 5c 0a  .aptr =.......\.
b780: 20 20 20 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28      (__avword*)(
b790: 28 28 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49  ((((__avword)(LI
b7a0: 53 54 29 2e 61 70 74 72 2b 28 54 59 50 45 5f 53  ST).aptr+(TYPE_S
b7b0: 49 5a 45 29 2b 28 54 59 50 45 5f 41 4c 49 47 4e  IZE)+(TYPE_ALIGN
b7c0: 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 28 54  )-1) & -(long)(T
b7d0: 59 50 45 5f 41 4c 49 47 4e 29 29 5c 0a 09 09 20  YPE_ALIGN))\... 
b7e0: 2b 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64  +sizeof(__avword
b7f0: 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 73 69  )-1) & -(long)si
b800: 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 29 29  zeof(__avword)))
b810: 09 5c 0a 20 20 20 3e 20 5f 5f 61 76 5f 65 70 74  .\.   > __av_ept
b820: 72 28 4c 49 53 54 29 09 09 09 09 09 09 09 5c 0a  r(LIST).......\.
b830: 20 20 20 3f 20 2d 31 20 3a 20 28 41 53 53 49 47     ? -1 : (ASSIG
b840: 4e 28 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45  N(TYPE,TYPE_SIZE
b850: 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 28 76 6f 69  ,TYPE_ALIGN,(voi
b860: 64 2a 29 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c  d*)((__avword)(L
b870: 49 53 54 29 2e 61 70 74 72 2d 28 54 59 50 45 5f  IST).aptr-(TYPE_
b880: 53 49 5a 45 29 29 2c 56 41 4c 29 2c 5c 0a 09 20  SIZE)),VAL),\.. 
b890: 20 20 30 29 29 0a 23 64 65 66 69 6e 65 20 5f 5f    0)).#define __
b8a0: 61 76 5f 73 74 72 75 63 74 28 4c 49 53 54 2c 54  av_struct(LIST,T
b8b0: 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59  YPE,TYPE_SIZE,TY
b8c0: 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e 2c  PE_ALIGN,ASSIGN,
b8d0: 56 41 4c 29 09 09 5c 0a 20 20 28 28 4c 49 53 54  VAL)..\.  ((LIST
b8e0: 29 2e 66 6c 61 67 73 20 26 20 5f 5f 41 56 5f 41  ).flags & __AV_A
b8f0: 49 58 43 43 5f 53 54 52 55 43 54 5f 41 52 47 53  IXCC_STRUCT_ARGS
b900: 09 09 09 09 5c 0a 20 20 20 3f 20 2f 2a 20 41 49  ....\.   ? /* AI
b910: 58 20 63 63 20 61 6e 64 20 78 6c 63 20 70 61 73  X cc and xlc pas
b920: 73 20 73 6d 61 6c 6c 20 73 74 72 75 63 74 75 72  s small structur
b930: 65 73 20 6c 65 66 74 2d 61 64 6a 75 73 74 65 64  es left-adjusted
b940: 2c 20 61 6c 74 68 6f 75 67 68 20 62 69 67 2d 65  , although big-e
b950: 6e 64 69 61 6e 21 20 2a 2f 5c 0a 20 20 20 20 20  ndian! */\.     
b960: 5f 5f 61 76 5f 73 74 72 75 63 74 5f 6c 65 66 74  __av_struct_left
b970: 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c 54 59  adjusted(LIST,TY
b980: 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50  PE,TYPE_SIZE,TYP
b990: 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e 2c 56  E_ALIGN,ASSIGN,V
b9a0: 41 4c 29 20 5c 0a 20 20 20 3a 20 2f 2a 20 67 63  AL) \.   : /* gc
b9b0: 63 20 70 61 73 73 65 73 20 73 6d 61 6c 6c 20 73  c passes small s
b9c0: 74 72 75 63 74 75 72 65 73 20 72 69 67 68 74 2d  tructures right-
b9d0: 61 64 6a 75 73 74 65 64 2e 20 2a 2f 09 09 09 5c  adjusted. */...\
b9e0: 0a 20 20 20 20 20 5f 5f 61 76 5f 73 74 72 75 63  .     __av_struc
b9f0: 74 5f 72 69 67 68 74 61 64 6a 75 73 74 65 64 28  t_rightadjusted(
ba00: 4c 49 53 54 2c 54 59 50 45 2c 54 59 50 45 5f 53  LIST,TYPE,TYPE_S
ba10: 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 41  IZE,TYPE_ALIGN,A
ba20: 53 53 49 47 4e 2c 56 41 4c 29 29 0a 23 65 6e 64  SSIGN,VAL)).#end
ba30: 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f  if.#if defined(_
ba40: 5f 73 33 39 30 5f 5f 29 0a 23 64 65 66 69 6e 65  _s390__).#define
ba50: 20 5f 5f 61 76 5f 73 74 72 75 63 74 5f 72 69 67   __av_struct_rig
ba60: 68 74 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c  htadjusted(LIST,
ba70: 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54  TYPE,TYPE_SIZE,T
ba80: 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e  YPE_ALIGN,ASSIGN
ba90: 2c 56 41 4c 29 5c 0a 20 20 28 28 28 4c 49 53 54  ,VAL)\.  (((LIST
baa0: 29 2e 61 70 74 72 20 3d 09 09 09 09 09 09 09 5c  ).aptr =.......\
bab0: 0a 20 20 20 20 28 5f 5f 61 76 77 6f 72 64 2a 29  .    (__avword*)
bac0: 28 28 28 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c  (((((__avword)(L
bad0: 49 53 54 29 2e 61 70 74 72 2b 28 54 59 50 45 5f  IST).aptr+(TYPE_
bae0: 53 49 5a 45 29 2b 28 54 59 50 45 5f 41 4c 49 47  SIZE)+(TYPE_ALIG
baf0: 4e 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 28  N)-1) & -(long)(
bb00: 54 59 50 45 5f 41 4c 49 47 4e 29 29 5c 0a 09 09  TYPE_ALIGN))\...
bb10: 20 2b 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72   +sizeof(__avwor
bb20: 64 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 73  d)-1) & -(long)s
bb30: 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 29  izeof(__avword))
bb40: 29 09 5c 0a 20 20 20 3e 20 5f 5f 61 76 5f 65 70  ).\.   > __av_ep
bb50: 74 72 28 4c 49 53 54 29 09 09 09 09 09 09 09 5c  tr(LIST).......\
bb60: 0a 20 20 20 3f 20 2d 31 20 3a 20 28 41 53 53 49  .   ? -1 : (ASSI
bb70: 47 4e 28 54 59 50 45 2c 54 59 50 45 5f 53 49 5a  GN(TYPE,TYPE_SIZ
bb80: 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 28 76 6f  E,TYPE_ALIGN,(vo
bb90: 69 64 2a 29 28 28 5f 5f 61 76 77 6f 72 64 29 28  id*)((__avword)(
bba0: 4c 49 53 54 29 2e 61 70 74 72 2d 28 54 59 50 45  LIST).aptr-(TYPE
bbb0: 5f 53 49 5a 45 29 29 2c 56 41 4c 29 2c 5c 0a 09  _SIZE)),VAL),\..
bbc0: 20 20 20 30 29 29 0a 23 64 65 66 69 6e 65 20 5f     0)).#define _
bbd0: 5f 61 76 5f 73 74 72 75 63 74 28 4c 49 53 54 2c  _av_struct(LIST,
bbe0: 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54  TYPE,TYPE_SIZE,T
bbf0: 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e  YPE_ALIGN,ASSIGN
bc00: 2c 56 41 4c 29 09 09 5c 0a 28 28 54 59 50 45 5f  ,VAL)..\.((TYPE_
bc10: 53 49 5a 45 29 20 21 3d 20 31 20 26 26 20 28 54  SIZE) != 1 && (T
bc20: 59 50 45 5f 53 49 5a 45 29 20 21 3d 20 32 20 26  YPE_SIZE) != 2 &
bc30: 26 20 28 54 59 50 45 5f 53 49 5a 45 29 20 21 3d  & (TYPE_SIZE) !=
bc40: 20 34 20 26 26 20 28 54 59 50 45 5f 53 49 5a 45   4 && (TYPE_SIZE
bc50: 29 20 21 3d 20 38 20 5c 0a 20 3f 20 28 2b 2b 28  ) != 8 \. ? (++(
bc60: 4c 49 53 54 29 2e 61 70 74 72 09 09 09 09 09 09  LIST).aptr......
bc70: 09 5c 0a 20 20 20 20 3e 20 28 28 4c 49 53 54 29  .\.    > ((LIST)
bc80: 2e 65 70 74 72 20 3d 20 28 5f 5f 61 76 77 6f 72  .eptr = (__avwor
bc90: 64 2a 29 28 28 6c 6f 6e 67 29 28 4c 49 53 54 29  d*)((long)(LIST)
bca0: 2e 65 70 74 72 20 2d 20 28 28 28 54 59 50 45 5f  .eptr - (((TYPE_
bcb0: 53 49 5a 45 29 2b 37 29 26 2d 38 29 29 29 5c 0a  SIZE)+7)&-8)))\.
bcc0: 20 20 20 20 3f 20 2d 31 20 3a 09 09 09 09 09 09      ? -1 :......
bcd0: 09 09 5c 0a 20 20 20 20 28 41 53 53 49 47 4e 28  ..\.    (ASSIGN(
bce0: 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54  TYPE,TYPE_SIZE,T
bcf0: 59 50 45 5f 41 4c 49 47 4e 2c 28 76 6f 69 64 2a  YPE_ALIGN,(void*
bd00: 29 28 4c 49 53 54 29 2e 65 70 74 72 2c 56 41 4c  )(LIST).eptr,VAL
bd10: 29 2c 09 09 5c 0a 20 20 20 20 20 28 4c 49 53 54  ),..\.     (LIST
bd20: 29 2e 61 70 74 72 5b 2d 31 5d 20 3d 20 28 5f 5f  ).aptr[-1] = (__
bd30: 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e 65 70  avword)(LIST).ep
bd40: 74 72 2c 09 09 09 09 5c 0a 20 20 20 20 20 30 29  tr,....\.     0)
bd50: 29 09 09 09 09 09 09 09 09 5c 0a 20 3a 20 28 28  )........\. : ((
bd60: 28 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 38  (TYPE_SIZE) == 8
bd70: 20 26 26 20 28 4c 49 53 54 29 2e 61 70 74 72 20   && (LIST).aptr 
bd80: 2d 20 28 4c 49 53 54 29 2e 61 72 67 73 20 2d 20  - (LIST).args - 
bd90: 28 4c 49 53 54 29 2e 66 61 72 67 77 6f 72 64 73  (LIST).fargwords
bda0: 20 3d 3d 20 34 20 3f 20 2b 2b 28 4c 49 53 54 29   == 4 ? ++(LIST)
bdb0: 2e 61 70 74 72 2c 30 20 3a 20 30 29 2c 20 5c 0a  .aptr,0 : 0), \.
bdc0: 20 20 20 20 5f 5f 61 76 5f 73 74 72 75 63 74 5f      __av_struct_
bdd0: 72 69 67 68 74 61 64 6a 75 73 74 65 64 28 4c 49  rightadjusted(LI
bde0: 53 54 2c 54 59 50 45 2c 54 59 50 45 5f 53 49 5a  ST,TYPE,TYPE_SIZ
bdf0: 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53  E,TYPE_ALIGN,ASS
be00: 49 47 4e 2c 56 41 4c 29 29 29 0a 23 65 6e 64 69  IGN,VAL))).#endi
be10: 66 0a 2f 2a 20 62 69 67 20 65 6e 64 69 61 6e 20  f./* big endian 
be20: 2d 3e 20 73 6d 61 6c 6c 20 73 74 72 75 63 74 75  -> small structu
be30: 72 65 73 20 3c 20 31 20 77 6f 72 64 20 61 72 65  res < 1 word are
be40: 20 61 64 6a 75 73 74 65 64 20 74 6f 20 74 68 65   adjusted to the
be50: 20 72 69 67 68 74 20 2a 2f 0a 23 69 66 20 64 65   right */.#if de
be60: 66 69 6e 65 64 28 5f 5f 6d 38 38 6b 5f 5f 29 0a  fined(__m88k__).
be70: 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 72  #define __av_str
be80: 75 63 74 28 4c 49 53 54 2c 54 59 50 45 2c 54 59  uct(LIST,TYPE,TY
be90: 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49  PE_SIZE,TYPE_ALI
bea0: 47 4e 2c 41 53 53 49 47 4e 2c 56 41 4c 29 09 09  GN,ASSIGN,VAL)..
beb0: 5c 0a 20 20 28 28 28 4c 49 53 54 29 2e 61 70 74  \.  (((LIST).apt
bec0: 72 20 3d 09 09 09 09 09 09 09 5c 0a 20 20 20 20  r =.......\.    
bed0: 28 5f 5f 61 76 77 6f 72 64 2a 29 28 28 28 28 28  (__avword*)(((((
bee0: 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e  __avword)(LIST).
bef0: 61 70 74 72 2b 28 54 59 50 45 5f 53 49 5a 45 29  aptr+(TYPE_SIZE)
bf00: 2b 28 54 59 50 45 5f 41 4c 49 47 4e 29 2d 31 29  +(TYPE_ALIGN)-1)
bf10: 20 26 20 2d 28 6c 6f 6e 67 29 28 54 59 50 45 5f   & -(long)(TYPE_
bf20: 41 4c 49 47 4e 29 29 5c 0a 09 09 20 2b 73 69 7a  ALIGN))\... +siz
bf30: 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 2d 31 29  eof(__avword)-1)
bf40: 20 26 20 2d 28 6c 6f 6e 67 29 73 69 7a 65 6f 66   & -(long)sizeof
bf50: 28 5f 5f 61 76 77 6f 72 64 29 29 29 09 5c 0a 20  (__avword))).\. 
bf60: 20 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49    > __av_eptr(LI
bf70: 53 54 29 09 09 09 09 09 09 09 5c 0a 20 20 20 3f  ST).......\.   ?
bf80: 20 2d 31 20 3a 20 28 41 53 53 49 47 4e 28 54 59   -1 : (ASSIGN(TY
bf90: 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50  PE,TYPE_SIZE,TYP
bfa0: 45 5f 41 4c 49 47 4e 2c 28 76 6f 69 64 2a 29 28  E_ALIGN,(void*)(
bfb0: 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29  (__avword)(LIST)
bfc0: 2e 61 70 74 72 2d 28 54 59 50 45 5f 53 49 5a 45  .aptr-(TYPE_SIZE
bfd0: 29 29 2c 56 41 4c 29 2c 5c 0a 09 20 20 20 30 29  )),VAL),\..   0)
bfe0: 29 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69 66 0a  ).#endif.#endif.
bff0: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 36  #if defined(__m6
c000: 38 6b 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  8k__) || defined
c010: 28 5f 5f 61 72 6d 5f 5f 29 20 7c 7c 20 64 65 66  (__arm__) || def
c020: 69 6e 65 64 28 5f 5f 63 6f 6e 76 65 78 5f 5f 29  ined(__convex__)
c030: 0a 2f 2a 20 53 74 72 75 63 74 75 72 65 73 20 61  ./* Structures a
c040: 72 65 20 70 61 73 73 65 64 20 61 73 20 65 6d 62  re passed as emb
c050: 65 64 64 65 64 20 63 6f 70 69 65 73 20 6f 6e 20  edded copies on 
c060: 74 68 65 20 61 72 67 20 73 74 61 63 6b 2e 0a 20  the arg stack.. 
c070: 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f  */.#define __av_
c080: 73 74 72 75 63 74 28 4c 49 53 54 2c 54 59 50 45  struct(LIST,TYPE
c090: 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f  ,TYPE_SIZE,TYPE_
c0a0: 41 4c 49 47 4e 2c 41 53 53 49 47 4e 2c 56 41 4c  ALIGN,ASSIGN,VAL
c0b0: 29 09 09 5c 0a 20 20 28 28 28 4c 49 53 54 29 2e  )..\.  (((LIST).
c0c0: 61 70 74 72 20 3d 20 28 5f 5f 61 76 77 6f 72 64  aptr = (__avword
c0d0: 2a 29 28 28 28 6c 6f 6e 67 29 28 4c 49 53 54 29  *)(((long)(LIST)
c0e0: 2e 61 70 74 72 2b 28 54 59 50 45 5f 53 49 5a 45  .aptr+(TYPE_SIZE
c0f0: 29 2b 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72  )+sizeof(__avwor
c100: 64 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 73  d)-1) & -(long)s
c110: 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 29  izeof(__avword))
c120: 29 20 5c 0a 20 20 20 20 3e 20 5f 5f 61 76 5f 65  ) \.    > __av_e
c130: 70 74 72 28 4c 49 53 54 29 09 09 09 09 09 09 09  ptr(LIST).......
c140: 5c 0a 20 20 20 20 3f 20 2d 31 20 3a 20 28 41 53  \.    ? -1 : (AS
c150: 53 49 47 4e 28 54 59 50 45 2c 54 59 50 45 5f 53  SIGN(TYPE,TYPE_S
c160: 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 28  IZE,TYPE_ALIGN,(
c170: 76 6f 69 64 2a 29 28 28 5f 5f 61 76 77 6f 72 64  void*)((__avword
c180: 29 28 4c 49 53 54 29 2e 61 70 74 72 2d 28 54 59  )(LIST).aptr-(TY
c190: 50 45 5f 53 49 5a 45 29 29 2c 56 41 4c 29 2c 5c  PE_SIZE)),VAL),\
c1a0: 0a 09 20 20 20 20 30 29 29 0a 23 65 6e 64 69 66  ..    0)).#endif
c1b0: 0a 23 69 66 20 28 64 65 66 69 6e 65 64 28 5f 5f  .#if (defined(__
c1c0: 73 70 61 72 63 5f 5f 29 20 26 26 20 21 64 65 66  sparc__) && !def
c1d0: 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f  ined(__sparc64__
c1e0: 29 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f  )) || (defined(_
c1f0: 5f 72 73 36 30 30 30 5f 5f 29 20 26 26 20 21 28  _rs6000__) && !(
c200: 64 65 66 69 6e 65 64 28 5f 41 49 58 29 20 7c 7c  defined(_AIX) ||
c210: 20 28 64 65 66 69 6e 65 64 28 5f 5f 4d 41 43 48   (defined(__MACH
c220: 5f 5f 29 20 26 26 20 64 65 66 69 6e 65 64 28 5f  __) && defined(_
c230: 5f 41 50 50 4c 45 5f 5f 29 29 29 29 0a 2f 2a 20  _APPLE__))))./* 
c240: 53 74 72 75 63 74 75 72 65 73 20 61 72 65 20 70  Structures are p
c250: 61 73 73 65 64 20 61 73 20 70 6f 69 6e 74 65 72  assed as pointer
c260: 73 20 74 6f 20 63 61 6c 6c 65 72 2d 6d 61 64 65  s to caller-made
c270: 20 6c 6f 63 61 6c 20 63 6f 70 69 65 73 2e 20 57   local copies. W
c280: 65 0a 20 2a 20 67 72 61 62 20 73 70 61 63 65 20  e. * grab space 
c290: 66 6f 72 20 74 68 65 20 63 6f 70 69 65 73 20 66  for the copies f
c2a0: 72 6f 6d 20 74 68 65 20 65 6e 64 20 6f 66 20 74  rom the end of t
c2b0: 68 65 20 61 72 67 75 6d 65 6e 74 20 6c 69 73 74  he argument list
c2c0: 20 73 70 61 63 65 0a 20 2a 20 61 6e 64 20 61 6c   space. * and al
c2d0: 77 61 79 73 20 75 73 65 20 6d 61 78 69 6d 61 6c  ways use maximal
c2e0: 20 28 64 6f 75 62 6c 65 29 20 61 6c 69 67 6e 6d   (double) alignm
c2f0: 65 6e 74 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65  ent.. */.#define
c300: 20 5f 5f 61 76 5f 73 74 72 75 63 74 28 4c 49 53   __av_struct(LIS
c310: 54 2c 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45  T,TYPE,TYPE_SIZE
c320: 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49  ,TYPE_ALIGN,ASSI
c330: 47 4e 2c 56 41 4c 29 09 09 5c 0a 20 20 20 28 2b  GN,VAL)..\.   (+
c340: 2b 28 4c 49 53 54 29 2e 61 70 74 72 09 09 09 09  +(LIST).aptr....
c350: 09 09 09 5c 0a 20 20 20 20 3e 20 28 28 4c 49 53  ...\.    > ((LIS
c360: 54 29 2e 65 70 74 72 20 3d 20 28 5f 5f 61 76 77  T).eptr = (__avw
c370: 6f 72 64 2a 29 28 28 6c 6f 6e 67 29 28 4c 49 53  ord*)((long)(LIS
c380: 54 29 2e 65 70 74 72 20 2d 20 28 28 28 54 59 50  T).eptr - (((TYP
c390: 45 5f 53 49 5a 45 29 2b 37 29 26 2d 38 29 29 29  E_SIZE)+7)&-8)))
c3a0: 5c 0a 20 20 20 20 3f 20 2d 31 20 3a 09 09 09 09  \.    ? -1 :....
c3b0: 09 09 09 09 5c 0a 20 20 20 20 28 41 53 53 49 47  ....\.    (ASSIG
c3c0: 4e 28 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45  N(TYPE,TYPE_SIZE
c3d0: 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 28 76 6f 69  ,TYPE_ALIGN,(voi
c3e0: 64 2a 29 28 4c 49 53 54 29 2e 65 70 74 72 2c 56  d*)(LIST).eptr,V
c3f0: 41 4c 29 2c 09 09 5c 0a 20 20 20 20 20 28 4c 49  AL),..\.     (LI
c400: 53 54 29 2e 61 70 74 72 5b 2d 31 5d 20 3d 20 28  ST).aptr[-1] = (
c410: 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e  __avword)(LIST).
c420: 65 70 74 72 2c 09 09 09 09 5c 0a 20 20 20 20 20  eptr,....\.     
c430: 30 29 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64  0)).#endif.#if d
c440: 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34  efined(__sparc64
c450: 5f 5f 29 0a 2f 2a 20 53 74 72 75 63 74 75 72 65  __)./* Structure
c460: 73 20 3c 3d 20 31 36 20 62 79 74 65 73 20 61 72  s <= 16 bytes ar
c470: 65 20 70 61 73 73 65 64 20 61 73 20 65 6d 62 65  e passed as embe
c480: 64 64 65 64 20 63 6f 70 69 65 73 20 6f 6e 20 74  dded copies on t
c490: 68 65 20 61 72 67 20 73 74 61 63 6b 2c 0a 20 2a  he arg stack,. *
c4a0: 20 6c 65 66 74 2d 61 64 6a 75 73 74 65 64 20 28   left-adjusted (
c4b0: 61 6c 74 68 6f 75 67 68 20 62 69 67 2d 65 6e 64  although big-end
c4c0: 69 61 6e 21 29 2e 0a 20 2a 20 57 68 65 6e 20 61  ian!).. * When a
c4d0: 20 73 74 72 75 63 74 75 72 65 20 69 73 20 70 61   structure is pa
c4e0: 73 73 65 64 20 28 70 61 72 74 69 61 6c 6c 79 29  ssed (partially)
c4f0: 20 69 6e 20 72 65 67 69 73 74 65 72 73 2c 20 69   in registers, i
c500: 74 20 69 73 20 70 61 73 73 65 64 20 69 6e 20 74  t is passed in t
c510: 68 65 0a 20 2a 20 69 6e 74 65 67 65 72 20 72 65  he. * integer re
c520: 67 69 73 74 65 72 73 2c 20 65 78 63 65 70 74 20  gisters, except 
c530: 74 68 61 74 20 66 6c 6f 61 74 73 20 61 6e 64 20  that floats and 
c540: 64 6f 75 62 6c 65 73 20 77 69 74 68 69 6e 20 74  doubles within t
c550: 68 65 20 73 74 72 75 63 74 75 72 65 0a 20 2a 20  he structure. * 
c560: 61 72 65 20 70 61 73 73 65 64 20 69 6e 20 74 68  are passed in th
c570: 65 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74  e floating point
c580: 20 72 65 67 69 73 74 65 72 73 2e 20 49 6e 73 74   registers. Inst
c590: 65 61 64 20 6f 66 20 64 69 73 74 69 6e 67 75 69  ead of distingui
c5a0: 73 68 69 6e 67 0a 20 2a 20 74 68 65 73 65 20 63  shing. * these c
c5b0: 61 73 65 73 2c 20 77 65 20 61 6c 77 61 79 73 20  ases, we always 
c5c0: 70 61 73 73 20 74 68 65 20 73 74 72 75 63 74 75  pass the structu
c5d0: 72 65 20 69 6e 20 62 6f 74 68 20 74 68 65 20 69  re in both the i
c5e0: 6e 74 65 67 65 72 20 61 6e 64 20 74 68 65 0a 20  nteger and the. 
c5f0: 2a 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74  * floating point
c600: 20 72 65 67 69 73 74 65 72 73 2e 0a 20 2a 20 42   registers.. * B
c610: 69 67 20 73 74 72 75 63 74 75 72 65 73 20 61 72  ig structures ar
c620: 65 20 70 61 73 73 65 64 20 61 73 20 70 6f 69 6e  e passed as poin
c630: 74 65 72 73 20 74 6f 20 63 61 6c 6c 65 72 2d 6d  ters to caller-m
c640: 61 64 65 20 6c 6f 63 61 6c 20 63 6f 70 69 65 73  ade local copies
c650: 2e 0a 20 2a 20 46 49 58 4d 45 3a 20 53 68 6f 75  .. * FIXME: Shou
c660: 6c 64 6e 27 74 20 28 4c 49 53 54 29 2e 61 6e 75  ldn't (LIST).anu
c670: 6d 20 62 65 20 69 6e 63 72 65 6d 65 6e 74 65 64  m be incremented
c680: 20 69 6e 20 73 79 6e 63 20 77 69 74 68 20 28 4c   in sync with (L
c690: 49 53 54 29 2e 61 70 74 72 20 3f 0a 20 2a 2f 0a  IST).aptr ?. */.
c6a0: 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 72  #define __av_str
c6b0: 75 63 74 28 4c 49 53 54 2c 54 59 50 45 2c 54 59  uct(LIST,TYPE,TY
c6c0: 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49  PE_SIZE,TYPE_ALI
c6d0: 47 4e 2c 41 53 53 49 47 4e 2c 56 41 4c 29 09 09  GN,ASSIGN,VAL)..
c6e0: 5c 0a 20 20 28 28 54 59 50 45 5f 53 49 5a 45 29  \.  ((TYPE_SIZE)
c6f0: 20 3e 20 31 36 09 09 09 09 09 09 09 5c 0a 20 20   > 16.......\.  
c700: 20 3f 20 28 2b 2b 28 4c 49 53 54 29 2e 61 70 74   ? (++(LIST).apt
c710: 72 09 09 09 09 09 09 09 5c 0a 20 20 20 20 20 20  r.......\.      
c720: 3e 20 28 28 4c 49 53 54 29 2e 65 70 74 72 20 3d  > ((LIST).eptr =
c730: 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28 28 6c 6f   (__avword*)((lo
c740: 6e 67 29 28 4c 49 53 54 29 2e 65 70 74 72 20 2d  ng)(LIST).eptr -
c750: 20 28 28 28 54 59 50 45 5f 53 49 5a 45 29 2b 37   (((TYPE_SIZE)+7
c760: 29 26 2d 38 29 29 29 5c 0a 20 20 20 20 20 20 3f  )&-8)))\.      ?
c770: 20 2d 31 20 3a 09 09 09 09 09 09 09 09 5c 0a 20   -1 :........\. 
c780: 20 20 20 20 20 28 41 53 53 49 47 4e 28 54 59 50       (ASSIGN(TYP
c790: 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45  E,TYPE_SIZE,TYPE
c7a0: 5f 41 4c 49 47 4e 2c 28 76 6f 69 64 2a 29 28 4c  _ALIGN,(void*)(L
c7b0: 49 53 54 29 2e 65 70 74 72 2c 56 41 4c 29 2c 09  IST).eptr,VAL),.
c7c0: 5c 0a 20 20 20 20 20 20 20 28 4c 49 53 54 29 2e  \.       (LIST).
c7d0: 61 70 74 72 5b 2d 31 5d 20 3d 20 28 5f 5f 61 76  aptr[-1] = (__av
c7e0: 77 6f 72 64 29 28 4c 49 53 54 29 2e 65 70 74 72  word)(LIST).eptr
c7f0: 2c 09 09 09 09 5c 0a 20 20 20 20 20 20 20 30 29  ,....\.       0)
c800: 29 09 09 09 09 09 09 09 09 5c 0a 20 20 20 3a 20  )........\.   : 
c810: 28 28 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 09  (((LIST).aptr =.
c820: 09 09 09 09 09 09 5c 0a 20 20 20 20 20 20 20 28  ......\.       (
c830: 5f 5f 61 76 77 6f 72 64 2a 29 28 28 28 5f 5f 61  __avword*)(((__a
c840: 76 77 6f 72 64 29 28 4c 49 53 54 29 2e 61 70 74  vword)(LIST).apt
c850: 72 2b 28 54 59 50 45 5f 53 49 5a 45 29 2b 28 54  r+(TYPE_SIZE)+(T
c860: 59 50 45 5f 41 4c 49 47 4e 29 2d 31 29 20 26 20  YPE_ALIGN)-1) & 
c870: 2d 28 6c 6f 6e 67 29 28 54 59 50 45 5f 41 4c 49  -(long)(TYPE_ALI
c880: 47 4e 29 29 29 5c 0a 20 20 20 20 20 20 3e 20 5f  GN)))\.      > _
c890: 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29 09 09  _av_eptr(LIST)..
c8a0: 09 09 09 09 09 5c 0a 20 20 20 20 20 20 3f 20 2d  .....\.      ? -
c8b0: 31 20 3a 20 28 41 53 53 49 47 4e 28 54 59 50 45  1 : (ASSIGN(TYPE
c8c0: 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f  ,TYPE_SIZE,TYPE_
c8d0: 41 4c 49 47 4e 2c 28 76 6f 69 64 2a 29 28 28 5f  ALIGN,(void*)((_
c8e0: 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e 61  _avword)(LIST).a
c8f0: 70 74 72 2d 28 54 59 50 45 5f 53 49 5a 45 29 29  ptr-(TYPE_SIZE))
c900: 2c 56 41 4c 29 2c 5c 0a 09 20 20 20 20 20 20 28  ,VAL),\..      (
c910: 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 28 5f 5f  LIST).aptr = (__
c920: 61 76 77 6f 72 64 2a 29 28 28 28 5f 5f 61 76 77  avword*)(((__avw
c930: 6f 72 64 29 28 4c 49 53 54 29 2e 61 70 74 72 2b  ord)(LIST).aptr+
c940: 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29  sizeof(__avword)
c950: 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 73 69 7a  -1) & -(long)siz
c960: 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 29 2c 5c  eof(__avword)),\
c970: 0a 09 20 20 20 20 20 20 28 28 4c 49 53 54 29 2e  ..      ((LIST).
c980: 61 6e 75 6d 20 3c 20 31 36 09 09 09 09 09 09 5c  anum < 16......\
c990: 0a 09 09 26 26 20 28 28 4c 49 53 54 29 2e 66 61  ...&& ((LIST).fa
c9a0: 72 67 5f 6d 61 73 6b 20 7c 3d 20 28 2d 31 20 3c  rg_mask |= (-1 <
c9b0: 3c 20 28 4c 49 53 54 29 2e 61 6e 75 6d 29 2c 09  < (LIST).anum),.
c9c0: 09 5c 0a 09 09 20 20 20 20 28 4c 49 53 54 29 2e  .\...    (LIST).
c9d0: 64 61 72 67 5f 6d 61 73 6b 20 7c 3d 20 28 2d 31  darg_mask |= (-1
c9e0: 20 3c 3c 20 28 4c 49 53 54 29 2e 61 6e 75 6d 29   << (LIST).anum)
c9f0: 29 29 2c 09 09 5c 0a 09 20 20 20 20 20 20 28 4c  )),..\..      (L
ca00: 49 53 54 29 2e 61 6e 75 6d 20 2b 3d 20 28 28 28  IST).anum += (((
ca10: 28 28 54 59 50 45 5f 53 49 5a 45 29 2b 28 54 59  ((TYPE_SIZE)+(TY
ca20: 50 45 5f 41 4c 49 47 4e 29 2d 31 29 20 26 20 2d  PE_ALIGN)-1) & -
ca30: 28 6c 6f 6e 67 29 28 54 59 50 45 5f 41 4c 49 47  (long)(TYPE_ALIG
ca40: 4e 29 29 20 2b 20 73 69 7a 65 6f 66 28 5f 5f 61  N)) + sizeof(__a
ca50: 76 77 6f 72 64 29 2d 31 29 20 26 20 2d 28 6c 6f  vword)-1) & -(lo
ca60: 6e 67 29 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f  ng)sizeof(__avwo
ca70: 72 64 29 29 2f 73 69 7a 65 6f 66 28 5f 5f 61 76  rd))/sizeof(__av
ca80: 77 6f 72 64 29 2c 5c 0a 09 20 20 20 20 20 20 28  word),\..      (
ca90: 4c 49 53 54 29 2e 66 61 72 67 5f 6d 61 73 6b 20  LIST).farg_mask 
caa0: 26 3d 20 28 31 20 3c 3c 20 28 28 4c 49 53 54 29  &= (1 << ((LIST)
cab0: 2e 61 6e 75 6d 20 3c 20 31 36 20 3f 20 28 4c 49  .anum < 16 ? (LI
cac0: 53 54 29 2e 61 6e 75 6d 20 3a 20 31 36 29 29 20  ST).anum : 16)) 
cad0: 2d 20 31 2c 20 5c 0a 09 20 20 20 20 20 20 28 4c  - 1, \..      (L
cae0: 49 53 54 29 2e 64 61 72 67 5f 6d 61 73 6b 20 26  IST).darg_mask &
caf0: 3d 20 28 31 20 3c 3c 20 28 28 4c 49 53 54 29 2e  = (1 << ((LIST).
cb00: 61 6e 75 6d 20 3c 20 31 36 20 3f 20 28 4c 49 53  anum < 16 ? (LIS
cb10: 54 29 2e 61 6e 75 6d 20 3a 20 31 36 29 29 20 2d  T).anum : 16)) -
cb20: 20 31 2c 20 5c 0a 09 20 20 20 20 20 20 30 29 29   1, \..      0))
cb30: 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66  ).#endif.#if def
cb40: 69 6e 65 64 28 5f 5f 68 70 70 61 5f 5f 29 0a 2f  ined(__hppa__)./
cb50: 2a 20 53 74 72 75 63 74 75 72 65 73 20 3c 3d 20  * Structures <= 
cb60: 38 20 62 79 74 65 73 20 61 72 65 20 70 61 73 73  8 bytes are pass
cb70: 65 64 20 61 73 20 65 6d 62 65 64 64 65 64 20 63  ed as embedded c
cb80: 6f 70 69 65 73 20 6f 6e 20 74 68 65 20 61 72 67  opies on the arg
cb90: 20 73 74 61 63 6b 2e 0a 20 2a 20 42 69 67 20 73   stack.. * Big s
cba0: 74 72 75 63 74 75 72 65 73 20 61 72 65 20 70 61  tructures are pa
cbb0: 73 73 65 64 20 61 73 20 70 6f 69 6e 74 65 72 73  ssed as pointers
cbc0: 20 74 6f 20 63 61 6c 6c 65 72 2d 6d 61 64 65 20   to caller-made 
cbd0: 6c 6f 63 61 6c 20 63 6f 70 69 65 73 2e 0a 20 2a  local copies.. *
cbe0: 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73  /.#define __av_s
cbf0: 74 72 75 63 74 28 4c 49 53 54 2c 54 59 50 45 2c  truct(LIST,TYPE,
cc00: 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41  TYPE_SIZE,TYPE_A
cc10: 4c 49 47 4e 2c 41 53 53 49 47 4e 2c 56 41 4c 29  LIGN,ASSIGN,VAL)
cc20: 09 09 09 5c 0a 20 20 28 28 54 59 50 45 5f 53 49  ...\.  ((TYPE_SI
cc30: 5a 45 29 20 3e 20 38 09 09 09 09 09 09 09 09 5c  ZE) > 8........\
cc40: 0a 20 20 20 3f 20 28 2d 2d 28 4c 49 53 54 29 2e  .   ? (--(LIST).
cc50: 61 70 74 72 09 09 09 09 09 09 09 09 5c 0a 20 20  aptr........\.  
cc60: 20 20 20 20 3c 20 28 28 4c 49 53 54 29 2e 65 70      < ((LIST).ep
cc70: 74 72 20 3d 20 28 5f 5f 61 76 77 6f 72 64 2a 29  tr = (__avword*)
cc80: 28 28 6c 6f 6e 67 29 28 4c 49 53 54 29 2e 65 70  ((long)(LIST).ep
cc90: 74 72 20 2b 20 28 28 28 54 59 50 45 5f 53 49 5a  tr + (((TYPE_SIZ
cca0: 45 29 20 2b 20 37 29 20 26 20 2d 38 29 29 29 20  E) + 7) & -8))) 
ccb0: 5c 0a 20 20 20 20 20 20 3f 20 2d 31 09 09 09 09  \.      ? -1....
ccc0: 09 09 09 09 09 5c 0a 20 20 20 20 20 20 3a 20 28  .....\.      : (
ccd0: 41 53 53 49 47 4e 28 54 59 50 45 2c 54 59 50 45  ASSIGN(TYPE,TYPE
cce0: 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e  _SIZE,TYPE_ALIGN
ccf0: 2c 28 76 6f 69 64 2a 29 28 28 6c 6f 6e 67 29 28  ,(void*)((long)(
cd00: 4c 49 53 54 29 2e 65 70 74 72 20 2d 20 28 28 28  LIST).eptr - (((
cd10: 54 59 50 45 5f 53 49 5a 45 29 20 2b 20 37 29 20  TYPE_SIZE) + 7) 
cd20: 26 20 2d 38 29 29 2c 20 56 41 4c 29 2c 20 5c 0a  & -8)), VAL), \.
cd30: 09 20 2a 28 4c 49 53 54 29 2e 61 70 74 72 20 3d  . *(LIST).aptr =
cd40: 20 28 5f 5f 61 76 77 6f 72 64 29 28 28 6c 6f 6e   (__avword)((lon
cd50: 67 29 28 4c 49 53 54 29 2e 65 70 74 72 20 2d 20  g)(LIST).eptr - 
cd60: 28 28 28 54 59 50 45 5f 53 49 5a 45 29 20 2b 20  (((TYPE_SIZE) + 
cd70: 37 29 20 26 20 2d 38 29 29 2c 20 5c 0a 09 20 30  7) & -8)), \.. 0
cd80: 29 29 09 09 09 09 09 09 09 09 09 5c 0a 20 20 20  )).........\.   
cd90: 3a 20 28 28 54 59 50 45 5f 53 49 5a 45 29 20 3e  : ((TYPE_SIZE) >
cda0: 20 34 09 09 09 09 09 09 09 09 5c 0a 20 20 20 20   4........\.    
cdb0: 20 20 3f 20 28 28 28 4c 49 53 54 29 2e 61 70 74    ? (((LIST).apt
cdc0: 72 20 3d 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28  r = (__avword*)(
cdd0: 28 28 28 6c 6f 6e 67 29 28 4c 49 53 54 29 2e 61  (((long)(LIST).a
cde0: 70 74 72 20 26 20 2d 38 29 20 2d 20 28 6c 6f 6e  ptr & -8) - (lon
cdf0: 67 29 28 54 59 50 45 5f 53 49 5a 45 29 29 20 26  g)(TYPE_SIZE)) &
ce00: 20 2d 38 29 29 20 5c 0a 09 20 20 3c 20 26 28 4c   -8)) \..  < &(L
ce10: 49 53 54 29 2e 61 72 67 73 5b 30 5d 09 09 09 09  IST).args[0]....
ce20: 09 09 09 5c 0a 09 20 20 3f 20 2d 31 20 3a 20 28  ...\..  ? -1 : (
ce30: 41 53 53 49 47 4e 28 54 59 50 45 2c 54 59 50 45  ASSIGN(TYPE,TYPE
ce40: 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e  _SIZE,TYPE_ALIGN
ce50: 2c 28 76 6f 69 64 2a 29 28 4c 49 53 54 29 2e 61  ,(void*)(LIST).a
ce60: 70 74 72 2c 56 41 4c 29 2c 20 30 29 29 09 5c 0a  ptr,VAL), 0)).\.
ce70: 20 20 20 20 20 20 3a 20 2f 2a 20 46 49 58 4d 45        : /* FIXME
ce80: 3a 20 67 63 63 2d 32 2e 36 2e 33 20 70 61 73 73  : gcc-2.6.3 pass
ce90: 65 73 20 73 74 72 75 63 74 75 72 65 73 20 3c 3d  es structures <=
cea0: 20 34 20 62 79 74 65 73 20 69 6e 20 6d 65 6d 6f   4 bytes in memo
ceb0: 72 79 20 6c 65 66 74 2d 61 64 6a 75 73 74 65 64  ry left-adjusted
cec0: 21 20 3f 3f 20 2a 2f 5c 0a 20 20 20 20 20 20 20  ! ?? */\.       
ced0: 20 28 28 28 4c 49 53 54 29 2e 61 70 74 72 20 3d   (((LIST).aptr =
cee0: 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28 28 28 6c   (__avword*)(((l
cef0: 6f 6e 67 29 28 4c 49 53 54 29 2e 61 70 74 72 20  ong)(LIST).aptr 
cf00: 26 20 2d 34 29 20 2d 20 28 6c 6f 6e 67 29 28 54  & -4) - (long)(T
cf10: 59 50 45 5f 53 49 5a 45 29 29 29 20 5c 0a 09 20  YPE_SIZE))) \.. 
cf20: 20 3c 20 26 28 4c 49 53 54 29 2e 61 72 67 73 5b   < &(LIST).args[
cf30: 30 5d 09 09 09 09 09 09 09 5c 0a 09 20 20 3f 20  0].......\..  ? 
cf40: 2d 31 20 3a 20 28 41 53 53 49 47 4e 28 54 59 50  -1 : (ASSIGN(TYP
cf50: 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45  E,TYPE_SIZE,TYPE
cf60: 5f 41 4c 49 47 4e 2c 28 76 6f 69 64 2a 29 28 4c  _ALIGN,(void*)(L
cf70: 49 53 54 29 2e 61 70 74 72 2c 56 41 4c 29 2c 09  IST).aptr,VAL),.
cf80: 5c 0a 09 09 20 20 28 4c 49 53 54 29 2e 61 70 74  \...  (LIST).apt
cf90: 72 20 3d 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28  r = (__avword*)(
cfa0: 28 6c 6f 6e 67 29 28 4c 49 53 54 29 2e 61 70 74  (long)(LIST).apt
cfb0: 72 20 26 20 2d 34 29 2c 09 09 5c 0a 09 09 20 20  r & -4),..\...  
cfc0: 30 29 29 29 29 0a 23 65 6e 64 69 66 0a 23 69 66  0)))).#endif.#if
cfd0: 20 64 65 66 69 6e 65 64 28 5f 5f 78 38 36 5f 36   defined(__x86_6
cfe0: 34 5f 5f 29 0a 2f 2a 20 53 74 72 75 63 74 75 72  4__)./* Structur
cff0: 65 73 20 3c 3d 20 31 36 20 62 79 74 65 73 20 63  es <= 16 bytes c
d000: 61 6e 20 62 65 20 70 61 73 73 65 64 20 69 6e 20  an be passed in 
d010: 69 6e 74 65 67 65 72 20 6f 72 20 66 6c 6f 61 74  integer or float
d020: 69 6e 67 2d 70 6f 69 6e 74 20 72 65 67 69 73 74  ing-point regist
d030: 65 72 73 0a 20 20 20 69 66 20 74 68 65 72 65 20  ers.   if there 
d040: 69 73 20 65 6e 6f 75 67 68 20 72 6f 6f 6d 20 66  is enough room f
d050: 6f 72 20 74 68 65 20 77 68 6f 6c 65 20 6e 75 6d  or the whole num
d060: 62 65 72 20 6f 66 20 77 6f 72 64 73 20 6e 65 65  ber of words nee
d070: 64 65 64 20 62 79 20 74 68 65 20 73 74 72 75 63  ded by the struc
d080: 74 75 72 65 0a 20 20 20 69 6e 20 74 68 65 20 63  ture.   in the c
d090: 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 69 61 72  orresponding iar
d0a0: 67 73 2f 66 61 72 67 73 20 62 6c 6f 63 6b 2e 20  gs/fargs block. 
d0b0: 57 65 20 63 61 6e 27 74 20 64 69 73 74 69 6e 67  We can't disting
d0c0: 75 69 73 68 20 74 68 65 20 74 77 6f 20 63 61 73  uish the two cas
d0d0: 65 73 0a 20 20 20 61 6e 64 20 73 75 70 70 6f 72  es.   and suppor
d0e0: 74 20 6f 6e 6c 79 20 70 61 73 73 69 6e 67 20 69  t only passing i
d0f0: 6e 20 69 6e 74 65 67 65 72 20 72 65 67 69 73 74  n integer regist
d100: 65 72 73 2e 20 4f 74 68 65 72 20 73 74 72 75 63  ers. Other struc
d110: 74 75 72 65 73 20 61 72 65 20 70 61 73 73 65 64  tures are passed
d120: 0a 20 20 20 6f 6e 20 74 68 65 20 61 72 67 20 73  .   on the arg s
d130: 74 61 63 6b 2e 20 2a 2f 0a 23 64 65 66 69 6e 65  tack. */.#define
d140: 20 5f 5f 61 76 5f 73 74 72 75 63 74 28 4c 49 53   __av_struct(LIS
d150: 54 2c 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45  T,TYPE,TYPE_SIZE
d160: 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49  ,TYPE_ALIGN,ASSI
d170: 47 4e 2c 56 41 4c 29 09 09 09 5c 0a 20 20 28 28  GN,VAL)...\.  ((
d180: 4c 49 53 54 29 2e 69 61 70 74 72 20 2b 20 28 28  LIST).iaptr + ((
d190: 54 59 50 45 5f 53 49 5a 45 29 20 2b 20 73 69 7a  TYPE_SIZE) + siz
d1a0: 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 2d 31 29  eof(__avword)-1)
d1b0: 20 2f 20 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f   / sizeof(__avwo
d1c0: 72 64 29 20 3c 3d 20 26 28 4c 49 53 54 29 2e 69  rd) <= &(LIST).i
d1d0: 61 72 67 73 5b 36 5d 20 5c 0a 20 20 20 3f 20 28  args[6] \.   ? (
d1e0: 41 53 53 49 47 4e 28 54 59 50 45 2c 54 59 50 45  ASSIGN(TYPE,TYPE
d1f0: 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e  _SIZE,TYPE_ALIGN
d200: 2c 28 76 6f 69 64 2a 29 28 4c 49 53 54 29 2e 69  ,(void*)(LIST).i
d210: 61 70 74 72 2c 56 41 4c 29 2c 09 09 5c 0a 20 20  aptr,VAL),..\.  
d220: 20 20 20 20 28 4c 49 53 54 29 2e 69 61 70 74 72      (LIST).iaptr
d230: 20 2b 3d 20 28 28 54 59 50 45 5f 53 49 5a 45 29   += ((TYPE_SIZE)
d240: 20 2b 20 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f   + sizeof(__avwo
d250: 72 64 29 2d 31 29 20 2f 20 73 69 7a 65 6f 66 28  rd)-1) / sizeof(
d260: 5f 5f 61 76 77 6f 72 64 29 2c 09 5c 0a 20 20 20  __avword),.\.   
d270: 20 20 20 30 29 09 09 09 09 09 09 09 09 09 5c 0a     0).........\.
d280: 20 20 20 3a 20 28 28 4c 49 53 54 29 2e 61 70 74     : ((LIST).apt
d290: 72 20 3d 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28  r = (__avword*)(
d2a0: 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29  (__avword)(LIST)
d2b0: 2e 61 70 74 72 20 2b 20 28 28 28 54 59 50 45 5f  .aptr + (((TYPE_
d2c0: 53 49 5a 45 29 2b 5f 5f 61 76 5f 73 74 72 75 63  SIZE)+__av_struc
d2d0: 74 5f 61 6c 69 67 6e 6d 65 6e 74 28 54 59 50 45  t_alignment(TYPE
d2e0: 5f 41 4c 49 47 4e 29 2d 31 29 20 26 20 2d 28 6c  _ALIGN)-1) & -(l
d2f0: 6f 6e 67 29 5f 5f 61 76 5f 73 74 72 75 63 74 5f  ong)__av_struct_
d300: 61 6c 69 67 6e 6d 65 6e 74 28 54 59 50 45 5f 41  alignment(TYPE_A
d310: 4c 49 47 4e 29 29 29 2c 20 5c 0a 20 20 20 20 20  LIGN))), \.     
d320: 20 28 28 4c 49 53 54 29 2e 61 70 74 72 20 3e 20   ((LIST).aptr > 
d330: 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29 09  __av_eptr(LIST).
d340: 09 09 09 09 09 5c 0a 20 20 20 20 20 20 20 3f 20  .....\.       ? 
d350: 2d 31 20 3a 20 28 41 53 53 49 47 4e 28 54 59 50  -1 : (ASSIGN(TYP
d360: 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45  E,TYPE_SIZE,TYPE
d370: 5f 41 4c 49 47 4e 2c 28 76 6f 69 64 2a 29 28 28  _ALIGN,(void*)((
d380: 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e  __avword)(LIST).
d390: 61 70 74 72 20 2d 20 28 28 28 54 59 50 45 5f 53  aptr - (((TYPE_S
d3a0: 49 5a 45 29 2b 5f 5f 61 76 5f 73 74 72 75 63 74  IZE)+__av_struct
d3b0: 5f 61 6c 69 67 6e 6d 65 6e 74 28 54 59 50 45 5f  _alignment(TYPE_
d3c0: 41 4c 49 47 4e 29 2d 31 29 20 26 20 2d 28 6c 6f  ALIGN)-1) & -(lo
d3d0: 6e 67 29 5f 5f 61 76 5f 73 74 72 75 63 74 5f 61  ng)__av_struct_a
d3e0: 6c 69 67 6e 6d 65 6e 74 28 54 59 50 45 5f 41 4c  lignment(TYPE_AL
d3f0: 49 47 4e 29 29 29 2c 56 41 4c 29 2c 5c 0a 09 20  IGN))),VAL),\.. 
d400: 20 20 20 20 20 20 30 29 29 29 29 0a 23 65 6e 64        0)))).#end
d410: 69 66 0a 0a 2f 2a 0a 20 2a 20 63 61 6c 6c 69 6e  if../*. * callin
d420: 67 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 0a 20  g the function. 
d430: 2a 2f 0a 0a 23 64 65 66 69 6e 65 20 61 76 5f 63  */..#define av_c
d440: 61 6c 6c 28 4c 49 53 54 29 20 5f 5f 62 75 69 6c  all(LIST) __buil
d450: 74 69 6e 5f 61 76 63 61 6c 6c 28 26 28 4c 49 53  tin_avcall(&(LIS
d460: 54 29 29 0a 0a 2f 2a 20 44 65 74 65 72 6d 69 6e  T))../* Determin
d470: 65 20 77 68 65 74 68 65 72 20 61 20 73 74 72 75  e whether a stru
d480: 63 74 20 74 79 70 65 20 69 73 20 77 6f 72 64 2d  ct type is word-
d490: 73 70 6c 69 74 74 61 62 6c 65 2c 20 69 2e 65 2e  splittable, i.e.
d4a0: 20 77 68 65 74 68 65 72 20 65 61 63 68 20 6f 66   whether each of
d4b0: 0a 20 2a 20 69 74 73 20 63 6f 6d 70 6f 6e 65 6e  . * its componen
d4c0: 74 73 20 66 69 74 20 69 6e 74 6f 20 61 20 72 65  ts fit into a re
d4d0: 67 69 73 74 65 72 2e 0a 20 2a 20 54 68 65 20 65  gister.. * The e
d4e0: 6e 74 69 72 65 20 63 6f 6d 70 75 74 61 74 69 6f  ntire computatio
d4f0: 6e 20 69 73 20 64 6f 6e 65 20 61 74 20 63 6f 6d  n is done at com
d500: 70 69 6c 65 20 74 69 6d 65 2e 0a 20 2a 2f 0a 23  pile time.. */.#
d510: 64 65 66 69 6e 65 20 61 76 5f 77 6f 72 64 5f 73  define av_word_s
d520: 70 6c 69 74 74 61 62 6c 65 5f 31 28 73 6c 6f 74  plittable_1(slot
d530: 31 29 20 20 5c 0a 20 20 28 5f 5f 61 76 5f 6f 66  1)  \.  (__av_of
d540: 66 73 65 74 31 28 73 6c 6f 74 31 29 2f 73 69 7a  fset1(slot1)/siz
d550: 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 20 3d 3d  eof(__avword) ==
d560: 20 28 5f 5f 61 76 5f 6f 66 66 73 65 74 31 28 73   (__av_offset1(s
d570: 6c 6f 74 31 29 2b 73 69 7a 65 6f 66 28 73 6c 6f  lot1)+sizeof(slo
d580: 74 31 29 2d 31 29 2f 73 69 7a 65 6f 66 28 5f 5f  t1)-1)/sizeof(__
d590: 61 76 77 6f 72 64 29 29 0a 23 64 65 66 69 6e 65  avword)).#define
d5a0: 20 61 76 5f 77 6f 72 64 5f 73 70 6c 69 74 74 61   av_word_splitta
d5b0: 62 6c 65 5f 32 28 73 6c 6f 74 31 2c 73 6c 6f 74  ble_2(slot1,slot
d5c0: 32 29 20 20 5c 0a 20 20 28 28 5f 5f 61 76 5f 6f  2)  \.  ((__av_o
d5d0: 66 66 73 65 74 31 28 73 6c 6f 74 31 29 2f 73 69  ffset1(slot1)/si
d5e0: 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 20 3d  zeof(__avword) =
d5f0: 3d 20 28 5f 5f 61 76 5f 6f 66 66 73 65 74 31 28  = (__av_offset1(
d600: 73 6c 6f 74 31 29 2b 73 69 7a 65 6f 66 28 73 6c  slot1)+sizeof(sl
d610: 6f 74 31 29 2d 31 29 2f 73 69 7a 65 6f 66 28 5f  ot1)-1)/sizeof(_
d620: 5f 61 76 77 6f 72 64 29 29 20 5c 0a 20 20 20 26  _avword)) \.   &
d630: 26 20 28 5f 5f 61 76 5f 6f 66 66 73 65 74 32 28  & (__av_offset2(
d640: 73 6c 6f 74 31 2c 73 6c 6f 74 32 29 2f 73 69 7a  slot1,slot2)/siz
d650: 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 20 3d 3d  eof(__avword) ==
d660: 20 28 5f 5f 61 76 5f 6f 66 66 73 65 74 32 28 73   (__av_offset2(s
d670: 6c 6f 74 31 2c 73 6c 6f 74 32 29 2b 73 69 7a 65  lot1,slot2)+size
d680: 6f 66 28 73 6c 6f 74 32 29 2d 31 29 2f 73 69 7a  of(slot2)-1)/siz
d690: 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 29 20 5c  eof(__avword)) \
d6a0: 0a 20 20 29 0a 23 64 65 66 69 6e 65 20 61 76 5f  .  ).#define av_
d6b0: 77 6f 72 64 5f 73 70 6c 69 74 74 61 62 6c 65 5f  word_splittable_
d6c0: 33 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 2c 73 6c  3(slot1,slot2,sl
d6d0: 6f 74 33 29 20 20 5c 0a 20 20 28 28 5f 5f 61 76  ot3)  \.  ((__av
d6e0: 5f 6f 66 66 73 65 74 31 28 73 6c 6f 74 31 29 2f  _offset1(slot1)/
d6f0: 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29  sizeof(__avword)
d700: 20 3d 3d 20 28 5f 5f 61 76 5f 6f 66 66 73 65 74   == (__av_offset
d710: 31 28 73 6c 6f 74 31 29 2b 73 69 7a 65 6f 66 28  1(slot1)+sizeof(
d720: 73 6c 6f 74 31 29 2d 31 29 2f 73 69 7a 65 6f 66  slot1)-1)/sizeof
d730: 28 5f 5f 61 76 77 6f 72 64 29 29 20 5c 0a 20 20  (__avword)) \.  
d740: 20 26 26 20 28 5f 5f 61 76 5f 6f 66 66 73 65 74   && (__av_offset
d750: 32 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 29 2f 73  2(slot1,slot2)/s
d760: 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 20  izeof(__avword) 
d770: 3d 3d 20 28 5f 5f 61 76 5f 6f 66 66 73 65 74 32  == (__av_offset2
d780: 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 29 2b 73 69  (slot1,slot2)+si
d790: 7a 65 6f 66 28 73 6c 6f 74 32 29 2d 31 29 2f 73  zeof(slot2)-1)/s
d7a0: 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 29  izeof(__avword))
d7b0: 20 5c 0a 20 20 20 26 26 20 28 5f 5f 61 76 5f 6f   \.   && (__av_o
d7c0: 66 66 73 65 74 33 28 73 6c 6f 74 31 2c 73 6c 6f  ffset3(slot1,slo
d7d0: 74 32 2c 73 6c 6f 74 33 29 2f 73 69 7a 65 6f 66  t2,slot3)/sizeof
d7e0: 28 5f 5f 61 76 77 6f 72 64 29 20 3d 3d 20 28 5f  (__avword) == (_
d7f0: 5f 61 76 5f 6f 66 66 73 65 74 33 28 73 6c 6f 74  _av_offset3(slot
d800: 31 2c 73 6c 6f 74 32 2c 73 6c 6f 74 33 29 2b 73  1,slot2,slot3)+s
d810: 69 7a 65 6f 66 28 73 6c 6f 74 33 29 2d 31 29 2f  izeof(slot3)-1)/
d820: 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29  sizeof(__avword)
d830: 29 20 5c 0a 20 20 29 0a 23 64 65 66 69 6e 65 20  ) \.  ).#define 
d840: 61 76 5f 77 6f 72 64 5f 73 70 6c 69 74 74 61 62  av_word_splittab
d850: 6c 65 5f 34 28 73 6c 6f 74 31 2c 73 6c 6f 74 32  le_4(slot1,slot2
d860: 2c 73 6c 6f 74 33 2c 73 6c 6f 74 34 29 20 20 5c  ,slot3,slot4)  \
d870: 0a 20 20 28 28 5f 5f 61 76 5f 6f 66 66 73 65 74  .  ((__av_offset
d880: 31 28 73 6c 6f 74 31 29 2f 73 69 7a 65 6f 66 28  1(slot1)/sizeof(
d890: 5f 5f 61 76 77 6f 72 64 29 20 3d 3d 20 28 5f 5f  __avword) == (__
d8a0: 61 76 5f 6f 66 66 73 65 74 31 28 73 6c 6f 74 31  av_offset1(slot1
d8b0: 29 2b 73 69 7a 65 6f 66 28 73 6c 6f 74 31 29 2d  )+sizeof(slot1)-
d8c0: 31 29 2f 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f  1)/sizeof(__avwo
d8d0: 72 64 29 29 20 5c 0a 20 20 20 26 26 20 28 5f 5f  rd)) \.   && (__
d8e0: 61 76 5f 6f 66 66 73 65 74 32 28 73 6c 6f 74 31  av_offset2(slot1
d8f0: 2c 73 6c 6f 74 32 29 2f 73 69 7a 65 6f 66 28 5f  ,slot2)/sizeof(_
d900: 5f 61 76 77 6f 72 64 29 20 3d 3d 20 28 5f 5f 61  _avword) == (__a
d910: 76 5f 6f 66 66 73 65 74 32 28 73 6c 6f 74 31 2c  v_offset2(slot1,
d920: 73 6c 6f 74 32 29 2b 73 69 7a 65 6f 66 28 73 6c  slot2)+sizeof(sl
d930: 6f 74 32 29 2d 31 29 2f 73 69 7a 65 6f 66 28 5f  ot2)-1)/sizeof(_
d940: 5f 61 76 77 6f 72 64 29 29 20 5c 0a 20 20 20 26  _avword)) \.   &
d950: 26 20 28 5f 5f 61 76 5f 6f 66 66 73 65 74 33 28  & (__av_offset3(
d960: 73 6c 6f 74 31 2c 73 6c 6f 74 32 2c 73 6c 6f 74  slot1,slot2,slot
d970: 33 29 2f 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f  3)/sizeof(__avwo
d980: 72 64 29 20 3d 3d 20 28 5f 5f 61 76 5f 6f 66 66  rd) == (__av_off
d990: 73 65 74 33 28 73 6c 6f 74 31 2c 73 6c 6f 74 32  set3(slot1,slot2
d9a0: 2c 73 6c 6f 74 33 29 2b 73 69 7a 65 6f 66 28 73  ,slot3)+sizeof(s
d9b0: 6c 6f 74 33 29 2d 31 29 2f 73 69 7a 65 6f 66 28  lot3)-1)/sizeof(
d9c0: 5f 5f 61 76 77 6f 72 64 29 29 20 5c 0a 20 20 20  __avword)) \.   
d9d0: 26 26 20 28 5f 5f 61 76 5f 6f 66 66 73 65 74 34  && (__av_offset4
d9e0: 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 2c 73 6c 6f  (slot1,slot2,slo
d9f0: 74 33 2c 73 6c 6f 74 34 29 2f 73 69 7a 65 6f 66  t3,slot4)/sizeof
da00: 28 5f 5f 61 76 77 6f 72 64 29 20 3d 3d 20 28 5f  (__avword) == (_
da10: 5f 61 76 5f 6f 66 66 73 65 74 34 28 73 6c 6f 74  _av_offset4(slot
da20: 31 2c 73 6c 6f 74 32 2c 73 6c 6f 74 33 2c 73 6c  1,slot2,slot3,sl
da30: 6f 74 34 29 2b 73 69 7a 65 6f 66 28 73 6c 6f 74  ot4)+sizeof(slot
da40: 34 29 2d 31 29 2f 73 69 7a 65 6f 66 28 5f 5f 61  4)-1)/sizeof(__a
da50: 76 77 6f 72 64 29 29 20 5c 0a 20 20 29 0a 23 64  vword)) \.  ).#d
da60: 65 66 69 6e 65 20 5f 5f 61 76 5f 6f 66 66 73 65  efine __av_offse
da70: 74 31 28 73 6c 6f 74 31 29 20 20 5c 0a 20 20 30  t1(slot1)  \.  0
da80: 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 6f 66  .#define __av_of
da90: 66 73 65 74 32 28 73 6c 6f 74 31 2c 73 6c 6f 74  fset2(slot1,slot
daa0: 32 29 20 20 5c 0a 20 20 28 28 5f 5f 61 76 5f 6f  2)  \.  ((__av_o
dab0: 66 66 73 65 74 31 28 73 6c 6f 74 31 29 2b 73 69  ffset1(slot1)+si
dac0: 7a 65 6f 66 28 73 6c 6f 74 31 29 2b 5f 5f 41 56  zeof(slot1)+__AV
dad0: 5f 61 6c 69 67 6e 6f 66 28 73 6c 6f 74 32 29 2d  _alignof(slot2)-
dae0: 31 29 20 26 20 2d 28 6c 6f 6e 67 29 5f 5f 41 56  1) & -(long)__AV
daf0: 5f 61 6c 69 67 6e 6f 66 28 73 6c 6f 74 32 29 29  _alignof(slot2))
db00: 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 6f 66  .#define __av_of
db10: 66 73 65 74 33 28 73 6c 6f 74 31 2c 73 6c 6f 74  fset3(slot1,slot
db20: 32 2c 73 6c 6f 74 33 29 20 20 5c 0a 20 20 28 28  2,slot3)  \.  ((
db30: 5f 5f 61 76 5f 6f 66 66 73 65 74 32 28 73 6c 6f  __av_offset2(slo
db40: 74 31 2c 73 6c 6f 74 32 29 2b 73 69 7a 65 6f 66  t1,slot2)+sizeof
db50: 28 73 6c 6f 74 32 29 2b 5f 5f 41 56 5f 61 6c 69  (slot2)+__AV_ali
db60: 67 6e 6f 66 28 73 6c 6f 74 33 29 2d 31 29 20 26  gnof(slot3)-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 33 29 29 0a 23 64 65  gnof(slot3)).#de
db90: 66 69 6e 65 20 5f 5f 61 76 5f 6f 66 66 73 65 74  fine __av_offset
dba0: 34 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 2c 73 6c  4(slot1,slot2,sl
dbb0: 6f 74 33 2c 73 6c 6f 74 34 29 20 20 5c 0a 20 20  ot3,slot4)  \.  
dbc0: 28 28 5f 5f 61 76 5f 6f 66 66 73 65 74 33 28 73  ((__av_offset3(s
dbd0: 6c 6f 74 31 2c 73 6c 6f 74 32 2c 73 6c 6f 74 33  lot1,slot2,slot3
dbe0: 29 2b 73 69 7a 65 6f 66 28 73 6c 6f 74 33 29 2b  )+sizeof(slot3)+
dbf0: 5f 5f 41 56 5f 61 6c 69 67 6e 6f 66 28 73 6c 6f  __AV_alignof(slo
dc00: 74 34 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29  t4)-1) & -(long)
dc10: 5f 5f 41 56 5f 61 6c 69 67 6e 6f 66 28 73 6c 6f  __AV_alignof(slo
dc20: 74 34 29 29 0a 0a 2f 2a 0a 20 2a 20 4d 69 73 63  t4))../*. * Misc
dc30: 65 6c 6c 61 6e 65 6f 75 73 20 64 65 63 6c 61 72  ellaneous declar
dc40: 61 74 69 6f 6e 73 2e 0a 20 2a 2f 0a 0a 23 69 66  ations.. */..#if
dc50: 20 64 65 66 69 6e 65 64 28 5f 5f 53 54 44 43 5f   defined(__STDC_
dc60: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  _) || defined(__
dc70: 47 4e 55 43 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  GNUC__) || defin
dc80: 65 64 28 5f 5f 63 70 6c 75 73 70 6c 75 73 29 0a  ed(__cplusplus).
dc90: 65 78 74 65 72 6e 20 69 6e 74 20 5f 5f 62 75 69  extern int __bui
dca0: 6c 74 69 6e 5f 61 76 63 61 6c 6c 20 28 61 76 5f  ltin_avcall (av_
dcb0: 61 6c 69 73 74 2a 20 6c 29 3b 0a 65 78 74 65 72  alist* l);.exter
dcc0: 6e 20 76 6f 69 64 20 5f 5f 73 74 72 75 63 74 63  n void __structc
dcd0: 70 79 20 28 76 6f 69 64 2a 20 64 65 73 74 2c 20  py (void* dest, 
dce0: 76 6f 69 64 2a 20 73 72 63 2c 20 75 6e 73 69 67  void* src, unsig
dcf0: 6e 65 64 20 6c 6f 6e 67 20 73 69 7a 65 2c 20 75  ned long size, u
dd00: 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 61 6c 69  nsigned long ali
dd10: 67 6e 6d 65 6e 74 29 3b 0a 23 65 6c 73 65 0a 65  gnment);.#else.e
dd20: 78 74 65 72 6e 20 69 6e 74 20 5f 5f 62 75 69 6c  xtern int __buil
dd30: 74 69 6e 5f 61 76 63 61 6c 6c 20 28 29 3b 0a 65  tin_avcall ();.e
dd40: 78 74 65 72 6e 20 76 6f 69 64 20 5f 5f 73 74 72  xtern void __str
dd50: 75 63 74 63 70 79 20 28 29 3b 0a 23 65 6e 64 69  uctcpy ();.#endi
dd60: 66 0a 0a 23 65 6e 64 69 66 20 2f 2a 5f 61 76 63  f..#endif /*_avc
dd70: 61 6c 6c 5f 68 20 2a 2f 0a                       all_h */.