0000: 23 69 66 6e 64 65 66 20 5f 61 76 63 61 6c 6c 5f #ifndef _avcall_
0010: 68 09 09 09 09 2f 2a 2d 2a 2d 20 43 20 2d 2a 2d h..../*-*- C -*-
0020: 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 61 76 63 61 */.#define _avca
0030: 6c 6c 5f 68 0a 2f 2a 2a 0a 20 20 43 6f 70 79 72 ll_h./**. Copyr
0040: 69 67 68 74 20 31 39 39 33 20 42 69 6c 6c 20 54 ight 1993 Bill T
0050: 72 69 67 67 73 2c 20 3c 42 69 6c 6c 2e 54 72 69 riggs, <Bill.Tri
0060: 67 67 73 40 69 6e 72 69 61 6c 70 65 73 2e 66 72 ggs@inrialpes.fr
0070: 3e 0a 0a 20 20 43 6f 70 79 72 69 67 68 74 20 31 >.. Copyright 1
0080: 39 39 35 2d 32 30 30 34 20 42 72 75 6e 6f 20 48 995-2004 Bruno H
0090: 61 69 62 6c 65 2c 20 3c 62 72 75 6e 6f 40 63 6c aible, <bruno@cl
00a0: 69 73 70 2e 6f 72 67 3e 0a 0a 20 20 54 68 69 73 isp.org>.. This
00b0: 20 69 73 20 66 72 65 65 20 73 6f 66 74 77 61 72 is free softwar
00c0: 65 20 64 69 73 74 72 69 62 75 74 65 64 20 75 6e e distributed un
00d0: 64 65 72 20 74 68 65 20 47 4e 55 20 47 65 6e 65 der the GNU Gene
00e0: 72 61 6c 20 50 75 62 6c 69 63 0a 20 20 4c 69 63 ral Public. Lic
00f0: 65 6e 63 65 20 64 65 73 63 72 69 62 65 64 20 69 ence described i
0100: 6e 20 74 68 65 20 66 69 6c 65 20 43 4f 50 59 49 n the file COPYI
0110: 4e 47 2e 20 43 6f 6e 74 61 63 74 20 74 68 65 20 NG. Contact the
0120: 61 75 74 68 6f 72 20 69 66 0a 20 20 79 6f 75 20 author if. you
0130: 64 6f 6e 27 74 20 68 61 76 65 20 74 68 69 73 20 don't have this
0140: 6f 72 20 63 61 6e 27 74 20 6c 69 76 65 20 77 69 or can't live wi
0150: 74 68 20 69 74 2e 20 54 68 65 72 65 20 69 73 20 th it. There is
0160: 41 42 53 4f 4c 55 54 45 4c 59 0a 20 20 4e 4f 20 ABSOLUTELY. NO
0170: 57 41 52 52 41 4e 54 59 2c 20 65 78 70 6c 69 63 WARRANTY, explic
0180: 69 74 20 6f 72 20 69 6d 70 6c 69 65 64 2c 20 6f it or implied, o
0190: 6e 20 74 68 69 73 20 73 6f 66 74 77 61 72 65 2e n this software.
01a0: 0a 2a 2a 2f 0a 2f 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d .**/./*---------
01b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
01c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
01d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
01e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 -------------.
01f0: 61 76 5f 63 61 6c 6c 28 29 20 66 6f 72 65 69 67 av_call() foreig
0200: 6e 20 66 75 6e 63 74 69 6f 6e 20 69 6e 74 65 72 n function inter
0210: 66 61 63 65 2e 0a 0a 20 20 56 61 72 61 72 67 73 face... Varargs
0220: 2d 73 74 79 6c 65 20 6d 61 63 72 6f 73 20 74 6f -style macros to
0230: 20 62 75 69 6c 64 20 61 20 43 20 61 72 67 75 6d build a C argum
0240: 65 6e 74 20 6c 69 73 74 20 69 6e 63 72 65 6d 65 ent list increme
0250: 6e 74 61 6c 6c 79 0a 20 20 61 6e 64 20 63 61 6c ntally. and cal
0260: 6c 20 61 20 66 75 6e 63 74 69 6f 6e 20 6f 6e 20 l a function on
0270: 69 74 2e 0a 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d it.. -----------
0280: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0290: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
02a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
02b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2a 2f 0a 0a 0a -----------*/...
02c0: 2f 2a 20 54 68 65 73 65 20 64 65 66 69 6e 69 74 /* These definit
02d0: 69 6f 6e 73 20 61 72 65 20 61 64 6a 75 73 74 65 ions are adjuste
02e0: 64 20 62 79 20 60 63 6f 6e 66 69 67 75 72 65 27 d by `configure'
02f0: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e 20 automatically.
0300: 2a 2f 0a 0a 2f 2a 20 43 50 55 20 2a 2f 0a 23 69 */../* CPU */.#i
0310: 66 6e 64 65 66 20 5f 5f 69 33 38 36 5f 5f 0a 23 fndef __i386__.#
0320: 64 65 66 69 6e 65 20 5f 5f 69 33 38 36 5f 5f 20 define __i386__
0330: 31 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64 65 66 1.#endif.#ifndef
0340: 20 5f 5f 6d 36 38 6b 5f 5f 0a 23 75 6e 64 65 66 __m68k__.#undef
0350: 20 5f 5f 6d 36 38 6b 5f 5f 0a 23 65 6e 64 69 66 __m68k__.#endif
0360: 0a 23 69 66 6e 64 65 66 20 5f 5f 6d 69 70 73 5f .#ifndef __mips_
0370: 5f 0a 23 75 6e 64 65 66 20 5f 5f 6d 69 70 73 5f _.#undef __mips_
0380: 5f 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64 65 66 _.#endif.#ifndef
0390: 20 5f 5f 6d 69 70 73 6e 33 32 5f 5f 0a 23 75 6e __mipsn32__.#un
03a0: 64 65 66 20 5f 5f 6d 69 70 73 6e 33 32 5f 5f 0a def __mipsn32__.
03b0: 23 65 6e 64 69 66 0a 23 69 66 6e 64 65 66 20 5f #endif.#ifndef _
03c0: 5f 6d 69 70 73 36 34 5f 5f 0a 23 75 6e 64 65 66 _mips64__.#undef
03d0: 20 5f 5f 6d 69 70 73 36 34 5f 5f 0a 23 65 6e 64 __mips64__.#end
03e0: 69 66 0a 23 69 66 6e 64 65 66 20 5f 5f 73 70 61 if.#ifndef __spa
03f0: 72 63 5f 5f 0a 23 75 6e 64 65 66 20 5f 5f 73 70 rc__.#undef __sp
0400: 61 72 63 5f 5f 0a 23 65 6e 64 69 66 0a 23 69 66 arc__.#endif.#if
0410: 6e 64 65 66 20 5f 5f 73 70 61 72 63 36 34 5f 5f ndef __sparc64__
0420: 0a 23 75 6e 64 65 66 20 5f 5f 73 70 61 72 63 36 .#undef __sparc6
0430: 34 5f 5f 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64 4__.#endif.#ifnd
0440: 65 66 20 5f 5f 61 6c 70 68 61 5f 5f 0a 23 75 6e ef __alpha__.#un
0450: 64 65 66 20 5f 5f 61 6c 70 68 61 5f 5f 0a 23 65 def __alpha__.#e
0460: 6e 64 69 66 0a 23 69 66 6e 64 65 66 20 5f 5f 68 ndif.#ifndef __h
0470: 70 70 61 5f 5f 0a 23 75 6e 64 65 66 20 5f 5f 68 ppa__.#undef __h
0480: 70 70 61 5f 5f 0a 23 65 6e 64 69 66 0a 23 69 66 ppa__.#endif.#if
0490: 6e 64 65 66 20 5f 5f 61 72 6d 5f 5f 0a 23 75 6e ndef __arm__.#un
04a0: 64 65 66 20 5f 5f 61 72 6d 5f 5f 0a 23 65 6e 64 def __arm__.#end
04b0: 69 66 0a 23 69 66 6e 64 65 66 20 5f 5f 72 73 36 if.#ifndef __rs6
04c0: 30 30 30 5f 5f 0a 23 75 6e 64 65 66 20 5f 5f 72 000__.#undef __r
04d0: 73 36 30 30 30 5f 5f 0a 23 65 6e 64 69 66 0a 23 s6000__.#endif.#
04e0: 69 66 6e 64 65 66 20 5f 5f 73 33 39 30 5f 5f 0a ifndef __s390__.
04f0: 23 75 6e 64 65 66 20 5f 5f 73 33 39 30 5f 5f 0a #undef __s390__.
0500: 23 65 6e 64 69 66 0a 23 69 66 6e 64 65 66 20 5f #endif.#ifndef _
0510: 5f 6d 38 38 6b 5f 5f 0a 23 75 6e 64 65 66 20 5f _m88k__.#undef _
0520: 5f 6d 38 38 6b 5f 5f 0a 23 65 6e 64 69 66 0a 23 _m88k__.#endif.#
0530: 69 66 6e 64 65 66 20 5f 5f 63 6f 6e 76 65 78 5f ifndef __convex_
0540: 5f 0a 23 75 6e 64 65 66 20 5f 5f 63 6f 6e 76 65 _.#undef __conve
0550: 78 5f 5f 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64 x__.#endif.#ifnd
0560: 65 66 20 5f 5f 69 61 36 34 5f 5f 0a 23 75 6e 64 ef __ia64__.#und
0570: 65 66 20 5f 5f 69 61 36 34 5f 5f 0a 23 65 6e 64 ef __ia64__.#end
0580: 69 66 0a 23 69 66 6e 64 65 66 20 5f 5f 78 38 36 if.#ifndef __x86
0590: 5f 36 34 5f 5f 0a 23 75 6e 64 65 66 20 5f 5f 78 _64__.#undef __x
05a0: 38 36 5f 36 34 5f 5f 0a 23 65 6e 64 69 66 0a 0a 86_64__.#endif..
05b0: 2f 2a 20 43 61 6c 6c 69 6e 67 20 63 6f 6e 76 65 /* Calling conve
05c0: 6e 74 69 6f 6e 20 2a 2f 0a 2f 2a 20 44 65 66 69 ntion */./* Defi
05d0: 6e 65 20 69 66 20 75 73 69 6e 67 20 70 63 63 20 ne if using pcc
05e0: 6e 6f 6e 2d 72 65 65 6e 74 72 61 6e 74 20 73 74 non-reentrant st
05f0: 72 75 63 74 20 72 65 74 75 72 6e 20 63 6f 6e 76 ruct return conv
0600: 65 6e 74 69 6f 6e 20 2a 2f 0a 23 75 6e 64 65 66 ention */.#undef
0610: 20 5f 5f 50 43 43 5f 53 54 52 55 43 54 5f 52 45 __PCC_STRUCT_RE
0620: 54 55 52 4e 5f 5f 0a 2f 2a 20 44 65 66 69 6e 65 TURN__./* Define
0630: 20 69 66 20 73 6d 61 6c 6c 20 73 74 72 75 63 74 if small struct
0640: 73 20 61 72 65 20 72 65 74 75 72 6e 65 64 20 69 s are returned i
0650: 6e 20 72 65 67 69 73 74 65 72 73 20 2a 2f 0a 23 n registers */.#
0660: 64 65 66 69 6e 65 20 5f 5f 53 4d 41 4c 4c 5f 53 define __SMALL_S
0670: 54 52 55 43 54 5f 52 45 54 55 52 4e 5f 5f 20 31 TRUCT_RETURN__ 1
0680: 0a 2f 2a 20 44 65 66 69 6e 65 20 69 66 20 66 6c ./* Define if fl
0690: 6f 61 74 69 6e 67 2d 70 6f 69 6e 74 20 72 65 73 oating-point res
06a0: 75 6c 74 73 20 61 72 65 20 72 65 74 75 72 6e 65 ults are returne
06b0: 64 20 69 6e 20 74 68 65 20 69 6e 74 65 67 65 72 d in the integer
06c0: 20 72 65 67 69 73 74 65 72 73 20 2a 2f 0a 23 75 registers */.#u
06d0: 6e 64 65 66 20 5f 5f 49 52 45 47 5f 46 4c 4f 41 ndef __IREG_FLOA
06e0: 54 5f 52 45 54 55 52 4e 5f 5f 0a 0a 2f 2a 20 43 T_RETURN__../* C
06f0: 4c 5f 4c 4f 4e 47 4c 4f 4e 47 20 2a 2f 0a 2f 2a L_LONGLONG */./*
0700: 20 44 65 66 69 6e 65 20 69 66 20 79 6f 75 72 20 Define if your
0710: 63 6f 6d 70 69 6c 65 72 20 73 75 70 70 6f 72 74 compiler support
0720: 73 20 74 68 65 20 60 6c 6f 6e 67 20 6c 6f 6e 67 s the `long long
0730: 27 20 74 79 70 65 2e 20 2a 2f 0a 23 75 6e 64 65 ' type. */.#unde
0740: 66 20 48 41 56 45 5f 4c 4f 4e 47 4c 4f 4e 47 0a f HAVE_LONGLONG.
0750: 0a 2f 2a 20 45 6e 64 20 6f 66 20 64 65 66 69 6e ./* End of defin
0760: 69 74 69 6f 6e 73 20 61 64 6a 75 73 74 65 64 20 itions adjusted
0770: 62 79 20 60 63 6f 6e 66 69 67 75 72 65 27 2e 20 by `configure'.
0780: 2a 2f 0a 0a 0a 2f 2a 20 4d 61 78 20 23 20 77 6f */.../* Max # wo
0790: 72 64 73 20 69 6e 20 61 72 67 75 6d 65 6e 74 2d rds in argument-
07a0: 6c 69 73 74 20 61 6e 64 20 74 65 6d 70 6f 72 61 list and tempora
07b0: 72 79 20 73 74 72 75 63 74 75 72 65 20 73 74 6f ry structure sto
07c0: 72 61 67 65 2e 0a 20 2a 2f 0a 23 69 66 6e 64 65 rage.. */.#ifnde
07d0: 66 20 5f 5f 41 56 5f 41 4c 49 53 54 5f 57 4f 52 f __AV_ALIST_WOR
07e0: 44 53 0a 23 64 65 66 69 6e 65 20 5f 5f 41 56 5f DS.#define __AV_
07f0: 41 4c 49 53 54 5f 57 4f 52 44 53 20 20 32 35 36 ALIST_WORDS 256
0800: 0a 23 65 6e 64 69 66 0a 0a 2f 2a 20 44 65 74 65 .#endif../* Dete
0810: 72 6d 69 6e 65 20 74 68 65 20 61 6c 69 67 6e 6d rmine the alignm
0820: 65 6e 74 20 6f 66 20 61 20 74 79 70 65 20 61 74 ent of a type at
0830: 20 63 6f 6d 70 69 6c 65 20 74 69 6d 65 2e 0a 20 compile time..
0840: 2a 2f 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f */.#if defined(_
0850: 5f 47 4e 55 43 5f 5f 29 0a 23 64 65 66 69 6e 65 _GNUC__).#define
0860: 20 5f 5f 41 56 5f 61 6c 69 67 6e 6f 66 20 5f 5f __AV_alignof __
0870: 61 6c 69 67 6e 6f 66 5f 5f 0a 23 65 6c 73 65 0a alignof__.#else.
0880: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 #if defined(__mi
0890: 70 73 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 ps__) || defined
08a0: 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 7c 7c (__mipsn32__) ||
08b0: 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 36 defined(__mips6
08c0: 34 5f 5f 29 20 2f 2a 20 53 47 49 20 63 6f 6d 70 4__) /* SGI comp
08d0: 69 6c 65 72 20 2a 2f 0a 23 64 65 66 69 6e 65 20 iler */.#define
08e0: 5f 5f 41 56 5f 61 6c 69 67 6e 6f 66 20 5f 5f 62 __AV_alignof __b
08f0: 75 69 6c 74 69 6e 5f 61 6c 69 67 6e 6f 66 0a 23 uiltin_alignof.#
0900: 65 6c 73 65 0a 23 64 65 66 69 6e 65 20 5f 5f 41 else.#define __A
0910: 56 5f 6f 66 66 73 65 74 6f 66 28 74 79 70 65 2c V_offsetof(type,
0920: 69 64 65 6e 74 29 20 20 28 28 75 6e 73 69 67 6e ident) ((unsign
0930: 65 64 20 6c 6f 6e 67 29 26 28 28 28 74 79 70 65 ed long)&(((type
0940: 2a 29 30 29 2d 3e 69 64 65 6e 74 29 29 0a 23 64 *)0)->ident)).#d
0950: 65 66 69 6e 65 20 5f 5f 41 56 5f 61 6c 69 67 6e efine __AV_align
0960: 6f 66 28 74 79 70 65 29 20 20 5f 5f 41 56 5f 6f of(type) __AV_o
0970: 66 66 73 65 74 6f 66 28 73 74 72 75 63 74 20 7b ffsetof(struct {
0980: 20 63 68 61 72 20 5f 5f 73 6c 6f 74 31 3b 20 74 char __slot1; t
0990: 79 70 65 20 5f 5f 73 6c 6f 74 32 3b 20 7d 2c 20 ype __slot2; },
09a0: 5f 5f 73 6c 6f 74 32 29 0a 23 65 6e 64 69 66 0a __slot2).#endif.
09b0: 23 65 6e 64 69 66 0a 0a 2f 2a 20 43 20 62 75 69 #endif../* C bui
09c0: 6c 74 69 6e 20 74 79 70 65 73 2e 0a 20 2a 2f 0a ltin types.. */.
09d0: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 #if defined(__mi
09e0: 70 73 6e 33 32 5f 5f 29 0a 74 79 70 65 64 65 66 psn32__).typedef
09f0: 20 6c 6f 6e 67 20 6c 6f 6e 67 20 5f 5f 61 76 77 long long __avw
0a00: 6f 72 64 3b 0a 23 65 6c 73 65 0a 74 79 70 65 64 ord;.#else.typed
0a10: 65 66 20 6c 6f 6e 67 20 5f 5f 61 76 77 6f 72 64 ef long __avword
0a20: 3b 0a 23 65 6e 64 69 66 0a 0a 65 6e 75 6d 20 5f ;.#endif..enum _
0a30: 5f 41 56 74 79 70 65 0a 7b 0a 20 20 5f 5f 41 56 _AVtype.{. __AV
0a40: 77 6f 72 64 2c 0a 20 20 5f 5f 41 56 76 6f 69 64 word,. __AVvoid
0a50: 2c 0a 20 20 5f 5f 41 56 63 68 61 72 2c 0a 20 20 ,. __AVchar,.
0a60: 5f 5f 41 56 73 63 68 61 72 2c 0a 20 20 5f 5f 41 __AVschar,. __A
0a70: 56 75 63 68 61 72 2c 0a 20 20 5f 5f 41 56 73 68 Vuchar,. __AVsh
0a80: 6f 72 74 2c 0a 20 20 5f 5f 41 56 75 73 68 6f 72 ort,. __AVushor
0a90: 74 2c 0a 20 20 5f 5f 41 56 69 6e 74 2c 0a 20 20 t,. __AVint,.
0aa0: 5f 5f 41 56 75 69 6e 74 2c 0a 20 20 5f 5f 41 56 __AVuint,. __AV
0ab0: 6c 6f 6e 67 2c 0a 20 20 5f 5f 41 56 75 6c 6f 6e long,. __AVulon
0ac0: 67 2c 0a 20 20 5f 5f 41 56 6c 6f 6e 67 6c 6f 6e g,. __AVlonglon
0ad0: 67 2c 0a 20 20 5f 5f 41 56 75 6c 6f 6e 67 6c 6f g,. __AVulonglo
0ae0: 6e 67 2c 0a 20 20 5f 5f 41 56 66 6c 6f 61 74 2c ng,. __AVfloat,
0af0: 0a 20 20 5f 5f 41 56 64 6f 75 62 6c 65 2c 0a 20 . __AVdouble,.
0b00: 20 5f 5f 41 56 76 6f 69 64 70 2c 0a 20 20 5f 5f __AVvoidp,. __
0b10: 41 56 73 74 72 75 63 74 0a 7d 3b 0a 0a 65 6e 75 AVstruct.};..enu
0b20: 6d 20 5f 5f 41 56 5f 61 6c 69 73 74 5f 66 6c 61 m __AV_alist_fla
0b30: 67 73 0a 7b 0a 0a 20 20 2f 2a 20 68 6f 77 20 74 gs.{.. /* how t
0b40: 6f 20 72 65 74 75 72 6e 20 73 74 72 75 63 74 73 o return structs
0b50: 20 2a 2f 0a 20 20 2f 2a 20 54 68 65 72 65 20 61 */. /* There a
0b60: 72 65 20 62 61 73 69 63 61 6c 6c 79 20 33 20 77 re basically 3 w
0b70: 61 79 73 20 74 6f 20 72 65 74 75 72 6e 20 73 74 ays to return st
0b80: 72 75 63 74 73 3a 0a 20 20 20 2a 20 61 2e 20 54 ructs:. * a. T
0b90: 68 65 20 63 61 6c 6c 65 64 20 66 75 6e 63 74 69 he called functi
0ba0: 6f 6e 20 72 65 74 75 72 6e 73 20 61 20 70 6f 69 on returns a poi
0bb0: 6e 74 65 72 20 74 6f 20 73 74 61 74 69 63 20 64 nter to static d
0bc0: 61 74 61 2e 20 4e 6f 74 20 72 65 65 6e 74 72 61 ata. Not reentra
0bd0: 6e 74 2e 0a 20 20 20 2a 20 62 2e 20 54 68 65 20 nt.. * b. The
0be0: 63 61 6c 6c 65 72 20 70 61 73 73 65 73 20 74 68 caller passes th
0bf0: 65 20 72 65 74 75 72 6e 20 73 74 72 75 63 74 75 e return structu
0c00: 72 65 20 61 64 64 72 65 73 73 20 69 6e 20 61 20 re address in a
0c10: 64 65 64 69 63 61 74 65 64 20 72 65 67 69 73 74 dedicated regist
0c20: 65 72 0a 20 20 20 2a 20 20 20 20 6f 72 20 61 73 er. * or as
0c30: 20 61 20 66 69 72 73 74 20 28 6f 72 20 6c 61 73 a first (or las
0c40: 74 29 2c 20 69 6e 76 69 73 69 62 6c 65 20 61 72 t), invisible ar
0c50: 67 75 6d 65 6e 74 2e 20 54 68 65 20 63 61 6c 6c gument. The call
0c60: 65 64 20 66 75 6e 63 74 69 6f 6e 20 73 74 6f 72 ed function stor
0c70: 65 73 0a 20 20 20 2a 20 20 20 20 69 74 73 20 72 es. * its r
0c80: 65 73 75 6c 74 20 74 68 65 72 65 2e 0a 20 20 20 esult there..
0c90: 2a 20 63 2e 20 4c 69 6b 65 20 62 2c 20 61 6e 64 * c. Like b, and
0ca0: 20 74 68 65 20 63 61 6c 6c 65 64 20 66 75 6e 63 the called func
0cb0: 74 69 6f 6e 20 61 6c 73 6f 20 72 65 74 75 72 6e tion also return
0cc0: 73 20 74 68 65 20 72 65 74 75 72 6e 20 73 74 72 s the return str
0cd0: 75 63 74 75 72 65 0a 20 20 20 2a 20 20 20 20 61 ucture. * a
0ce0: 64 64 72 65 73 73 20 69 6e 20 74 68 65 20 72 65 ddress in the re
0cf0: 74 75 72 6e 20 76 61 6c 75 65 20 72 65 67 69 73 turn value regis
0d00: 74 65 72 2e 20 28 54 68 69 73 20 69 73 20 6e 6f ter. (This is no
0d10: 74 20 76 65 72 79 20 64 69 73 74 69 6e 67 75 69 t very distingui
0d20: 73 68 61 62 6c 65 0a 20 20 20 2a 20 20 20 20 66 shable. * f
0d30: 72 6f 6d 20 62 2e 29 0a 20 20 20 2a 20 49 6e 64 rom b.). * Ind
0d40: 65 70 65 6e 64 65 6e 74 6c 79 20 6f 66 20 74 68 ependently of th
0d50: 69 73 2c 0a 20 20 20 2a 20 72 2e 20 73 6d 61 6c is,. * r. smal
0d60: 6c 20 73 74 72 75 63 74 75 72 65 73 20 28 3c 3d l structures (<=
0d70: 20 34 20 6f 72 20 3c 3d 20 38 20 62 79 74 65 73 4 or <= 8 bytes
0d80: 29 20 6d 61 79 20 62 65 20 72 65 74 75 72 6e 65 ) may be returne
0d90: 64 20 69 6e 20 74 68 65 20 72 65 74 75 72 6e 0a d in the return.
0da0: 20 20 20 2a 20 20 20 20 76 61 6c 75 65 20 72 65 * value re
0db0: 67 69 73 74 65 72 28 73 29 2c 20 6f 72 0a 20 20 gister(s), or.
0dc0: 20 2a 20 6d 2e 20 65 76 65 6e 20 73 6d 61 6c 6c * m. even small
0dd0: 20 73 74 72 75 63 74 75 72 65 73 20 61 72 65 20 structures are
0de0: 70 61 73 73 65 64 20 69 6e 20 6d 65 6d 6f 72 79 passed in memory
0df0: 2e 0a 20 20 20 2a 2f 0a 20 20 2f 2a 20 67 63 63 .. */. /* gcc
0e00: 2d 32 2e 36 2e 33 20 65 6d 70 6c 6f 79 73 20 74 -2.6.3 employs t
0e10: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 73 74 72 he following str
0e20: 61 74 65 67 79 3a 0a 20 20 20 2a 20 20 20 2d 20 ategy:. * -
0e30: 49 66 20 50 43 43 5f 53 54 41 54 49 43 5f 53 54 If PCC_STATIC_ST
0e40: 52 55 43 54 5f 52 45 54 55 52 4e 20 69 73 20 64 RUCT_RETURN is d
0e50: 65 66 69 6e 65 64 20 69 6e 20 74 68 65 20 6d 61 efined in the ma
0e60: 63 68 69 6e 65 20 64 65 73 63 72 69 70 74 69 6f chine descriptio
0e70: 6e 0a 20 20 20 2a 20 20 20 20 20 69 74 20 75 73 n. * it us
0e80: 65 73 20 6d 65 74 68 6f 64 20 61 2c 20 65 6c 73 es method a, els
0e90: 65 20 6d 65 74 68 6f 64 20 63 2e 0a 20 20 20 2a e method c.. *
0ea0: 20 20 20 2d 20 49 66 20 66 6c 61 67 5f 70 63 63 - If flag_pcc
0eb0: 5f 73 74 72 75 63 74 5f 72 65 74 75 72 6e 20 69 _struct_return i
0ec0: 73 20 73 65 74 20 28 65 69 74 68 65 72 20 62 79 s set (either by
0ed0: 20 2d 66 70 63 63 2d 73 74 72 75 63 74 2d 72 65 -fpcc-struct-re
0ee0: 74 75 72 6e 20 6f 72 20 69 66 0a 20 20 20 2a 20 turn or if. *
0ef0: 20 20 20 20 44 45 46 41 55 4c 54 5f 50 43 43 5f DEFAULT_PCC_
0f00: 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20 69 73 STRUCT_RETURN is
0f10: 20 64 65 66 69 6e 65 64 20 74 6f 20 31 20 69 6e defined to 1 in
0f20: 20 74 68 65 20 6d 61 63 68 69 6e 65 20 64 65 73 the machine des
0f30: 63 72 69 70 74 69 6f 6e 29 0a 20 20 20 2a 20 20 cription). *
0f40: 20 20 20 69 74 20 75 73 65 73 20 6d 65 74 68 6f it uses metho
0f50: 64 20 6d 2c 20 65 6c 73 65 20 28 65 69 74 68 65 d m, else (eithe
0f60: 72 20 62 79 20 2d 66 72 65 67 2d 73 74 72 75 63 r by -freg-struc
0f70: 74 2d 72 65 74 75 72 6e 20 6f 72 20 69 66 0a 20 t-return or if.
0f80: 20 20 2a 20 20 20 20 20 44 45 46 41 55 4c 54 5f * DEFAULT_
0f90: 50 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52 PCC_STRUCT_RETUR
0fa0: 4e 20 69 73 20 64 65 66 69 6e 65 64 20 74 6f 20 N is defined to
0fb0: 30 20 69 6e 20 74 68 65 20 6d 61 63 68 69 6e 65 0 in the machine
0fc0: 20 64 65 73 63 72 69 70 74 69 6f 6e 29 0a 20 20 description).
0fd0: 20 2a 20 20 20 20 20 6d 65 74 68 6f 64 20 72 2e * method r.
0fe0: 0a 20 20 20 2a 2f 0a 20 20 5f 5f 41 56 5f 50 43 . */. __AV_PC
0ff0: 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 09 C_STRUCT_RETURN.
1000: 3d 20 31 3c 3c 30 2c 09 2f 2a 20 61 3a 20 6e 65 = 1<<0,./* a: ne
1010: 65 64 20 74 6f 20 63 6f 70 79 20 74 68 65 20 73 ed to copy the s
1020: 74 72 75 63 74 20 2a 2f 0a 20 20 5f 5f 41 56 5f truct */. __AV_
1030: 53 4d 41 4c 4c 5f 53 54 52 55 43 54 5f 52 45 54 SMALL_STRUCT_RET
1040: 55 52 4e 09 3d 20 31 3c 3c 31 2c 09 2f 2a 20 72 URN.= 1<<1,./* r
1050: 3a 20 73 70 65 63 69 61 6c 20 63 61 73 65 20 66 : special case f
1060: 6f 72 20 73 6d 61 6c 6c 20 73 74 72 75 63 74 73 or small structs
1070: 20 2a 2f 0a 20 20 5f 5f 41 56 5f 47 43 43 5f 53 */. __AV_GCC_S
1080: 54 52 55 43 54 5f 52 45 54 55 52 4e 09 3d 20 31 TRUCT_RETURN.= 1
1090: 3c 3c 32 2c 09 2f 2a 20 63 6f 6e 73 69 64 65 72 <<2,./* consider
10a0: 20 38 20 62 79 74 65 20 73 74 72 75 63 74 73 20 8 byte structs
10b0: 61 73 20 73 6d 61 6c 6c 20 2a 2f 0a 23 69 66 20 as small */.#if
10c0: 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f defined(__sparc_
10d0: 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f _) && !defined(_
10e0: 5f 73 70 61 72 63 36 34 5f 5f 29 0a 20 20 5f 5f _sparc64__). __
10f0: 41 56 5f 53 55 4e 43 43 5f 53 54 52 55 43 54 5f AV_SUNCC_STRUCT_
1100: 52 45 54 55 52 4e 09 3d 20 31 3c 3c 33 2c 0a 20 RETURN.= 1<<3,.
1110: 20 5f 5f 41 56 5f 53 55 4e 50 52 4f 43 43 5f 53 __AV_SUNPROCC_S
1120: 54 52 55 43 54 5f 52 45 54 55 52 4e 09 3d 20 31 TRUCT_RETURN.= 1
1130: 3c 3c 34 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 <<4,.#endif.#if
1140: 64 65 66 69 6e 65 64 28 5f 5f 69 33 38 36 5f 5f defined(__i386__
1150: 29 0a 20 20 5f 5f 41 56 5f 4e 45 58 54 47 43 43 ). __AV_NEXTGCC
1160: 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 09 3d _STRUCT_RETURN.=
1170: 20 31 3c 3c 33 2c 0a 20 20 5f 5f 41 56 5f 4d 53 1<<3,. __AV_MS
1180: 56 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e VC_STRUCT_RETURN
1190: 09 3d 20 31 3c 3c 34 2c 0a 23 65 6e 64 69 66 0a .= 1<<4,.#endif.
11a0: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 68 70 #if defined(__hp
11b0: 70 61 5f 5f 29 0a 20 20 5f 5f 41 56 5f 4f 4c 44 pa__). __AV_OLD
11c0: 47 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52 GCC_STRUCT_RETUR
11d0: 4e 09 3d 20 31 3c 3c 33 2c 0a 23 65 6e 64 69 66 N.= 1<<3,.#endif
11e0: 0a 20 20 2f 2a 20 74 68 65 20 64 65 66 61 75 6c . /* the defaul
11f0: 74 20 77 61 79 20 74 6f 20 72 65 74 75 72 6e 20 t way to return
1200: 73 74 72 75 63 74 73 20 2a 2f 0a 20 20 2f 2a 20 structs */. /*
1210: 54 68 69 73 20 63 68 6f 69 63 65 20 68 65 72 65 This choice here
1220: 20 69 73 20 62 61 73 65 64 20 6f 6e 20 74 68 65 is based on the
1230: 20 61 73 73 75 6d 70 74 69 6f 6e 20 74 68 61 74 assumption that
1240: 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 79 6f the function yo
1250: 75 20 61 72 65 0a 20 20 20 2a 20 67 6f 69 6e 67 u are. * going
1260: 20 74 6f 20 63 61 6c 6c 20 68 61 73 20 62 65 65 to call has bee
1270: 6e 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 n compiled with
1280: 74 68 65 20 73 61 6d 65 20 63 6f 6d 70 69 6c 65 the same compile
1290: 72 20 79 6f 75 20 61 72 65 20 75 73 69 6e 67 20 r you are using
12a0: 74 6f 0a 20 20 20 2a 20 69 6e 63 6c 75 64 65 20 to. * include
12b0: 74 68 69 73 20 66 69 6c 65 2e 0a 20 20 20 2a 20 this file.. *
12c0: 49 66 20 79 6f 75 20 77 61 6e 74 20 74 6f 20 63 If you want to c
12d0: 61 6c 6c 20 66 75 6e 63 74 69 6f 6e 73 20 77 69 all functions wi
12e0: 74 68 20 61 6e 6f 74 68 65 72 20 73 74 72 75 63 th another struc
12f0: 74 20 72 65 74 75 72 6e 69 6e 67 20 63 6f 6e 76 t returning conv
1300: 65 6e 74 69 6f 6e 2c 0a 20 20 20 2a 20 6a 75 73 ention,. * jus
1310: 74 20 20 23 64 65 66 69 6e 65 20 5f 5f 41 56 5f t #define __AV_
1320: 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20 2e 2e STRUCT_RETURN ..
1330: 2e 0a 20 20 20 2a 20 62 65 66 6f 72 65 20 6f 72 .. * before or
1340: 20 61 66 74 65 72 20 23 69 6e 63 6c 75 64 69 6e after #includin
1350: 67 20 3c 61 76 63 61 6c 6c 2e 68 3e 2e 0a 20 20 g <avcall.h>..
1360: 20 2a 2f 0a 23 69 66 6e 64 65 66 20 5f 5f 41 56 */.#ifndef __AV
1370: 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 0a 20 _STRUCT_RETURN.
1380: 20 5f 5f 41 56 5f 53 54 52 55 43 54 5f 52 45 54 __AV_STRUCT_RET
1390: 55 52 4e 09 09 3d 0a 23 69 66 20 64 65 66 69 6e URN..=.#if defin
13a0: 65 64 28 5f 5f 73 70 61 72 63 5f 5f 29 20 26 26 ed(__sparc__) &&
13b0: 20 21 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 !defined(__spar
13c0: 63 36 34 5f 5f 29 20 26 26 20 64 65 66 69 6e 65 c64__) && define
13d0: 64 28 73 75 6e 29 20 26 26 20 64 65 66 69 6e 65 d(sun) && define
13e0: 64 28 5f 5f 53 55 4e 50 52 4f 5f 43 29 20 2f 2a d(__SUNPRO_C) /*
13f0: 20 53 55 4e 57 73 70 72 6f 20 63 63 20 2a 2f 0a SUNWspro cc */.
1400: 09 09 09 09 20 20 5f 5f 41 56 5f 53 55 4e 50 52 .... __AV_SUNPR
1410: 4f 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52 OCC_STRUCT_RETUR
1420: 4e 2c 0a 23 65 6c 73 65 0a 23 69 66 20 64 65 66 N,.#else.#if def
1430: 69 6e 65 64 28 5f 5f 50 43 43 5f 53 54 52 55 43 ined(__PCC_STRUC
1440: 54 5f 52 45 54 55 52 4e 5f 5f 29 20 2f 2a 20 64 T_RETURN__) /* d
1450: 65 66 69 6e 65 64 20 74 68 72 6f 75 67 68 20 63 efined through c
1460: 6f 6e 66 69 67 75 72 65 2c 20 73 65 65 20 61 62 onfigure, see ab
1470: 6f 76 65 20 2a 2f 0a 09 09 09 09 20 20 5f 5f 41 ove */..... __A
1480: 56 5f 50 43 43 5f 53 54 52 55 43 54 5f 52 45 54 V_PCC_STRUCT_RET
1490: 55 52 4e 20 7c 0a 23 69 66 20 64 65 66 69 6e 65 URN |.#if define
14a0: 64 28 5f 5f 73 70 61 72 63 5f 5f 29 20 26 26 20 d(__sparc__) &&
14b0: 21 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 !defined(__sparc
14c0: 36 34 5f 5f 29 20 26 26 20 64 65 66 69 6e 65 64 64__) && defined
14d0: 28 73 75 6e 29 20 26 26 20 21 28 64 65 66 69 6e (sun) && !(defin
14e0: 65 64 28 5f 5f 53 54 44 43 5f 5f 29 20 7c 7c 20 ed(__STDC__) ||
14f0: 64 65 66 69 6e 65 64 28 5f 5f 47 4e 55 43 5f 5f defined(__GNUC__
1500: 29 29 20 2f 2a 20 73 75 6e 20 63 63 20 2a 2f 0a )) /* sun cc */.
1510: 20 20 09 09 09 09 20 20 5f 5f 41 56 5f 53 55 4e .... __AV_SUN
1520: 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e CC_STRUCT_RETURN
1530: 2c 0a 23 65 6c 73 65 0a 20 20 09 09 09 09 20 20 ,.#else. ....
1540: 30 2c 0a 23 65 6e 64 69 66 0a 23 65 6c 73 65 0a 0,.#endif.#else.
1550: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 53 4d #if defined(__SM
1560: 41 4c 4c 5f 53 54 52 55 43 54 5f 52 45 54 55 52 ALL_STRUCT_RETUR
1570: 4e 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 N__) || defined(
1580: 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 7c 7c 20 __mipsn32__) ||
1590: 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 36 34 defined(__mips64
15a0: 5f 5f 29 20 2f 2a 20 64 65 66 69 6e 65 64 20 74 __) /* defined t
15b0: 68 72 6f 75 67 68 20 63 6f 6e 66 69 67 75 72 65 hrough configure
15c0: 2c 20 73 65 65 20 61 62 6f 76 65 20 2a 2f 0a 09 , see above */..
15d0: 09 09 09 20 20 5f 5f 41 56 5f 53 4d 41 4c 4c 5f ... __AV_SMALL_
15e0: 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20 7c 0a STRUCT_RETURN |.
15f0: 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e #endif.#if defin
1600: 65 64 28 5f 5f 47 4e 55 43 5f 5f 29 0a 09 09 09 ed(__GNUC__)....
1610: 09 20 20 5f 5f 41 56 5f 47 43 43 5f 53 54 52 55 . __AV_GCC_STRU
1620: 43 54 5f 52 45 54 55 52 4e 20 7c 0a 23 65 6e 64 CT_RETURN |.#end
1630: 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f if.#if defined(_
1640: 5f 69 33 38 36 5f 5f 29 20 26 26 20 64 65 66 69 _i386__) && defi
1650: 6e 65 64 28 4e 65 58 54 29 20 26 26 20 64 65 66 ned(NeXT) && def
1660: 69 6e 65 64 28 5f 5f 47 4e 55 43 5f 5f 29 20 2f ined(__GNUC__) /
1670: 2a 20 4e 65 58 54 20 67 63 63 2d 32 2e 35 2e 38 * NeXT gcc-2.5.8
1680: 20 2a 2f 0a 09 09 09 09 20 20 5f 5f 41 56 5f 4e */..... __AV_N
1690: 45 58 54 47 43 43 5f 53 54 52 55 43 54 5f 52 45 EXTGCC_STRUCT_RE
16a0: 54 55 52 4e 20 7c 0a 23 65 6e 64 69 66 0a 23 69 TURN |.#endif.#i
16b0: 66 20 64 65 66 69 6e 65 64 28 5f 5f 69 33 38 36 f defined(__i386
16c0: 5f 5f 29 20 26 26 20 64 65 66 69 6e 65 64 28 5f __) && defined(_
16d0: 4d 53 43 5f 56 45 52 29 20 2f 2a 20 4d 53 56 43 MSC_VER) /* MSVC
16e0: 20 34 2e 30 20 2a 2f 0a 09 09 09 09 20 20 5f 5f 4.0 */..... __
16f0: 41 56 5f 4d 53 56 43 5f 53 54 52 55 43 54 5f 52 AV_MSVC_STRUCT_R
1700: 45 54 55 52 4e 20 7c 0a 23 65 6e 64 69 66 0a 23 ETURN |.#endif.#
1710: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 68 70 70 if defined(__hpp
1720: 61 5f 5f 29 20 26 26 20 64 65 66 69 6e 65 64 28 a__) && defined(
1730: 5f 5f 47 4e 55 43 5f 5f 29 20 26 26 20 28 5f 5f __GNUC__) && (__
1740: 47 4e 55 43 5f 5f 20 3c 20 33 29 20 26 26 20 28 GNUC__ < 3) && (
1750: 5f 5f 47 4e 55 43 5f 4d 49 4e 4f 52 5f 5f 20 3c __GNUC_MINOR__ <
1760: 20 37 29 0a 09 09 09 09 20 20 5f 5f 41 56 5f 4f 7)..... __AV_O
1770: 4c 44 47 43 43 5f 53 54 52 55 43 54 5f 52 45 54 LDGCC_STRUCT_RET
1780: 55 52 4e 20 7c 0a 23 65 6e 64 69 66 0a 20 20 09 URN |.#endif. .
1790: 09 09 09 20 20 30 2c 0a 23 65 6e 64 69 66 0a 23 ... 0,.#endif.#
17a0: 65 6e 64 69 66 0a 23 65 6e 64 69 66 0a 0a 20 20 endif.#endif..
17b0: 2f 2a 20 68 6f 77 20 74 6f 20 72 65 74 75 72 6e /* how to return
17c0: 20 66 6c 6f 61 74 73 20 2a 2f 0a 23 69 66 20 64 floats */.#if d
17d0: 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f 5f 29 efined(__m68k__)
17e0: 20 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f 73 || (defined(__s
17f0: 70 61 72 63 5f 5f 29 20 26 26 20 21 64 65 66 69 parc__) && !defi
1800: 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29 ned(__sparc64__)
1810: 29 0a 20 20 5f 5f 41 56 5f 53 55 4e 43 43 5f 46 ). __AV_SUNCC_F
1820: 4c 4f 41 54 5f 52 45 54 55 52 4e 09 3d 20 31 3c LOAT_RETURN.= 1<
1830: 3c 35 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 <5,.#endif.#if d
1840: 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f 5f 29 efined(__m68k__)
1850: 0a 20 20 5f 5f 41 56 5f 46 52 45 47 5f 46 4c 4f . __AV_FREG_FLO
1860: 41 54 5f 52 45 54 55 52 4e 09 3d 20 31 3c 3c 36 AT_RETURN.= 1<<6
1870: 2c 0a 23 65 6e 64 69 66 0a 20 20 2f 2a 20 74 68 ,.#endif. /* th
1880: 65 20 64 65 66 61 75 6c 74 20 77 61 79 20 74 6f e default way to
1890: 20 72 65 74 75 72 6e 20 66 6c 6f 61 74 73 20 2a return floats *
18a0: 2f 0a 20 20 2f 2a 20 54 68 69 73 20 63 68 6f 69 /. /* This choi
18b0: 63 65 20 68 65 72 65 20 69 73 20 62 61 73 65 64 ce here is based
18c0: 20 6f 6e 20 74 68 65 20 61 73 73 75 6d 70 74 69 on the assumpti
18d0: 6f 6e 20 74 68 61 74 20 74 68 65 20 66 75 6e 63 on that the func
18e0: 74 69 6f 6e 20 79 6f 75 20 61 72 65 0a 20 20 20 tion you are.
18f0: 2a 20 67 6f 69 6e 67 20 74 6f 20 63 61 6c 6c 20 * going to call
1900: 68 61 73 20 62 65 65 6e 20 63 6f 6d 70 69 6c 65 has been compile
1910: 64 20 77 69 74 68 20 74 68 65 20 73 61 6d 65 20 d with the same
1920: 63 6f 6d 70 69 6c 65 72 20 79 6f 75 20 61 72 65 compiler you are
1930: 20 75 73 69 6e 67 20 74 6f 0a 20 20 20 2a 20 69 using to. * i
1940: 6e 63 6c 75 64 65 20 74 68 69 73 20 66 69 6c 65 nclude this file
1950: 2e 0a 20 20 20 2a 20 49 66 20 79 6f 75 20 77 61 .. * If you wa
1960: 6e 74 20 74 6f 20 63 61 6c 6c 20 66 75 6e 63 74 nt to call funct
1970: 69 6f 6e 73 20 77 69 74 68 20 61 6e 6f 74 68 65 ions with anothe
1980: 72 20 66 6c 6f 61 74 20 72 65 74 75 72 6e 69 6e r float returnin
1990: 67 20 63 6f 6e 76 65 6e 74 69 6f 6e 2c 0a 20 20 g convention,.
19a0: 20 2a 20 6a 75 73 74 20 20 23 64 65 66 69 6e 65 * just #define
19b0: 20 5f 5f 41 56 5f 46 4c 4f 41 54 5f 52 45 54 55 __AV_FLOAT_RETU
19c0: 52 4e 20 2e 2e 2e 0a 20 20 20 2a 20 62 65 66 6f RN .... * befo
19d0: 72 65 20 6f 72 20 61 66 74 65 72 20 23 69 6e 63 re or after #inc
19e0: 6c 75 64 69 6e 67 20 3c 61 76 63 61 6c 6c 2e 68 luding <avcall.h
19f0: 3e 2e 0a 20 20 20 2a 2f 0a 23 69 66 6e 64 65 66 >.. */.#ifndef
1a00: 20 5f 5f 41 56 5f 46 4c 4f 41 54 5f 52 45 54 55 __AV_FLOAT_RETU
1a10: 52 4e 0a 23 69 66 20 28 64 65 66 69 6e 65 64 28 RN.#if (defined(
1a20: 5f 5f 6d 36 38 6b 5f 5f 29 20 7c 7c 20 28 64 65 __m68k__) || (de
1a30: 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f 5f 29 fined(__sparc__)
1a40: 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 73 && !defined(__s
1a50: 70 61 72 63 36 34 5f 5f 29 29 29 20 26 26 20 21 parc64__))) && !
1a60: 64 65 66 69 6e 65 64 28 5f 5f 47 4e 55 43 5f 5f defined(__GNUC__
1a70: 29 20 26 26 20 64 65 66 69 6e 65 64 28 73 75 6e ) && defined(sun
1a80: 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f ) && !defined(__
1a90: 53 55 4e 50 52 4f 5f 43 29 20 20 2f 2a 20 73 75 SUNPRO_C) /* su
1aa0: 6e 20 63 63 20 2a 2f 0a 20 20 5f 5f 41 56 5f 46 n cc */. __AV_F
1ab0: 4c 4f 41 54 5f 52 45 54 55 52 4e 09 09 3d 20 5f LOAT_RETURN..= _
1ac0: 5f 41 56 5f 53 55 4e 43 43 5f 46 4c 4f 41 54 5f _AV_SUNCC_FLOAT_
1ad0: 52 45 54 55 52 4e 2c 0a 23 65 6c 69 66 20 28 64 RETURN,.#elif (d
1ae0: 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f 5f 29 efined(__m68k__)
1af0: 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 49 && !defined(__I
1b00: 52 45 47 5f 46 4c 4f 41 54 5f 52 45 54 55 52 4e REG_FLOAT_RETURN
1b10: 5f 5f 29 29 0a 20 20 5f 5f 41 56 5f 46 4c 4f 41 __)). __AV_FLOA
1b20: 54 5f 52 45 54 55 52 4e 09 09 3d 20 5f 5f 41 56 T_RETURN..= __AV
1b30: 5f 46 52 45 47 5f 46 4c 4f 41 54 5f 52 45 54 55 _FREG_FLOAT_RETU
1b40: 52 4e 2c 0a 23 65 6c 73 65 0a 20 20 5f 5f 41 56 RN,.#else. __AV
1b50: 5f 46 4c 4f 41 54 5f 52 45 54 55 52 4e 09 09 3d _FLOAT_RETURN..=
1b60: 20 30 2c 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69 0,.#endif.#endi
1b70: 66 0a 0a 20 20 2f 2a 20 68 6f 77 20 74 6f 20 70 f.. /* how to p
1b80: 61 73 73 20 73 74 72 75 63 74 73 20 2a 2f 0a 23 ass structs */.#
1b90: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 if defined(__mip
1ba0: 73 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 s__) || defined(
1bb0: 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 7c 7c 20 __mipsn32__) ||
1bc0: 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 36 34 defined(__mips64
1bd0: 5f 5f 29 0a 20 20 5f 5f 41 56 5f 53 47 49 43 43 __). __AV_SGICC
1be0: 5f 53 54 52 55 43 54 5f 41 52 47 53 09 3d 20 31 _STRUCT_ARGS.= 1
1bf0: 3c 3c 37 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 <<7,.#endif.#if
1c00: 64 65 66 69 6e 65 64 28 5f 5f 72 73 36 30 30 30 defined(__rs6000
1c10: 5f 5f 29 0a 20 20 5f 5f 41 56 5f 41 49 58 43 43 __). __AV_AIXCC
1c20: 5f 53 54 52 55 43 54 5f 41 52 47 53 09 3d 20 31 _STRUCT_ARGS.= 1
1c30: 3c 3c 37 2c 0a 23 65 6e 64 69 66 0a 20 20 2f 2a <<7,.#endif. /*
1c40: 20 74 68 65 20 64 65 66 61 75 6c 74 20 77 61 79 the default way
1c50: 20 74 6f 20 70 61 73 73 20 66 6c 6f 61 74 73 20 to pass floats
1c60: 2a 2f 0a 20 20 2f 2a 20 54 68 69 73 20 63 68 6f */. /* This cho
1c70: 69 63 65 20 68 65 72 65 20 69 73 20 62 61 73 65 ice here is base
1c80: 64 20 6f 6e 20 74 68 65 20 61 73 73 75 6d 70 74 d on the assumpt
1c90: 69 6f 6e 20 74 68 61 74 20 74 68 65 20 66 75 6e ion that the fun
1ca0: 63 74 69 6f 6e 20 79 6f 75 20 61 72 65 0a 20 20 ction you are.
1cb0: 20 2a 20 67 6f 69 6e 67 20 74 6f 20 63 61 6c 6c * going to call
1cc0: 20 68 61 73 20 62 65 65 6e 20 63 6f 6d 70 69 6c has been compil
1cd0: 65 64 20 77 69 74 68 20 74 68 65 20 73 61 6d 65 ed with the same
1ce0: 20 63 6f 6d 70 69 6c 65 72 20 79 6f 75 20 61 72 compiler you ar
1cf0: 65 20 75 73 69 6e 67 20 74 6f 0a 20 20 20 2a 20 e using to. *
1d00: 69 6e 63 6c 75 64 65 20 74 68 69 73 20 66 69 6c include this fil
1d10: 65 2e 0a 20 20 20 2a 20 49 66 20 79 6f 75 20 77 e.. * If you w
1d20: 61 6e 74 20 74 6f 20 63 61 6c 6c 20 66 75 6e 63 ant to call func
1d30: 74 69 6f 6e 73 20 77 69 74 68 20 61 6e 6f 74 68 tions with anoth
1d40: 65 72 20 66 6c 6f 61 74 20 70 61 73 73 69 6e 67 er float passing
1d50: 20 63 6f 6e 76 65 6e 74 69 6f 6e 2c 0a 20 20 20 convention,.
1d60: 2a 20 6a 75 73 74 20 20 23 64 65 66 69 6e 65 20 * just #define
1d70: 5f 5f 41 56 5f 53 54 52 55 43 54 5f 41 52 47 53 __AV_STRUCT_ARGS
1d80: 20 2e 2e 2e 0a 20 20 20 2a 20 62 65 66 6f 72 65 .... * before
1d90: 20 6f 72 20 61 66 74 65 72 20 23 69 6e 63 6c 75 or after #inclu
1da0: 64 69 6e 67 20 3c 61 76 63 61 6c 6c 2e 68 3e 2e ding <avcall.h>.
1db0: 0a 20 20 20 2a 2f 0a 23 69 66 6e 64 65 66 20 5f . */.#ifndef _
1dc0: 5f 41 56 5f 53 54 52 55 43 54 5f 41 52 47 53 0a _AV_STRUCT_ARGS.
1dd0: 23 69 66 20 28 64 65 66 69 6e 65 64 28 5f 5f 6d #if (defined(__m
1de0: 69 70 73 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 ips__) || define
1df0: 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 7c d(__mipsn32__) |
1e00: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 | defined(__mips
1e10: 36 34 5f 5f 29 29 20 26 26 20 21 64 65 66 69 6e 64__)) && !defin
1e20: 65 64 28 5f 5f 47 4e 55 43 5f 5f 29 20 2f 2a 20 ed(__GNUC__) /*
1e30: 53 47 49 20 6d 69 70 73 20 63 63 20 2a 2f 0a 20 SGI mips cc */.
1e40: 20 5f 5f 41 56 5f 53 54 52 55 43 54 5f 41 52 47 __AV_STRUCT_ARG
1e50: 53 09 09 3d 20 5f 5f 41 56 5f 53 47 49 43 43 5f S..= __AV_SGICC_
1e60: 53 54 52 55 43 54 5f 41 52 47 53 2c 0a 23 65 6c STRUCT_ARGS,.#el
1e70: 73 65 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f se.#if defined(_
1e80: 5f 72 73 36 30 30 30 5f 5f 29 20 26 26 20 64 65 _rs6000__) && de
1e90: 66 69 6e 65 64 28 5f 41 49 58 29 20 26 26 20 21 fined(_AIX) && !
1ea0: 64 65 66 69 6e 65 64 28 5f 5f 47 4e 55 43 5f 5f defined(__GNUC__
1eb0: 29 20 2f 2a 20 41 49 58 20 63 63 2c 20 78 6c 63 ) /* AIX cc, xlc
1ec0: 20 2a 2f 0a 20 20 5f 5f 41 56 5f 53 54 52 55 43 */. __AV_STRUC
1ed0: 54 5f 41 52 47 53 09 09 3d 20 5f 5f 41 56 5f 41 T_ARGS..= __AV_A
1ee0: 49 58 43 43 5f 53 54 52 55 43 54 5f 41 52 47 53 IXCC_STRUCT_ARGS
1ef0: 2c 0a 23 65 6c 73 65 0a 20 20 5f 5f 41 56 5f 53 ,.#else. __AV_S
1f00: 54 52 55 43 54 5f 41 52 47 53 09 09 3d 20 30 2c TRUCT_ARGS..= 0,
1f10: 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69 66 0a 23 .#endif.#endif.#
1f20: 65 6e 64 69 66 0a 0a 20 20 2f 2a 20 68 6f 77 20 endif.. /* how
1f30: 74 6f 20 70 61 73 73 20 66 6c 6f 61 74 73 20 2a to pass floats *
1f40: 2f 0a 20 20 2f 2a 20 41 4e 53 49 20 43 20 63 6f /. /* ANSI C co
1f50: 6d 70 69 6c 65 72 73 20 61 6e 64 20 47 4e 55 20 mpilers and GNU
1f60: 67 63 63 20 70 61 73 73 20 66 6c 6f 61 74 73 20 gcc pass floats
1f70: 61 73 20 66 6c 6f 61 74 73 2e 0a 20 20 20 2a 20 as floats.. *
1f80: 4b 26 52 20 43 20 63 6f 6d 70 69 6c 65 72 73 20 K&R C compilers
1f90: 70 61 73 73 20 66 6c 6f 61 74 73 20 61 73 20 64 pass floats as d
1fa0: 6f 75 62 6c 65 73 2e 0a 20 20 20 2a 20 28 45 78 oubles.. * (Ex
1fb0: 63 65 70 74 20 73 6f 6d 65 20 63 6f 6d 70 69 6c cept some compil
1fc0: 65 72 73 20 6c 69 6b 65 20 53 47 49 20 4d 49 50 ers like SGI MIP
1fd0: 53 20 22 63 63 22 20 61 6e 64 20 22 63 63 20 2d S "cc" and "cc -
1fe0: 63 63 6b 72 22 20 69 66 20 61 20 70 72 6f 74 6f cckr" if a proto
1ff0: 74 79 70 65 20 69 73 0a 20 20 20 2a 20 6b 6e 6f type is. * kno
2000: 77 6e 20 66 6f 72 20 74 68 65 20 63 61 6c 6c 65 wn for the calle
2010: 64 20 66 75 6e 63 74 69 6f 6e 73 2e 20 42 75 74 d functions. But
2020: 20 74 6f 20 63 6f 6d 70 69 6c 65 20 61 20 70 72 to compile a pr
2030: 6f 67 72 61 6d 20 77 69 74 68 20 70 72 6f 74 6f ogram with proto
2040: 74 79 70 65 73 2c 0a 20 20 20 2a 20 22 63 63 20 types,. * "cc
2050: 2d 61 6e 73 69 22 20 69 73 20 62 65 74 74 65 72 -ansi" is better
2060: 20 61 6e 79 77 61 79 2e 0a 20 20 20 2a 2f 0a 20 anyway.. */.
2070: 20 5f 5f 41 56 5f 41 4e 53 49 5f 46 4c 4f 41 54 __AV_ANSI_FLOAT
2080: 5f 41 52 47 53 09 09 3d 20 30 2c 20 20 20 20 2f _ARGS..= 0, /
2090: 2a 20 70 61 73 73 20 66 6c 6f 61 74 73 20 61 73 * pass floats as
20a0: 20 66 6c 6f 61 74 73 20 2a 2f 0a 20 20 5f 5f 41 floats */. __A
20b0: 56 5f 54 52 41 44 49 54 49 4f 4e 41 4c 5f 46 4c V_TRADITIONAL_FL
20c0: 4f 41 54 5f 41 52 47 53 09 3d 20 31 3c 3c 38 2c OAT_ARGS.= 1<<8,
20d0: 20 2f 2a 20 70 61 73 73 20 66 6c 6f 61 74 73 20 /* pass floats
20e0: 61 73 20 64 6f 75 62 6c 65 73 20 2a 2f 0a 20 20 as doubles */.
20f0: 2f 2a 20 74 68 65 20 64 65 66 61 75 6c 74 20 77 /* the default w
2100: 61 79 20 74 6f 20 70 61 73 73 20 66 6c 6f 61 74 ay to pass float
2110: 73 20 2a 2f 0a 20 20 2f 2a 20 54 68 69 73 20 63 s */. /* This c
2120: 68 6f 69 63 65 20 68 65 72 65 20 69 73 20 62 61 hoice here is ba
2130: 73 65 64 20 6f 6e 20 74 68 65 20 61 73 73 75 6d sed on the assum
2140: 70 74 69 6f 6e 20 74 68 61 74 20 74 68 65 20 66 ption that the f
2150: 75 6e 63 74 69 6f 6e 20 79 6f 75 20 61 72 65 0a unction you are.
2160: 20 20 20 2a 20 67 6f 69 6e 67 20 74 6f 20 63 61 * going to ca
2170: 6c 6c 20 68 61 73 20 62 65 65 6e 20 63 6f 6d 70 ll has been comp
2180: 69 6c 65 64 20 77 69 74 68 20 74 68 65 20 73 61 iled with the sa
2190: 6d 65 20 63 6f 6d 70 69 6c 65 72 20 79 6f 75 20 me compiler you
21a0: 61 72 65 20 75 73 69 6e 67 20 74 6f 0a 20 20 20 are using to.
21b0: 2a 20 69 6e 63 6c 75 64 65 20 74 68 69 73 20 66 * include this f
21c0: 69 6c 65 2e 0a 20 20 20 2a 20 49 66 20 79 6f 75 ile.. * If you
21d0: 20 77 61 6e 74 20 74 6f 20 63 61 6c 6c 20 66 75 want to call fu
21e0: 6e 63 74 69 6f 6e 73 20 77 69 74 68 20 61 6e 6f nctions with ano
21f0: 74 68 65 72 20 66 6c 6f 61 74 20 70 61 73 73 69 ther float passi
2200: 6e 67 20 63 6f 6e 76 65 6e 74 69 6f 6e 2c 0a 20 ng convention,.
2210: 20 20 2a 20 6a 75 73 74 20 20 23 64 65 66 69 6e * just #defin
2220: 65 20 5f 5f 41 56 5f 46 4c 4f 41 54 5f 41 52 47 e __AV_FLOAT_ARG
2230: 53 20 2e 2e 2e 0a 20 20 20 2a 20 62 65 66 6f 72 S .... * befor
2240: 65 20 6f 72 20 61 66 74 65 72 20 23 69 6e 63 6c e or after #incl
2250: 75 64 69 6e 67 20 3c 61 76 63 61 6c 6c 2e 68 3e uding <avcall.h>
2260: 2e 0a 20 20 20 2a 2f 0a 23 69 66 6e 64 65 66 20 .. */.#ifndef
2270: 5f 5f 41 56 5f 46 4c 4f 41 54 5f 41 52 47 53 0a __AV_FLOAT_ARGS.
2280: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 53 54 #if defined(__ST
2290: 44 43 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 DC__) || defined
22a0: 28 5f 5f 47 4e 55 43 5f 5f 29 20 2f 2a 20 77 68 (__GNUC__) /* wh
22b0: 61 74 20 61 62 6f 75 74 20 68 70 70 61 20 22 63 at about hppa "c
22c0: 63 20 2d 41 61 22 20 3f 3f 20 2a 2f 0a 20 20 5f c -Aa" ?? */. _
22d0: 5f 41 56 5f 46 4c 4f 41 54 5f 41 52 47 53 09 09 _AV_FLOAT_ARGS..
22e0: 3d 20 5f 5f 41 56 5f 41 4e 53 49 5f 46 4c 4f 41 = __AV_ANSI_FLOA
22f0: 54 5f 41 52 47 53 2c 0a 23 65 6c 73 65 0a 20 20 T_ARGS,.#else.
2300: 5f 5f 41 56 5f 46 4c 4f 41 54 5f 41 52 47 53 09 __AV_FLOAT_ARGS.
2310: 09 3d 20 5f 5f 41 56 5f 54 52 41 44 49 54 49 4f .= __AV_TRADITIO
2320: 4e 41 4c 5f 46 4c 4f 41 54 5f 41 52 47 53 2c 0a NAL_FLOAT_ARGS,.
2330: 23 65 6e 64 69 66 0a 23 65 6e 64 69 66 0a 0a 20 #endif.#endif..
2340: 20 2f 2a 20 68 6f 77 20 74 6f 20 70 61 73 73 20 /* how to pass
2350: 61 6e 64 20 72 65 74 75 72 6e 20 73 6d 61 6c 6c and return small
2360: 20 69 6e 74 65 67 65 72 20 61 72 67 75 6d 65 6e integer argumen
2370: 74 73 20 2a 2f 0a 20 20 5f 5f 41 56 5f 41 4e 53 ts */. __AV_ANS
2380: 49 5f 49 4e 54 45 47 45 52 53 09 09 3d 20 30 2c I_INTEGERS..= 0,
2390: 20 2f 2a 20 6e 6f 20 70 72 6f 6d 6f 74 69 6f 6e /* no promotion
23a0: 73 20 2a 2f 0a 20 20 5f 5f 41 56 5f 54 52 41 44 s */. __AV_TRAD
23b0: 49 54 49 4f 4e 41 4c 5f 49 4e 54 45 47 45 52 53 ITIONAL_INTEGERS
23c0: 09 3d 20 30 2c 20 2f 2a 20 70 72 6f 6d 6f 74 65 .= 0, /* promote
23d0: 20 5b 75 5d 63 68 61 72 2c 20 5b 75 5d 73 68 6f [u]char, [u]sho
23e0: 72 74 20 74 6f 20 5b 75 5d 69 6e 74 20 2a 2f 0a rt to [u]int */.
23f0: 20 20 2f 2a 20 46 6f 72 74 75 6e 61 74 65 6c 79 /* Fortunately
2400: 20 74 68 65 73 65 20 74 77 6f 20 6d 65 74 68 6f these two metho
2410: 64 73 20 61 72 65 20 63 6f 6d 70 61 74 69 62 6c ds are compatibl
2420: 65 2e 20 4f 75 72 20 6d 61 63 72 6f 73 20 77 6f e. Our macros wo
2430: 72 6b 20 77 69 74 68 20 62 6f 74 68 2e 20 2a 2f rk with both. */
2440: 0a 20 20 2f 2a 20 74 68 65 20 64 65 66 61 75 6c . /* the defaul
2450: 74 20 77 61 79 20 74 6f 20 70 61 73 73 20 61 6e t way to pass an
2460: 64 20 72 65 74 75 72 6e 20 73 6d 61 6c 6c 20 69 d return small i
2470: 6e 74 65 67 65 72 20 61 72 67 75 6d 65 6e 74 73 nteger arguments
2480: 20 2a 2f 0a 20 20 2f 2a 20 54 68 69 73 20 63 68 */. /* This ch
2490: 6f 69 63 65 20 68 65 72 65 20 69 73 20 62 61 73 oice here is bas
24a0: 65 64 20 6f 6e 20 74 68 65 20 61 73 73 75 6d 70 ed on the assump
24b0: 74 69 6f 6e 20 74 68 61 74 20 74 68 65 20 66 75 tion that the fu
24c0: 6e 63 74 69 6f 6e 20 79 6f 75 20 61 72 65 0a 20 nction you are.
24d0: 20 20 2a 20 67 6f 69 6e 67 20 74 6f 20 63 61 6c * going to cal
24e0: 6c 20 68 61 73 20 62 65 65 6e 20 63 6f 6d 70 69 l has been compi
24f0: 6c 65 64 20 77 69 74 68 20 74 68 65 20 73 61 6d led with the sam
2500: 65 20 63 6f 6d 70 69 6c 65 72 20 79 6f 75 20 61 e compiler you a
2510: 72 65 20 75 73 69 6e 67 20 74 6f 0a 20 20 20 2a re using to. *
2520: 20 69 6e 63 6c 75 64 65 20 74 68 69 73 20 66 69 include this fi
2530: 6c 65 2e 0a 20 20 20 2a 20 49 66 20 79 6f 75 20 le.. * If you
2540: 77 61 6e 74 20 74 6f 20 63 61 6c 6c 20 66 75 6e want to call fun
2550: 63 74 69 6f 6e 73 20 77 69 74 68 20 61 6e 6f 74 ctions with anot
2560: 68 65 72 20 66 6c 6f 61 74 20 70 61 73 73 69 6e her float passin
2570: 67 20 63 6f 6e 76 65 6e 74 69 6f 6e 2c 0a 20 20 g convention,.
2580: 20 2a 20 6a 75 73 74 20 20 23 64 65 66 69 6e 65 * just #define
2590: 20 5f 5f 41 56 5f 49 4e 54 45 47 45 52 53 20 2e __AV_INTEGERS .
25a0: 2e 2e 0a 20 20 20 2a 20 62 65 66 6f 72 65 20 6f ... * before o
25b0: 72 20 61 66 74 65 72 20 23 69 6e 63 6c 75 64 69 r after #includi
25c0: 6e 67 20 3c 61 76 63 61 6c 6c 2e 68 3e 2e 0a 20 ng <avcall.h>..
25d0: 20 20 2a 2f 0a 23 69 66 6e 64 65 66 20 5f 5f 41 */.#ifndef __A
25e0: 56 5f 49 4e 54 45 47 45 52 53 0a 23 69 66 20 64 V_INTEGERS.#if d
25f0: 65 66 69 6e 65 64 28 5f 5f 53 54 44 43 5f 5f 29 efined(__STDC__)
2600: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 47 4e || defined(__GN
2610: 55 43 5f 5f 29 0a 20 20 5f 5f 41 56 5f 49 4e 54 UC__). __AV_INT
2620: 45 47 45 52 53 09 09 09 3d 20 5f 5f 41 56 5f 41 EGERS...= __AV_A
2630: 4e 53 49 5f 49 4e 54 45 47 45 52 53 2c 0a 23 65 NSI_INTEGERS,.#e
2640: 6c 73 65 0a 20 20 5f 5f 41 56 5f 49 4e 54 45 47 lse. __AV_INTEG
2650: 45 52 53 09 09 09 3d 20 5f 5f 41 56 5f 54 52 41 ERS...= __AV_TRA
2660: 44 49 54 49 4f 4e 41 4c 5f 49 4e 54 45 47 45 52 DITIONAL_INTEGER
2670: 53 2c 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69 66 S,.#endif.#endif
2680: 0a 0a 20 20 2f 2a 20 73 74 61 63 6b 20 63 6c 65 .. /* stack cle
2690: 61 6e 75 70 20 70 6f 6c 69 63 79 20 2a 2f 0a 20 anup policy */.
26a0: 20 5f 5f 41 56 5f 43 44 45 43 4c 5f 43 4c 45 41 __AV_CDECL_CLEA
26b0: 4e 55 50 09 09 3d 20 30 2c 20 2f 2a 20 63 61 6c NUP..= 0, /* cal
26c0: 6c 65 72 20 70 6f 70 73 20 61 72 67 73 20 61 66 ler pops args af
26d0: 74 65 72 20 72 65 74 75 72 6e 20 2a 2f 0a 20 20 ter return */.
26e0: 5f 5f 41 56 5f 53 54 44 43 41 4c 4c 5f 43 4c 45 __AV_STDCALL_CLE
26f0: 41 4e 55 50 09 09 3d 20 30 2c 20 2f 2a 20 63 61 ANUP..= 0, /* ca
2700: 6c 6c 65 65 20 70 6f 70 73 20 61 72 67 73 20 62 llee pops args b
2710: 65 66 6f 72 65 20 72 65 74 75 72 6e 20 2a 2f 0a efore return */.
2720: 09 09 09 09 20 20 20 20 20 2f 2a 20 63 75 72 72 .... /* curr
2730: 65 6e 74 6c 79 20 6f 6e 6c 79 20 73 75 70 70 6f ently only suppo
2740: 72 74 65 64 20 6f 6e 20 5f 5f 69 33 38 36 5f 5f rted on __i386__
2750: 20 2a 2f 0a 23 69 66 6e 64 65 66 20 5f 5f 41 56 */.#ifndef __AV
2760: 5f 43 4c 45 41 4e 55 50 0a 20 20 5f 5f 41 56 5f _CLEANUP. __AV_
2770: 43 4c 45 41 4e 55 50 09 09 09 3d 20 5f 5f 41 56 CLEANUP...= __AV
2780: 5f 43 44 45 43 4c 5f 43 4c 45 41 4e 55 50 2c 0a _CDECL_CLEANUP,.
2790: 23 65 6e 64 69 66 0a 0a 20 20 2f 2a 20 54 68 65 #endif.. /* The
27a0: 73 65 20 61 72 65 20 66 6f 72 20 69 6e 74 65 72 se are for inter
27b0: 6e 61 6c 20 75 73 65 20 6f 6e 6c 79 20 2a 2f 0a nal use only */.
27c0: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 69 33 #if defined(__i3
27d0: 38 36 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 86__) || defined
27e0: 28 5f 5f 6d 36 38 6b 5f 5f 29 20 7c 7c 20 64 65 (__m68k__) || de
27f0: 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f fined(__mipsn32_
2800: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f _) || defined(__
2810: 6d 69 70 73 36 34 5f 5f 29 20 7c 7c 20 64 65 66 mips64__) || def
2820: 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f ined(__sparc64__
2830: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 61 ) || defined(__a
2840: 6c 70 68 61 5f 5f 29 20 7c 7c 20 64 65 66 69 6e lpha__) || defin
2850: 65 64 28 5f 5f 61 72 6d 5f 5f 29 20 7c 7c 20 64 ed(__arm__) || d
2860: 65 66 69 6e 65 64 28 5f 5f 72 73 36 30 30 30 5f efined(__rs6000_
2870: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f _) || defined(__
2880: 63 6f 6e 76 65 78 5f 5f 29 20 7c 7c 20 64 65 66 convex__) || def
2890: 69 6e 65 64 28 5f 5f 69 61 36 34 5f 5f 29 20 7c ined(__ia64__) |
28a0: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 78 38 36 5f | defined(__x86_
28b0: 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 64__) || defined
28c0: 28 5f 5f 73 33 39 30 5f 5f 29 0a 20 20 5f 5f 41 (__s390__). __A
28d0: 56 5f 52 45 47 49 53 54 45 52 5f 53 54 52 55 43 V_REGISTER_STRUC
28e0: 54 5f 52 45 54 55 52 4e 09 3d 20 31 3c 3c 39 2c T_RETURN.= 1<<9,
28f0: 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 .#endif.#if defi
2900: 6e 65 64 28 5f 5f 6d 69 70 73 5f 5f 29 20 26 26 ned(__mips__) &&
2910: 20 21 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 !defined(__mips
2920: 6e 33 32 5f 5f 29 0a 20 20 5f 5f 41 56 5f 46 4c n32__). __AV_FL
2930: 4f 41 54 5f 31 09 09 09 3d 20 31 3c 3c 31 30 2c OAT_1...= 1<<10,
2940: 0a 20 20 5f 5f 41 56 5f 46 4c 4f 41 54 5f 32 09 . __AV_FLOAT_2.
2950: 09 09 3d 20 31 3c 3c 31 31 2c 0a 23 65 6e 64 69 ..= 1<<11,.#endi
2960: 66 0a 0a 20 20 5f 5f 41 56 5f 66 6c 61 67 5f 66 f.. __AV_flag_f
2970: 6f 72 5f 62 72 6f 6b 65 6e 5f 63 6f 6d 70 69 6c or_broken_compil
2980: 65 72 73 5f 74 68 61 74 5f 64 6f 6e 74 5f 6c 69 ers_that_dont_li
2990: 6b 65 5f 74 72 61 69 6c 69 6e 67 5f 63 6f 6d 6d ke_trailing_comm
29a0: 61 73 0a 7d 3b 0a 0a 74 79 70 65 64 65 66 20 73 as.};..typedef s
29b0: 74 72 75 63 74 0a 7b 0a 20 20 2f 2a 20 66 75 6e truct.{. /* fun
29c0: 63 74 69 6f 6e 20 74 6f 20 62 65 20 63 61 6c 6c ction to be call
29d0: 65 64 20 2a 2f 0a 20 20 5f 5f 61 76 77 6f 72 64 ed */. __avword
29e0: 09 09 28 2a 66 75 6e 63 29 28 29 3b 0a 20 20 2f ..(*func)();. /
29f0: 2a 20 73 6f 6d 65 20 61 76 5f 2e 2e 2e 20 6d 61 * some av_... ma
2a00: 63 72 6f 73 20 6e 65 65 64 20 74 68 65 73 65 20 cros need these
2a10: 66 6c 61 67 73 20 2a 2f 0a 20 20 69 6e 74 09 09 flags */. int..
2a20: 09 66 6c 61 67 73 3b 0a 20 20 2f 2a 20 72 65 74 .flags;. /* ret
2a30: 75 72 6e 20 74 79 70 65 2c 20 61 64 64 72 65 73 urn type, addres
2a40: 73 20 66 6f 72 20 74 68 65 20 72 65 73 75 6c 74 s for the result
2a50: 20 2a 2f 0a 20 20 76 6f 69 64 2a 09 09 09 72 61 */. void*...ra
2a60: 64 64 72 3b 0a 20 20 65 6e 75 6d 20 5f 5f 41 56 ddr;. enum __AV
2a70: 74 79 70 65 09 09 72 74 79 70 65 3b 0a 20 20 75 type..rtype;. u
2a80: 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 09 09 72 73 nsigned long..rs
2a90: 69 7a 65 3b 0a 20 20 2f 2a 20 63 75 72 72 65 6e ize;. /* curren
2aa0: 74 20 70 6f 69 6e 74 65 72 20 69 6e 74 6f 20 74 t pointer into t
2ab0: 68 65 20 61 72 67 73 5b 5d 20 61 72 72 61 79 20 he args[] array
2ac0: 2a 2f 0a 20 20 5f 5f 61 76 77 6f 72 64 2a 09 09 */. __avword*..
2ad0: 61 70 74 72 3b 0a 23 69 66 20 64 65 66 69 6e 65 aptr;.#if define
2ae0: 64 28 5f 5f 73 70 61 72 63 5f 5f 29 20 7c 7c 20 d(__sparc__) ||
2af0: 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 defined(__sparc6
2b00: 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 4__) || defined(
2b10: 5f 5f 68 70 70 61 5f 5f 29 20 7c 7c 20 28 64 65 __hppa__) || (de
2b20: 66 69 6e 65 64 28 5f 5f 72 73 36 30 30 30 5f 5f fined(__rs6000__
2b30: 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 41 ) && !defined(_A
2b40: 49 58 29 20 26 26 20 21 28 64 65 66 69 6e 65 64 IX) && !(defined
2b50: 28 5f 5f 4d 41 43 48 5f 5f 29 20 26 26 20 64 65 (__MACH__) && de
2b60: 66 69 6e 65 64 28 5f 5f 41 50 50 4c 45 5f 5f 29 fined(__APPLE__)
2b70: 29 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f )) || defined(__
2b80: 73 33 39 30 5f 5f 29 0a 20 20 2f 2a 20 6c 69 6d s390__). /* lim
2b90: 69 74 20 70 6f 69 6e 74 65 72 20 69 6e 74 6f 20 it pointer into
2ba0: 74 68 65 20 61 72 67 73 5b 5d 20 61 72 72 61 79 the args[] array
2bb0: 20 2a 2f 0a 20 20 5f 5f 61 76 77 6f 72 64 2a 09 */. __avword*.
2bc0: 09 65 70 74 72 3b 0a 23 65 6e 64 69 66 0a 23 69 .eptr;.#endif.#i
2bd0: 66 20 64 65 66 69 6e 65 64 28 5f 5f 69 33 38 36 f defined(__i386
2be0: 5f 5f 29 20 26 26 20 30 0a 20 20 2f 2a 20 46 69 __) && 0. /* Fi
2bf0: 6c 6c 65 72 20 77 6f 72 64 2c 20 6e 65 65 64 65 ller word, neede
2c00: 64 20 69 66 20 74 68 65 20 6e 75 6d 62 65 72 73 d if the numbers
2c10: 20 6f 66 20 77 6f 72 64 73 20 75 70 20 74 6f 20 of words up to
2c20: 6e 6f 77 20 69 6e 20 74 68 69 73 20 73 74 72 75 now in this stru
2c30: 63 74 75 72 65 20 2a 2f 0a 20 20 2f 2a 20 69 73 cture */. /* is
2c40: 20 6f 64 64 20 28 62 65 63 61 75 73 65 20 6f 6e odd (because on
2c50: 20 4d 53 56 43 2c 20 61 6c 69 67 6e 6f 66 28 64 MSVC, alignof(d
2c60: 6f 75 62 6c 65 29 20 3d 20 38 2c 20 6e 6f 72 6d ouble) = 8, norm
2c70: 61 6c 6c 79 20 3d 20 34 29 2e 20 20 20 20 20 20 ally = 4).
2c80: 20 20 20 20 20 20 2a 2f 0a 20 20 5f 5f 61 76 77 */. __avw
2c90: 6f 72 64 09 09 66 69 6c 6c 65 72 31 3b 0a 23 65 ord..filler1;.#e
2ca0: 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 ndif.#if defined
2cb0: 28 5f 5f 69 33 38 36 5f 5f 29 20 7c 7c 20 64 65 (__i386__) || de
2cc0: 66 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f 5f 29 20 fined(__m68k__)
2cd0: 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f 73 70 || (defined(__sp
2ce0: 61 72 63 5f 5f 29 20 26 26 20 21 64 65 66 69 6e arc__) && !defin
2cf0: 65 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29 29 ed(__sparc64__))
2d00: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 68 70 || defined(__hp
2d10: 70 61 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 pa__) || defined
2d20: 28 5f 5f 61 72 6d 5f 5f 29 20 7c 7c 20 64 65 66 (__arm__) || def
2d30: 69 6e 65 64 28 5f 5f 72 73 36 30 30 30 5f 5f 29 ined(__rs6000__)
2d40: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 63 6f || defined(__co
2d50: 6e 76 65 78 5f 5f 29 20 7c 7c 20 64 65 66 69 6e nvex__) || defin
2d60: 65 64 28 5f 5f 73 33 39 30 5f 5f 29 0a 20 20 2f ed(__s390__). /
2d70: 2a 20 74 65 6d 70 6f 72 61 72 79 20 73 74 6f 72 * temporary stor
2d80: 61 67 65 2c 20 75 73 65 64 20 74 6f 20 73 70 6c age, used to spl
2d90: 69 74 20 64 6f 75 62 6c 65 73 20 69 6e 74 6f 20 it doubles into
2da0: 74 77 6f 20 77 6f 72 64 73 20 2a 2f 0a 20 20 75 two words */. u
2db0: 6e 69 6f 6e 20 7b 0a 20 20 20 20 64 6f 75 62 6c nion {. doubl
2dc0: 65 09 5f 64 6f 75 62 6c 65 3b 0a 23 69 66 20 64 e._double;.#if d
2dd0: 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f 5f efined(__sparc__
2de0: 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f ) && !defined(__
2df0: 73 70 61 72 63 36 34 5f 5f 29 20 26 26 20 64 65 sparc64__) && de
2e00: 66 69 6e 65 64 28 48 41 56 45 5f 4c 4f 4e 47 4c fined(HAVE_LONGL
2e10: 4f 4e 47 29 0a 20 20 20 20 6c 6f 6e 67 20 6c 6f ONG). long lo
2e20: 6e 67 09 5f 6c 6f 6e 67 6c 6f 6e 67 3b 0a 23 65 ng._longlong;.#e
2e30: 6e 64 69 66 0a 20 20 20 20 5f 5f 61 76 77 6f 72 ndif. __avwor
2e40: 64 09 77 6f 72 64 73 5b 32 5d 3b 0a 20 20 7d 09 d.words[2];. }.
2e50: 09 09 74 6d 70 3b 0a 23 65 6e 64 69 66 0a 23 69 ..tmp;.#endif.#i
2e60: 66 20 64 65 66 69 6e 65 64 28 5f 5f 78 38 36 5f f defined(__x86_
2e70: 36 34 5f 5f 29 0a 20 20 2f 2a 20 73 74 6f 72 65 64__). /* store
2e80: 20 74 68 65 20 69 6e 74 65 67 65 72 20 61 72 67 the integer arg
2e90: 75 6d 65 6e 74 73 20 69 6e 20 61 6e 20 65 78 74 uments in an ext
2ea0: 72 61 20 61 72 72 61 79 20 2a 2f 0a 20 20 5f 5f ra array */. __
2eb0: 61 76 77 6f 72 64 2a 09 09 69 61 70 74 72 3b 0a avword*..iaptr;.
2ec0: 20 20 5f 5f 61 76 77 6f 72 64 09 09 69 61 72 67 __avword..iarg
2ed0: 73 5b 36 5d 3b 0a 23 65 6e 64 69 66 0a 23 69 66 s[6];.#endif.#if
2ee0: 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 5f defined(__mips_
2ef0: 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f _) && !defined(_
2f00: 5f 6d 69 70 73 6e 33 32 5f 5f 29 0a 20 20 2f 2a _mipsn32__). /*
2f10: 20 73 74 6f 72 65 20 74 68 65 20 66 6c 6f 61 74 store the float
2f20: 69 6e 67 2d 70 6f 69 6e 74 20 61 72 67 75 6d 65 ing-point argume
2f30: 6e 74 73 20 69 6e 20 61 6e 20 65 78 74 72 61 20 nts in an extra
2f40: 61 72 72 61 79 20 2a 2f 0a 20 20 69 6e 74 09 09 array */. int..
2f50: 09 61 6e 75 6d 3b 0a 20 20 64 6f 75 62 6c 65 09 .anum;. double.
2f60: 09 66 6c 6f 61 74 61 72 67 5b 32 5d 3b 0a 23 65 .floatarg[2];.#e
2f70: 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 ndif.#if defined
2f80: 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 7c 7c (__mipsn32__) ||
2f90: 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 36 defined(__mips6
2fa0: 34 5f 5f 29 0a 20 20 2f 2a 20 73 74 6f 72 65 20 4__). /* store
2fb0: 74 68 65 20 66 6c 6f 61 74 69 6e 67 2d 70 6f 69 the floating-poi
2fc0: 6e 74 20 61 72 67 75 6d 65 6e 74 73 20 69 6e 20 nt arguments in
2fd0: 61 6e 20 65 78 74 72 61 20 61 72 72 61 79 20 2a an extra array *
2fe0: 2f 0a 20 20 69 6e 74 09 09 09 61 6e 75 6d 3b 09 /. int...anum;.
2ff0: 09 2f 2a 20 72 65 64 75 6e 64 61 6e 74 3a 20 28 ./* redundant: (
3000: 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 26 28 4c LIST).aptr = &(L
3010: 49 53 54 29 2e 61 72 67 73 5b 28 4c 49 53 54 29 IST).args[(LIST)
3020: 2e 61 6e 75 6d 5d 20 2a 2f 0a 20 20 75 6e 73 69 .anum] */. unsi
3030: 67 6e 65 64 20 69 6e 74 09 09 66 61 72 67 5f 6d gned int..farg_m
3040: 61 73 6b 3b 09 2f 2a 20 62 69 74 6d 61 73 6b 20 ask;./* bitmask
3050: 6f 66 20 74 68 6f 73 65 20 65 6e 74 72 69 65 73 of those entries
3060: 20 69 6e 20 66 61 72 67 5b 5d 20 77 68 69 63 68 in farg[] which
3070: 20 68 61 76 65 20 61 20 76 61 6c 75 65 20 2a 2f have a value */
3080: 0a 20 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 09 . unsigned int.
3090: 09 64 61 72 67 5f 6d 61 73 6b 3b 09 2f 2a 20 62 .darg_mask;./* b
30a0: 69 74 6d 61 73 6b 20 6f 66 20 74 68 6f 73 65 20 itmask of those
30b0: 65 6e 74 72 69 65 73 20 69 6e 20 61 72 67 73 5b entries in args[
30c0: 5d 20 77 68 69 63 68 20 68 61 76 65 20 61 20 64 ] which have a d
30d0: 6f 75 62 6c 65 20 76 61 6c 75 65 20 2a 2f 0a 20 ouble value */.
30e0: 20 66 6c 6f 61 74 09 09 09 66 61 72 67 5b 38 5d float...farg[8]
30f0: 3b 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 ;.#endif.#if def
3100: 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f ined(__sparc64__
3110: 29 0a 20 20 2f 2a 20 73 74 6f 72 65 20 74 68 65 ). /* store the
3120: 20 66 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e 74 20 floating-point
3130: 61 72 67 75 6d 65 6e 74 73 20 69 6e 20 61 6e 20 arguments in an
3140: 65 78 74 72 61 20 61 72 72 61 79 20 2a 2f 0a 20 extra array */.
3150: 20 69 6e 74 09 09 09 61 6e 75 6d 3b 09 09 2f 2a int...anum;../*
3160: 20 72 65 64 75 6e 64 61 6e 74 3a 20 28 4c 49 53 redundant: (LIS
3170: 54 29 2e 61 70 74 72 20 3d 20 26 28 4c 49 53 54 T).aptr = &(LIST
3180: 29 2e 61 72 67 73 5b 28 4c 49 53 54 29 2e 61 6e ).args[(LIST).an
3190: 75 6d 5d 20 2a 2f 0a 20 20 75 6e 73 69 67 6e 65 um] */. unsigne
31a0: 64 20 69 6e 74 09 09 66 61 72 67 5f 6d 61 73 6b d int..farg_mask
31b0: 3b 09 2f 2a 20 62 69 74 6d 61 73 6b 20 6f 66 20 ;./* bitmask of
31c0: 74 68 6f 73 65 20 65 6e 74 72 69 65 73 20 69 6e those entries in
31d0: 20 66 61 72 67 5b 5d 20 77 68 69 63 68 20 68 61 farg[] which ha
31e0: 76 65 20 61 20 76 61 6c 75 65 20 2a 2f 0a 20 20 ve a value */.
31f0: 75 6e 73 69 67 6e 65 64 20 69 6e 74 09 09 64 61 unsigned int..da
3200: 72 67 5f 6d 61 73 6b 3b 09 2f 2a 20 62 69 74 6d rg_mask;./* bitm
3210: 61 73 6b 20 6f 66 20 74 68 6f 73 65 20 65 6e 74 ask of those ent
3220: 72 69 65 73 20 69 6e 20 61 72 67 73 5b 5d 20 77 ries in args[] w
3230: 68 69 63 68 20 68 61 76 65 20 61 20 64 6f 75 62 hich have a doub
3240: 6c 65 20 76 61 6c 75 65 20 2a 2f 0a 23 65 6e 64 le value */.#end
3250: 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f if.#if defined(_
3260: 5f 69 61 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69 _ia64__) || defi
3270: 6e 65 64 28 5f 5f 78 38 36 5f 36 34 5f 5f 29 0a ned(__x86_64__).
3280: 20 20 2f 2a 20 73 74 6f 72 65 20 74 68 65 20 66 /* store the f
3290: 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e 74 20 61 72 loating-point ar
32a0: 67 75 6d 65 6e 74 73 20 69 6e 20 61 6e 20 65 78 guments in an ex
32b0: 74 72 61 20 61 72 72 61 79 20 2a 2f 0a 20 20 64 tra array */. d
32c0: 6f 75 62 6c 65 2a 09 09 66 61 70 74 72 3b 0a 20 ouble*..faptr;.
32d0: 20 64 6f 75 62 6c 65 09 09 66 61 72 67 73 5b 38 double..fargs[8
32e0: 5d 3b 0a 23 65 6e 64 69 66 0a 20 20 5f 5f 61 76 ];.#endif. __av
32f0: 77 6f 72 64 09 09 61 72 67 73 5b 5f 5f 41 56 5f word..args[__AV_
3300: 41 4c 49 53 54 5f 57 4f 52 44 53 5d 3b 20 2f 2a ALIST_WORDS]; /*
3310: 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29 2d sizeof(double)-
3320: 61 6c 69 67 6e 65 64 20 2a 2f 0a 23 69 66 20 64 aligned */.#if d
3330: 65 66 69 6e 65 64 28 5f 5f 72 73 36 30 30 30 5f efined(__rs6000_
3340: 5f 29 0a 20 20 2f 2a 20 73 74 6f 72 65 20 74 68 _). /* store th
3350: 65 20 66 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e 74 e floating-point
3360: 20 61 72 67 75 6d 65 6e 74 73 20 69 6e 20 61 6e arguments in an
3370: 20 65 78 74 72 61 20 61 72 72 61 79 20 2a 2f 0a extra array */.
3380: 20 20 64 6f 75 62 6c 65 2a 09 09 66 61 70 74 72 double*..faptr
3390: 3b 0a 20 20 64 6f 75 62 6c 65 09 09 66 61 72 67 ;. double..farg
33a0: 73 5b 31 33 5d 3b 0a 23 65 6e 64 69 66 0a 23 69 s[13];.#endif.#i
33b0: 66 20 64 65 66 69 6e 65 64 28 5f 5f 73 33 39 30 f defined(__s390
33c0: 5f 5f 29 0a 20 20 2f 2a 20 73 74 6f 72 65 20 74 __). /* store t
33d0: 68 65 20 66 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e he floating-poin
33e0: 74 20 61 72 67 75 6d 65 6e 74 73 20 69 6e 20 61 t arguments in a
33f0: 6e 20 65 78 74 72 61 20 61 72 72 61 79 20 2a 2f n extra array */
3400: 0a 20 20 69 6e 74 20 20 20 09 09 66 61 72 67 77 . int ..fargw
3410: 6f 72 64 73 3b 0a 20 20 66 6c 6f 61 74 2a 09 09 ords;. float*..
3420: 66 61 70 74 72 3b 0a 20 20 66 6c 6f 61 74 20 09 faptr;. float .
3430: 09 66 61 72 67 73 5b 32 5d 3b 0a 20 20 69 6e 74 .fargs[2];. int
3440: 2a 09 09 09 66 61 72 67 73 75 73 65 64 70 74 72 *...fargsusedptr
3450: 3b 0a 20 20 69 6e 74 09 09 09 66 61 72 67 73 75 ;. int...fargsu
3460: 73 65 64 5b 32 5d 3b 0a 20 20 64 6f 75 62 6c 65 sed[2];. double
3470: 2a 09 09 64 61 70 74 72 3b 0a 20 20 64 6f 75 62 *..daptr;. doub
3480: 6c 65 09 09 64 61 72 67 73 5b 32 5d 3b 0a 20 20 le..dargs[2];.
3490: 69 6e 74 2a 09 09 09 64 61 72 67 73 75 73 65 64 int*...dargsused
34a0: 70 74 72 3b 0a 20 20 69 6e 74 09 09 09 64 61 72 ptr;. int...dar
34b0: 67 73 75 73 65 64 5b 32 5d 3b 0a 23 65 6e 64 69 gsused[2];.#endi
34c0: 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 41 4d f.#if defined(AM
34d0: 49 47 41 29 0a 20 20 2f 2a 20 73 74 6f 72 65 20 IGA). /* store
34e0: 74 68 65 20 61 72 67 75 6d 65 6e 74 73 20 70 61 the arguments pa
34f0: 73 73 65 64 20 69 6e 20 72 65 67 69 73 74 65 72 ssed in register
3500: 73 20 69 6e 20 61 6e 20 65 78 74 72 61 20 61 72 s in an extra ar
3510: 72 61 79 20 2a 2f 0a 20 20 5f 5f 61 76 77 6f 72 ray */. __avwor
3520: 64 09 09 72 65 67 61 72 67 73 5b 38 2b 37 5d 3b d..regargs[8+7];
3530: 0a 23 65 6e 64 69 66 0a 7d 20 61 76 5f 61 6c 69 .#endif.} av_ali
3540: 73 74 3b 0a 0a 2f 2a 20 54 68 65 20 6c 69 6d 69 st;../* The limi
3550: 74 20 66 6f 72 20 74 68 65 20 70 6f 69 6e 74 65 t for the pointe
3560: 72 20 69 6e 74 6f 20 74 68 65 20 61 72 67 73 5b r into the args[
3570: 5d 20 61 72 72 61 79 2e 20 2a 2f 0a 23 69 66 20 ] array. */.#if
3580: 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f defined(__sparc_
3590: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f _) || defined(__
35a0: 73 70 61 72 63 36 34 5f 5f 29 20 7c 7c 20 64 65 sparc64__) || de
35b0: 66 69 6e 65 64 28 5f 5f 68 70 70 61 5f 5f 29 20 fined(__hppa__)
35c0: 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f 72 73 || (defined(__rs
35d0: 36 30 30 30 5f 5f 29 20 26 26 20 21 64 65 66 69 6000__) && !defi
35e0: 6e 65 64 28 5f 41 49 58 29 20 26 26 20 21 28 64 ned(_AIX) && !(d
35f0: 65 66 69 6e 65 64 28 5f 5f 4d 41 43 48 5f 5f 29 efined(__MACH__)
3600: 20 26 26 20 64 65 66 69 6e 65 64 28 5f 5f 41 50 && defined(__AP
3610: 50 4c 45 5f 5f 29 29 29 20 7c 7c 20 64 65 66 69 PLE__))) || defi
3620: 6e 65 64 28 5f 5f 73 33 39 30 29 0a 23 64 65 66 ned(__s390).#def
3630: 69 6e 65 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 ine __av_eptr(LI
3640: 53 54 29 09 28 28 4c 49 53 54 29 2e 65 70 74 72 ST).((LIST).eptr
3650: 29 0a 23 65 6c 73 65 0a 23 64 65 66 69 6e 65 20 ).#else.#define
3660: 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29 09 __av_eptr(LIST).
3670: 28 26 28 4c 49 53 54 29 2e 61 72 67 73 5b 5f 5f (&(LIST).args[__
3680: 41 56 5f 41 4c 49 53 54 5f 57 4f 52 44 53 5d 29 AV_ALIST_WORDS])
3690: 0a 23 65 6e 64 69 66 0a 0a 2f 2a 20 44 65 6c 61 .#endif../* Dela
36a0: 79 65 64 20 6f 76 65 72 66 6c 6f 77 20 64 65 74 yed overflow det
36b0: 65 63 74 69 6f 6e 20 2a 2f 0a 23 69 66 20 64 65 ection */.#if de
36c0: 66 69 6e 65 64 28 5f 5f 68 70 70 61 5f 5f 29 0a fined(__hppa__).
36d0: 23 64 65 66 69 6e 65 20 61 76 5f 6f 76 65 72 66 #define av_overf
36e0: 6c 6f 77 6e 28 4c 49 53 54 29 20 28 28 4c 49 53 lown(LIST) ((LIS
36f0: 54 29 2e 61 70 74 72 20 3c 20 5f 5f 61 76 5f 65 T).aptr < __av_e
3700: 70 74 72 28 4c 49 53 54 29 29 0a 23 65 6c 73 65 ptr(LIST)).#else
3710: 0a 23 64 65 66 69 6e 65 20 61 76 5f 6f 76 65 72 .#define av_over
3720: 66 6c 6f 77 6e 28 4c 49 53 54 29 20 28 28 4c 49 flown(LIST) ((LI
3730: 53 54 29 2e 61 70 74 72 20 3e 20 5f 5f 61 76 5f ST).aptr > __av_
3740: 65 70 74 72 28 4c 49 53 54 29 29 0a 23 65 6e 64 eptr(LIST)).#end
3750: 69 66 0a 0a 0a 2f 2a 0a 20 2a 20 20 61 76 5f 73 if.../*. * av_s
3760: 74 61 72 74 5f 3c 74 79 70 65 3e 20 6d 61 63 72 tart_<type> macr
3770: 6f 73 20 77 68 69 63 68 20 73 70 65 63 69 66 79 os which specify
3780: 20 74 68 65 20 72 65 74 75 72 6e 20 74 79 70 65 the return type
3790: 0a 20 2a 2f 0a 0a 23 64 65 66 69 6e 65 20 5f 5f . */..#define __
37a0: 41 56 5f 53 54 41 52 54 5f 46 4c 41 47 53 20 20 AV_START_FLAGS
37b0: 5c 0a 20 20 5f 5f 41 56 5f 53 54 52 55 43 54 5f \. __AV_STRUCT_
37c0: 52 45 54 55 52 4e 20 7c 20 5f 5f 41 56 5f 46 4c RETURN | __AV_FL
37d0: 4f 41 54 5f 52 45 54 55 52 4e 20 7c 20 5f 5f 41 OAT_RETURN | __A
37e0: 56 5f 53 54 52 55 43 54 5f 41 52 47 53 20 7c 20 V_STRUCT_ARGS |
37f0: 5f 5f 41 56 5f 46 4c 4f 41 54 5f 41 52 47 53 20 __AV_FLOAT_ARGS
3800: 7c 20 5f 5f 41 56 5f 49 4e 54 45 47 45 52 53 20 | __AV_INTEGERS
3810: 7c 20 5f 5f 41 56 5f 43 4c 45 41 4e 55 50 0a 0a | __AV_CLEANUP..
3820: 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61 #define __av_sta
3830: 72 74 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44 rt(LIST,FUNC,RAD
3840: 44 52 2c 52 45 54 54 59 50 45 29 09 09 09 09 5c DR,RETTYPE)....\
3850: 0a 20 20 28 28 4c 49 53 54 29 2e 66 75 6e 63 20 . ((LIST).func
3860: 3d 20 28 5f 5f 61 76 77 6f 72 64 28 2a 29 28 29 = (__avword(*)()
3870: 29 28 46 55 4e 43 29 2c 09 09 09 09 09 5c 0a 20 )(FUNC),.....\.
3880: 20 20 28 4c 49 53 54 29 2e 72 61 64 64 72 20 3d (LIST).raddr =
3890: 20 28 76 6f 69 64 2a 29 28 52 41 44 44 52 29 2c (void*)(RADDR),
38a0: 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 .....\. (LIST)
38b0: 2e 72 74 79 70 65 20 3d 20 28 52 45 54 54 59 50 .rtype = (RETTYP
38c0: 45 29 2c 09 09 09 09 09 09 5c 0a 20 20 20 5f 5f E),......\. __
38d0: 61 76 5f 73 74 61 72 74 31 28 4c 49 53 54 29 09 av_start1(LIST).
38e0: 09 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 ......\. (LIST
38f0: 29 2e 66 6c 61 67 73 20 3d 20 5f 5f 41 56 5f 53 ).flags = __AV_S
3900: 54 41 52 54 5f 46 4c 41 47 53 29 0a 0a 23 69 66 TART_FLAGS)..#if
3910: 20 64 65 66 69 6e 65 64 28 5f 5f 69 33 38 36 5f defined(__i386_
3920: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f _) || defined(__
3930: 6d 36 38 6b 5f 5f 29 20 7c 7c 20 64 65 66 69 6e m68k__) || defin
3940: 65 64 28 5f 5f 61 6c 70 68 61 5f 5f 29 20 7c 7c ed(__alpha__) ||
3950: 20 64 65 66 69 6e 65 64 28 5f 5f 61 72 6d 5f 5f defined(__arm__
3960: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d ) || defined(__m
3970: 38 38 6b 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 88k__) || define
3980: 64 28 5f 5f 63 6f 6e 76 65 78 5f 5f 29 0a 23 64 d(__convex__).#d
3990: 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72 74 efine __av_start
39a0: 31 28 4c 49 53 54 29 09 09 09 09 09 09 5c 0a 20 1(LIST)......\.
39b0: 20 20 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 (LIST).aptr =
39c0: 26 28 4c 49 53 54 29 2e 61 72 67 73 5b 30 5d 2c &(LIST).args[0],
39d0: 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 .#endif.#if defi
39e0: 6e 65 64 28 5f 5f 6d 69 70 73 5f 5f 29 20 26 26 ned(__mips__) &&
39f0: 20 21 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 !defined(__mips
3a00: 6e 33 32 5f 5f 29 0a 23 64 65 66 69 6e 65 20 5f n32__).#define _
3a10: 5f 61 76 5f 73 74 61 72 74 31 28 4c 49 53 54 29 _av_start1(LIST)
3a20: 09 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 ......\. (LIST
3a30: 29 2e 61 6e 75 6d 20 3d 20 30 2c 09 09 09 09 09 ).anum = 0,.....
3a40: 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2e 61 70 ..\. (LIST).ap
3a50: 74 72 20 3d 20 26 28 4c 49 53 54 29 2e 61 72 67 tr = &(LIST).arg
3a60: 73 5b 30 5d 2c 0a 23 65 6e 64 69 66 0a 23 69 66 s[0],.#endif.#if
3a70: 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e defined(__mipsn
3a80: 33 32 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 32__) || defined
3a90: 28 5f 5f 6d 69 70 73 36 34 5f 5f 29 0a 23 64 65 (__mips64__).#de
3aa0: 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72 74 31 fine __av_start1
3ab0: 28 4c 49 53 54 29 09 09 09 09 09 09 5c 0a 20 20 (LIST)......\.
3ac0: 20 28 4c 49 53 54 29 2e 61 6e 75 6d 20 3d 20 30 (LIST).anum = 0
3ad0: 2c 09 09 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 ,.......\. (LI
3ae0: 53 54 29 2e 66 61 72 67 5f 6d 61 73 6b 20 3d 20 ST).farg_mask =
3af0: 30 2c 09 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 0,......\. (LI
3b00: 53 54 29 2e 64 61 72 67 5f 6d 61 73 6b 20 3d 20 ST).darg_mask =
3b10: 30 2c 09 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 0,......\. (LI
3b20: 53 54 29 2e 61 70 74 72 20 3d 20 26 28 4c 49 53 ST).aptr = &(LIS
3b30: 54 29 2e 61 72 67 73 5b 30 5d 2c 0a 23 65 6e 64 T).args[0],.#end
3b40: 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f if.#if defined(_
3b50: 5f 73 70 61 72 63 5f 5f 29 20 26 26 20 21 64 65 _sparc__) && !de
3b60: 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f fined(__sparc64_
3b70: 5f 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f _).#define __av_
3b80: 73 74 61 72 74 31 28 4c 49 53 54 29 09 09 09 09 start1(LIST)....
3b90: 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2e 61 70 ..\. (LIST).ap
3ba0: 74 72 20 3d 20 26 28 4c 49 53 54 29 2e 61 72 67 tr = &(LIST).arg
3bb0: 73 5b 30 5d 2c 09 09 09 09 09 5c 0a 20 20 20 28 s[0],.....\. (
3bc0: 4c 49 53 54 29 2e 65 70 74 72 20 3d 20 26 28 4c LIST).eptr = &(L
3bd0: 49 53 54 29 2e 61 72 67 73 5b 5f 5f 41 56 5f 41 IST).args[__AV_A
3be0: 4c 49 53 54 5f 57 4f 52 44 53 5d 2c 0a 23 65 6e LIST_WORDS],.#en
3bf0: 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 dif.#if defined(
3c00: 5f 5f 73 70 61 72 63 36 34 5f 5f 29 0a 23 64 65 __sparc64__).#de
3c10: 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72 74 31 fine __av_start1
3c20: 28 4c 49 53 54 29 09 09 09 09 09 09 5c 0a 20 20 (LIST)......\.
3c30: 20 28 4c 49 53 54 29 2e 61 6e 75 6d 20 3d 20 30 (LIST).anum = 0
3c40: 2c 09 09 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 ,.......\. (LI
3c50: 53 54 29 2e 66 61 72 67 5f 6d 61 73 6b 20 3d 20 ST).farg_mask =
3c60: 30 2c 09 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 0,......\. (LI
3c70: 53 54 29 2e 64 61 72 67 5f 6d 61 73 6b 20 3d 20 ST).darg_mask =
3c80: 30 2c 09 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 0,......\. (LI
3c90: 53 54 29 2e 61 70 74 72 20 3d 20 26 28 4c 49 53 ST).aptr = &(LIS
3ca0: 54 29 2e 61 72 67 73 5b 30 5d 2c 09 09 09 09 09 T).args[0],.....
3cb0: 5c 0a 20 20 20 28 4c 49 53 54 29 2e 65 70 74 72 \. (LIST).eptr
3cc0: 20 3d 20 26 28 4c 49 53 54 29 2e 61 72 67 73 5b = &(LIST).args[
3cd0: 5f 5f 41 56 5f 41 4c 49 53 54 5f 57 4f 52 44 53 __AV_ALIST_WORDS
3ce0: 5d 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 ],.#endif.#if de
3cf0: 66 69 6e 65 64 28 5f 5f 68 70 70 61 5f 5f 29 0a fined(__hppa__).
3d00: 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61 #define __av_sta
3d10: 72 74 31 28 4c 49 53 54 29 09 09 09 09 09 09 5c rt1(LIST)......\
3d20: 0a 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72 20 . (LIST).aptr
3d30: 3d 20 26 28 4c 49 53 54 29 2e 61 72 67 73 5b 5f = &(LIST).args[_
3d40: 5f 41 56 5f 41 4c 49 53 54 5f 57 4f 52 44 53 5d _AV_ALIST_WORDS]
3d50: 2c 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2e ,...\. (LIST).
3d60: 65 70 74 72 20 3d 20 26 28 4c 49 53 54 29 2e 61 eptr = &(LIST).a
3d70: 72 67 73 5b 30 5d 2c 0a 23 65 6e 64 69 66 0a 23 rgs[0],.#endif.#
3d80: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 72 73 36 if defined(__rs6
3d90: 30 30 30 5f 5f 29 0a 23 69 66 20 64 65 66 69 6e 000__).#if defin
3da0: 65 64 28 5f 41 49 58 29 20 7c 7c 20 28 64 65 66 ed(_AIX) || (def
3db0: 69 6e 65 64 28 5f 5f 4d 41 43 48 5f 5f 29 20 26 ined(__MACH__) &
3dc0: 26 20 64 65 66 69 6e 65 64 28 5f 5f 41 50 50 4c & defined(__APPL
3dd0: 45 5f 5f 29 29 0a 23 64 65 66 69 6e 65 20 5f 5f E__)).#define __
3de0: 61 76 5f 73 74 61 72 74 31 28 4c 49 53 54 29 09 av_start1(LIST).
3df0: 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 .....\. (LIST)
3e00: 2e 61 70 74 72 20 3d 20 26 28 4c 49 53 54 29 2e .aptr = &(LIST).
3e10: 61 72 67 73 5b 30 5d 2c 09 09 09 09 09 5c 0a 20 args[0],.....\.
3e20: 20 20 28 4c 49 53 54 29 2e 66 61 70 74 72 20 3d (LIST).faptr =
3e30: 20 26 28 4c 49 53 54 29 2e 66 61 72 67 73 5b 30 &(LIST).fargs[0
3e40: 5d 2c 0a 23 65 6c 73 65 0a 23 64 65 66 69 6e 65 ],.#else.#define
3e50: 20 5f 5f 61 76 5f 73 74 61 72 74 31 28 4c 49 53 __av_start1(LIS
3e60: 54 29 09 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 T)......\. (LI
3e70: 53 54 29 2e 61 70 74 72 20 3d 20 26 28 4c 49 53 ST).aptr = &(LIS
3e80: 54 29 2e 61 72 67 73 5b 30 5d 2c 09 09 09 09 09 T).args[0],.....
3e90: 5c 0a 20 20 20 28 4c 49 53 54 29 2e 66 61 70 74 \. (LIST).fapt
3ea0: 72 20 3d 20 26 28 4c 49 53 54 29 2e 66 61 72 67 r = &(LIST).farg
3eb0: 73 5b 30 5d 2c 20 20 20 20 20 20 20 20 20 20 20 s[0],
3ec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3ed0: 20 20 20 20 20 20 20 20 20 20 5c 0a 20 20 20 28 \. (
3ee0: 4c 49 53 54 29 2e 65 70 74 72 20 3d 20 26 28 4c LIST).eptr = &(L
3ef0: 49 53 54 29 2e 61 72 67 73 5b 5f 5f 41 56 5f 41 IST).args[__AV_A
3f00: 4c 49 53 54 5f 57 4f 52 44 53 5d 2c 0a 23 65 6e LIST_WORDS],.#en
3f10: 64 69 66 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 dif.#endif.#if d
3f20: 65 66 69 6e 65 64 28 5f 5f 73 33 39 30 5f 5f 29 efined(__s390__)
3f30: 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 .#define __av_st
3f40: 61 72 74 31 28 4c 49 53 54 29 09 09 09 09 09 09 art1(LIST)......
3f50: 5c 0a 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72 \. (LIST).aptr
3f60: 20 3d 20 26 28 4c 49 53 54 29 2e 61 72 67 73 5b = &(LIST).args[
3f70: 30 5d 2c 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 0],.....\. (LI
3f80: 53 54 29 2e 66 61 72 67 77 6f 72 64 73 20 3d 20 ST).fargwords =
3f90: 30 2c 09 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 0,......\. (LI
3fa0: 53 54 29 2e 66 61 70 74 72 20 3d 20 26 28 4c 49 ST).faptr = &(LI
3fb0: 53 54 29 2e 66 61 72 67 73 5b 30 5d 2c 20 20 20 ST).fargs[0],
3fc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3fd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3fe0: 20 20 5c 0a 20 20 20 28 4c 49 53 54 29 2e 64 61 \. (LIST).da
3ff0: 70 74 72 20 3d 20 26 28 4c 49 53 54 29 2e 64 61 ptr = &(LIST).da
4000: 72 67 73 5b 30 5d 2c 20 20 20 20 20 20 20 20 20 rgs[0],
4010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4020: 20 20 20 20 20 20 20 20 20 20 20 20 5c 0a 20 20 \.
4030: 20 28 4c 49 53 54 29 2e 66 61 72 67 73 75 73 65 (LIST).fargsuse
4040: 64 70 74 72 20 3d 20 26 28 4c 49 53 54 29 2e 66 dptr = &(LIST).f
4050: 61 72 67 73 75 73 65 64 5b 30 5d 2c 20 20 20 20 argsused[0],
4060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4070: 20 20 20 20 20 20 5c 0a 20 20 20 28 4c 49 53 54 \. (LIST
4080: 29 2e 64 61 72 67 73 75 73 65 64 70 74 72 20 3d ).dargsusedptr =
4090: 20 26 28 4c 49 53 54 29 2e 64 61 72 67 73 75 73 &(LIST).dargsus
40a0: 65 64 5b 30 5d 2c 20 20 20 20 20 20 20 20 20 20 ed[0],
40b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
40c0: 5c 0a 20 20 20 28 4c 49 53 54 29 2e 65 70 74 72 \. (LIST).eptr
40d0: 20 3d 20 26 28 4c 49 53 54 29 2e 61 72 67 73 5b = &(LIST).args[
40e0: 5f 5f 41 56 5f 41 4c 49 53 54 5f 57 4f 52 44 53 __AV_ALIST_WORDS
40f0: 5d 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 ],.#endif.#if de
4100: 66 69 6e 65 64 28 5f 5f 69 61 36 34 5f 5f 29 0a fined(__ia64__).
4110: 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61 #define __av_sta
4120: 72 74 31 28 4c 49 53 54 29 09 09 09 09 09 09 5c rt1(LIST)......\
4130: 0a 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72 20 . (LIST).aptr
4140: 3d 20 26 28 4c 49 53 54 29 2e 61 72 67 73 5b 30 = &(LIST).args[0
4150: 5d 2c 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 53 ],.....\. (LIS
4160: 54 29 2e 66 61 70 74 72 20 3d 20 26 28 4c 49 53 T).faptr = &(LIS
4170: 54 29 2e 66 61 72 67 73 5b 30 5d 2c 0a 23 65 6e T).fargs[0],.#en
4180: 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 dif.#if defined(
4190: 5f 5f 78 38 36 5f 36 34 5f 5f 29 0a 23 64 65 66 __x86_64__).#def
41a0: 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72 74 31 28 ine __av_start1(
41b0: 4c 49 53 54 29 09 09 09 09 09 09 5c 0a 20 20 20 LIST)......\.
41c0: 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 26 28 (LIST).aptr = &(
41d0: 4c 49 53 54 29 2e 61 72 67 73 5b 30 5d 2c 09 09 LIST).args[0],..
41e0: 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2e 69 ...\. (LIST).i
41f0: 61 70 74 72 20 3d 20 26 28 4c 49 53 54 29 2e 69 aptr = &(LIST).i
4200: 61 72 67 73 5b 30 5d 2c 09 09 09 09 09 5c 0a 20 args[0],.....\.
4210: 20 20 28 4c 49 53 54 29 2e 66 61 70 74 72 20 3d (LIST).faptr =
4220: 20 26 28 4c 49 53 54 29 2e 66 61 72 67 73 5b 30 &(LIST).fargs[0
4230: 5d 2c 0a 23 65 6e 64 69 66 0a 0a 23 64 65 66 69 ],.#endif..#defi
4240: 6e 65 20 61 76 5f 73 74 61 72 74 5f 76 6f 69 64 ne av_start_void
4250: 28 4c 49 53 54 2c 46 55 4e 43 29 09 09 5f 5f 61 (LIST,FUNC)..__a
4260: 76 5f 73 74 61 72 74 28 4c 49 53 54 2c 46 55 4e v_start(LIST,FUN
4270: 43 2c 30 2c 20 20 20 20 5f 5f 41 56 76 6f 69 64 C,0, __AVvoid
4280: 29 0a 23 64 65 66 69 6e 65 20 61 76 5f 73 74 61 ).#define av_sta
4290: 72 74 5f 63 68 61 72 28 4c 49 53 54 2c 46 55 4e rt_char(LIST,FUN
42a0: 43 2c 52 41 44 44 52 29 09 09 5f 5f 61 76 5f 73 C,RADDR)..__av_s
42b0: 74 61 72 74 28 4c 49 53 54 2c 46 55 4e 43 2c 52 tart(LIST,FUNC,R
42c0: 41 44 44 52 2c 5f 5f 41 56 63 68 61 72 29 0a 23 ADDR,__AVchar).#
42d0: 64 65 66 69 6e 65 20 61 76 5f 73 74 61 72 74 5f define av_start_
42e0: 73 63 68 61 72 28 4c 49 53 54 2c 46 55 4e 43 2c schar(LIST,FUNC,
42f0: 52 41 44 44 52 29 09 09 5f 5f 61 76 5f 73 74 61 RADDR)..__av_sta
4300: 72 74 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44 rt(LIST,FUNC,RAD
4310: 44 52 2c 5f 5f 41 56 73 63 68 61 72 29 0a 23 64 DR,__AVschar).#d
4320: 65 66 69 6e 65 20 61 76 5f 73 74 61 72 74 5f 75 efine av_start_u
4330: 63 68 61 72 28 4c 49 53 54 2c 46 55 4e 43 2c 52 char(LIST,FUNC,R
4340: 41 44 44 52 29 09 09 5f 5f 61 76 5f 73 74 61 72 ADDR)..__av_star
4350: 74 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44 44 t(LIST,FUNC,RADD
4360: 52 2c 5f 5f 41 56 75 63 68 61 72 29 0a 23 64 65 R,__AVuchar).#de
4370: 66 69 6e 65 20 61 76 5f 73 74 61 72 74 5f 73 68 fine av_start_sh
4380: 6f 72 74 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41 ort(LIST,FUNC,RA
4390: 44 44 52 29 09 09 5f 5f 61 76 5f 73 74 61 72 74 DDR)..__av_start
43a0: 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44 44 52 (LIST,FUNC,RADDR
43b0: 2c 5f 5f 41 56 73 68 6f 72 74 29 0a 23 64 65 66 ,__AVshort).#def
43c0: 69 6e 65 20 61 76 5f 73 74 61 72 74 5f 75 73 68 ine av_start_ush
43d0: 6f 72 74 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41 ort(LIST,FUNC,RA
43e0: 44 44 52 29 09 5f 5f 61 76 5f 73 74 61 72 74 28 DDR).__av_start(
43f0: 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44 44 52 2c LIST,FUNC,RADDR,
4400: 5f 5f 41 56 75 73 68 6f 72 74 29 0a 23 64 65 66 __AVushort).#def
4410: 69 6e 65 20 61 76 5f 73 74 61 72 74 5f 69 6e 74 ine av_start_int
4420: 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44 44 52 (LIST,FUNC,RADDR
4430: 29 09 09 5f 5f 61 76 5f 73 74 61 72 74 28 4c 49 )..__av_start(LI
4440: 53 54 2c 46 55 4e 43 2c 52 41 44 44 52 2c 5f 5f ST,FUNC,RADDR,__
4450: 41 56 69 6e 74 29 0a 23 64 65 66 69 6e 65 20 61 AVint).#define a
4460: 76 5f 73 74 61 72 74 5f 75 69 6e 74 28 4c 49 53 v_start_uint(LIS
4470: 54 2c 46 55 4e 43 2c 52 41 44 44 52 29 09 09 5f T,FUNC,RADDR).._
4480: 5f 61 76 5f 73 74 61 72 74 28 4c 49 53 54 2c 46 _av_start(LIST,F
4490: 55 4e 43 2c 52 41 44 44 52 2c 5f 5f 41 56 75 69 UNC,RADDR,__AVui
44a0: 6e 74 29 0a 23 64 65 66 69 6e 65 20 61 76 5f 73 nt).#define av_s
44b0: 74 61 72 74 5f 6c 6f 6e 67 28 4c 49 53 54 2c 46 tart_long(LIST,F
44c0: 55 4e 43 2c 52 41 44 44 52 29 09 09 5f 5f 61 76 UNC,RADDR)..__av
44d0: 5f 73 74 61 72 74 28 4c 49 53 54 2c 46 55 4e 43 _start(LIST,FUNC
44e0: 2c 52 41 44 44 52 2c 5f 5f 41 56 6c 6f 6e 67 29 ,RADDR,__AVlong)
44f0: 0a 23 64 65 66 69 6e 65 20 61 76 5f 73 74 61 72 .#define av_star
4500: 74 5f 75 6c 6f 6e 67 28 4c 49 53 54 2c 46 55 4e t_ulong(LIST,FUN
4510: 43 2c 52 41 44 44 52 29 09 09 5f 5f 61 76 5f 73 C,RADDR)..__av_s
4520: 74 61 72 74 28 4c 49 53 54 2c 46 55 4e 43 2c 52 tart(LIST,FUNC,R
4530: 41 44 44 52 2c 5f 5f 41 56 75 6c 6f 6e 67 29 0a ADDR,__AVulong).
4540: 23 64 65 66 69 6e 65 20 61 76 5f 73 74 61 72 74 #define av_start
4550: 5f 6c 6f 6e 67 6c 6f 6e 67 28 4c 49 53 54 2c 46 _longlong(LIST,F
4560: 55 4e 43 2c 52 41 44 44 52 29 09 5f 5f 61 76 5f UNC,RADDR).__av_
4570: 73 74 61 72 74 28 4c 49 53 54 2c 46 55 4e 43 2c start(LIST,FUNC,
4580: 52 41 44 44 52 2c 5f 5f 41 56 6c 6f 6e 67 6c 6f RADDR,__AVlonglo
4590: 6e 67 29 0a 23 64 65 66 69 6e 65 20 61 76 5f 73 ng).#define av_s
45a0: 74 61 72 74 5f 75 6c 6f 6e 67 6c 6f 6e 67 28 4c tart_ulonglong(L
45b0: 49 53 54 2c 46 55 4e 43 2c 52 41 44 44 52 29 09 IST,FUNC,RADDR).
45c0: 5f 5f 61 76 5f 73 74 61 72 74 28 4c 49 53 54 2c __av_start(LIST,
45d0: 46 55 4e 43 2c 52 41 44 44 52 2c 5f 5f 41 56 75 FUNC,RADDR,__AVu
45e0: 6c 6f 6e 67 6c 6f 6e 67 29 0a 23 64 65 66 69 6e longlong).#defin
45f0: 65 20 61 76 5f 73 74 61 72 74 5f 66 6c 6f 61 74 e av_start_float
4600: 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44 44 52 (LIST,FUNC,RADDR
4610: 29 09 09 5f 5f 61 76 5f 73 74 61 72 74 28 4c 49 )..__av_start(LI
4620: 53 54 2c 46 55 4e 43 2c 52 41 44 44 52 2c 5f 5f ST,FUNC,RADDR,__
4630: 41 56 66 6c 6f 61 74 29 0a 23 64 65 66 69 6e 65 AVfloat).#define
4640: 20 61 76 5f 73 74 61 72 74 5f 64 6f 75 62 6c 65 av_start_double
4650: 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44 44 52 (LIST,FUNC,RADDR
4660: 29 09 5f 5f 61 76 5f 73 74 61 72 74 28 4c 49 53 ).__av_start(LIS
4670: 54 2c 46 55 4e 43 2c 52 41 44 44 52 2c 5f 5f 41 T,FUNC,RADDR,__A
4680: 56 64 6f 75 62 6c 65 29 0a 23 64 65 66 69 6e 65 Vdouble).#define
4690: 20 61 76 5f 73 74 61 72 74 5f 70 74 72 28 4c 49 av_start_ptr(LI
46a0: 53 54 2c 46 55 4e 43 2c 54 59 50 45 2c 52 41 44 ST,FUNC,TYPE,RAD
46b0: 44 52 29 09 5f 5f 61 76 5f 73 74 61 72 74 28 4c DR).__av_start(L
46c0: 49 53 54 2c 46 55 4e 43 2c 52 41 44 44 52 2c 5f IST,FUNC,RADDR,_
46d0: 5f 41 56 76 6f 69 64 70 29 0a 0a 23 64 65 66 69 _AVvoidp)..#defi
46e0: 6e 65 20 61 76 5f 73 74 61 72 74 5f 73 74 72 75 ne av_start_stru
46f0: 63 74 28 4c 49 53 54 2c 46 55 4e 43 2c 54 59 50 ct(LIST,FUNC,TYP
4700: 45 2c 54 59 50 45 5f 53 50 4c 49 54 54 41 42 4c E,TYPE_SPLITTABL
4710: 45 2c 52 41 44 44 52 29 09 09 5c 0a 20 20 5f 61 E,RADDR)..\. _a
4720: 76 5f 73 74 61 72 74 5f 73 74 72 75 63 74 28 4c v_start_struct(L
4730: 49 53 54 2c 46 55 4e 43 2c 73 69 7a 65 6f 66 28 IST,FUNC,sizeof(
4740: 54 59 50 45 29 2c 54 59 50 45 5f 53 50 4c 49 54 TYPE),TYPE_SPLIT
4750: 54 41 42 4c 45 2c 52 41 44 44 52 29 0a 23 64 65 TABLE,RADDR).#de
4760: 66 69 6e 65 20 5f 61 76 5f 73 74 61 72 74 5f 73 fine _av_start_s
4770: 74 72 75 63 74 28 4c 49 53 54 2c 46 55 4e 43 2c truct(LIST,FUNC,
4780: 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 53 TYPE_SIZE,TYPE_S
4790: 50 4c 49 54 54 41 42 4c 45 2c 52 41 44 44 52 29 PLITTABLE,RADDR)
47a0: 09 5c 0a 20 20 28 5f 5f 61 76 5f 73 74 61 72 74 .\. (__av_start
47b0: 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44 44 52 (LIST,FUNC,RADDR
47c0: 2c 5f 5f 41 56 73 74 72 75 63 74 29 2c 09 09 09 ,__AVstruct),...
47d0: 09 5c 0a 20 20 20 28 4c 49 53 54 29 2e 72 73 69 .\. (LIST).rsi
47e0: 7a 65 20 3d 20 54 59 50 45 5f 53 49 5a 45 2c 09 ze = TYPE_SIZE,.
47f0: 09 09 09 09 09 5c 0a 20 20 20 5f 5f 61 76 5f 73 .....\. __av_s
4800: 74 61 72 74 5f 73 74 72 75 63 74 31 28 4c 49 53 tart_struct1(LIS
4810: 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 T,TYPE_SIZE,TYPE
4820: 5f 53 50 4c 49 54 54 41 42 4c 45 29 2c 09 09 09 _SPLITTABLE),...
4830: 5c 0a 20 20 20 30 29 0a 0a 23 64 65 66 69 6e 65 \. 0)..#define
4840: 20 5f 5f 61 76 5f 73 74 61 72 74 5f 73 74 72 75 __av_start_stru
4850: 63 74 31 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 ct1(LIST,TYPE_SI
4860: 5a 45 2c 54 59 50 45 5f 53 50 4c 49 54 54 41 42 ZE,TYPE_SPLITTAB
4870: 4c 45 29 20 20 5c 0a 20 20 28 28 4c 49 53 54 29 LE) \. ((LIST)
4880: 2e 66 6c 61 67 73 20 26 20 5f 5f 41 56 5f 50 43 .flags & __AV_PC
4890: 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 09 C_STRUCT_RETURN.
48a0: 09 09 09 5c 0a 20 20 20 3f 20 2f 2a 20 70 63 63 ...\. ? /* pcc
48b0: 20 73 74 72 75 63 74 20 72 65 74 75 72 6e 20 63 struct return c
48c0: 6f 6e 76 65 6e 74 69 6f 6e 3a 09 09 09 09 09 5c onvention:.....\
48d0: 0a 20 20 20 20 20 20 2a 20 63 61 6c 6c 65 64 20 . * called
48e0: 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 function returns
48f0: 20 70 6f 69 6e 74 65 72 20 74 6f 20 76 61 6c 75 pointer to valu
4900: 65 2c 20 77 65 27 6c 6c 20 63 6f 70 79 20 69 74 e, we'll copy it
4910: 73 20 63 6f 6e 74 65 6e 74 73 20 61 66 74 65 72 s contents after
4920: 77 61 72 64 73 2e 20 5c 0a 20 20 20 20 20 20 2a wards. \. *
4930: 2f 09 09 09 09 09 09 09 09 5c 0a 20 20 20 20 20 /........\.
4940: 30 09 09 09 09 09 09 09 09 09 5c 0a 20 20 20 3a 0.........\. :
4950: 20 5f 5f 61 76 5f 73 74 61 72 74 5f 73 74 72 75 __av_start_stru
4960: 63 74 32 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 ct2(LIST,TYPE_SI
4970: 5a 45 2c 54 59 50 45 5f 53 50 4c 49 54 54 41 42 ZE,TYPE_SPLITTAB
4980: 4c 45 29 09 09 09 5c 0a 20 20 29 0a 23 69 66 20 LE)...\. ).#if
4990: 28 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 (defined(__sparc
49a0: 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 __) && !defined(
49b0: 5f 5f 73 70 61 72 63 36 34 5f 5f 29 29 20 7c 7c __sparc64__)) ||
49c0: 20 64 65 66 69 6e 65 64 28 5f 5f 6d 38 38 6b 5f defined(__m88k_
49d0: 5f 29 0a 2f 2a 20 52 65 74 75 72 6e 20 73 74 72 _)./* Return str
49e0: 75 63 74 75 72 65 20 70 6f 69 6e 74 65 72 20 69 ucture pointer i
49f0: 73 20 70 61 73 73 65 64 20 69 6e 20 61 20 73 70 s passed in a sp
4a00: 65 63 69 61 6c 20 72 65 67 69 73 74 65 72 2e 0a ecial register..
4a10: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 */.#define __av
4a20: 5f 73 74 61 72 74 5f 73 74 72 75 63 74 32 28 4c _start_struct2(L
4a30: 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 IST,TYPE_SIZE,TY
4a40: 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 20 20 PE_SPLITTABLE)
4a50: 30 0a 23 65 6c 73 65 0a 23 64 65 66 69 6e 65 20 0.#else.#define
4a60: 5f 5f 61 76 5f 73 74 61 72 74 5f 73 74 72 75 63 __av_start_struc
4a70: 74 32 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a t2(LIST,TYPE_SIZ
4a80: 45 2c 54 59 50 45 5f 53 50 4c 49 54 54 41 42 4c E,TYPE_SPLITTABL
4a90: 45 29 20 20 5c 0a 20 20 28 28 28 4c 49 53 54 29 E) \. (((LIST)
4aa0: 2e 66 6c 61 67 73 20 26 20 5f 5f 41 56 5f 53 4d .flags & __AV_SM
4ab0: 41 4c 4c 5f 53 54 52 55 43 54 5f 52 45 54 55 52 ALL_STRUCT_RETUR
4ac0: 4e 29 09 09 09 09 5c 0a 20 20 20 26 26 20 5f 5f N)....\. && __
4ad0: 61 76 5f 72 65 67 5f 73 74 72 75 63 74 5f 72 65 av_reg_struct_re
4ae0: 74 75 72 6e 28 4c 49 53 54 2c 54 59 50 45 5f 53 turn(LIST,TYPE_S
4af0: 49 5a 45 2c 54 59 50 45 5f 53 50 4c 49 54 54 41 IZE,TYPE_SPLITTA
4b00: 42 4c 45 29 09 09 5c 0a 20 20 20 3f 20 2f 2a 20 BLE)..\. ? /*
4b10: 3c 3d 20 57 6f 72 64 2d 73 69 7a 65 64 20 73 74 <= Word-sized st
4b20: 72 75 63 74 75 72 65 73 20 61 72 65 20 72 65 74 ructures are ret
4b30: 75 72 6e 65 64 20 69 6e 20 61 20 72 65 67 69 73 urned in a regis
4b40: 74 65 72 2e 20 2a 2f 09 09 5c 0a 20 20 20 20 20 ter. */..\.
4b50: 5f 5f 61 76 5f 73 74 61 72 74 5f 73 74 72 75 63 __av_start_struc
4b60: 74 33 28 4c 49 53 54 29 09 09 09 09 09 09 5c 0a t3(LIST)......\.
4b70: 20 20 20 3a 20 5f 5f 61 76 5f 73 74 61 72 74 5f : __av_start_
4b80: 73 74 72 75 63 74 34 28 4c 49 53 54 2c 54 59 50 struct4(LIST,TYP
4b90: 45 5f 53 49 5a 45 29 09 09 09 09 09 5c 0a 20 20 E_SIZE).....\.
4ba0: 29 0a 2f 2a 20 44 65 74 65 72 6d 69 6e 65 73 20 )./* Determines
4bb0: 77 68 65 74 68 65 72 20 61 20 73 74 72 75 63 74 whether a struct
4bc0: 75 72 65 20 69 73 20 72 65 74 75 72 6e 65 64 20 ure is returned
4bd0: 69 6e 20 72 65 67 69 73 74 65 72 73 2c 0a 20 2a in registers,. *
4be0: 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 69 74 depending on it
4bf0: 73 20 73 69 7a 65 20 61 6e 64 20 69 74 73 20 77 s size and its w
4c00: 6f 72 64 2d 73 70 6c 69 74 74 61 62 6c 65 20 66 ord-splittable f
4c10: 6c 61 67 2e 0a 20 2a 2f 0a 23 69 66 20 28 64 65 lag.. */.#if (de
4c20: 66 69 6e 65 64 28 5f 5f 69 33 38 36 5f 5f 29 20 fined(__i386__)
4c30: 26 26 20 64 65 66 69 6e 65 64 28 5f 57 49 4e 33 && defined(_WIN3
4c40: 32 29 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 2)).#define __av
4c50: 5f 72 65 67 5f 73 74 72 75 63 74 5f 72 65 74 75 _reg_struct_retu
4c60: 72 6e 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a rn(LIST,TYPE_SIZ
4c70: 45 2c 54 59 50 45 5f 53 50 4c 49 54 54 41 42 4c E,TYPE_SPLITTABL
4c80: 45 29 20 20 5c 0a 20 20 28 28 54 59 50 45 5f 53 E) \. ((TYPE_S
4c90: 49 5a 45 29 20 3d 3d 20 31 20 7c 7c 20 28 54 59 IZE) == 1 || (TY
4ca0: 50 45 5f 53 49 5a 45 29 20 3d 3d 20 32 20 7c 7c PE_SIZE) == 2 ||
4cb0: 20 28 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 (TYPE_SIZE) ==
4cc0: 34 09 09 5c 0a 20 20 20 7c 7c 20 28 28 54 59 50 4..\. || ((TYP
4cd0: 45 5f 53 49 5a 45 29 20 3d 3d 20 38 09 09 09 09 E_SIZE) == 8....
4ce0: 09 09 09 5c 0a 20 20 20 20 20 20 20 26 26 20 28 ...\. && (
4cf0: 28 28 4c 49 53 54 29 2e 66 6c 61 67 73 20 26 20 ((LIST).flags &
4d00: 5f 5f 41 56 5f 4d 53 56 43 5f 53 54 52 55 43 54 __AV_MSVC_STRUCT
4d10: 5f 52 45 54 55 52 4e 29 09 09 09 5c 0a 20 20 20 _RETURN)...\.
4d20: 20 20 20 20 20 20 20 20 7c 7c 20 28 28 54 59 50 || ((TYP
4d30: 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 09 09 09 E_SPLITTABLE)...
4d40: 09 09 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 ..\.
4d50: 20 20 20 26 26 20 28 28 4c 49 53 54 29 2e 66 6c && ((LIST).fl
4d60: 61 67 73 20 26 20 5f 5f 41 56 5f 47 43 43 5f 53 ags & __AV_GCC_S
4d70: 54 52 55 43 54 5f 52 45 54 55 52 4e 29 09 09 5c TRUCT_RETURN)..\
4d80: 0a 20 20 29 20 20 20 29 20 20 20 29 20 20 20 29 . ) ) ) )
4d90: 0a 2f 2a 20 54 75 72 6e 20 6f 6e 20 5f 5f 41 56 ./* Turn on __AV
4da0: 5f 52 45 47 49 53 54 45 52 5f 53 54 52 55 43 54 _REGISTER_STRUCT
4db0: 5f 52 45 54 55 52 4e 20 69 66 20 5f 5f 41 56 5f _RETURN if __AV_
4dc0: 53 4d 41 4c 4c 5f 53 54 52 55 43 54 5f 52 45 54 SMALL_STRUCT_RET
4dd0: 55 52 4e 20 77 61 73 20 73 65 74 0a 20 2a 20 61 URN was set. * a
4de0: 6e 64 20 74 68 65 20 73 74 72 75 63 74 20 77 69 nd the struct wi
4df0: 6c 6c 20 61 63 74 75 61 6c 6c 79 20 62 65 20 72 ll actually be r
4e00: 65 74 75 72 6e 65 64 20 69 6e 20 72 65 67 69 73 eturned in regis
4e10: 74 65 72 73 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e ters.. */.#defin
4e20: 65 20 5f 5f 61 76 5f 73 74 61 72 74 5f 73 74 72 e __av_start_str
4e30: 75 63 74 33 28 4c 49 53 54 29 20 20 5c 0a 20 20 uct3(LIST) \.
4e40: 28 28 4c 49 53 54 29 2e 66 6c 61 67 73 20 7c 3d ((LIST).flags |=
4e50: 20 5f 5f 41 56 5f 52 45 47 49 53 54 45 52 5f 53 __AV_REGISTER_S
4e60: 54 52 55 43 54 5f 52 45 54 55 52 4e 2c 20 30 29 TRUCT_RETURN, 0)
4e70: 0a 23 65 6e 64 69 66 0a 23 69 66 20 28 64 65 66 .#endif.#if (def
4e80: 69 6e 65 64 28 5f 5f 69 33 38 36 5f 5f 29 20 26 ined(__i386__) &
4e90: 26 20 21 64 65 66 69 6e 65 64 28 5f 57 49 4e 33 & !defined(_WIN3
4ea0: 32 29 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 2)) || defined(_
4eb0: 5f 6d 36 38 6b 5f 5f 29 20 7c 7c 20 64 65 66 69 _m68k__) || defi
4ec0: 6e 65 64 28 5f 5f 61 72 6d 5f 5f 29 20 7c 7c 20 ned(__arm__) ||
4ed0: 64 65 66 69 6e 65 64 28 5f 5f 72 73 36 30 30 30 defined(__rs6000
4ee0: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f __) || defined(_
4ef0: 5f 63 6f 6e 76 65 78 5f 5f 29 20 7c 7c 20 64 65 _convex__) || de
4f00: 66 69 6e 65 64 28 5f 5f 73 33 39 30 5f 5f 29 0a fined(__s390__).
4f10: 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 72 65 67 #define __av_reg
4f20: 5f 73 74 72 75 63 74 5f 72 65 74 75 72 6e 28 4c _struct_return(L
4f30: 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 IST,TYPE_SIZE,TY
4f40: 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 20 20 PE_SPLITTABLE)
4f50: 5c 0a 20 20 28 28 54 59 50 45 5f 53 49 5a 45 29 \. ((TYPE_SIZE)
4f60: 20 3d 3d 20 31 20 7c 7c 20 28 54 59 50 45 5f 53 == 1 || (TYPE_S
4f70: 49 5a 45 29 20 3d 3d 20 32 20 7c 7c 20 28 54 59 IZE) == 2 || (TY
4f80: 50 45 5f 53 49 5a 45 29 20 3d 3d 20 34 09 09 5c PE_SIZE) == 4..\
4f90: 0a 20 20 20 7c 7c 20 28 28 54 59 50 45 5f 53 49 . || ((TYPE_SI
4fa0: 5a 45 29 20 3d 3d 20 38 20 26 26 20 28 54 59 50 ZE) == 8 && (TYP
4fb0: 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 09 09 09 E_SPLITTABLE)...
4fc0: 09 5c 0a 20 20 20 20 20 20 20 26 26 20 28 28 4c .\. && ((L
4fd0: 49 53 54 29 2e 66 6c 61 67 73 20 26 20 5f 5f 41 IST).flags & __A
4fe0: 56 5f 47 43 43 5f 53 54 52 55 43 54 5f 52 45 54 V_GCC_STRUCT_RET
4ff0: 55 52 4e 29 09 09 09 5c 0a 20 20 29 20 20 20 29 URN)...\. ) )
5000: 0a 2f 2a 20 54 75 72 6e 20 6f 6e 20 5f 5f 41 56 ./* Turn on __AV
5010: 5f 52 45 47 49 53 54 45 52 5f 53 54 52 55 43 54 _REGISTER_STRUCT
5020: 5f 52 45 54 55 52 4e 20 69 66 20 5f 5f 41 56 5f _RETURN if __AV_
5030: 53 4d 41 4c 4c 5f 53 54 52 55 43 54 5f 52 45 54 SMALL_STRUCT_RET
5040: 55 52 4e 20 77 61 73 20 73 65 74 0a 20 2a 20 61 URN was set. * a
5050: 6e 64 20 74 68 65 20 73 74 72 75 63 74 20 77 69 nd the struct wi
5060: 6c 6c 20 61 63 74 75 61 6c 6c 79 20 62 65 20 72 ll actually be r
5070: 65 74 75 72 6e 65 64 20 69 6e 20 72 65 67 69 73 eturned in regis
5080: 74 65 72 73 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e ters.. */.#defin
5090: 65 20 5f 5f 61 76 5f 73 74 61 72 74 5f 73 74 72 e __av_start_str
50a0: 75 63 74 33 28 4c 49 53 54 29 20 20 5c 0a 20 20 uct3(LIST) \.
50b0: 28 28 4c 49 53 54 29 2e 66 6c 61 67 73 20 7c 3d ((LIST).flags |=
50c0: 20 5f 5f 41 56 5f 52 45 47 49 53 54 45 52 5f 53 __AV_REGISTER_S
50d0: 54 52 55 43 54 5f 52 45 54 55 52 4e 2c 20 30 29 TRUCT_RETURN, 0)
50e0: 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 .#endif.#if defi
50f0: 6e 65 64 28 5f 5f 61 6c 70 68 61 5f 5f 29 0a 23 ned(__alpha__).#
5100: 64 65 66 69 6e 65 20 5f 5f 61 76 5f 72 65 67 5f define __av_reg_
5110: 73 74 72 75 63 74 5f 72 65 74 75 72 6e 28 4c 49 struct_return(LI
5120: 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 ST,TYPE_SIZE,TYP
5130: 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 20 20 5c E_SPLITTABLE) \
5140: 0a 20 20 28 28 54 59 50 45 5f 53 49 5a 45 29 20 . ((TYPE_SIZE)
5150: 3d 3d 20 31 20 7c 7c 20 28 54 59 50 45 5f 53 49 == 1 || (TYPE_SI
5160: 5a 45 29 20 3d 3d 20 32 20 7c 7c 20 28 54 59 50 ZE) == 2 || (TYP
5170: 45 5f 53 49 5a 45 29 20 3d 3d 20 34 20 7c 7c 20 E_SIZE) == 4 ||
5180: 28 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 38 (TYPE_SIZE) == 8
5190: 09 5c 0a 20 20 20 7c 7c 20 28 28 54 59 50 45 5f .\. || ((TYPE_
51a0: 53 49 5a 45 29 20 3d 3d 20 31 36 20 26 26 20 28 SIZE) == 16 && (
51b0: 54 59 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 TYPE_SPLITTABLE)
51c0: 09 09 09 09 5c 0a 20 20 20 20 20 20 20 26 26 20 ....\. &&
51d0: 28 28 4c 49 53 54 29 2e 66 6c 61 67 73 20 26 20 ((LIST).flags &
51e0: 5f 5f 41 56 5f 47 43 43 5f 53 54 52 55 43 54 5f __AV_GCC_STRUCT_
51f0: 52 45 54 55 52 4e 29 09 09 09 5c 0a 20 20 29 20 RETURN)...\. )
5200: 20 20 29 0a 2f 2a 20 54 75 72 6e 20 6f 6e 20 5f )./* Turn on _
5210: 5f 41 56 5f 52 45 47 49 53 54 45 52 5f 53 54 52 _AV_REGISTER_STR
5220: 55 43 54 5f 52 45 54 55 52 4e 20 69 66 20 5f 5f UCT_RETURN if __
5230: 41 56 5f 53 4d 41 4c 4c 5f 53 54 52 55 43 54 5f AV_SMALL_STRUCT_
5240: 52 45 54 55 52 4e 20 77 61 73 20 73 65 74 0a 20 RETURN was set.
5250: 2a 20 61 6e 64 20 74 68 65 20 73 74 72 75 63 74 * and the struct
5260: 20 77 69 6c 6c 20 61 63 74 75 61 6c 6c 79 20 62 will actually b
5270: 65 20 72 65 74 75 72 6e 65 64 20 69 6e 20 72 65 e returned in re
5280: 67 69 73 74 65 72 73 2e 0a 20 2a 2f 0a 23 64 65 gisters.. */.#de
5290: 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72 74 5f fine __av_start_
52a0: 73 74 72 75 63 74 33 28 4c 49 53 54 29 20 20 5c struct3(LIST) \
52b0: 0a 20 20 28 28 4c 49 53 54 29 2e 66 6c 61 67 73 . ((LIST).flags
52c0: 20 7c 3d 20 5f 5f 41 56 5f 52 45 47 49 53 54 45 |= __AV_REGISTE
52d0: 52 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 2c R_STRUCT_RETURN,
52e0: 20 30 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 0).#endif.#if d
52f0: 65 66 69 6e 65 64 28 5f 5f 68 70 70 61 5f 5f 29 efined(__hppa__)
5300: 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 72 65 .#define __av_re
5310: 67 5f 73 74 72 75 63 74 5f 72 65 74 75 72 6e 28 g_struct_return(
5320: 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 LIST,TYPE_SIZE,T
5330: 59 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 20 YPE_SPLITTABLE)
5340: 20 5c 0a 20 20 28 28 4c 49 53 54 29 2e 66 6c 61 \. ((LIST).fla
5350: 67 73 20 26 20 5f 5f 41 56 5f 4f 4c 44 47 43 43 gs & __AV_OLDGCC
5360: 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 09 09 _STRUCT_RETURN..
5370: 09 09 5c 0a 20 20 20 3f 20 28 28 54 59 50 45 5f ..\. ? ((TYPE_
5380: 53 49 5a 45 29 20 3d 3d 20 31 20 7c 7c 20 28 54 SIZE) == 1 || (T
5390: 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 32 20 7c YPE_SIZE) == 2 |
53a0: 7c 20 28 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d | (TYPE_SIZE) ==
53b0: 20 34 29 09 09 5c 0a 20 20 20 3a 20 28 28 54 59 4)..\. : ((TY
53c0: 50 45 5f 53 49 5a 45 29 20 3c 3d 20 38 29 09 09 PE_SIZE) <= 8)..
53d0: 09 09 09 09 09 5c 0a 20 20 29 0a 2f 2a 20 54 65 .....\. )./* Te
53e0: 73 74 20 62 6f 74 68 20 5f 5f 41 56 5f 4f 4c 44 st both __AV_OLD
53f0: 47 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52 GCC_STRUCT_RETUR
5400: 4e 20 61 6e 64 20 5f 5f 41 56 5f 53 4d 41 4c 4c N and __AV_SMALL
5410: 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20 61 _STRUCT_RETURN a
5420: 74 20 72 75 6e 20 74 69 6d 65 2e 20 2a 2f 0a 23 t run time. */.#
5430: 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72 define __av_star
5440: 74 5f 73 74 72 75 63 74 33 28 4c 49 53 54 29 20 t_struct3(LIST)
5450: 20 5c 0a 20 20 30 0a 23 65 6e 64 69 66 0a 23 69 \. 0.#endif.#i
5460: 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 f defined(__mips
5470: 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 __) && !defined(
5480: 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 0a 23 64 65 __mipsn32__).#de
5490: 66 69 6e 65 20 5f 5f 61 76 5f 72 65 67 5f 73 74 fine __av_reg_st
54a0: 72 75 63 74 5f 72 65 74 75 72 6e 28 4c 49 53 54 ruct_return(LIST
54b0: 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f ,TYPE_SIZE,TYPE_
54c0: 53 50 4c 49 54 54 41 42 4c 45 29 20 20 5c 0a 20 SPLITTABLE) \.
54d0: 20 28 28 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d ((TYPE_SIZE) ==
54e0: 20 31 20 7c 7c 20 28 54 59 50 45 5f 53 49 5a 45 1 || (TYPE_SIZE
54f0: 29 20 3d 3d 20 32 20 7c 7c 20 28 54 59 50 45 5f ) == 2 || (TYPE_
5500: 53 49 5a 45 29 20 3d 3d 20 34 29 0a 2f 2a 20 54 SIZE) == 4)./* T
5510: 65 73 74 20 5f 5f 41 56 5f 53 4d 41 4c 4c 5f 53 est __AV_SMALL_S
5520: 54 52 55 43 54 5f 52 45 54 55 52 4e 20 69 6e 73 TRUCT_RETURN ins
5530: 74 65 61 64 20 6f 66 20 5f 5f 41 56 5f 52 45 47 tead of __AV_REG
5540: 49 53 54 45 52 5f 53 54 52 55 43 54 5f 52 45 54 ISTER_STRUCT_RET
5550: 55 52 4e 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 URN. */.#define
5560: 5f 5f 61 76 5f 73 74 61 72 74 5f 73 74 72 75 63 __av_start_struc
5570: 74 33 28 4c 49 53 54 29 20 20 5c 0a 20 20 30 0a t3(LIST) \. 0.
5580: 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e #endif.#if defin
5590: 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 ed(__mipsn32__)
55a0: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 || defined(__mip
55b0: 73 36 34 5f 5f 29 0a 23 64 65 66 69 6e 65 20 5f s64__).#define _
55c0: 5f 61 76 5f 72 65 67 5f 73 74 72 75 63 74 5f 72 _av_reg_struct_r
55d0: 65 74 75 72 6e 28 4c 49 53 54 2c 54 59 50 45 5f eturn(LIST,TYPE_
55e0: 53 49 5a 45 2c 54 59 50 45 5f 53 50 4c 49 54 54 SIZE,TYPE_SPLITT
55f0: 41 42 4c 45 29 20 20 5c 0a 20 20 28 28 4c 49 53 ABLE) \. ((LIS
5600: 54 29 2e 66 6c 61 67 73 20 26 20 5f 5f 41 56 5f T).flags & __AV_
5610: 47 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52 GCC_STRUCT_RETUR
5620: 4e 09 09 09 09 5c 0a 20 20 20 3f 20 28 28 54 59 N....\. ? ((TY
5630: 50 45 5f 53 49 5a 45 29 20 3d 3d 20 31 20 7c 7c PE_SIZE) == 1 ||
5640: 20 28 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 (TYPE_SIZE) ==
5650: 32 20 7c 7c 20 28 54 59 50 45 5f 53 49 5a 45 29 2 || (TYPE_SIZE)
5660: 20 3d 3d 20 34 20 7c 7c 20 28 54 59 50 45 5f 53 == 4 || (TYPE_S
5670: 49 5a 45 29 20 3d 3d 20 38 29 20 5c 0a 20 20 20 IZE) == 8) \.
5680: 3a 20 28 28 54 59 50 45 5f 53 49 5a 45 29 20 3c : ((TYPE_SIZE) <
5690: 3d 20 31 36 29 09 09 09 09 09 09 5c 0a 20 20 29 = 16)......\. )
56a0: 0a 2f 2a 20 54 75 72 6e 20 6f 6e 20 5f 5f 41 56 ./* Turn on __AV
56b0: 5f 52 45 47 49 53 54 45 52 5f 53 54 52 55 43 54 _REGISTER_STRUCT
56c0: 5f 52 45 54 55 52 4e 20 69 66 20 5f 5f 41 56 5f _RETURN if __AV_
56d0: 53 4d 41 4c 4c 5f 53 54 52 55 43 54 5f 52 45 54 SMALL_STRUCT_RET
56e0: 55 52 4e 20 77 61 73 20 73 65 74 0a 20 2a 20 61 URN was set. * a
56f0: 6e 64 20 74 68 65 20 73 74 72 75 63 74 20 77 69 nd the struct wi
5700: 6c 6c 20 61 63 74 75 61 6c 6c 79 20 62 65 20 72 ll actually be r
5710: 65 74 75 72 6e 65 64 20 69 6e 20 72 65 67 69 73 eturned in regis
5720: 74 65 72 73 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e ters.. */.#defin
5730: 65 20 5f 5f 61 76 5f 73 74 61 72 74 5f 73 74 72 e __av_start_str
5740: 75 63 74 33 28 4c 49 53 54 29 20 20 5c 0a 20 20 uct3(LIST) \.
5750: 28 28 4c 49 53 54 29 2e 66 6c 61 67 73 20 7c 3d ((LIST).flags |=
5760: 20 5f 5f 41 56 5f 52 45 47 49 53 54 45 52 5f 53 __AV_REGISTER_S
5770: 54 52 55 43 54 5f 52 45 54 55 52 4e 2c 20 30 29 TRUCT_RETURN, 0)
5780: 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 .#endif.#if defi
5790: 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29 ned(__sparc64__)
57a0: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 69 61 || defined(__ia
57b0: 36 34 5f 5f 29 0a 23 64 65 66 69 6e 65 20 5f 5f 64__).#define __
57c0: 61 76 5f 72 65 67 5f 73 74 72 75 63 74 5f 72 65 av_reg_struct_re
57d0: 74 75 72 6e 28 4c 49 53 54 2c 54 59 50 45 5f 53 turn(LIST,TYPE_S
57e0: 49 5a 45 2c 54 59 50 45 5f 53 50 4c 49 54 54 41 IZE,TYPE_SPLITTA
57f0: 42 4c 45 29 20 20 5c 0a 20 20 28 28 54 59 50 45 BLE) \. ((TYPE
5800: 5f 53 49 5a 45 29 20 3c 3d 20 33 32 29 0a 2f 2a _SIZE) <= 32)./*
5810: 20 54 75 72 6e 20 6f 6e 20 5f 5f 41 56 5f 52 45 Turn on __AV_RE
5820: 47 49 53 54 45 52 5f 53 54 52 55 43 54 5f 52 45 GISTER_STRUCT_RE
5830: 54 55 52 4e 20 69 66 20 5f 5f 41 56 5f 53 4d 41 TURN if __AV_SMA
5840: 4c 4c 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e LL_STRUCT_RETURN
5850: 20 77 61 73 20 73 65 74 0a 20 2a 20 61 6e 64 20 was set. * and
5860: 74 68 65 20 73 74 72 75 63 74 20 77 69 6c 6c 20 the struct will
5870: 61 63 74 75 61 6c 6c 79 20 62 65 20 72 65 74 75 actually be retu
5880: 72 6e 65 64 20 69 6e 20 72 65 67 69 73 74 65 72 rned in register
5890: 73 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f s.. */.#define _
58a0: 5f 61 76 5f 73 74 61 72 74 5f 73 74 72 75 63 74 _av_start_struct
58b0: 33 28 4c 49 53 54 29 20 20 5c 0a 20 20 28 28 4c 3(LIST) \. ((L
58c0: 49 53 54 29 2e 66 6c 61 67 73 20 7c 3d 20 5f 5f IST).flags |= __
58d0: 41 56 5f 52 45 47 49 53 54 45 52 5f 53 54 52 55 AV_REGISTER_STRU
58e0: 43 54 5f 52 45 54 55 52 4e 2c 20 30 29 0a 23 65 CT_RETURN, 0).#e
58f0: 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 ndif.#if defined
5900: 28 5f 5f 78 38 36 5f 36 34 5f 5f 29 0a 23 64 65 (__x86_64__).#de
5910: 66 69 6e 65 20 5f 5f 61 76 5f 72 65 67 5f 73 74 fine __av_reg_st
5920: 72 75 63 74 5f 72 65 74 75 72 6e 28 4c 49 53 54 ruct_return(LIST
5930: 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f ,TYPE_SIZE,TYPE_
5940: 53 50 4c 49 54 54 41 42 4c 45 29 20 20 5c 0a 20 SPLITTABLE) \.
5950: 20 28 28 54 59 50 45 5f 53 49 5a 45 29 20 3c 3d ((TYPE_SIZE) <=
5960: 20 31 36 29 0a 2f 2a 20 54 75 72 6e 20 6f 6e 20 16)./* Turn on
5970: 5f 5f 41 56 5f 52 45 47 49 53 54 45 52 5f 53 54 __AV_REGISTER_ST
5980: 52 55 43 54 5f 52 45 54 55 52 4e 20 69 66 20 5f RUCT_RETURN if _
5990: 5f 41 56 5f 53 4d 41 4c 4c 5f 53 54 52 55 43 54 _AV_SMALL_STRUCT
59a0: 5f 52 45 54 55 52 4e 20 77 61 73 20 73 65 74 0a _RETURN was set.
59b0: 20 2a 20 61 6e 64 20 74 68 65 20 73 74 72 75 63 * and the struc
59c0: 74 20 77 69 6c 6c 20 61 63 74 75 61 6c 6c 79 20 t will actually
59d0: 62 65 20 72 65 74 75 72 6e 65 64 20 69 6e 20 72 be returned in r
59e0: 65 67 69 73 74 65 72 73 2e 0a 20 2a 2f 0a 23 64 egisters.. */.#d
59f0: 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72 74 efine __av_start
5a00: 5f 73 74 72 75 63 74 33 28 4c 49 53 54 29 20 20 _struct3(LIST)
5a10: 5c 0a 20 20 28 28 4c 49 53 54 29 2e 66 6c 61 67 \. ((LIST).flag
5a20: 73 20 7c 3d 20 5f 5f 41 56 5f 52 45 47 49 53 54 s |= __AV_REGIST
5a30: 45 52 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e ER_STRUCT_RETURN
5a40: 2c 20 30 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 , 0).#endif.#if
5a50: 64 65 66 69 6e 65 64 28 5f 5f 69 33 38 36 5f 5f defined(__i386__
5a60: 29 0a 2f 2a 20 52 65 74 75 72 6e 20 73 74 72 75 )./* Return stru
5a70: 63 74 75 72 65 20 70 6f 69 6e 74 65 72 20 69 73 cture pointer is
5a80: 20 70 61 73 73 65 64 20 69 6e 20 61 20 73 70 65 passed in a spe
5a90: 63 69 61 6c 20 72 65 67 69 73 74 65 72 20 6f 72 cial register or
5aa0: 20 61 73 20 66 69 72 73 74 20 61 72 67 2e 20 2a as first arg. *
5ab0: 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 /.#define __av_s
5ac0: 74 61 72 74 5f 73 74 72 75 63 74 34 28 4c 49 53 tart_struct4(LIS
5ad0: 54 2c 54 59 50 45 5f 53 49 5a 45 29 09 09 09 09 T,TYPE_SIZE)....
5ae0: 5c 0a 20 20 28 28 4c 49 53 54 29 2e 66 6c 61 67 \. ((LIST).flag
5af0: 73 20 26 20 5f 5f 41 56 5f 4e 45 58 54 47 43 43 s & __AV_NEXTGCC
5b00: 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 09 09 _STRUCT_RETURN..
5b10: 09 09 5c 0a 20 20 20 3f 20 30 09 09 09 09 09 09 ..\. ? 0......
5b20: 20 2f 2a 20 73 70 65 63 69 61 6c 20 72 65 67 69 /* special regi
5b30: 73 74 65 72 20 2a 2f 09 5c 0a 20 20 20 3a 20 28 ster */.\. : (
5b40: 2a 28 4c 49 53 54 29 2e 61 70 74 72 2b 2b 20 3d *(LIST).aptr++ =
5b50: 20 28 5f 5f 61 76 77 6f 72 64 29 28 28 4c 49 53 (__avword)((LIS
5b60: 54 29 2e 72 61 64 64 72 29 2c 20 30 29 09 2f 2a T).raddr), 0)./*
5b70: 20 66 69 72 73 74 20 61 72 67 20 2a 2f 09 5c 0a first arg */.\.
5b80: 20 20 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 ).#endif.#if d
5b90: 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f 5f 29 efined(__m68k__)
5ba0: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 68 70 || defined(__hp
5bb0: 70 61 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 pa__) || defined
5bc0: 28 5f 5f 69 61 36 34 5f 5f 29 0a 2f 2a 20 52 65 (__ia64__)./* Re
5bd0: 74 75 72 6e 20 73 74 72 75 63 74 75 72 65 20 70 turn structure p
5be0: 6f 69 6e 74 65 72 20 69 73 20 70 61 73 73 65 64 ointer is passed
5bf0: 20 69 6e 20 61 20 73 70 65 63 69 61 6c 20 72 65 in a special re
5c00: 67 69 73 74 65 72 2e 0a 20 2a 2f 0a 23 64 65 66 gister.. */.#def
5c10: 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72 74 5f 73 ine __av_start_s
5c20: 74 72 75 63 74 34 28 4c 49 53 54 2c 54 59 50 45 truct4(LIST,TYPE
5c30: 5f 53 49 5a 45 29 20 20 30 0a 23 65 6e 64 69 66 _SIZE) 0.#endif
5c40: 0a 2f 2a 20 52 65 74 75 72 6e 20 73 74 72 75 63 ./* Return struc
5c50: 74 75 72 65 20 70 6f 69 6e 74 65 72 20 69 73 20 ture pointer is
5c60: 70 61 73 73 65 64 20 61 73 20 66 69 72 73 74 20 passed as first
5c70: 61 72 67 2e 0a 20 2a 2f 0a 23 69 66 20 64 65 66 arg.. */.#if def
5c80: 69 6e 65 64 28 5f 5f 61 6c 70 68 61 5f 5f 29 20 ined(__alpha__)
5c90: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 61 72 6d || defined(__arm
5ca0: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f __) || defined(_
5cb0: 5f 72 73 36 30 30 30 5f 5f 29 20 7c 7c 20 64 65 _rs6000__) || de
5cc0: 66 69 6e 65 64 28 5f 5f 63 6f 6e 76 65 78 5f 5f fined(__convex__
5cd0: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 73 ) || defined(__s
5ce0: 33 39 30 5f 5f 29 0a 23 64 65 66 69 6e 65 20 5f 390__).#define _
5cf0: 5f 61 76 5f 73 74 61 72 74 5f 73 74 72 75 63 74 _av_start_struct
5d00: 34 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 4(LIST,TYPE_SIZE
5d10: 29 09 09 09 09 5c 0a 20 20 20 28 2a 28 4c 49 53 )....\. (*(LIS
5d20: 54 29 2e 61 70 74 72 2b 2b 20 3d 20 28 5f 5f 61 T).aptr++ = (__a
5d30: 76 77 6f 72 64 29 28 28 4c 49 53 54 29 2e 72 61 vword)((LIST).ra
5d40: 64 64 72 29 2c 20 30 29 0a 23 65 6e 64 69 66 0a ddr), 0).#endif.
5d50: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 #if defined(__mi
5d60: 70 73 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 ps__) || defined
5d70: 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 7c 7c (__mipsn32__) ||
5d80: 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 36 defined(__mips6
5d90: 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 4__) || defined(
5da0: 5f 5f 73 70 61 72 63 36 34 5f 5f 29 0a 23 64 65 __sparc64__).#de
5db0: 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72 74 5f fine __av_start_
5dc0: 73 74 72 75 63 74 34 28 4c 49 53 54 2c 54 59 50 struct4(LIST,TYP
5dd0: 45 5f 53 49 5a 45 29 09 09 09 09 5c 0a 20 20 20 E_SIZE)....\.
5de0: 28 2a 28 4c 49 53 54 29 2e 61 70 74 72 2b 2b 20 (*(LIST).aptr++
5df0: 3d 20 28 5f 5f 61 76 77 6f 72 64 29 28 28 4c 49 = (__avword)((LI
5e00: 53 54 29 2e 72 61 64 64 72 29 2c 09 09 09 09 5c ST).raddr),....\
5e10: 0a 20 20 20 20 28 4c 49 53 54 29 2e 61 6e 75 6d . (LIST).anum
5e20: 2b 2b 2c 09 09 09 09 09 09 09 5c 0a 20 20 20 20 ++,.......\.
5e30: 30 09 09 09 09 09 09 09 09 09 5c 0a 20 20 20 29 0.........\. )
5e40: 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 .#endif.#if defi
5e50: 6e 65 64 28 5f 5f 78 38 36 5f 36 34 5f 5f 29 0a ned(__x86_64__).
5e60: 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61 #define __av_sta
5e70: 72 74 5f 73 74 72 75 63 74 34 28 4c 49 53 54 2c rt_struct4(LIST,
5e80: 54 59 50 45 5f 53 49 5a 45 29 09 09 09 09 5c 0a TYPE_SIZE)....\.
5e90: 20 20 20 28 2a 28 4c 49 53 54 29 2e 69 61 70 74 (*(LIST).iapt
5ea0: 72 2b 2b 20 3d 20 28 5f 5f 61 76 77 6f 72 64 29 r++ = (__avword)
5eb0: 28 28 4c 49 53 54 29 2e 72 61 64 64 72 29 2c 20 ((LIST).raddr),
5ec0: 30 29 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69 66 0).#endif.#endif
5ed0: 0a 0a 0a 2f 2a 0a 20 2a 20 61 76 5f 3c 74 79 70 .../*. * av_<typ
5ee0: 65 3e 20 6d 61 63 72 6f 73 20 77 68 69 63 68 20 e> macros which
5ef0: 73 70 65 63 69 66 79 20 74 68 65 20 61 72 67 75 specify the argu
5f00: 6d 65 6e 74 20 61 6e 64 20 69 74 73 20 74 79 70 ment and its typ
5f10: 65 0a 20 2a 2f 0a 0a 2f 2a 0a 20 2a 20 73 63 61 e. */../*. * sca
5f20: 6c 61 72 20 61 72 67 75 6d 65 6e 74 20 74 79 70 lar argument typ
5f30: 65 73 0a 20 2a 2f 0a 0a 23 69 66 20 64 65 66 69 es. */..#if defi
5f40: 6e 65 64 28 5f 5f 69 33 38 36 5f 5f 29 20 7c 7c ned(__i386__) ||
5f50: 20 64 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f defined(__m68k_
5f60: 5f 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f _) || (defined(_
5f70: 5f 73 70 61 72 63 5f 5f 29 20 26 26 20 21 64 65 _sparc__) && !de
5f80: 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f fined(__sparc64_
5f90: 5f 29 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f _)) || defined(_
5fa0: 5f 61 6c 70 68 61 5f 5f 29 20 7c 7c 20 64 65 66 _alpha__) || def
5fb0: 69 6e 65 64 28 5f 5f 61 72 6d 5f 5f 29 20 7c 7c ined(__arm__) ||
5fc0: 20 64 65 66 69 6e 65 64 28 5f 5f 72 73 36 30 30 defined(__rs600
5fd0: 30 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 0__) || defined(
5fe0: 5f 5f 6d 38 38 6b 5f 5f 29 20 7c 7c 20 64 65 66 __m88k__) || def
5ff0: 69 6e 65 64 28 5f 5f 63 6f 6e 76 65 78 5f 5f 29 ined(__convex__)
6000: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 69 61 || defined(__ia
6010: 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 64__) || defined
6020: 28 5f 5f 78 38 36 5f 36 34 5f 5f 29 20 7c 7c 20 (__x86_64__) ||
6030: 64 65 66 69 6e 65 64 28 5f 5f 73 33 39 30 5f 5f defined(__s390__
6040: 29 0a 2f 2a 20 46 6c 6f 61 74 73 20 61 6e 64 20 )./* Floats and
6050: 61 6c 6c 20 69 6e 74 65 67 65 72 20 74 79 70 65 all integer type
6060: 73 20 61 72 65 20 70 61 73 73 65 64 20 61 73 20 s are passed as
6070: 77 6f 72 64 73 2c 0a 20 2a 20 64 6f 75 62 6c 65 words,. * double
6080: 73 20 61 73 20 74 77 6f 20 77 6f 72 64 73 2e 0a s as two words..
6090: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 */.#define __av
60a0: 5f 77 6f 72 64 28 4c 49 53 54 2c 56 41 4c 29 09 _word(LIST,VAL).
60b0: 09 09 09 09 09 5c 0a 20 20 28 2b 2b 28 4c 49 53 .....\. (++(LIS
60c0: 54 29 2e 61 70 74 72 20 3e 20 5f 5f 61 76 5f 65 T).aptr > __av_e
60d0: 70 74 72 28 4c 49 53 54 29 09 09 09 09 09 5c 0a ptr(LIST).....\.
60e0: 20 20 20 3f 20 2d 31 20 3a 20 28 28 4c 49 53 54 ? -1 : ((LIST
60f0: 29 2e 61 70 74 72 5b 2d 31 5d 20 3d 20 28 5f 5f ).aptr[-1] = (__
6100: 61 76 77 6f 72 64 29 28 56 41 4c 29 2c 20 30 29 avword)(VAL), 0)
6110: 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 ).#endif.#if def
6120: 69 6e 65 64 28 5f 5f 6d 69 70 73 5f 5f 29 20 7c ined(__mips__) |
6130: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 | defined(__mips
6140: 6e 33 32 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 n32__) || define
6150: 64 28 5f 5f 6d 69 70 73 36 34 5f 5f 29 20 7c 7c d(__mips64__) ||
6160: 20 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 defined(__sparc
6170: 36 34 5f 5f 29 0a 2f 2a 20 4d 6f 73 74 20 74 68 64__)./* Most th
6180: 69 6e 67 73 20 61 72 65 20 70 61 73 73 65 64 20 ings are passed
6190: 61 73 20 69 6e 74 65 67 65 72 73 3a 0a 20 2a 2f as integers:. */
61a0: 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 77 6f .#define __av_wo
61b0: 72 64 28 4c 49 53 54 2c 56 41 4c 29 09 09 09 09 rd(LIST,VAL)....
61c0: 09 09 5c 0a 20 20 28 2b 2b 28 4c 49 53 54 29 2e ..\. (++(LIST).
61d0: 61 70 74 72 20 3e 20 5f 5f 61 76 5f 65 70 74 72 aptr > __av_eptr
61e0: 28 4c 49 53 54 29 09 09 09 09 09 5c 0a 20 20 20 (LIST).....\.
61f0: 3f 20 2d 31 20 3a 20 28 28 4c 49 53 54 29 2e 61 ? -1 : ((LIST).a
6200: 6e 75 6d 2b 2b 2c 20 28 4c 49 53 54 29 2e 61 70 num++, (LIST).ap
6210: 74 72 5b 2d 31 5d 20 3d 20 28 5f 5f 61 76 77 6f tr[-1] = (__avwo
6220: 72 64 29 28 56 41 4c 29 2c 20 30 29 29 0a 23 65 rd)(VAL), 0)).#e
6230: 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 ndif.#if defined
6240: 28 5f 5f 68 70 70 61 5f 5f 29 0a 2f 2a 20 46 6c (__hppa__)./* Fl
6250: 6f 61 74 73 20 61 6e 64 20 61 6c 6c 20 69 6e 74 oats and all int
6260: 65 67 65 72 20 74 79 70 65 73 20 61 72 65 20 70 eger types are p
6270: 61 73 73 65 64 20 61 73 20 77 6f 72 64 73 2c 0a assed as words,.
6280: 20 2a 20 64 6f 75 62 6c 65 73 20 61 73 20 74 77 * doubles as tw
6290: 6f 20 77 6f 72 64 73 2e 0a 20 2a 2f 0a 23 64 65 o words.. */.#de
62a0: 66 69 6e 65 20 5f 5f 61 76 5f 77 6f 72 64 28 4c fine __av_word(L
62b0: 49 53 54 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a IST,VAL)......\.
62c0: 20 20 28 2d 2d 28 4c 49 53 54 29 2e 61 70 74 72 (--(LIST).aptr
62d0: 20 3c 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 < __av_eptr(LIS
62e0: 54 29 09 09 09 09 09 5c 0a 20 20 20 3f 20 2d 31 T).....\. ? -1
62f0: 20 3a 20 28 2a 28 4c 49 53 54 29 2e 61 70 74 72 : (*(LIST).aptr
6300: 20 3d 20 28 5f 5f 61 76 77 6f 72 64 29 28 56 41 = (__avword)(VA
6310: 4c 29 2c 20 30 29 29 0a 23 65 6e 64 69 66 0a 23 L), 0)).#endif.#
6320: 69 66 20 64 65 66 69 6e 65 64 28 41 4d 49 47 41 if defined(AMIGA
6330: 29 0a 2f 2a 20 53 6f 6d 65 20 61 72 67 75 6d 65 )./* Some argume
6340: 6e 74 73 20 61 72 65 20 70 61 73 73 65 64 20 69 nts are passed i
6350: 6e 20 72 65 67 69 73 74 65 72 73 2e 20 51 75 65 n registers. Que
6360: 72 79 20 74 68 65 20 6d 61 63 72 6f 20 41 56 5f ry the macro AV_
6370: 41 52 47 5f 52 45 47 4e 55 4d 2e 0a 20 2a 20 54 ARG_REGNUM.. * T
6380: 68 69 73 20 73 68 6f 75 6c 64 20 72 65 61 6c 6c his should reall
6390: 79 20 62 65 20 61 6e 20 61 72 67 75 6d 65 6e 74 y be an argument
63a0: 20 74 6f 20 5f 5f 61 76 5f 77 6f 72 64 2e 0a 20 to __av_word..
63b0: 2a 2f 0a 23 75 6e 64 65 66 20 5f 5f 61 76 5f 77 */.#undef __av_w
63c0: 6f 72 64 20 2f 2a 2a 2f 0a 23 64 65 66 69 6e 65 ord /**/.#define
63d0: 20 5f 5f 61 76 5f 77 6f 72 64 28 4c 49 53 54 2c __av_word(LIST,
63e0: 56 41 4c 29 09 09 09 09 09 09 5c 0a 20 20 28 28 VAL)......\. ((
63f0: 41 56 5f 41 52 47 5f 52 45 47 4e 55 4d 29 20 3e AV_ARG_REGNUM) >
6400: 3d 20 30 09 09 09 09 09 09 09 5c 0a 20 20 20 3f = 0.......\. ?
6410: 20 28 28 41 56 5f 41 52 47 5f 52 45 47 4e 55 4d ((AV_ARG_REGNUM
6420: 29 20 3c 20 38 2b 37 09 09 09 09 09 09 5c 0a 20 ) < 8+7......\.
6430: 20 20 20 20 20 3f 20 2d 31 20 3a 20 28 28 4c 49 ? -1 : ((LI
6440: 53 54 29 2e 72 65 67 61 72 67 73 5b 28 41 56 5f ST).regargs[(AV_
6450: 41 52 47 5f 52 45 47 4e 55 4d 29 5d 20 3d 20 28 ARG_REGNUM)] = (
6460: 5f 5f 61 76 77 6f 72 64 29 28 56 41 4c 29 2c 20 __avword)(VAL),
6470: 30 29 29 09 5c 0a 20 20 20 3a 20 28 2b 2b 28 4c 0)).\. : (++(L
6480: 49 53 54 29 2e 61 70 74 72 20 3e 20 5f 5f 61 76 IST).aptr > __av
6490: 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09 09 09 _eptr(LIST).....
64a0: 5c 0a 20 20 20 20 20 20 3f 20 2d 31 20 3a 20 28 \. ? -1 : (
64b0: 28 4c 49 53 54 29 2e 61 70 74 72 5b 2d 31 5d 20 (LIST).aptr[-1]
64c0: 3d 20 28 5f 5f 61 76 77 6f 72 64 29 28 56 41 4c = (__avword)(VAL
64d0: 29 2c 20 30 29 29 29 0a 23 65 6e 64 69 66 0a 0a ), 0))).#endif..
64e0: 2f 2a 20 69 6e 74 65 67 65 72 20 61 72 67 75 6d /* integer argum
64f0: 65 6e 74 20 74 79 70 65 73 20 2a 2f 0a 0a 23 69 ent types */..#i
6500: 66 20 64 65 66 69 6e 65 64 28 5f 5f 78 38 36 5f f defined(__x86_
6510: 36 34 5f 5f 29 0a 2f 2a 20 54 68 65 20 66 69 72 64__)./* The fir
6520: 73 74 20 36 20 69 6e 74 65 67 65 72 20 61 72 67 st 6 integer arg
6530: 75 6d 65 6e 74 73 20 61 72 65 20 70 61 73 73 65 uments are passe
6540: 64 20 69 6e 20 72 65 67 69 73 74 65 72 73 2e 20 d in registers.
6550: 2a 2f 0a 23 64 65 66 69 6e 65 20 61 76 5f 6c 6f */.#define av_lo
6560: 6e 67 28 4c 49 53 54 2c 56 41 4c 29 09 09 09 09 ng(LIST,VAL)....
6570: 09 09 5c 0a 20 20 28 28 4c 49 53 54 29 2e 69 61 ..\. ((LIST).ia
6580: 70 74 72 20 3c 20 26 28 4c 49 53 54 29 2e 69 61 ptr < &(LIST).ia
6590: 72 67 73 5b 36 5d 09 09 09 09 09 5c 0a 20 20 20 rgs[6].....\.
65a0: 3f 20 28 2a 28 4c 49 53 54 29 2e 69 61 70 74 72 ? (*(LIST).iaptr
65b0: 2b 2b 20 3d 20 28 6c 6f 6e 67 29 28 56 41 4c 29 ++ = (long)(VAL)
65c0: 2c 20 30 29 09 09 09 09 09 5c 0a 20 20 20 3a 20 , 0).....\. :
65d0: 5f 5f 61 76 5f 77 6f 72 64 28 4c 49 53 54 2c 28 __av_word(LIST,(
65e0: 6c 6f 6e 67 29 28 56 41 4c 29 29 29 0a 23 65 6c long)(VAL))).#el
65f0: 73 65 0a 23 64 65 66 69 6e 65 20 61 76 5f 6c 6f se.#define av_lo
6600: 6e 67 28 4c 49 53 54 2c 56 41 4c 29 09 5f 5f 61 ng(LIST,VAL).__a
6610: 76 5f 77 6f 72 64 28 4c 49 53 54 2c 28 6c 6f 6e v_word(LIST,(lon
6620: 67 29 28 56 41 4c 29 29 0a 23 65 6e 64 69 66 0a g)(VAL)).#endif.
6630: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 78 .#if defined(__x
6640: 38 36 5f 36 34 5f 5f 29 0a 2f 2a 20 54 68 65 20 86_64__)./* The
6650: 66 69 72 73 74 20 36 20 69 6e 74 65 67 65 72 20 first 6 integer
6660: 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 70 61 arguments are pa
6670: 73 73 65 64 20 69 6e 20 72 65 67 69 73 74 65 72 ssed in register
6680: 73 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 61 76 s. */.#define av
6690: 5f 75 6c 6f 6e 67 28 4c 49 53 54 2c 56 41 4c 29 _ulong(LIST,VAL)
66a0: 09 09 09 09 09 09 5c 0a 20 20 28 28 4c 49 53 54 ......\. ((LIST
66b0: 29 2e 69 61 70 74 72 20 3c 20 26 28 4c 49 53 54 ).iaptr < &(LIST
66c0: 29 2e 69 61 72 67 73 5b 36 5d 09 09 09 09 09 5c ).iargs[6].....\
66d0: 0a 20 20 20 3f 20 28 2a 28 4c 49 53 54 29 2e 69 . ? (*(LIST).i
66e0: 61 70 74 72 2b 2b 20 3d 20 28 75 6e 73 69 67 6e aptr++ = (unsign
66f0: 65 64 20 6c 6f 6e 67 29 28 56 41 4c 29 2c 20 30 ed long)(VAL), 0
6700: 29 09 09 09 5c 0a 20 20 20 3a 20 5f 5f 61 76 5f )...\. : __av_
6710: 77 6f 72 64 28 4c 49 53 54 2c 28 75 6e 73 69 67 word(LIST,(unsig
6720: 6e 65 64 20 6c 6f 6e 67 29 28 56 41 4c 29 29 29 ned long)(VAL)))
6730: 0a 23 65 6c 73 65 0a 23 64 65 66 69 6e 65 20 61 .#else.#define a
6740: 76 5f 75 6c 6f 6e 67 28 4c 49 53 54 2c 56 41 4c v_ulong(LIST,VAL
6750: 29 09 5f 5f 61 76 5f 77 6f 72 64 28 4c 49 53 54 ).__av_word(LIST
6760: 2c 28 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 29 ,(unsigned long)
6770: 28 56 41 4c 29 29 0a 23 65 6e 64 69 66 0a 0a 23 (VAL)).#endif..#
6780: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 78 38 36 if defined(__x86
6790: 5f 36 34 5f 5f 29 0a 2f 2a 20 54 68 65 20 66 69 _64__)./* The fi
67a0: 72 73 74 20 36 20 69 6e 74 65 67 65 72 20 61 72 rst 6 integer ar
67b0: 67 75 6d 65 6e 74 73 20 61 72 65 20 70 61 73 73 guments are pass
67c0: 65 64 20 69 6e 20 72 65 67 69 73 74 65 72 73 2e ed in registers.
67d0: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 61 76 5f 70 */.#define av_p
67e0: 74 72 28 4c 49 53 54 2c 54 59 50 45 2c 56 41 4c tr(LIST,TYPE,VAL
67f0: 29 09 09 09 09 09 09 5c 0a 20 20 28 28 4c 49 53 )......\. ((LIS
6800: 54 29 2e 69 61 70 74 72 20 3c 20 26 28 4c 49 53 T).iaptr < &(LIS
6810: 54 29 2e 69 61 72 67 73 5b 36 5d 09 09 09 09 09 T).iargs[6].....
6820: 5c 0a 20 20 20 3f 20 28 2a 28 4c 49 53 54 29 2e \. ? (*(LIST).
6830: 69 61 70 74 72 2b 2b 20 3d 20 28 5f 5f 61 76 77 iaptr++ = (__avw
6840: 6f 72 64 29 28 54 59 50 45 29 28 56 41 4c 29 2c ord)(TYPE)(VAL),
6850: 20 30 29 09 09 09 5c 0a 20 20 20 3a 20 5f 5f 61 0)...\. : __a
6860: 76 5f 77 6f 72 64 28 4c 49 53 54 2c 28 54 59 50 v_word(LIST,(TYP
6870: 45 29 28 56 41 4c 29 29 29 0a 23 65 6c 73 65 0a E)(VAL))).#else.
6880: 23 64 65 66 69 6e 65 20 61 76 5f 70 74 72 28 4c #define av_ptr(L
6890: 49 53 54 2c 54 59 50 45 2c 56 41 4c 29 09 5f 5f IST,TYPE,VAL).__
68a0: 61 76 5f 77 6f 72 64 28 4c 49 53 54 2c 28 54 59 av_word(LIST,(TY
68b0: 50 45 29 28 56 41 4c 29 29 0a 23 65 6e 64 69 66 PE)(VAL)).#endif
68c0: 0a 0a 23 64 65 66 69 6e 65 20 61 76 5f 63 68 61 ..#define av_cha
68d0: 72 09 09 09 61 76 5f 6c 6f 6e 67 0a 23 64 65 66 r...av_long.#def
68e0: 69 6e 65 20 61 76 5f 73 63 68 61 72 09 09 61 76 ine av_schar..av
68f0: 5f 6c 6f 6e 67 0a 23 64 65 66 69 6e 65 20 61 76 _long.#define av
6900: 5f 73 68 6f 72 74 09 09 61 76 5f 6c 6f 6e 67 0a _short..av_long.
6910: 23 64 65 66 69 6e 65 20 61 76 5f 69 6e 74 09 09 #define av_int..
6920: 09 61 76 5f 6c 6f 6e 67 0a 23 64 65 66 69 6e 65 .av_long.#define
6930: 20 61 76 5f 75 63 68 61 72 09 09 61 76 5f 75 6c av_uchar..av_ul
6940: 6f 6e 67 0a 23 64 65 66 69 6e 65 20 61 76 5f 75 ong.#define av_u
6950: 73 68 6f 72 74 09 09 61 76 5f 75 6c 6f 6e 67 0a short..av_ulong.
6960: 23 64 65 66 69 6e 65 20 61 76 5f 75 69 6e 74 09 #define av_uint.
6970: 09 09 61 76 5f 75 6c 6f 6e 67 0a 0a 23 69 66 20 ..av_ulong..#if
6980: 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 36 34 defined(__mips64
6990: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f __) || defined(_
69a0: 5f 73 70 61 72 63 36 34 5f 5f 29 20 7c 7c 20 64 _sparc64__) || d
69b0: 65 66 69 6e 65 64 28 5f 5f 61 6c 70 68 61 5f 5f efined(__alpha__
69c0: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 69 ) || defined(__i
69d0: 61 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 a64__) || define
69e0: 64 28 5f 5f 78 38 36 5f 36 34 5f 5f 29 0a 2f 2a d(__x86_64__)./*
69f0: 20 60 6c 6f 6e 67 20 6c 6f 6e 67 27 20 61 6e 64 `long long' and
6a00: 20 60 6c 6f 6e 67 27 20 61 72 65 20 69 64 65 6e `long' are iden
6a10: 74 69 63 61 6c 2e 20 2a 2f 0a 23 64 65 66 69 6e tical. */.#defin
6a20: 65 20 61 76 5f 6c 6f 6e 67 6c 6f 6e 67 09 09 61 e av_longlong..a
6a30: 76 5f 6c 6f 6e 67 0a 23 64 65 66 69 6e 65 20 61 v_long.#define a
6a40: 76 5f 75 6c 6f 6e 67 6c 6f 6e 67 09 09 61 76 5f v_ulonglong..av_
6a50: 75 6c 6f 6e 67 0a 23 65 6c 69 66 20 64 65 66 69 ulong.#elif defi
6a60: 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 ned(__mipsn32__)
6a70: 0a 2f 2a 20 60 6c 6f 6e 67 20 6c 6f 6e 67 27 20 ./* `long long'
6a80: 66 69 74 73 20 69 6e 20 5f 5f 61 76 77 6f 72 64 fits in __avword
6a90: 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 61 76 5f . */.#define av_
6aa0: 6c 6f 6e 67 6c 6f 6e 67 09 09 5f 5f 61 76 5f 77 longlong..__av_w
6ab0: 6f 72 64 0a 23 64 65 66 69 6e 65 20 61 76 5f 75 ord.#define av_u
6ac0: 6c 6f 6e 67 6c 6f 6e 67 28 4c 49 53 54 2c 56 41 longlong(LIST,VA
6ad0: 4c 29 09 5f 5f 61 76 5f 77 6f 72 64 28 4c 49 53 L).__av_word(LIS
6ae0: 54 2c 28 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 T,(unsigned long
6af0: 20 6c 6f 6e 67 29 28 56 41 4c 29 29 0a 23 65 6c long)(VAL)).#el
6b00: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 69 33 38 if defined(__i38
6b10: 36 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 6__) || defined(
6b20: 5f 5f 6d 36 38 6b 5f 5f 29 20 7c 7c 20 64 65 66 __m68k__) || def
6b30: 69 6e 65 64 28 5f 5f 6d 69 70 73 5f 5f 29 20 7c ined(__mips__) |
6b40: 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 | (defined(__spa
6b50: 72 63 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65 rc__) && !define
6b60: 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29 29 20 d(__sparc64__))
6b70: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 68 70 70 || defined(__hpp
6b80: 61 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 a__) || defined(
6b90: 5f 5f 61 72 6d 5f 5f 29 20 7c 7c 20 64 65 66 69 __arm__) || defi
6ba0: 6e 65 64 28 5f 5f 72 73 36 30 30 30 5f 5f 29 20 ned(__rs6000__)
6bb0: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 38 38 || defined(__m88
6bc0: 6b 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 k__) || defined(
6bd0: 5f 5f 63 6f 6e 76 65 78 5f 5f 29 20 7c 7c 20 64 __convex__) || d
6be0: 65 66 69 6e 65 64 28 5f 5f 73 33 39 30 5f 5f 29 efined(__s390__)
6bf0: 0a 2f 2a 20 60 6c 6f 6e 67 20 6c 6f 6e 67 27 73 ./* `long long's
6c00: 20 61 72 65 20 70 61 73 73 65 64 20 65 6d 62 65 are passed embe
6c10: 64 64 65 64 20 6f 6e 20 74 68 65 20 61 72 67 20 dded on the arg
6c20: 73 74 61 63 6b 2e 20 2a 2f 0a 23 64 65 66 69 6e stack. */.#defin
6c30: 65 20 61 76 5f 6c 6f 6e 67 6c 6f 6e 67 28 4c 49 e av_longlong(LI
6c40: 53 54 2c 56 41 4c 29 09 5f 5f 61 76 5f 6c 6f 6e ST,VAL).__av_lon
6c50: 67 6c 6f 6e 67 28 4c 49 53 54 2c 6c 6f 6e 67 20 glong(LIST,long
6c60: 6c 6f 6e 67 2c 56 41 4c 29 0a 23 64 65 66 69 6e long,VAL).#defin
6c70: 65 20 61 76 5f 75 6c 6f 6e 67 6c 6f 6e 67 28 4c e av_ulonglong(L
6c80: 49 53 54 2c 56 41 4c 29 09 5f 5f 61 76 5f 6c 6f IST,VAL).__av_lo
6c90: 6e 67 6c 6f 6e 67 28 4c 49 53 54 2c 75 6e 73 69 nglong(LIST,unsi
6ca0: 67 6e 65 64 20 6c 6f 6e 67 20 6c 6f 6e 67 2c 56 gned long long,V
6cb0: 41 4c 29 0a 23 69 66 20 64 65 66 69 6e 65 64 28 AL).#if defined(
6cc0: 5f 5f 69 33 38 36 5f 5f 29 20 7c 7c 20 64 65 66 __i386__) || def
6cd0: 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f 5f 29 20 7c ined(__m68k__) |
6ce0: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 61 72 6d 5f | defined(__arm_
6cf0: 5f 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f _) || (defined(_
6d00: 5f 72 73 36 30 30 30 5f 5f 29 20 26 26 20 28 64 _rs6000__) && (d
6d10: 65 66 69 6e 65 64 28 5f 41 49 58 29 20 7c 7c 20 efined(_AIX) ||
6d20: 28 64 65 66 69 6e 65 64 28 5f 5f 4d 41 43 48 5f (defined(__MACH_
6d30: 5f 29 20 26 26 20 64 65 66 69 6e 65 64 28 5f 5f _) && defined(__
6d40: 41 50 50 4c 45 5f 5f 29 29 29 29 20 7c 7c 20 64 APPLE__)))) || d
6d50: 65 66 69 6e 65 64 28 5f 5f 63 6f 6e 76 65 78 5f efined(__convex_
6d60: 5f 29 0a 2f 2a 20 60 6c 6f 6e 67 20 6c 6f 6e 67 _)./* `long long
6d70: 27 73 20 61 72 65 20 28 61 74 20 6d 6f 73 74 29 's are (at most)
6d80: 20 77 6f 72 64 2d 61 6c 69 67 6e 65 64 2e 20 2a word-aligned. *
6d90: 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 6c /.#define __av_l
6da0: 6f 6e 67 6c 6f 6e 67 28 4c 49 53 54 2c 54 59 50 onglong(LIST,TYP
6db0: 45 2c 56 41 4c 29 09 09 09 09 09 5c 0a 20 20 28 E,VAL).....\. (
6dc0: 28 28 4c 49 53 54 29 2e 61 70 74 72 20 2b 3d 20 ((LIST).aptr +=
6dd0: 73 69 7a 65 6f 66 28 54 59 50 45 29 2f 73 69 7a sizeof(TYPE)/siz
6de0: 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 29 20 3e eof(__avword)) >
6df0: 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29 __av_eptr(LIST)
6e00: 09 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 28 28 28 .\. ? -1 : (((
6e10: 54 59 50 45 2a 29 28 4c 49 53 54 29 2e 61 70 74 TYPE*)(LIST).apt
6e20: 72 29 5b 2d 31 5d 20 3d 20 28 54 59 50 45 29 28 r)[-1] = (TYPE)(
6e30: 56 41 4c 29 2c 20 30 29 29 0a 23 65 6e 64 69 66 VAL), 0)).#endif
6e40: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d .#if defined(__m
6e50: 69 70 73 5f 5f 29 20 7c 7c 20 28 64 65 66 69 6e ips__) || (defin
6e60: 65 64 28 5f 5f 73 70 61 72 63 5f 5f 29 20 26 26 ed(__sparc__) &&
6e70: 20 21 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 !defined(__spar
6e80: 63 36 34 5f 5f 29 29 20 7c 7c 20 64 65 66 69 6e c64__)) || defin
6e90: 65 64 28 5f 5f 68 70 70 61 5f 5f 29 20 7c 7c 20 ed(__hppa__) ||
6ea0: 28 64 65 66 69 6e 65 64 28 5f 5f 72 73 36 30 30 (defined(__rs600
6eb0: 30 5f 5f 29 20 26 26 20 21 28 64 65 66 69 6e 65 0__) && !(define
6ec0: 64 28 5f 41 49 58 29 20 7c 7c 20 28 64 65 66 69 d(_AIX) || (defi
6ed0: 6e 65 64 28 5f 5f 4d 41 43 48 5f 5f 29 20 26 26 ned(__MACH__) &&
6ee0: 20 64 65 66 69 6e 65 64 28 5f 5f 41 50 50 4c 45 defined(__APPLE
6ef0: 5f 5f 29 29 29 29 20 7c 7c 20 64 65 66 69 6e 65 __)))) || define
6f00: 64 28 5f 5f 6d 38 38 6b 5f 5f 29 20 7c 7c 20 64 d(__m88k__) || d
6f10: 65 66 69 6e 65 64 28 5f 5f 73 33 39 30 5f 5f 29 efined(__s390__)
6f20: 0a 2f 2a 20 60 6c 6f 6e 67 20 6c 6f 6e 67 27 73 ./* `long long's
6f30: 20 68 61 76 65 20 61 6c 69 67 6e 6d 65 6e 74 20 have alignment
6f40: 38 2e 20 2a 2f 0a 23 69 66 20 64 65 66 69 6e 65 8. */.#if define
6f50: 64 28 5f 5f 6d 69 70 73 5f 5f 29 0a 23 64 65 66 d(__mips__).#def
6f60: 69 6e 65 20 5f 5f 61 76 5f 6c 6f 6e 67 6c 6f 6e ine __av_longlon
6f70: 67 28 4c 49 53 54 2c 54 59 50 45 2c 56 41 4c 29 g(LIST,TYPE,VAL)
6f80: 09 09 09 09 09 5c 0a 20 20 28 28 28 4c 49 53 54 .....\. (((LIST
6f90: 29 2e 61 70 74 72 20 3d 20 28 5f 5f 61 76 77 6f ).aptr = (__avwo
6fa0: 72 64 2a 29 28 28 28 5f 5f 61 76 77 6f 72 64 29 rd*)(((__avword)
6fb0: 28 4c 49 53 54 29 2e 61 70 74 72 2b 73 69 7a 65 (LIST).aptr+size
6fc0: 6f 66 28 54 59 50 45 29 2b 5f 5f 41 56 5f 61 6c of(TYPE)+__AV_al
6fd0: 69 67 6e 6f 66 28 54 59 50 45 29 2d 31 29 20 26 ignof(TYPE)-1) &
6fe0: 20 2d 28 6c 6f 6e 67 29 5f 5f 41 56 5f 61 6c 69 -(long)__AV_ali
6ff0: 67 6e 6f 66 28 54 59 50 45 29 29 29 20 3e 20 5f gnof(TYPE))) > _
7000: 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29 20 5c _av_eptr(LIST) \
7010: 0a 20 20 20 3f 20 2d 31 20 3a 20 28 28 4c 49 53 . ? -1 : ((LIS
7020: 54 29 2e 61 6e 75 6d 2b 2b 2c 20 28 28 54 59 50 T).anum++, ((TYP
7030: 45 2a 29 28 4c 49 53 54 29 2e 61 70 74 72 29 5b E*)(LIST).aptr)[
7040: 2d 31 5d 20 3d 20 28 54 59 50 45 29 28 56 41 4c -1] = (TYPE)(VAL
7050: 29 2c 20 30 29 29 0a 23 65 6e 64 69 66 0a 23 69 ), 0)).#endif.#i
7060: 66 20 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 f defined(__spar
7070: 63 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 c__) && !defined
7080: 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29 0a 2f 2a (__sparc64__)./*
7090: 20 57 69 74 68 69 6e 20 74 68 65 20 61 72 67 20 Within the arg
70a0: 73 74 61 63 6b 2c 20 74 68 65 20 61 6c 69 67 6e stack, the align
70b0: 6d 65 6e 74 20 69 73 20 6f 6e 6c 79 20 34 2c 20 ment is only 4,
70c0: 6e 6f 74 20 38 2e 20 2a 2f 0a 2f 2a 20 54 68 69 not 8. */./* Thi
70d0: 73 20 61 73 73 75 6d 65 73 20 73 69 7a 65 6f 66 s assumes sizeof
70e0: 28 6c 6f 6e 67 20 6c 6f 6e 67 29 20 3d 3d 20 32 (long long) == 2
70f0: 2a 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 *sizeof(__avword
7100: 29 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f ). */.#define __
7110: 61 76 5f 6c 6f 6e 67 6c 6f 6e 67 28 4c 49 53 54 av_longlong(LIST
7120: 2c 54 59 50 45 2c 56 41 4c 29 09 09 09 09 09 5c ,TYPE,VAL).....\
7130: 0a 20 20 28 28 28 4c 49 53 54 29 2e 61 70 74 72 . (((LIST).aptr
7140: 20 2b 3d 20 73 69 7a 65 6f 66 28 54 59 50 45 29 += sizeof(TYPE)
7150: 2f 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 /sizeof(__avword
7160: 29 29 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c )) > __av_eptr(L
7170: 49 53 54 29 09 5c 0a 20 20 20 3f 20 2d 31 20 3a IST).\. ? -1 :
7180: 09 09 09 09 09 09 09 09 5c 0a 20 20 20 28 28 4c ........\. ((L
7190: 49 53 54 29 2e 74 6d 70 2e 5f 6c 6f 6e 67 6c 6f IST).tmp._longlo
71a0: 6e 67 20 3d 20 28 54 59 50 45 29 28 56 41 4c 29 ng = (TYPE)(VAL)
71b0: 2c 09 09 09 09 09 5c 0a 20 20 20 20 28 4c 49 53 ,.....\. (LIS
71c0: 54 29 2e 61 70 74 72 5b 2d 32 5d 20 3d 20 28 4c T).aptr[-2] = (L
71d0: 49 53 54 29 2e 74 6d 70 2e 77 6f 72 64 73 5b 30 IST).tmp.words[0
71e0: 5d 2c 09 09 09 09 5c 0a 20 20 20 20 28 4c 49 53 ],....\. (LIS
71f0: 54 29 2e 61 70 74 72 5b 2d 31 5d 20 3d 20 28 4c T).aptr[-1] = (L
7200: 49 53 54 29 2e 74 6d 70 2e 77 6f 72 64 73 5b 31 IST).tmp.words[1
7210: 5d 2c 09 09 09 09 5c 0a 20 20 20 20 30 29 29 0a ],....\. 0)).
7220: 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e #endif.#if defin
7230: 65 64 28 5f 5f 68 70 70 61 5f 5f 29 0a 23 64 65 ed(__hppa__).#de
7240: 66 69 6e 65 20 5f 5f 61 76 5f 6c 6f 6e 67 6c 6f fine __av_longlo
7250: 6e 67 28 4c 49 53 54 2c 54 59 50 45 2c 56 41 4c ng(LIST,TYPE,VAL
7260: 29 09 09 09 09 09 5c 0a 20 20 28 28 28 4c 49 53 ).....\. (((LIS
7270: 54 29 2e 61 70 74 72 20 3d 20 28 5f 5f 61 76 77 T).aptr = (__avw
7280: 6f 72 64 2a 29 28 28 28 5f 5f 61 76 77 6f 72 64 ord*)(((__avword
7290: 29 28 4c 49 53 54 29 2e 61 70 74 72 20 26 20 2d )(LIST).aptr & -
72a0: 28 6c 6f 6e 67 29 5f 5f 41 56 5f 61 6c 69 67 6e (long)__AV_align
72b0: 6f 66 28 54 59 50 45 29 29 20 2d 20 73 69 7a 65 of(TYPE)) - size
72c0: 6f 66 28 54 59 50 45 29 29 29 20 3c 20 5f 5f 61 of(TYPE))) < __a
72d0: 76 5f 65 70 74 72 28 4c 49 53 54 29 20 5c 0a 20 v_eptr(LIST) \.
72e0: 20 20 3f 20 2d 31 20 3a 20 28 2a 28 54 59 50 45 ? -1 : (*(TYPE
72f0: 2a 29 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 *)(LIST).aptr =
7300: 28 54 59 50 45 29 28 56 41 4c 29 2c 20 30 29 29 (TYPE)(VAL), 0))
7310: 0a 23 65 6e 64 69 66 0a 23 69 66 20 28 64 65 66 .#endif.#if (def
7320: 69 6e 65 64 28 5f 5f 72 73 36 30 30 30 5f 5f 29 ined(__rs6000__)
7330: 20 26 26 20 21 28 64 65 66 69 6e 65 64 28 5f 41 && !(defined(_A
7340: 49 58 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28 IX) || (defined(
7350: 5f 5f 4d 41 43 48 5f 5f 29 20 26 26 20 64 65 66 __MACH__) && def
7360: 69 6e 65 64 28 5f 5f 41 50 50 4c 45 5f 5f 29 29 ined(__APPLE__))
7370: 29 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f )) || defined(__
7380: 6d 38 38 6b 5f 5f 29 0a 23 64 65 66 69 6e 65 20 m88k__).#define
7390: 5f 5f 61 76 5f 6c 6f 6e 67 6c 6f 6e 67 28 4c 49 __av_longlong(LI
73a0: 53 54 2c 54 59 50 45 2c 56 41 4c 29 09 09 09 09 ST,TYPE,VAL)....
73b0: 09 5c 0a 20 20 28 28 28 4c 49 53 54 29 2e 61 70 .\. (((LIST).ap
73c0: 74 72 20 3d 20 28 5f 5f 61 76 77 6f 72 64 2a 29 tr = (__avword*)
73d0: 28 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 (((__avword)(LIS
73e0: 54 29 2e 61 70 74 72 2b 73 69 7a 65 6f 66 28 54 T).aptr+sizeof(T
73f0: 59 50 45 29 2b 5f 5f 41 56 5f 61 6c 69 67 6e 6f YPE)+__AV_aligno
7400: 66 28 54 59 50 45 29 2d 31 29 20 26 20 2d 28 6c f(TYPE)-1) & -(l
7410: 6f 6e 67 29 5f 5f 41 56 5f 61 6c 69 67 6e 6f 66 ong)__AV_alignof
7420: 28 54 59 50 45 29 29 29 20 3e 20 5f 5f 61 76 5f (TYPE))) > __av_
7430: 65 70 74 72 28 4c 49 53 54 29 20 5c 0a 20 20 20 eptr(LIST) \.
7440: 3f 20 2d 31 20 3a 20 28 28 28 54 59 50 45 2a 29 ? -1 : (((TYPE*)
7450: 28 4c 49 53 54 29 2e 61 70 74 72 29 5b 2d 31 5d (LIST).aptr)[-1]
7460: 20 3d 20 28 54 59 50 45 29 28 56 41 4c 29 2c 20 = (TYPE)(VAL),
7470: 30 29 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 0)).#endif.#if d
7480: 65 66 69 6e 65 64 28 5f 5f 73 33 39 30 5f 5f 29 efined(__s390__)
7490: 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 6c 6f .#define __av_lo
74a0: 6e 67 6c 6f 6e 67 28 4c 49 53 54 2c 54 59 50 45 nglong(LIST,TYPE
74b0: 2c 56 41 4c 29 09 09 09 09 09 5c 0a 20 20 28 28 ,VAL).....\. ((
74c0: 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 28 5f (LIST).aptr = (_
74d0: 5f 61 76 77 6f 72 64 2a 29 28 28 28 5f 5f 61 76 _avword*)(((__av
74e0: 77 6f 72 64 29 28 4c 49 53 54 29 2e 61 70 74 72 word)(LIST).aptr
74f0: 2b 73 69 7a 65 6f 66 28 54 59 50 45 29 2b 5f 5f +sizeof(TYPE)+__
7500: 41 56 5f 61 6c 69 67 6e 6f 66 28 54 59 50 45 29 AV_alignof(TYPE)
7510: 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 5f 5f 41 -1) & -(long)__A
7520: 56 5f 61 6c 69 67 6e 6f 66 28 54 59 50 45 29 29 V_alignof(TYPE))
7530: 29 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 ) > __av_eptr(LI
7540: 53 54 29 20 5c 0a 20 20 20 3f 20 2d 31 20 3a 09 ST) \. ? -1 :.
7550: 09 09 09 09 09 5c 0a 20 20 20 28 28 28 4c 49 53 .....\. (((LIS
7560: 54 29 2e 61 70 74 72 20 2d 20 28 4c 49 53 54 29 T).aptr - (LIST)
7570: 2e 61 72 67 73 20 2d 20 28 4c 49 53 54 29 2e 66 .args - (LIST).f
7580: 61 72 67 77 6f 72 64 73 20 3d 3d 20 34 20 3f 20 argwords == 4 ?
7590: 2b 2b 28 4c 49 53 54 29 2e 61 70 74 72 2c 30 20 ++(LIST).aptr,0
75a0: 3a 20 30 29 2c 20 5c 0a 20 20 20 20 28 28 28 54 : 0), \. (((T
75b0: 59 50 45 2a 29 28 4c 49 53 54 29 2e 61 70 74 72 YPE*)(LIST).aptr
75c0: 29 5b 2d 31 5d 20 3d 20 28 54 59 50 45 29 28 56 )[-1] = (TYPE)(V
75d0: 41 4c 29 2c 20 30 29 29 29 0a 23 65 6e 64 69 66 AL), 0))).#endif
75e0: 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69 66 0a 0a .#endif.#endif..
75f0: 2f 2a 20 66 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e /* floating-poin
7600: 74 20 61 72 67 75 6d 65 6e 74 20 74 79 70 65 73 t argument types
7610: 20 2a 2f 0a 0a 23 64 65 66 69 6e 65 20 61 76 5f */..#define av_
7620: 66 6c 6f 61 74 28 4c 49 53 54 2c 56 41 4c 29 09 float(LIST,VAL).
7630: 09 09 09 09 09 5c 0a 20 20 28 28 4c 49 53 54 29 .....\. ((LIST)
7640: 2e 66 6c 61 67 73 20 26 20 5f 5f 41 56 5f 54 52 .flags & __AV_TR
7650: 41 44 49 54 49 4f 4e 41 4c 5f 46 4c 4f 41 54 5f ADITIONAL_FLOAT_
7660: 41 52 47 53 09 09 09 09 5c 0a 20 20 20 3f 20 61 ARGS....\. ? a
7670: 76 5f 64 6f 75 62 6c 65 28 4c 49 53 54 2c 28 66 v_double(LIST,(f
7680: 6c 6f 61 74 29 28 56 41 4c 29 29 09 09 09 09 09 loat)(VAL)).....
7690: 5c 0a 20 20 20 3a 20 5f 5f 61 76 5f 66 6c 6f 61 \. : __av_floa
76a0: 74 28 4c 49 53 54 2c 56 41 4c 29 29 0a 0a 23 69 t(LIST,VAL))..#i
76b0: 66 20 64 65 66 69 6e 65 64 28 5f 5f 69 33 38 36 f defined(__i386
76c0: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f __) || defined(_
76d0: 5f 6d 36 38 6b 5f 5f 29 20 7c 7c 20 28 64 65 66 _m68k__) || (def
76e0: 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f 5f 29 20 ined(__sparc__)
76f0: 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 73 70 && !defined(__sp
7700: 61 72 63 36 34 5f 5f 29 29 20 7c 7c 20 64 65 66 arc64__)) || def
7710: 69 6e 65 64 28 5f 5f 61 72 6d 5f 5f 29 20 7c 7c ined(__arm__) ||
7720: 20 64 65 66 69 6e 65 64 28 5f 5f 63 6f 6e 76 65 defined(__conve
7730: 78 5f 5f 29 0a 0a 23 64 65 66 69 6e 65 20 5f 5f x__)..#define __
7740: 61 76 5f 66 6c 6f 61 74 28 4c 49 53 54 2c 56 41 av_float(LIST,VA
7750: 4c 29 09 09 09 09 09 09 5c 0a 20 20 28 2b 2b 28 L)......\. (++(
7760: 4c 49 53 54 29 2e 61 70 74 72 20 3e 20 5f 5f 61 LIST).aptr > __a
7770: 76 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09 09 v_eptr(LIST)....
7780: 09 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 28 28 28 .\. ? -1 : (((
7790: 66 6c 6f 61 74 2a 29 28 4c 49 53 54 29 2e 61 70 float*)(LIST).ap
77a0: 74 72 29 5b 2d 31 5d 20 3d 20 28 66 6c 6f 61 74 tr)[-1] = (float
77b0: 29 28 56 41 4c 29 2c 20 30 29 29 0a 0a 2f 2a 20 )(VAL), 0))../*
77c0: 54 68 69 73 20 61 73 73 75 6d 65 73 20 73 69 7a This assumes siz
77d0: 65 6f 66 28 64 6f 75 62 6c 65 29 20 3d 3d 20 32 eof(double) == 2
77e0: 2a 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 *sizeof(__avword
77f0: 29 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 61 76 ). */.#define av
7800: 5f 64 6f 75 62 6c 65 28 4c 49 53 54 2c 56 41 4c _double(LIST,VAL
7810: 29 09 09 09 09 09 09 5c 0a 20 20 20 28 28 28 4c )......\. (((L
7820: 49 53 54 29 2e 61 70 74 72 20 2b 3d 20 32 29 20 IST).aptr += 2)
7830: 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 > __av_eptr(LIST
7840: 29 09 09 09 09 5c 0a 20 20 20 20 3f 20 2d 31 20 )....\. ? -1
7850: 3a 09 09 09 09 09 09 09 09 5c 0a 20 20 20 20 28 :........\. (
7860: 28 4c 49 53 54 29 2e 74 6d 70 2e 5f 64 6f 75 62 (LIST).tmp._doub
7870: 6c 65 20 3d 20 28 64 6f 75 62 6c 65 29 28 56 41 le = (double)(VA
7880: 4c 29 2c 09 09 09 09 5c 0a 20 20 20 20 20 28 4c L),....\. (L
7890: 49 53 54 29 2e 61 70 74 72 5b 2d 32 5d 20 3d 20 IST).aptr[-2] =
78a0: 28 4c 49 53 54 29 2e 74 6d 70 2e 77 6f 72 64 73 (LIST).tmp.words
78b0: 5b 30 5d 2c 09 09 09 09 5c 0a 20 20 20 20 20 28 [0],....\. (
78c0: 4c 49 53 54 29 2e 61 70 74 72 5b 2d 31 5d 20 3d LIST).aptr[-1] =
78d0: 20 28 4c 49 53 54 29 2e 74 6d 70 2e 77 6f 72 64 (LIST).tmp.word
78e0: 73 5b 31 5d 2c 09 09 09 09 5c 0a 20 20 20 20 20 s[1],....\.
78f0: 30 29 29 0a 0a 23 65 6e 64 69 66 0a 0a 23 69 66 0))..#endif..#if
7900: 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 5f defined(__mips_
7910: 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f _) && !defined(_
7920: 5f 6d 69 70 73 6e 33 32 5f 5f 29 0a 0a 2f 2a 20 _mipsn32__)../*
7930: 55 70 20 74 6f 20 32 20 6c 65 61 64 69 6e 67 20 Up to 2 leading
7940: 66 6c 6f 61 74 20 6f 72 20 64 6f 75 62 6c 65 20 float or double
7950: 6e 6f 6e 2d 76 61 72 61 72 67 73 20 61 72 67 73 non-varargs args
7960: 20 63 61 6e 20 62 65 20 70 61 73 73 65 64 20 69 can be passed i
7970: 6e 0a 20 2a 20 66 6c 6f 61 74 20 72 65 67 69 73 n. * float regis
7980: 74 65 72 73 2c 20 62 75 74 20 77 65 20 61 6c 73 ters, but we als
7990: 6f 20 70 75 73 68 20 74 68 65 6d 20 69 6e 74 6f o push them into
79a0: 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 the correspondi
79b0: 6e 67 20 69 6e 74 0a 20 2a 20 72 65 67 69 73 74 ng int. * regist
79c0: 65 72 73 20 69 6e 20 63 61 73 65 20 6f 66 20 76 ers in case of v
79d0: 61 72 61 72 67 73 2e 20 46 6f 72 20 64 6f 75 62 arargs. For doub
79e0: 6c 65 73 20 77 65 20 6e 65 65 64 20 74 6f 20 61 les we need to a
79f0: 6c 69 67 6e 20 74 68 65 20 61 70 74 72 0a 20 2a lign the aptr. *
7a00: 20 74 6f 20 61 6e 20 65 76 65 6e 20 62 6f 75 6e to an even boun
7a10: 64 61 72 79 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e dary.. */.#defin
7a20: 65 20 5f 5f 61 76 5f 66 6c 6f 61 74 28 4c 49 53 e __av_float(LIS
7a30: 54 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a 20 20 T,VAL)......\.
7a40: 28 2b 2b 28 4c 49 53 54 29 2e 61 70 74 72 20 3e (++(LIST).aptr >
7a50: 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29 __av_eptr(LIST)
7a60: 09 09 09 09 09 5c 0a 20 20 20 3f 20 2d 31 20 3a .....\. ? -1 :
7a70: 20 28 28 2b 2b 28 4c 49 53 54 29 2e 61 6e 75 6d ((++(LIST).anum
7a80: 20 3d 3d 20 31 09 09 09 09 09 09 5c 0a 09 20 20 == 1......\..
7a90: 20 20 3f 20 28 28 4c 49 53 54 29 2e 66 6c 61 67 ? ((LIST).flag
7aa0: 73 20 7c 3d 20 5f 5f 41 56 5f 46 4c 4f 41 54 5f s |= __AV_FLOAT_
7ab0: 31 2c 09 09 09 09 5c 0a 09 20 20 20 20 20 20 20 1,....\..
7ac0: 28 28 66 6c 6f 61 74 2a 29 28 4c 49 53 54 29 2e ((float*)(LIST).
7ad0: 66 6c 6f 61 74 61 72 67 29 5b 31 5d 20 3d 20 28 floatarg)[1] = (
7ae0: 28 66 6c 6f 61 74 2a 29 28 4c 49 53 54 29 2e 61 (float*)(LIST).a
7af0: 70 74 72 29 5b 2d 31 5d 20 3d 20 28 66 6c 6f 61 ptr)[-1] = (floa
7b00: 74 29 28 56 41 4c 29 29 5c 0a 09 20 20 20 20 3a t)(VAL))\.. :
7b10: 20 28 4c 49 53 54 29 2e 61 6e 75 6d 20 3d 3d 20 (LIST).anum ==
7b20: 32 20 26 26 20 28 28 4c 49 53 54 29 2e 66 6c 61 2 && ((LIST).fla
7b30: 67 73 20 26 20 5f 5f 41 56 5f 46 4c 4f 41 54 5f gs & __AV_FLOAT_
7b40: 31 29 09 09 5c 0a 09 20 20 20 20 3f 20 28 28 4c 1)..\.. ? ((L
7b50: 49 53 54 29 2e 66 6c 61 67 73 20 7c 3d 20 5f 5f IST).flags |= __
7b60: 41 56 5f 46 4c 4f 41 54 5f 32 2c 09 09 09 09 5c AV_FLOAT_2,....\
7b70: 0a 09 20 20 20 20 20 20 20 28 28 66 6c 6f 61 74 .. ((float
7b80: 2a 29 28 4c 49 53 54 29 2e 66 6c 6f 61 74 61 72 *)(LIST).floatar
7b90: 67 29 5b 33 5d 20 3d 20 28 28 66 6c 6f 61 74 2a g)[3] = ((float*
7ba0: 29 28 4c 49 53 54 29 2e 61 70 74 72 29 5b 2d 31 )(LIST).aptr)[-1
7bb0: 5d 20 3d 20 28 66 6c 6f 61 74 29 28 56 41 4c 29 ] = (float)(VAL)
7bc0: 29 5c 0a 09 20 20 20 20 3a 20 28 2a 28 66 6c 6f )\.. : (*(flo
7bd0: 61 74 2a 29 26 28 4c 49 53 54 29 2e 61 70 74 72 at*)&(LIST).aptr
7be0: 5b 2d 31 5d 20 3d 20 28 66 6c 6f 61 74 29 28 56 [-1] = (float)(V
7bf0: 41 4c 29 29 29 2c 09 09 5c 0a 09 20 20 20 30 29 AL))),..\.. 0)
7c00: 29 0a 0a 23 64 65 66 69 6e 65 20 61 76 5f 64 6f )..#define av_do
7c10: 75 62 6c 65 28 4c 49 53 54 2c 56 41 4c 29 09 09 uble(LIST,VAL)..
7c20: 09 09 09 09 5c 0a 20 20 28 28 28 4c 49 53 54 29 ....\. (((LIST)
7c30: 2e 61 70 74 72 20 3d 20 28 5f 5f 61 76 77 6f 72 .aptr = (__avwor
7c40: 64 2a 29 28 28 28 5f 5f 61 76 77 6f 72 64 29 28 d*)(((__avword)(
7c50: 4c 49 53 54 29 2e 61 70 74 72 2b 31 35 29 26 2d LIST).aptr+15)&-
7c60: 38 29 29 09 09 5c 0a 20 20 20 3e 20 5f 5f 61 76 8))..\. > __av
7c70: 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09 09 09 _eptr(LIST).....
7c80: 09 09 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 28 28 ..\. ? -1 : ((
7c90: 2b 2b 28 4c 49 53 54 29 2e 61 6e 75 6d 20 3d 3d ++(LIST).anum ==
7ca0: 20 31 09 09 09 09 09 09 5c 0a 09 20 20 20 20 3f 1......\.. ?
7cb0: 20 28 28 4c 49 53 54 29 2e 66 6c 61 67 73 20 7c ((LIST).flags |
7cc0: 3d 20 5f 5f 41 56 5f 46 4c 4f 41 54 5f 31 2c 09 = __AV_FLOAT_1,.
7cd0: 09 09 09 5c 0a 09 20 20 20 20 20 20 20 28 4c 49 ...\.. (LI
7ce0: 53 54 29 2e 66 6c 6f 61 74 61 72 67 5b 30 5d 20 ST).floatarg[0]
7cf0: 3d 20 28 28 64 6f 75 62 6c 65 2a 29 28 4c 49 53 = ((double*)(LIS
7d00: 54 29 2e 61 70 74 72 29 5b 2d 31 5d 20 3d 20 28 T).aptr)[-1] = (
7d10: 64 6f 75 62 6c 65 29 28 56 41 4c 29 29 5c 0a 09 double)(VAL))\..
7d20: 20 20 20 20 3a 20 28 4c 49 53 54 29 2e 61 6e 75 : (LIST).anu
7d30: 6d 20 3d 3d 20 32 20 26 26 20 28 28 4c 49 53 54 m == 2 && ((LIST
7d40: 29 2e 66 6c 61 67 73 20 26 20 5f 5f 41 56 5f 46 ).flags & __AV_F
7d50: 4c 4f 41 54 5f 31 29 09 09 5c 0a 09 20 20 20 20 LOAT_1)..\..
7d60: 3f 20 28 28 4c 49 53 54 29 2e 66 6c 61 67 73 20 ? ((LIST).flags
7d70: 7c 3d 20 5f 5f 41 56 5f 46 4c 4f 41 54 5f 32 2c |= __AV_FLOAT_2,
7d80: 09 09 09 09 5c 0a 09 20 20 20 20 20 20 20 28 4c ....\.. (L
7d90: 49 53 54 29 2e 66 6c 6f 61 74 61 72 67 5b 31 5d IST).floatarg[1]
7da0: 20 3d 20 28 28 64 6f 75 62 6c 65 2a 29 28 4c 49 = ((double*)(LI
7db0: 53 54 29 2e 61 70 74 72 29 5b 2d 31 5d 20 3d 20 ST).aptr)[-1] =
7dc0: 28 64 6f 75 62 6c 65 29 28 56 41 4c 29 29 5c 0a (double)(VAL))\.
7dd0: 09 20 20 20 20 3a 20 28 28 28 64 6f 75 62 6c 65 . : (((double
7de0: 2a 29 28 4c 49 53 54 29 2e 61 70 74 72 29 5b 2d *)(LIST).aptr)[-
7df0: 31 5d 20 3d 20 28 64 6f 75 62 6c 65 29 28 56 41 1] = (double)(VA
7e00: 4c 29 29 29 2c 09 09 5c 0a 09 20 20 20 30 29 29 L))),..\.. 0))
7e10: 0a 0a 23 65 6e 64 69 66 0a 0a 23 69 66 20 64 65 ..#endif..#if de
7e20: 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f fined(__mipsn32_
7e30: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f _) || defined(__
7e40: 6d 69 70 73 36 34 5f 5f 29 0a 0a 2f 2a 20 55 70 mips64__)../* Up
7e50: 20 74 6f 20 38 20 6c 65 61 64 69 6e 67 20 66 6c to 8 leading fl
7e60: 6f 61 74 20 6f 72 20 64 6f 75 62 6c 65 20 6e 6f oat or double no
7e70: 6e 2d 76 61 72 61 72 67 73 20 61 72 67 73 20 63 n-varargs args c
7e80: 61 6e 20 62 65 20 70 61 73 73 65 64 20 69 6e 0a an be passed in.
7e90: 20 2a 20 66 6c 6f 61 74 20 72 65 67 69 73 74 65 * float registe
7ea0: 72 73 2c 20 62 75 74 20 77 65 20 61 6c 73 6f 20 rs, but we also
7eb0: 70 75 73 68 20 74 68 65 6d 20 69 6e 74 6f 20 74 push them into t
7ec0: 68 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 he corresponding
7ed0: 20 69 6e 74 0a 20 2a 20 72 65 67 69 73 74 65 72 int. * register
7ee0: 73 20 69 6e 20 63 61 73 65 20 6f 66 20 76 61 72 s in case of var
7ef0: 61 72 67 73 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e args.. */.#defin
7f00: 65 20 5f 5f 61 76 5f 66 6c 6f 61 74 28 4c 49 53 e __av_float(LIS
7f10: 54 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a 20 20 T,VAL)......\.
7f20: 28 28 4c 49 53 54 29 2e 61 70 74 72 20 3e 3d 20 ((LIST).aptr >=
7f30: 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29 09 __av_eptr(LIST).
7f40: 09 09 09 09 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 ....\. ? -1 :
7f50: 28 28 28 4c 49 53 54 29 2e 61 6e 75 6d 20 3c 20 (((LIST).anum <
7f60: 38 09 09 09 09 09 09 5c 0a 09 20 20 20 20 3f 20 8......\.. ?
7f70: 28 28 4c 49 53 54 29 2e 66 61 72 67 5f 6d 61 73 ((LIST).farg_mas
7f80: 6b 20 7c 3d 20 28 31 20 3c 3c 20 28 4c 49 53 54 k |= (1 << (LIST
7f90: 29 2e 61 6e 75 6d 29 2c 09 09 09 5c 0a 09 20 20 ).anum),...\..
7fa0: 20 20 20 20 20 28 4c 49 53 54 29 2e 66 61 72 67 (LIST).farg
7fb0: 5b 28 4c 49 53 54 29 2e 61 6e 75 6d 5d 20 3d 20 [(LIST).anum] =
7fc0: 2a 28 66 6c 6f 61 74 2a 29 28 4c 49 53 54 29 2e *(float*)(LIST).
7fd0: 61 70 74 72 20 3d 20 28 66 6c 6f 61 74 29 28 56 aptr = (float)(V
7fe0: 41 4c 29 29 20 5c 0a 09 20 20 20 20 3a 20 28 2a AL)) \.. : (*
7ff0: 28 66 6c 6f 61 74 2a 29 28 4c 49 53 54 29 2e 61 (float*)(LIST).a
8000: 70 74 72 20 3d 20 28 66 6c 6f 61 74 29 28 56 41 ptr = (float)(VA
8010: 4c 29 29 29 2c 09 09 09 5c 0a 09 20 20 20 28 4c L))),...\.. (L
8020: 49 53 54 29 2e 61 6e 75 6d 2b 2b 2c 09 09 09 09 IST).anum++,....
8030: 09 09 5c 0a 09 20 20 20 28 4c 49 53 54 29 2e 61 ..\.. (LIST).a
8040: 70 74 72 2b 2b 2c 09 09 09 09 09 09 5c 0a 09 20 ptr++,......\..
8050: 20 20 30 29 29 0a 0a 23 64 65 66 69 6e 65 20 61 0))..#define a
8060: 76 5f 64 6f 75 62 6c 65 28 4c 49 53 54 2c 56 41 v_double(LIST,VA
8070: 4c 29 09 09 09 09 09 09 5c 0a 20 20 28 28 4c 49 L)......\. ((LI
8080: 53 54 29 2e 61 70 74 72 20 3e 3d 20 5f 5f 61 76 ST).aptr >= __av
8090: 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09 09 09 _eptr(LIST).....
80a0: 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 28 28 28 4c \. ? -1 : (((L
80b0: 49 53 54 29 2e 61 6e 75 6d 20 3c 20 38 20 26 26 IST).anum < 8 &&
80c0: 20 28 28 4c 49 53 54 29 2e 64 61 72 67 5f 6d 61 ((LIST).darg_ma
80d0: 73 6b 20 7c 3d 20 28 31 20 3c 3c 20 28 4c 49 53 sk |= (1 << (LIS
80e0: 54 29 2e 61 6e 75 6d 29 29 29 2c 20 5c 0a 09 20 T).anum))), \..
80f0: 20 20 2a 28 64 6f 75 62 6c 65 2a 29 28 4c 49 53 *(double*)(LIS
8100: 54 29 2e 61 70 74 72 20 3d 20 28 64 6f 75 62 6c T).aptr = (doubl
8110: 65 29 28 56 41 4c 29 2c 09 09 09 5c 0a 09 20 20 e)(VAL),...\..
8120: 20 28 4c 49 53 54 29 2e 61 6e 75 6d 2b 2b 2c 09 (LIST).anum++,.
8130: 09 09 09 09 09 5c 0a 09 20 20 20 28 4c 49 53 54 .....\.. (LIST
8140: 29 2e 61 70 74 72 2b 2b 2c 09 09 09 09 09 09 5c ).aptr++,......\
8150: 0a 09 20 20 20 30 29 29 0a 0a 23 65 6e 64 69 66 .. 0))..#endif
8160: 0a 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f ..#if defined(__
8170: 73 70 61 72 63 36 34 5f 5f 29 0a 0a 2f 2a 20 55 sparc64__)../* U
8180: 70 20 74 6f 20 31 36 20 6c 65 61 64 69 6e 67 20 p to 16 leading
8190: 66 6c 6f 61 74 20 6f 72 20 64 6f 75 62 6c 65 20 float or double
81a0: 6e 6f 6e 2d 76 61 72 61 72 67 73 20 61 72 67 73 non-varargs args
81b0: 20 63 61 6e 20 62 65 20 70 61 73 73 65 64 20 69 can be passed i
81c0: 6e 0a 20 2a 20 66 6c 6f 61 74 20 72 65 67 69 73 n. * float regis
81d0: 74 65 72 73 2c 20 62 75 74 20 77 65 20 61 6c 73 ters, but we als
81e0: 6f 20 70 75 73 68 20 74 68 65 6d 20 69 6e 74 6f o push them into
81f0: 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 the correspondi
8200: 6e 67 20 69 6e 74 0a 20 2a 20 72 65 67 69 73 74 ng int. * regist
8210: 65 72 73 20 69 6e 20 63 61 73 65 20 6f 66 20 76 ers in case of v
8220: 61 72 61 72 67 73 2e 0a 20 2a 2f 0a 23 64 65 66 arargs.. */.#def
8230: 69 6e 65 20 5f 5f 61 76 5f 66 6c 6f 61 74 28 4c ine __av_float(L
8240: 49 53 54 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a IST,VAL)......\.
8250: 20 20 28 28 4c 49 53 54 29 2e 61 70 74 72 20 3e ((LIST).aptr >
8260: 3d 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 = __av_eptr(LIST
8270: 29 09 09 09 09 09 5c 0a 20 20 20 3f 20 2d 31 20 ).....\. ? -1
8280: 3a 20 28 28 28 4c 49 53 54 29 2e 61 6e 75 6d 20 : (((LIST).anum
8290: 3c 20 31 36 20 26 26 20 28 28 4c 49 53 54 29 2e < 16 && ((LIST).
82a0: 66 61 72 67 5f 6d 61 73 6b 20 7c 3d 20 28 31 20 farg_mask |= (1
82b0: 3c 3c 20 28 4c 49 53 54 29 2e 61 6e 75 6d 29 29 << (LIST).anum))
82c0: 29 2c 20 5c 0a 09 20 20 20 28 2a 28 66 6c 6f 61 ), \.. (*(floa
82d0: 74 2a 29 28 4c 49 53 54 29 2e 61 70 74 72 20 3d t*)(LIST).aptr =
82e0: 20 28 66 6c 6f 61 74 29 28 56 41 4c 29 29 2c 09 (float)(VAL)),.
82f0: 09 09 5c 0a 09 20 20 20 28 4c 49 53 54 29 2e 61 ..\.. (LIST).a
8300: 6e 75 6d 2b 2b 2c 09 09 09 09 09 09 5c 0a 09 20 num++,......\..
8310: 20 20 28 4c 49 53 54 29 2e 61 70 74 72 2b 2b 2c (LIST).aptr++,
8320: 09 09 09 09 09 09 5c 0a 09 20 20 20 30 29 29 0a ......\.. 0)).
8330: 0a 23 64 65 66 69 6e 65 20 61 76 5f 64 6f 75 62 .#define av_doub
8340: 6c 65 28 4c 49 53 54 2c 56 41 4c 29 09 09 09 09 le(LIST,VAL)....
8350: 09 09 5c 0a 20 20 28 28 4c 49 53 54 29 2e 61 70 ..\. ((LIST).ap
8360: 74 72 20 3e 3d 20 5f 5f 61 76 5f 65 70 74 72 28 tr >= __av_eptr(
8370: 4c 49 53 54 29 09 09 09 09 09 5c 0a 20 20 20 3f LIST).....\. ?
8380: 20 2d 31 20 3a 20 28 28 28 4c 49 53 54 29 2e 61 -1 : (((LIST).a
8390: 6e 75 6d 20 3c 20 31 36 20 26 26 20 28 28 4c 49 num < 16 && ((LI
83a0: 53 54 29 2e 64 61 72 67 5f 6d 61 73 6b 20 7c 3d ST).darg_mask |=
83b0: 20 28 31 20 3c 3c 20 28 4c 49 53 54 29 2e 61 6e (1 << (LIST).an
83c0: 75 6d 29 29 29 2c 20 5c 0a 09 20 20 20 2a 28 64 um))), \.. *(d
83d0: 6f 75 62 6c 65 2a 29 28 4c 49 53 54 29 2e 61 70 ouble*)(LIST).ap
83e0: 74 72 20 3d 20 28 64 6f 75 62 6c 65 29 28 56 41 tr = (double)(VA
83f0: 4c 29 2c 09 09 09 5c 0a 09 20 20 20 28 4c 49 53 L),...\.. (LIS
8400: 54 29 2e 61 6e 75 6d 2b 2b 2c 09 09 09 09 09 09 T).anum++,......
8410: 5c 0a 09 20 20 20 28 4c 49 53 54 29 2e 61 70 74 \.. (LIST).apt
8420: 72 2b 2b 2c 09 09 09 09 09 09 5c 0a 09 20 20 20 r++,......\..
8430: 30 29 29 0a 0a 23 65 6e 64 69 66 0a 0a 23 69 66 0))..#endif..#if
8440: 20 64 65 66 69 6e 65 64 28 5f 5f 61 6c 70 68 61 defined(__alpha
8450: 5f 5f 29 0a 0a 23 64 65 66 69 6e 65 20 61 76 5f __)..#define av_
8460: 64 6f 75 62 6c 65 28 4c 49 53 54 2c 56 41 4c 29 double(LIST,VAL)
8470: 09 09 09 09 09 09 5c 0a 20 20 28 2b 2b 28 4c 49 ......\. (++(LI
8480: 53 54 29 2e 61 70 74 72 20 3e 20 5f 5f 61 76 5f ST).aptr > __av_
8490: 65 70 74 72 28 4c 49 53 54 29 09 09 09 09 09 5c eptr(LIST).....\
84a0: 0a 20 20 20 3f 20 2d 31 20 3a 20 28 28 28 64 6f . ? -1 : (((do
84b0: 75 62 6c 65 2a 29 28 4c 49 53 54 29 2e 61 70 74 uble*)(LIST).apt
84c0: 72 29 5b 2d 31 5d 20 3d 20 28 64 6f 75 62 6c 65 r)[-1] = (double
84d0: 29 28 56 41 4c 29 2c 20 30 29 29 0a 0a 23 64 65 )(VAL), 0))..#de
84e0: 66 69 6e 65 20 5f 5f 61 76 5f 66 6c 6f 61 74 28 fine __av_float(
84f0: 4c 49 53 54 2c 56 41 4c 29 09 09 09 09 09 09 5c LIST,VAL)......\
8500: 0a 20 20 28 2b 2b 28 4c 49 53 54 29 2e 61 70 74 . (++(LIST).apt
8510: 72 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 r > __av_eptr(LI
8520: 53 54 29 09 09 09 09 09 5c 0a 20 20 20 3f 20 2d ST).....\. ? -
8530: 31 09 09 09 09 09 09 09 09 09 5c 0a 20 20 20 3a 1.........\. :
8540: 20 28 28 28 4c 49 53 54 29 2e 61 70 74 72 20 3e (((LIST).aptr >
8550: 20 26 28 4c 49 53 54 29 2e 61 72 67 73 5b 36 5d &(LIST).args[6]
8560: 09 09 09 09 09 5c 0a 20 20 20 20 20 20 20 3f 20 .....\. ?
8570: 2f 2a 20 54 68 65 73 65 20 61 72 67 73 20 77 69 /* These args wi
8580: 6c 6c 20 62 65 20 66 65 74 63 68 65 64 20 66 72 ll be fetched fr
8590: 6f 6d 20 6d 65 6d 6f 72 79 20 75 73 69 6e 67 20 om memory using
85a0: 22 6c 64 73 22 20 69 6e 73 74 72 75 63 74 69 6f "lds" instructio
85b0: 6e 73 20 2a 2f 20 5c 0a 09 20 2f 2a 20 74 68 65 ns */ \.. /* the
85c0: 72 65 66 6f 72 65 20 73 74 6f 72 65 20 74 68 65 refore store the
85d0: 6d 20 61 73 20 66 6c 6f 61 74 73 20 2a 2f 09 09 m as floats */..
85e0: 09 09 5c 0a 09 20 28 2a 28 66 6c 6f 61 74 2a 29 ..\.. (*(float*)
85f0: 28 28 4c 49 53 54 29 2e 61 70 74 72 2d 31 29 20 ((LIST).aptr-1)
8600: 3d 20 28 66 6c 6f 61 74 29 28 56 41 4c 29 29 09 = (float)(VAL)).
8610: 09 09 5c 0a 20 20 20 20 20 20 20 3a 20 2f 2a 20 ..\. : /*
8620: 54 68 65 20 66 69 72 73 74 20 36 20 61 72 67 73 The first 6 args
8630: 20 77 69 6c 6c 20 62 65 20 70 75 74 20 69 6e 74 will be put int
8640: 6f 20 72 65 67 69 73 74 65 72 73 20 62 79 20 22 o registers by "
8650: 6c 64 74 22 20 69 6e 73 74 72 75 63 74 69 6f 6e ldt" instruction
8660: 73 20 2a 2f 20 5c 0a 09 20 2f 2a 20 28 73 65 65 s */ \.. /* (see
8670: 20 61 76 63 61 6c 6c 2d 61 6c 70 68 61 2e 63 21 avcall-alpha.c!
8680: 29 2e 20 54 68 65 72 65 66 6f 72 65 20 73 74 6f ). Therefore sto
8690: 72 65 20 74 68 65 6d 20 61 73 20 64 6f 75 62 6c re them as doubl
86a0: 65 73 2e 20 2a 2f 09 5c 0a 09 20 2f 2a 20 57 68 es. */.\.. /* Wh
86b0: 65 6e 20 76 69 65 77 65 64 20 61 73 20 66 6c 6f en viewed as flo
86c0: 61 74 73 2c 20 74 68 65 20 76 61 6c 75 65 20 77 ats, the value w
86d0: 69 6c 6c 20 62 65 20 74 68 65 20 63 6f 72 72 65 ill be the corre
86e0: 63 74 20 6f 6e 65 2e 20 2a 2f 5c 0a 09 20 28 2a ct one. */\.. (*
86f0: 28 64 6f 75 62 6c 65 2a 29 28 28 4c 49 53 54 29 (double*)((LIST)
8700: 2e 61 70 74 72 2d 31 29 20 3d 20 28 64 6f 75 62 .aptr-1) = (doub
8710: 6c 65 29 28 66 6c 6f 61 74 29 28 56 41 4c 29 29 le)(float)(VAL))
8720: 09 09 5c 0a 20 20 20 20 20 29 2c 20 30 29 29 0a ..\. ), 0)).
8730: 0a 23 65 6e 64 69 66 0a 0a 23 69 66 20 64 65 66 .#endif..#if def
8740: 69 6e 65 64 28 5f 5f 68 70 70 61 5f 5f 29 0a 0a ined(__hppa__)..
8750: 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 66 6c 6f #define __av_flo
8760: 61 74 28 4c 49 53 54 2c 56 41 4c 29 09 09 09 09 at(LIST,VAL)....
8770: 09 09 5c 0a 20 20 28 2d 2d 28 4c 49 53 54 29 2e ..\. (--(LIST).
8780: 61 70 74 72 20 3c 20 5f 5f 61 76 5f 65 70 74 72 aptr < __av_eptr
8790: 28 4c 49 53 54 29 09 09 09 09 09 5c 0a 20 20 20 (LIST).....\.
87a0: 3f 20 2d 31 20 3a 20 28 2a 28 66 6c 6f 61 74 2a ? -1 : (*(float*
87b0: 29 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 28 )(LIST).aptr = (
87c0: 66 6c 6f 61 74 29 28 56 41 4c 29 2c 20 30 29 29 float)(VAL), 0))
87d0: 0a 0a 23 64 65 66 69 6e 65 20 61 76 5f 64 6f 75 ..#define av_dou
87e0: 62 6c 65 28 4c 49 53 54 2c 56 41 4c 29 09 09 09 ble(LIST,VAL)...
87f0: 09 09 09 5c 0a 20 20 28 28 28 4c 49 53 54 29 2e ...\. (((LIST).
8800: 61 70 74 72 20 3d 20 28 5f 5f 61 76 77 6f 72 64 aptr = (__avword
8810: 2a 29 28 28 28 6c 6f 6e 67 29 28 4c 49 53 54 29 *)(((long)(LIST)
8820: 2e 61 70 74 72 2d 73 69 7a 65 6f 66 28 64 6f 75 .aptr-sizeof(dou
8830: 62 6c 65 29 29 20 26 20 2d 28 6c 6f 6e 67 29 73 ble)) & -(long)s
8840: 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29 29 29 20 izeof(double)))
8850: 5c 0a 20 20 20 20 3c 20 5f 5f 61 76 5f 65 70 74 \. < __av_ept
8860: 72 28 4c 49 53 54 29 09 09 09 09 09 09 09 5c 0a r(LIST).......\.
8870: 20 20 20 20 3f 20 2d 31 20 3a 20 28 2a 28 64 6f ? -1 : (*(do
8880: 75 62 6c 65 2a 29 28 4c 49 53 54 29 2e 61 70 74 uble*)(LIST).apt
8890: 72 20 3d 20 28 64 6f 75 62 6c 65 29 28 56 41 4c r = (double)(VAL
88a0: 29 2c 20 30 29 29 0a 0a 23 65 6e 64 69 66 0a 0a ), 0))..#endif..
88b0: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 72 73 #if defined(__rs
88c0: 36 30 30 30 5f 5f 29 20 26 26 20 28 64 65 66 69 6000__) && (defi
88d0: 6e 65 64 28 5f 41 49 58 29 20 7c 7c 20 28 64 65 ned(_AIX) || (de
88e0: 66 69 6e 65 64 28 5f 5f 4d 41 43 48 5f 5f 29 20 fined(__MACH__)
88f0: 26 26 20 64 65 66 69 6e 65 64 28 5f 5f 41 50 50 && defined(__APP
8900: 4c 45 5f 5f 29 29 29 0a 0a 2f 2a 20 55 70 20 74 LE__)))../* Up t
8910: 6f 20 31 33 20 66 6c 6f 61 74 20 6f 72 20 64 6f o 13 float or do
8920: 75 62 6c 65 20 6e 6f 6e 2d 76 61 72 61 72 67 73 uble non-varargs
8930: 20 61 72 67 73 20 63 61 6e 20 62 65 20 70 61 73 args can be pas
8940: 73 65 64 20 69 6e 0a 20 2a 20 66 6c 6f 61 74 20 sed in. * float
8950: 72 65 67 69 73 74 65 72 73 2c 20 62 75 74 20 77 registers, but w
8960: 65 20 61 6c 73 6f 20 70 75 73 68 20 74 68 65 6d e also push them
8970: 20 69 6e 74 6f 20 74 68 65 20 63 6f 72 72 65 73 into the corres
8980: 70 6f 6e 64 69 6e 67 20 69 6e 74 0a 20 2a 20 72 ponding int. * r
8990: 65 67 69 73 74 65 72 73 20 69 6e 20 63 61 73 65 egisters in case
89a0: 20 6f 66 20 76 61 72 61 72 67 73 2e 0a 20 2a 2f of varargs.. */
89b0: 0a 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 66 ..#define __av_f
89c0: 6c 6f 61 74 28 4c 49 53 54 2c 56 41 4c 29 09 09 loat(LIST,VAL)..
89d0: 09 09 09 09 5c 0a 20 20 28 2b 2b 28 4c 49 53 54 ....\. (++(LIST
89e0: 29 2e 61 70 74 72 20 3e 20 5f 5f 61 76 5f 65 70 ).aptr > __av_ep
89f0: 74 72 28 4c 49 53 54 29 09 09 09 09 09 5c 0a 20 tr(LIST).....\.
8a00: 20 20 3f 20 2d 31 20 3a 20 28 28 28 66 6c 6f 61 ? -1 : (((floa
8a10: 74 2a 29 28 4c 49 53 54 29 2e 61 70 74 72 29 5b t*)(LIST).aptr)[
8a20: 2d 31 5d 20 3d 20 28 66 6c 6f 61 74 29 28 56 41 -1] = (float)(VA
8a30: 4c 29 2c 09 09 09 5c 0a 09 20 20 20 28 4c 49 53 L),...\.. (LIS
8a40: 54 29 2e 66 61 70 74 72 20 3c 20 26 28 4c 49 53 T).faptr < &(LIS
8a50: 54 29 2e 66 61 72 67 73 5b 31 33 5d 20 26 26 09 T).fargs[13] &&.
8a60: 09 09 09 5c 0a 09 09 28 2a 28 4c 49 53 54 29 2e ...\...(*(LIST).
8a70: 66 61 70 74 72 2b 2b 20 3d 20 28 64 6f 75 62 6c faptr++ = (doubl
8a80: 65 29 28 66 6c 6f 61 74 29 28 56 41 4c 29 29 2c e)(float)(VAL)),
8a90: 09 09 5c 0a 09 20 20 20 30 29 29 0a 0a 23 64 65 ..\.. 0))..#de
8aa0: 66 69 6e 65 20 61 76 5f 64 6f 75 62 6c 65 28 4c fine av_double(L
8ab0: 49 53 54 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a IST,VAL)......\.
8ac0: 20 20 20 28 28 28 4c 49 53 54 29 2e 61 70 74 72 (((LIST).aptr
8ad0: 20 2b 3d 20 32 29 20 3e 20 5f 5f 61 76 5f 65 70 += 2) > __av_ep
8ae0: 74 72 28 4c 49 53 54 29 09 09 09 09 5c 0a 20 20 tr(LIST)....\.
8af0: 20 20 3f 20 2d 31 20 3a 09 09 09 09 09 09 09 09 ? -1 :........
8b00: 5c 0a 20 20 20 20 28 28 4c 49 53 54 29 2e 74 6d \. ((LIST).tm
8b10: 70 2e 5f 64 6f 75 62 6c 65 20 3d 20 28 64 6f 75 p._double = (dou
8b20: 62 6c 65 29 28 56 41 4c 29 2c 09 09 09 09 5c 0a ble)(VAL),....\.
8b30: 20 20 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72 (LIST).aptr
8b40: 5b 2d 32 5d 20 3d 20 28 4c 49 53 54 29 2e 74 6d [-2] = (LIST).tm
8b50: 70 2e 77 6f 72 64 73 5b 30 5d 2c 09 09 09 09 5c p.words[0],....\
8b60: 0a 20 20 20 20 20 28 4c 49 53 54 29 2e 61 70 74 . (LIST).apt
8b70: 72 5b 2d 31 5d 20 3d 20 28 4c 49 53 54 29 2e 74 r[-1] = (LIST).t
8b80: 6d 70 2e 77 6f 72 64 73 5b 31 5d 2c 09 09 09 09 mp.words[1],....
8b90: 5c 0a 20 20 20 20 20 28 4c 49 53 54 29 2e 66 61 \. (LIST).fa
8ba0: 70 74 72 20 3c 20 26 28 4c 49 53 54 29 2e 66 61 ptr < &(LIST).fa
8bb0: 72 67 73 5b 31 33 5d 20 26 26 09 09 09 09 5c 0a rgs[13] &&....\.
8bc0: 09 28 2a 28 4c 49 53 54 29 2e 66 61 70 74 72 2b .(*(LIST).faptr+
8bd0: 2b 20 3d 20 28 4c 49 53 54 29 2e 74 6d 70 2e 5f + = (LIST).tmp._
8be0: 64 6f 75 62 6c 65 29 2c 09 09 09 09 5c 0a 20 20 double),....\.
8bf0: 20 20 20 30 29 29 0a 0a 23 65 6e 64 69 66 0a 0a 0))..#endif..
8c00: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 72 73 #if defined(__rs
8c10: 36 30 30 30 5f 5f 29 20 26 26 20 21 28 64 65 66 6000__) && !(def
8c20: 69 6e 65 64 28 5f 41 49 58 29 20 7c 7c 20 28 64 ined(_AIX) || (d
8c30: 65 66 69 6e 65 64 28 5f 5f 4d 41 43 48 5f 5f 29 efined(__MACH__)
8c40: 20 26 26 20 64 65 66 69 6e 65 64 28 5f 5f 41 50 && defined(__AP
8c50: 50 4c 45 5f 5f 29 29 29 0a 0a 2f 2a 20 55 70 20 PLE__)))../* Up
8c60: 74 6f 20 38 20 66 6c 6f 61 74 20 6f 72 20 64 6f to 8 float or do
8c70: 75 62 6c 65 20 6e 6f 6e 2d 76 61 72 61 72 67 73 uble non-varargs
8c80: 20 61 72 67 73 20 63 61 6e 20 62 65 20 70 61 73 args can be pas
8c90: 73 65 64 20 69 6e 0a 20 2a 20 66 6c 6f 61 74 20 sed in. * float
8ca0: 72 65 67 69 73 74 65 72 73 2c 20 77 69 74 68 6f registers, witho
8cb0: 75 74 20 6f 63 63 75 70 79 69 6e 67 20 73 70 61 ut occupying spa
8cc0: 63 65 20 69 6e 20 74 68 65 20 67 65 6e 65 72 61 ce in the genera
8cd0: 6c 20 72 65 67 69 73 74 65 72 73 2e 0a 20 2a 2f l registers.. */
8ce0: 0a 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 66 ..#define __av_f
8cf0: 6c 6f 61 74 28 4c 49 53 54 2c 56 41 4c 29 09 09 loat(LIST,VAL)..
8d00: 09 09 09 09 5c 0a 20 20 28 28 4c 49 53 54 29 2e ....\. ((LIST).
8d10: 66 61 70 74 72 20 3c 20 26 28 4c 49 53 54 29 2e faptr < &(LIST).
8d20: 66 61 72 67 73 5b 38 5d 09 09 09 09 09 5c 0a 20 fargs[8].....\.
8d30: 20 20 3f 20 28 28 2a 28 4c 49 53 54 29 2e 66 61 ? ((*(LIST).fa
8d40: 70 74 72 2b 2b 20 3d 20 28 64 6f 75 62 6c 65 29 ptr++ = (double)
8d50: 28 66 6c 6f 61 74 29 28 56 41 4c 29 29 2c 20 30 (float)(VAL)), 0
8d60: 29 09 09 09 5c 0a 20 20 20 3a 20 28 2b 2b 28 4c )...\. : (++(L
8d70: 49 53 54 29 2e 61 70 74 72 20 3e 20 5f 5f 61 76 IST).aptr > __av
8d80: 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09 09 09 _eptr(LIST).....
8d90: 5c 0a 20 20 20 20 20 20 3f 20 2d 31 20 3a 20 28 \. ? -1 : (
8da0: 28 28 66 6c 6f 61 74 2a 29 28 4c 49 53 54 29 2e ((float*)(LIST).
8db0: 61 70 74 72 29 5b 2d 31 5d 20 3d 20 28 66 6c 6f aptr)[-1] = (flo
8dc0: 61 74 29 28 56 41 4c 29 2c 20 30 29 29 29 0a 0a at)(VAL), 0)))..
8dd0: 23 64 65 66 69 6e 65 20 61 76 5f 64 6f 75 62 6c #define av_doubl
8de0: 65 28 4c 49 53 54 2c 56 41 4c 29 09 09 09 09 09 e(LIST,VAL).....
8df0: 09 5c 0a 20 20 28 28 4c 49 53 54 29 2e 66 61 70 .\. ((LIST).fap
8e00: 74 72 20 3c 20 26 28 4c 49 53 54 29 2e 66 61 72 tr < &(LIST).far
8e10: 67 73 5b 38 5d 09 09 09 09 09 5c 0a 20 20 20 3f gs[8].....\. ?
8e20: 20 28 28 2a 28 4c 49 53 54 29 2e 66 61 70 74 72 ((*(LIST).faptr
8e30: 2b 2b 20 3d 20 28 64 6f 75 62 6c 65 29 28 56 41 ++ = (double)(VA
8e40: 4c 29 29 2c 20 30 29 09 09 09 09 5c 0a 20 20 20 L)), 0)....\.
8e50: 3a 20 28 28 28 4c 49 53 54 29 2e 61 70 74 72 20 : (((LIST).aptr
8e60: 2b 3d 20 32 29 20 3e 20 5f 5f 61 76 5f 65 70 74 += 2) > __av_ept
8e70: 72 28 4c 49 53 54 29 09 09 09 09 5c 0a 20 20 20 r(LIST)....\.
8e80: 20 20 20 3f 20 2d 31 20 3a 09 09 09 09 09 09 09 ? -1 :.......
8e90: 09 5c 0a 20 20 20 20 20 20 28 28 4c 49 53 54 29 .\. ((LIST)
8ea0: 2e 74 6d 70 2e 5f 64 6f 75 62 6c 65 20 3d 20 28 .tmp._double = (
8eb0: 64 6f 75 62 6c 65 29 28 56 41 4c 29 2c 09 09 09 double)(VAL),...
8ec0: 09 5c 0a 20 20 20 20 20 20 20 28 4c 49 53 54 29 .\. (LIST)
8ed0: 2e 61 70 74 72 5b 2d 32 5d 20 3d 20 28 4c 49 53 .aptr[-2] = (LIS
8ee0: 54 29 2e 74 6d 70 2e 77 6f 72 64 73 5b 30 5d 2c T).tmp.words[0],
8ef0: 09 09 09 09 5c 0a 20 20 20 20 20 20 20 28 4c 49 ....\. (LI
8f00: 53 54 29 2e 61 70 74 72 5b 2d 31 5d 20 3d 20 28 ST).aptr[-1] = (
8f10: 4c 49 53 54 29 2e 74 6d 70 2e 77 6f 72 64 73 5b LIST).tmp.words[
8f20: 31 5d 2c 09 09 09 09 5c 0a 20 20 20 20 20 20 20 1],....\.
8f30: 30 29 29 29 0a 0a 23 65 6e 64 69 66 0a 0a 23 69 0)))..#endif..#i
8f40: 66 20 64 65 66 69 6e 65 64 28 5f 5f 73 33 39 30 f defined(__s390
8f50: 5f 5f 29 0a 0a 2f 2a 20 55 70 20 74 6f 20 32 20 __)../* Up to 2
8f60: 66 6c 6f 61 74 20 6f 72 20 64 6f 75 62 6c 65 20 float or double
8f70: 6e 6f 6e 2d 76 61 72 61 72 67 73 20 61 72 67 73 non-varargs args
8f80: 20 63 61 6e 20 62 65 20 70 61 73 73 65 64 20 69 can be passed i
8f90: 6e 0a 20 2a 20 66 6c 6f 61 74 20 72 65 67 69 73 n. * float regis
8fa0: 74 65 72 73 2c 20 77 69 74 68 6f 75 74 20 6f 63 ters, without oc
8fb0: 63 75 70 79 69 6e 67 20 73 70 61 63 65 20 69 6e cupying space in
8fc0: 20 74 68 65 20 67 65 6e 65 72 61 6c 20 72 65 67 the general reg
8fd0: 69 73 74 65 72 73 2e 0a 20 2a 2f 0a 0a 23 64 65 isters.. */..#de
8fe0: 66 69 6e 65 20 5f 5f 61 76 5f 66 6c 6f 61 74 28 fine __av_float(
8ff0: 4c 49 53 54 2c 56 41 4c 29 09 09 09 09 09 09 5c LIST,VAL)......\
9000: 0a 20 20 28 28 4c 49 53 54 29 2e 66 61 70 74 72 . ((LIST).faptr
9010: 20 3c 20 26 28 4c 49 53 54 29 2e 66 61 72 67 73 < &(LIST).fargs
9020: 5b 32 5d 09 09 09 09 09 5c 0a 20 20 20 3f 20 28 [2].....\. ? (
9030: 4c 49 53 54 29 2e 64 61 70 74 72 2b 2b 2c 20 2a LIST).daptr++, *
9040: 28 4c 49 53 54 29 2e 66 61 72 67 73 75 73 65 64 (LIST).fargsused
9050: 70 74 72 2b 2b 20 3d 20 31 2c 20 2a 28 4c 49 53 ptr++ = 1, *(LIS
9060: 54 29 2e 64 61 72 67 73 75 73 65 64 70 74 72 2b T).dargsusedptr+
9070: 2b 20 3d 20 30 2c 20 28 28 2a 28 4c 49 53 54 29 + = 0, ((*(LIST)
9080: 2e 66 61 70 74 72 2b 2b 20 3d 20 28 66 6c 6f 61 .faptr++ = (floa
9090: 74 29 28 56 41 4c 29 29 2c 20 30 29 09 09 5c 0a t)(VAL)), 0)..\.
90a0: 20 20 20 3a 20 28 2b 2b 28 4c 49 53 54 29 2e 61 : (++(LIST).a
90b0: 70 74 72 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 ptr > __av_eptr(
90c0: 4c 49 53 54 29 09 09 09 09 09 5c 0a 20 20 20 20 LIST).....\.
90d0: 20 20 3f 20 2d 31 20 3a 20 28 28 4c 49 53 54 29 ? -1 : ((LIST)
90e0: 2e 66 61 72 67 77 6f 72 64 73 2b 2b 2c 20 28 28 .fargwords++, ((
90f0: 66 6c 6f 61 74 2a 29 28 4c 49 53 54 29 2e 61 70 float*)(LIST).ap
9100: 74 72 29 5b 2d 31 5d 20 3d 20 28 66 6c 6f 61 74 tr)[-1] = (float
9110: 29 28 56 41 4c 29 2c 20 30 29 29 29 0a 0a 23 64 )(VAL), 0)))..#d
9120: 65 66 69 6e 65 20 61 76 5f 64 6f 75 62 6c 65 28 efine av_double(
9130: 4c 49 53 54 2c 56 41 4c 29 09 09 09 09 09 09 5c LIST,VAL)......\
9140: 0a 20 20 28 28 4c 49 53 54 29 2e 64 61 70 74 72 . ((LIST).daptr
9150: 20 3c 20 26 28 4c 49 53 54 29 2e 64 61 72 67 73 < &(LIST).dargs
9160: 5b 32 5d 09 09 09 09 09 5c 0a 20 20 20 3f 20 28 [2].....\. ? (
9170: 4c 49 53 54 29 2e 66 61 70 74 72 2b 2b 2c 20 2a LIST).faptr++, *
9180: 28 4c 49 53 54 29 2e 64 61 72 67 73 75 73 65 64 (LIST).dargsused
9190: 70 74 72 2b 2b 20 3d 20 31 2c 20 2a 28 4c 49 53 ptr++ = 1, *(LIS
91a0: 54 29 2e 66 61 72 67 73 75 73 65 64 70 74 72 2b T).fargsusedptr+
91b0: 2b 20 3d 20 30 2c 20 28 28 2a 28 4c 49 53 54 29 + = 0, ((*(LIST)
91c0: 2e 64 61 70 74 72 2b 2b 20 3d 20 28 64 6f 75 62 .daptr++ = (doub
91d0: 6c 65 29 28 56 41 4c 29 29 2c 20 30 29 09 09 5c le)(VAL)), 0)..\
91e0: 0a 20 20 20 3a 20 28 28 28 4c 49 53 54 29 2e 61 . : (((LIST).a
91f0: 70 74 72 20 2b 3d 20 32 29 20 3e 20 5f 5f 61 76 ptr += 2) > __av
9200: 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09 09 5c _eptr(LIST)....\
9210: 0a 20 20 20 20 20 20 3f 20 2d 31 20 3a 09 09 09 . ? -1 :...
9220: 09 09 09 09 09 5c 0a 20 20 20 20 20 20 28 28 4c .....\. ((L
9230: 49 53 54 29 2e 66 61 72 67 77 6f 72 64 73 2b 3d IST).fargwords+=
9240: 32 2c 20 28 4c 49 53 54 29 2e 74 6d 70 2e 5f 64 2, (LIST).tmp._d
9250: 6f 75 62 6c 65 20 3d 20 28 64 6f 75 62 6c 65 29 ouble = (double)
9260: 28 56 41 4c 29 2c 09 09 09 5c 0a 20 20 20 20 20 (VAL),...\.
9270: 20 20 28 4c 49 53 54 29 2e 61 70 74 72 5b 2d 32 (LIST).aptr[-2
9280: 5d 20 3d 20 28 4c 49 53 54 29 2e 74 6d 70 2e 77 ] = (LIST).tmp.w
9290: 6f 72 64 73 5b 30 5d 2c 09 09 09 09 5c 0a 20 20 ords[0],....\.
92a0: 20 20 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72 (LIST).aptr
92b0: 5b 2d 31 5d 20 3d 20 28 4c 49 53 54 29 2e 74 6d [-1] = (LIST).tm
92c0: 70 2e 77 6f 72 64 73 5b 31 5d 2c 09 09 09 09 5c p.words[1],....\
92d0: 0a 20 20 20 20 20 20 20 30 29 29 29 0a 0a 23 65 . 0)))..#e
92e0: 6e 64 69 66 0a 0a 23 69 66 20 64 65 66 69 6e 65 ndif..#if define
92f0: 64 28 5f 5f 6d 38 38 6b 5f 5f 29 0a 0a 23 64 65 d(__m88k__)..#de
9300: 66 69 6e 65 20 5f 5f 61 76 5f 66 6c 6f 61 74 28 fine __av_float(
9310: 4c 49 53 54 2c 56 41 4c 29 09 09 09 09 09 09 5c LIST,VAL)......\
9320: 0a 20 20 28 2b 2b 28 4c 49 53 54 29 2e 61 70 74 . (++(LIST).apt
9330: 72 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 r > __av_eptr(LI
9340: 53 54 29 09 09 09 09 09 5c 0a 20 20 20 3f 20 2d ST).....\. ? -
9350: 31 20 3a 20 28 28 28 66 6c 6f 61 74 2a 29 28 4c 1 : (((float*)(L
9360: 49 53 54 29 2e 61 70 74 72 29 5b 2d 31 5d 20 3d IST).aptr)[-1] =
9370: 20 28 66 6c 6f 61 74 29 28 56 41 4c 29 2c 20 30 (float)(VAL), 0
9380: 29 29 0a 0a 23 64 65 66 69 6e 65 20 61 76 5f 64 ))..#define av_d
9390: 6f 75 62 6c 65 28 4c 49 53 54 2c 56 41 4c 29 09 ouble(LIST,VAL).
93a0: 09 09 09 09 09 5c 0a 20 20 20 28 28 28 4c 49 53 .....\. (((LIS
93b0: 54 29 2e 61 70 74 72 20 3d 20 28 5f 5f 61 76 77 T).aptr = (__avw
93c0: 6f 72 64 2a 29 28 28 28 6c 6f 6e 67 29 28 4c 49 ord*)(((long)(LI
93d0: 53 54 29 2e 61 70 74 72 2b 73 69 7a 65 6f 66 28 ST).aptr+sizeof(
93e0: 64 6f 75 62 6c 65 29 2b 73 69 7a 65 6f 66 28 64 double)+sizeof(d
93f0: 6f 75 62 6c 65 29 2d 31 29 20 26 20 2d 28 6c 6f ouble)-1) & -(lo
9400: 6e 67 29 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 ng)sizeof(double
9410: 29 29 29 20 5c 0a 20 20 20 20 3e 20 5f 5f 61 76 ))) \. > __av
9420: 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09 09 09 _eptr(LIST).....
9430: 09 09 5c 0a 20 20 20 20 3f 20 2d 31 20 3a 20 28 ..\. ? -1 : (
9440: 28 28 64 6f 75 62 6c 65 2a 29 28 4c 49 53 54 29 ((double*)(LIST)
9450: 2e 61 70 74 72 29 5b 2d 31 5d 20 3d 20 28 64 6f .aptr)[-1] = (do
9460: 75 62 6c 65 29 28 56 41 4c 29 2c 20 30 29 29 0a uble)(VAL), 0)).
9470: 0a 23 65 6e 64 69 66 0a 0a 23 69 66 20 64 65 66 .#endif..#if def
9480: 69 6e 65 64 28 5f 5f 69 61 36 34 5f 5f 29 0a 0a ined(__ia64__)..
9490: 2f 2a 20 55 70 20 74 6f 20 38 20 6c 65 61 64 69 /* Up to 8 leadi
94a0: 6e 67 20 66 6c 6f 61 74 20 6f 72 20 64 6f 75 62 ng float or doub
94b0: 6c 65 20 6e 6f 6e 2d 76 61 72 61 72 67 73 20 61 le non-varargs a
94c0: 72 67 73 20 63 61 6e 20 62 65 20 70 61 73 73 65 rgs can be passe
94d0: 64 20 69 6e 0a 20 2a 20 66 6c 6f 61 74 20 72 65 d in. * float re
94e0: 67 69 73 74 65 72 73 2c 20 62 75 74 20 77 65 20 gisters, but we
94f0: 61 6c 73 6f 20 70 75 73 68 20 74 68 65 6d 20 69 also push them i
9500: 6e 74 6f 20 74 68 65 20 63 6f 72 72 65 73 70 6f nto the correspo
9510: 6e 64 69 6e 67 20 69 6e 74 0a 20 2a 20 72 65 67 nding int. * reg
9520: 69 73 74 65 72 73 20 69 6e 20 63 61 73 65 20 6f isters in case o
9530: 66 20 76 61 72 61 72 67 73 2e 0a 20 2a 2f 0a 23 f varargs.. */.#
9540: 64 65 66 69 6e 65 20 5f 5f 61 76 5f 66 6c 6f 61 define __av_floa
9550: 74 28 4c 49 53 54 2c 56 41 4c 29 09 09 09 09 09 t(LIST,VAL).....
9560: 09 5c 0a 20 20 28 28 4c 49 53 54 29 2e 61 70 74 .\. ((LIST).apt
9570: 72 20 3e 3d 20 5f 5f 61 76 5f 65 70 74 72 28 4c r >= __av_eptr(L
9580: 49 53 54 29 09 09 09 09 09 5c 0a 20 20 20 3f 20 IST).....\. ?
9590: 2d 31 20 3a 20 28 28 2a 28 66 6c 6f 61 74 2a 29 -1 : ((*(float*)
95a0: 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 28 66 (LIST).aptr = (f
95b0: 6c 6f 61 74 29 28 56 41 4c 29 29 2c 09 09 09 5c loat)(VAL)),...\
95c0: 0a 09 20 20 20 28 28 4c 49 53 54 29 2e 66 61 70 .. ((LIST).fap
95d0: 74 72 20 3c 20 26 28 4c 49 53 54 29 2e 66 61 72 tr < &(LIST).far
95e0: 67 73 5b 38 5d 20 26 26 20 28 2a 28 4c 49 53 54 gs[8] && (*(LIST
95f0: 29 2e 66 61 70 74 72 20 3d 20 2a 28 66 6c 6f 61 ).faptr = *(floa
9600: 74 2a 29 28 4c 49 53 54 29 2e 61 70 74 72 2c 20 t*)(LIST).aptr,
9610: 28 4c 49 53 54 29 2e 66 61 70 74 72 2b 2b 29 29 (LIST).faptr++))
9620: 2c 20 5c 0a 09 20 20 20 28 4c 49 53 54 29 2e 61 , \.. (LIST).a
9630: 70 74 72 2b 2b 2c 09 09 09 09 09 09 5c 0a 09 20 ptr++,......\..
9640: 20 20 30 29 29 0a 0a 23 64 65 66 69 6e 65 20 61 0))..#define a
9650: 76 5f 64 6f 75 62 6c 65 28 4c 49 53 54 2c 56 41 v_double(LIST,VA
9660: 4c 29 09 09 09 09 09 09 5c 0a 20 20 28 28 4c 49 L)......\. ((LI
9670: 53 54 29 2e 61 70 74 72 20 3e 3d 20 5f 5f 61 76 ST).aptr >= __av
9680: 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09 09 09 _eptr(LIST).....
9690: 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 28 2a 28 64 \. ? -1 : (*(d
96a0: 6f 75 62 6c 65 2a 29 28 4c 49 53 54 29 2e 61 70 ouble*)(LIST).ap
96b0: 74 72 20 3d 20 28 64 6f 75 62 6c 65 29 28 56 41 tr = (double)(VA
96c0: 4c 29 2c 09 09 09 5c 0a 09 20 20 20 28 28 4c 49 L),...\.. ((LI
96d0: 53 54 29 2e 66 61 70 74 72 20 3c 20 26 28 4c 49 ST).faptr < &(LI
96e0: 53 54 29 2e 66 61 72 67 73 5b 38 5d 20 26 26 20 ST).fargs[8] &&
96f0: 28 2a 28 4c 49 53 54 29 2e 66 61 70 74 72 20 3d (*(LIST).faptr =
9700: 20 2a 28 64 6f 75 62 6c 65 2a 29 28 4c 49 53 54 *(double*)(LIST
9710: 29 2e 61 70 74 72 2c 20 28 4c 49 53 54 29 2e 66 ).aptr, (LIST).f
9720: 61 70 74 72 2b 2b 29 29 2c 20 5c 0a 09 20 20 20 aptr++)), \..
9730: 28 4c 49 53 54 29 2e 61 70 74 72 2b 2b 2c 09 09 (LIST).aptr++,..
9740: 09 09 09 09 5c 0a 09 20 20 20 30 29 29 0a 0a 23 ....\.. 0))..#
9750: 65 6e 64 69 66 0a 0a 23 69 66 20 64 65 66 69 6e endif..#if defin
9760: 65 64 28 5f 5f 78 38 36 5f 36 34 5f 5f 29 0a 0a ed(__x86_64__)..
9770: 2f 2a 20 55 70 20 74 6f 20 38 20 6c 65 61 64 69 /* Up to 8 leadi
9780: 6e 67 20 66 6c 6f 61 74 20 6f 72 20 64 6f 75 62 ng float or doub
9790: 6c 65 20 61 72 67 73 20 63 61 6e 20 62 65 20 70 le args can be p
97a0: 61 73 73 65 64 20 69 6e 20 66 6c 6f 61 74 20 72 assed in float r
97b0: 65 67 69 73 74 65 72 73 2e 0a 20 2a 2f 0a 23 64 egisters.. */.#d
97c0: 65 66 69 6e 65 20 5f 5f 61 76 5f 66 6c 6f 61 74 efine __av_float
97d0: 28 4c 49 53 54 2c 56 41 4c 29 09 09 09 09 09 09 (LIST,VAL)......
97e0: 5c 0a 20 20 28 28 4c 49 53 54 29 2e 66 61 70 74 \. ((LIST).fapt
97f0: 72 20 3c 20 26 28 4c 49 53 54 29 2e 66 61 72 67 r < &(LIST).farg
9800: 73 5b 38 5d 09 09 09 09 09 5c 0a 20 20 20 3f 20 s[8].....\. ?
9810: 28 2a 28 4c 49 53 54 29 2e 66 61 70 74 72 20 3d (*(LIST).faptr =
9820: 20 30 2e 30 2c 20 2a 28 66 6c 6f 61 74 2a 29 28 0.0, *(float*)(
9830: 4c 49 53 54 29 2e 66 61 70 74 72 20 3d 20 28 66 LIST).faptr = (f
9840: 6c 6f 61 74 29 28 56 41 4c 29 2c 09 5c 0a 20 20 loat)(VAL),.\.
9850: 20 20 20 20 28 4c 49 53 54 29 2e 66 61 70 74 72 (LIST).faptr
9860: 2b 2b 2c 09 09 09 09 09 09 09 5c 0a 20 20 20 20 ++,.......\.
9870: 20 20 30 29 09 09 09 09 09 09 09 09 5c 0a 20 20 0)........\.
9880: 20 3a 20 28 28 4c 49 53 54 29 2e 61 70 74 72 20 : ((LIST).aptr
9890: 3e 3d 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 >= __av_eptr(LIS
98a0: 54 29 09 09 09 09 09 5c 0a 20 20 20 20 20 20 3f T).....\. ?
98b0: 20 2d 31 20 3a 20 28 28 2a 28 66 6c 6f 61 74 2a -1 : ((*(float*
98c0: 29 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 28 )(LIST).aptr = (
98d0: 66 6c 6f 61 74 29 28 56 41 4c 29 29 2c 09 09 09 float)(VAL)),...
98e0: 5c 0a 09 20 20 20 20 20 20 28 4c 49 53 54 29 2e \.. (LIST).
98f0: 61 70 74 72 2b 2b 2c 09 09 09 09 09 09 5c 0a 09 aptr++,......\..
9900: 20 20 20 20 20 20 30 29 29 29 0a 0a 23 64 65 66 0)))..#def
9910: 69 6e 65 20 61 76 5f 64 6f 75 62 6c 65 28 4c 49 ine av_double(LI
9920: 53 54 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a 20 ST,VAL)......\.
9930: 20 28 28 4c 49 53 54 29 2e 66 61 70 74 72 20 3c ((LIST).faptr <
9940: 20 26 28 4c 49 53 54 29 2e 66 61 72 67 73 5b 38 &(LIST).fargs[8
9950: 5d 09 09 09 09 09 5c 0a 20 20 20 3f 20 28 2a 28 ].....\. ? (*(
9960: 4c 49 53 54 29 2e 66 61 70 74 72 20 3d 20 28 64 LIST).faptr = (d
9970: 6f 75 62 6c 65 29 28 56 41 4c 29 2c 09 09 09 09 ouble)(VAL),....
9980: 09 5c 0a 20 20 20 20 20 20 28 4c 49 53 54 29 2e .\. (LIST).
9990: 66 61 70 74 72 2b 2b 2c 09 09 09 09 09 09 09 5c faptr++,.......\
99a0: 0a 20 20 20 20 20 20 30 29 09 09 09 09 09 09 09 . 0).......
99b0: 09 5c 0a 20 20 20 3a 20 28 28 4c 49 53 54 29 2e .\. : ((LIST).
99c0: 61 70 74 72 20 3e 3d 20 5f 5f 61 76 5f 65 70 74 aptr >= __av_ept
99d0: 72 28 4c 49 53 54 29 09 09 09 09 09 5c 0a 20 20 r(LIST).....\.
99e0: 20 20 20 20 3f 20 2d 31 20 3a 20 28 28 2a 28 64 ? -1 : ((*(d
99f0: 6f 75 62 6c 65 2a 29 28 4c 49 53 54 29 2e 61 70 ouble*)(LIST).ap
9a00: 74 72 20 3d 20 28 64 6f 75 62 6c 65 29 28 56 41 tr = (double)(VA
9a10: 4c 29 29 2c 09 09 09 5c 0a 09 20 20 20 20 20 20 L)),...\..
9a20: 28 4c 49 53 54 29 2e 61 70 74 72 2b 2b 2c 09 09 (LIST).aptr++,..
9a30: 09 09 09 09 5c 0a 09 20 20 20 20 20 20 30 29 29 ....\.. 0))
9a40: 29 0a 0a 23 65 6e 64 69 66 0a 0a 2f 2a 0a 20 2a )..#endif../*. *
9a50: 20 73 74 72 75 63 74 75 72 65 20 61 72 67 75 6d structure argum
9a60: 65 6e 74 20 74 79 70 65 73 0a 20 2a 2f 0a 0a 23 ent types. */..#
9a70: 64 65 66 69 6e 65 20 61 76 5f 73 74 72 75 63 74 define av_struct
9a80: 28 4c 49 53 54 2c 54 59 50 45 2c 56 41 4c 29 09 (LIST,TYPE,VAL).
9a90: 09 09 09 09 5c 0a 20 20 5f 5f 61 76 5f 73 74 72 ....\. __av_str
9aa0: 75 63 74 28 4c 49 53 54 2c 54 59 50 45 2c 73 69 uct(LIST,TYPE,si
9ab0: 7a 65 6f 66 28 54 59 50 45 29 2c 5f 5f 41 56 5f zeof(TYPE),__AV_
9ac0: 61 6c 69 67 6e 6f 66 28 54 59 50 45 29 2c 5f 5f alignof(TYPE),__
9ad0: 61 76 5f 73 74 72 75 63 74 5f 61 73 73 69 67 6e av_struct_assign
9ae0: 2c 56 41 4c 29 0a 23 64 65 66 69 6e 65 20 5f 5f ,VAL).#define __
9af0: 61 76 5f 73 74 72 75 63 74 5f 61 73 73 69 67 6e av_struct_assign
9b00: 28 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c (TYPE,TYPE_SIZE,
9b10: 54 59 50 45 5f 41 4c 49 47 4e 2c 50 4c 41 43 45 TYPE_ALIGN,PLACE
9b20: 2c 56 41 4c 29 09 09 5c 0a 20 20 2a 28 54 59 50 ,VAL)..\. *(TYP
9b30: 45 2a 29 28 50 4c 41 43 45 29 20 3d 20 28 56 41 E*)(PLACE) = (VA
9b40: 4c 29 0a 2f 2a 20 5f 61 76 5f 73 74 72 75 63 74 L)./* _av_struct
9b50: 28 29 20 69 73 20 6c 69 6b 65 20 61 76 5f 73 74 () is like av_st
9b60: 72 75 63 74 28 29 2c 20 65 78 63 65 70 74 20 74 ruct(), except t
9b70: 68 61 74 20 79 6f 75 20 70 61 73 73 20 74 68 65 hat you pass the
9b80: 20 74 79 70 65 27 73 20 73 69 7a 65 20 61 6e 64 type's size and
9b90: 20 61 6c 69 67 6e 6d 65 6e 74 0a 20 2a 20 61 6e alignment. * an
9ba0: 64 20 74 68 65 20 76 61 6c 75 65 27 73 20 61 64 d the value's ad
9bb0: 64 72 65 73 73 20 69 6e 73 74 65 61 64 20 6f 66 dress instead of
9bc0: 20 74 68 65 20 74 79 70 65 20 61 6e 64 20 74 68 the type and th
9bd0: 65 20 76 61 6c 75 65 20 74 68 65 6d 73 65 6c 76 e value themselv
9be0: 65 73 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 es.. */.#define
9bf0: 5f 61 76 5f 73 74 72 75 63 74 28 4c 49 53 54 2c _av_struct(LIST,
9c00: 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 TYPE_SIZE,TYPE_A
9c10: 4c 49 47 4e 2c 56 41 4c 5f 41 44 44 52 29 09 09 LIGN,VAL_ADDR)..
9c20: 09 5c 0a 20 20 5f 5f 61 76 5f 73 74 72 75 63 74 .\. __av_struct
9c30: 28 4c 49 53 54 2c 75 6e 6b 6e 6f 77 6e 2c 54 59 (LIST,unknown,TY
9c40: 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 PE_SIZE,TYPE_ALI
9c50: 47 4e 2c 5f 5f 61 76 5f 73 74 72 75 63 74 5f 63 GN,__av_struct_c
9c60: 6f 70 79 2c 56 41 4c 5f 41 44 44 52 29 0a 23 64 opy,VAL_ADDR).#d
9c70: 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 72 75 63 efine __av_struc
9c80: 74 5f 63 6f 70 79 28 54 59 50 45 2c 54 59 50 45 t_copy(TYPE,TYPE
9c90: 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e _SIZE,TYPE_ALIGN
9ca0: 2c 50 4c 41 43 45 2c 56 41 4c 5f 41 44 44 52 29 ,PLACE,VAL_ADDR)
9cb0: 09 5c 0a 20 20 5f 5f 73 74 72 75 63 74 63 70 79 .\. __structcpy
9cc0: 28 50 4c 41 43 45 2c 56 41 4c 5f 41 44 44 52 2c (PLACE,VAL_ADDR,
9cd0: 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 TYPE_SIZE,TYPE_A
9ce0: 4c 49 47 4e 29 0a 2f 2a 20 53 74 72 75 63 74 75 LIGN)./* Structu
9cf0: 72 65 20 61 72 67 75 6d 65 6e 74 20 61 6c 69 67 re argument alig
9d00: 6e 6d 65 6e 74 2e 20 2a 2f 0a 23 69 66 20 64 65 nment. */.#if de
9d10: 66 69 6e 65 64 28 5f 5f 69 33 38 36 5f 5f 29 20 fined(__i386__)
9d20: 26 26 20 64 65 66 69 6e 65 64 28 5f 4d 53 43 5f && defined(_MSC_
9d30: 56 45 52 29 0a 2f 2a 20 49 6e 20 4d 53 56 43 2c VER)./* In MSVC,
9d40: 20 64 6f 75 62 6c 65 73 20 69 6e 73 69 64 65 20 doubles inside
9d50: 73 74 72 75 63 74 75 72 65 73 20 68 61 76 65 20 structures have
9d60: 61 6c 69 67 6e 6d 65 6e 74 20 38 2c 20 69 2e 65 alignment 8, i.e
9d70: 2e 0a 20 2a 20 5f 5f 41 56 5f 61 6c 69 67 6e 6f .. * __AV_aligno
9d80: 66 28 64 6f 75 62 6c 65 29 20 3d 20 38 2c 20 62 f(double) = 8, b
9d90: 75 74 20 64 6f 75 62 6c 65 73 20 28 61 6e 64 20 ut doubles (and
9da0: 61 6c 73 6f 20 73 74 72 75 63 74 75 72 65 73 20 also structures
9db0: 63 6f 6e 74 61 69 6e 69 6e 67 0a 20 2a 20 64 6f containing. * do
9dc0: 75 62 6c 65 73 29 20 61 72 65 20 70 61 73 73 65 ubles) are passe
9dd0: 64 20 6f 6e 20 74 68 65 20 73 74 61 63 6b 20 77 d on the stack w
9de0: 69 74 68 20 61 6c 69 67 6e 6d 65 6e 74 20 34 2e ith alignment 4.
9df0: 20 4c 6f 6f 6b 73 20 72 65 61 6c 6c 79 20 77 65 Looks really we
9e00: 69 72 64 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 ird.. */.#define
9e10: 20 5f 5f 61 76 5f 73 74 72 75 63 74 5f 61 6c 69 __av_struct_ali
9e20: 67 6e 6d 65 6e 74 28 54 59 50 45 5f 41 4c 49 47 gnment(TYPE_ALIG
9e30: 4e 29 20 20 5c 0a 20 20 28 28 54 59 50 45 5f 41 N) \. ((TYPE_A
9e40: 4c 49 47 4e 29 20 3c 3d 20 34 20 3f 20 28 54 59 LIGN) <= 4 ? (TY
9e50: 50 45 5f 41 4c 49 47 4e 29 20 3a 20 34 29 0a 23 PE_ALIGN) : 4).#
9e60: 65 6c 73 65 0a 23 64 65 66 69 6e 65 20 5f 5f 61 else.#define __a
9e70: 76 5f 73 74 72 75 63 74 5f 61 6c 69 67 6e 6d 65 v_struct_alignme
9e80: 6e 74 28 54 59 50 45 5f 41 4c 49 47 4e 29 20 20 nt(TYPE_ALIGN)
9e90: 5c 0a 20 20 28 54 59 50 45 5f 41 4c 49 47 4e 29 \. (TYPE_ALIGN)
9ea0: 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 .#endif.#if defi
9eb0: 6e 65 64 28 5f 5f 69 33 38 36 5f 5f 29 20 7c 7c ned(__i386__) ||
9ec0: 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 5f defined(__mips_
9ed0: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f _) || defined(__
9ee0: 6d 69 70 73 6e 33 32 5f 5f 29 20 7c 7c 20 64 65 mipsn32__) || de
9ef0: 66 69 6e 65 64 28 5f 5f 6d 69 70 73 36 34 5f 5f fined(__mips64__
9f00: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 61 ) || defined(__a
9f10: 6c 70 68 61 5f 5f 29 20 7c 7c 20 28 64 65 66 69 lpha__) || (defi
9f20: 6e 65 64 28 5f 5f 72 73 36 30 30 30 5f 5f 29 20 ned(__rs6000__)
9f30: 26 26 20 28 64 65 66 69 6e 65 64 28 5f 41 49 58 && (defined(_AIX
9f40: 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f ) || (defined(__
9f50: 4d 41 43 48 5f 5f 29 20 26 26 20 64 65 66 69 6e MACH__) && defin
9f60: 65 64 28 5f 5f 41 50 50 4c 45 5f 5f 29 29 29 29 ed(__APPLE__))))
9f70: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 38 || defined(__m8
9f80: 38 6b 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 8k__) || defined
9f90: 28 5f 5f 69 61 36 34 5f 5f 29 20 7c 7c 20 64 65 (__ia64__) || de
9fa0: 66 69 6e 65 64 28 5f 5f 73 33 39 30 5f 5f 29 0a fined(__s390__).
9fb0: 2f 2a 20 53 74 72 75 63 74 75 72 65 73 20 61 72 /* Structures ar
9fc0: 65 20 70 61 73 73 65 64 20 61 73 20 66 75 6c 6c e passed as full
9fd0: 79 20 61 6c 69 67 6e 65 64 20 73 74 72 75 63 74 y aligned struct
9fe0: 75 72 65 73 20 6f 6e 20 74 68 65 20 61 72 67 20 ures on the arg
9ff0: 73 74 61 63 6b 2e 0a 20 2a 20 57 65 20 61 6c 69 stack.. * We ali
a000: 67 6e 20 74 68 65 20 61 70 74 72 2c 20 73 74 6f gn the aptr, sto
a010: 72 65 20 74 68 65 20 73 74 72 75 63 74 75 72 65 re the structure
a020: 2c 20 74 68 65 6e 20 66 69 6c 6c 20 74 6f 20 77 , then fill to w
a030: 6f 72 64 20 61 6c 69 67 6e 6d 65 6e 74 2e 0a 20 ord alignment..
a040: 2a 20 53 69 6e 67 6c 65 2d 73 6d 61 6c 6c 2d 69 * Single-small-i
a050: 6e 74 65 67 65 72 20 73 74 72 75 63 74 75 72 65 nteger structure
a060: 73 20 61 72 65 20 4e 4f 54 20 70 72 6f 6d 6f 74 s are NOT promot
a070: 65 64 20 74 6f 20 69 6e 74 65 67 65 72 73 20 61 ed to integers a
a080: 6e 64 20 68 61 76 65 0a 20 2a 20 64 69 66 66 65 nd have. * diffe
a090: 72 65 6e 74 20 61 6c 69 67 6e 6d 65 6e 74 2e 0a rent alignment..
a0a0: 20 2a 2f 0a 2f 2a 20 6c 69 74 74 6c 65 20 65 6e */./* little en
a0b0: 64 69 61 6e 20 2d 3e 20 73 6d 61 6c 6c 20 73 74 dian -> small st
a0c0: 72 75 63 74 75 72 65 73 20 3c 20 31 20 77 6f 72 ructures < 1 wor
a0d0: 64 20 61 72 65 20 61 64 6a 75 73 74 65 64 20 74 d are adjusted t
a0e0: 6f 20 74 68 65 20 6c 65 66 74 20 2a 2f 0a 23 69 o the left */.#i
a0f0: 66 20 64 65 66 69 6e 65 64 28 5f 5f 69 33 38 36 f defined(__i386
a100: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f __) || defined(_
a110: 5f 61 6c 70 68 61 5f 5f 29 20 7c 7c 20 64 65 66 _alpha__) || def
a120: 69 6e 65 64 28 5f 5f 78 38 36 5f 36 34 5f 5f 29 ined(__x86_64__)
a130: 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 .#define __av_st
a140: 72 75 63 74 28 4c 49 53 54 2c 54 59 50 45 2c 54 ruct(LIST,TYPE,T
a150: 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c YPE_SIZE,TYPE_AL
a160: 49 47 4e 2c 41 53 53 49 47 4e 2c 56 41 4c 29 09 IGN,ASSIGN,VAL).
a170: 09 5c 0a 20 20 28 28 28 4c 49 53 54 29 2e 61 70 .\. (((LIST).ap
a180: 74 72 20 3d 09 09 09 09 09 09 09 5c 0a 20 20 20 tr =.......\.
a190: 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28 28 28 5f (__avword*)(((_
a1a0: 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e 61 _avword)(LIST).a
a1b0: 70 74 72 2b 28 54 59 50 45 5f 53 49 5a 45 29 2b ptr+(TYPE_SIZE)+
a1c0: 5f 5f 61 76 5f 73 74 72 75 63 74 5f 61 6c 69 67 __av_struct_alig
a1d0: 6e 6d 65 6e 74 28 54 59 50 45 5f 41 4c 49 47 4e nment(TYPE_ALIGN
a1e0: 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 5f 5f )-1) & -(long)__
a1f0: 61 76 5f 73 74 72 75 63 74 5f 61 6c 69 67 6e 6d av_struct_alignm
a200: 65 6e 74 28 54 59 50 45 5f 41 4c 49 47 4e 29 29 ent(TYPE_ALIGN))
a210: 29 5c 0a 20 20 20 3e 20 5f 5f 61 76 5f 65 70 74 )\. > __av_ept
a220: 72 28 4c 49 53 54 29 09 09 09 09 09 09 09 5c 0a r(LIST).......\.
a230: 20 20 20 3f 20 2d 31 20 3a 20 28 41 53 53 49 47 ? -1 : (ASSIG
a240: 4e 28 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 N(TYPE,TYPE_SIZE
a250: 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 28 76 6f 69 ,TYPE_ALIGN,(voi
a260: 64 2a 29 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c d*)((__avword)(L
a270: 49 53 54 29 2e 61 70 74 72 2d 28 54 59 50 45 5f IST).aptr-(TYPE_
a280: 53 49 5a 45 29 29 2c 56 41 4c 29 2c 5c 0a 09 20 SIZE)),VAL),\..
a290: 20 20 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 (LIST).aptr =
a2a0: 28 5f 5f 61 76 77 6f 72 64 2a 29 28 28 28 5f 5f (__avword*)(((__
a2b0: 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e 61 70 avword)(LIST).ap
a2c0: 74 72 2b 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f tr+sizeof(__avwo
a2d0: 72 64 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 rd)-1) & -(long)
a2e0: 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 sizeof(__avword)
a2f0: 29 2c 5c 0a 09 20 20 20 30 29 29 0a 23 65 6e 64 ),\.. 0)).#end
a300: 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f if.#if defined(_
a310: 5f 69 61 36 34 5f 5f 29 0a 2f 2a 20 54 79 70 65 _ia64__)./* Type
a320: 73 20 6c 61 72 67 65 72 20 74 68 61 6e 20 61 20 s larger than a
a330: 77 6f 72 64 20 68 61 76 65 20 32 2d 77 6f 72 64 word have 2-word
a340: 20 61 6c 69 67 6e 6d 65 6e 74 2e 20 2a 2f 0a 23 alignment. */.#
a350: 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 72 75 define __av_stru
a360: 63 74 28 4c 49 53 54 2c 54 59 50 45 2c 54 59 50 ct(LIST,TYPE,TYP
a370: 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 E_SIZE,TYPE_ALIG
a380: 4e 2c 41 53 53 49 47 4e 2c 56 41 4c 29 09 09 5c N,ASSIGN,VAL)..\
a390: 0a 20 20 28 28 4c 49 53 54 29 2e 61 70 74 72 20 . ((LIST).aptr
a3a0: 3d 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28 28 28 = (__avword*)(((
a3b0: 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e __avword)(LIST).
a3c0: 61 70 74 72 2b 28 54 59 50 45 5f 53 49 5a 45 29 aptr+(TYPE_SIZE)
a3d0: 2b 5f 5f 61 76 5f 73 74 72 75 63 74 5f 61 6c 69 +__av_struct_ali
a3e0: 67 6e 6d 65 6e 74 28 54 59 50 45 5f 41 4c 49 47 gnment(TYPE_ALIG
a3f0: 4e 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 5f N)-1) & -(long)_
a400: 5f 61 76 5f 73 74 72 75 63 74 5f 61 6c 69 67 6e _av_struct_align
a410: 6d 65 6e 74 28 54 59 50 45 5f 41 4c 49 47 4e 29 ment(TYPE_ALIGN)
a420: 29 2c 20 5c 0a 20 20 20 28 28 54 59 50 45 5f 53 ), \. ((TYPE_S
a430: 49 5a 45 29 20 3e 20 73 69 7a 65 6f 66 28 5f 5f IZE) > sizeof(__
a440: 61 76 77 6f 72 64 29 20 26 26 20 28 28 28 4c 49 avword) && (((LI
a450: 53 54 29 2e 61 70 74 72 20 2d 20 26 28 4c 49 53 ST).aptr - &(LIS
a460: 54 29 2e 61 72 67 73 5b 30 5d 29 20 26 20 31 29 T).args[0]) & 1)
a470: 20 3f 20 2b 2b 28 4c 49 53 54 29 2e 61 70 74 72 ? ++(LIST).aptr
a480: 20 3a 20 30 29 2c 20 5c 0a 20 20 20 28 28 4c 49 : 0), \. ((LI
a490: 53 54 29 2e 61 70 74 72 20 3e 20 5f 5f 61 76 5f ST).aptr > __av_
a4a0: 65 70 74 72 28 4c 49 53 54 29 09 09 09 09 09 5c eptr(LIST).....\
a4b0: 0a 20 20 20 20 3f 20 2d 31 20 3a 20 28 41 53 53 . ? -1 : (ASS
a4c0: 49 47 4e 28 54 59 50 45 2c 54 59 50 45 5f 53 49 IGN(TYPE,TYPE_SI
a4d0: 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 28 76 ZE,TYPE_ALIGN,(v
a4e0: 6f 69 64 2a 29 28 28 5f 5f 61 76 77 6f 72 64 29 oid*)((__avword)
a4f0: 28 4c 49 53 54 29 2e 61 70 74 72 2d 28 54 59 50 (LIST).aptr-(TYP
a500: 45 5f 53 49 5a 45 29 29 2c 56 41 4c 29 2c 5c 0a E_SIZE)),VAL),\.
a510: 09 20 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72 . (LIST).aptr
a520: 20 3d 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28 28 = (__avword*)((
a530: 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29 (__avword)(LIST)
a540: 2e 61 70 74 72 2b 73 69 7a 65 6f 66 28 5f 5f 61 .aptr+sizeof(__a
a550: 76 77 6f 72 64 29 2d 31 29 20 26 20 2d 28 6c 6f vword)-1) & -(lo
a560: 6e 67 29 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f ng)sizeof(__avwo
a570: 72 64 29 29 2c 5c 0a 09 20 20 20 20 30 29 29 29 rd)),\.. 0)))
a580: 0a 23 65 6e 64 69 66 0a 2f 2a 20 73 6d 61 6c 6c .#endif./* small
a590: 20 73 74 72 75 63 74 75 72 65 73 20 3c 20 31 20 structures < 1
a5a0: 77 6f 72 64 20 61 72 65 20 61 64 6a 75 73 74 65 word are adjuste
a5b0: 64 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 63 d depending on c
a5c0: 6f 6d 70 69 6c 65 72 20 2a 2f 0a 23 69 66 20 64 ompiler */.#if d
a5d0: 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 5f 5f 29 efined(__mips__)
a5e0: 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 6d && !defined(__m
a5f0: 69 70 73 6e 33 32 5f 5f 29 0a 23 64 65 66 69 6e ipsn32__).#defin
a600: 65 20 5f 5f 61 76 5f 73 74 72 75 63 74 5f 6c 65 e __av_struct_le
a610: 66 74 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c ftadjusted(LIST,
a620: 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 TYPE,TYPE_SIZE,T
a630: 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e YPE_ALIGN,ASSIGN
a640: 2c 56 41 4c 29 20 5c 0a 20 20 28 28 28 4c 49 53 ,VAL) \. (((LIS
a650: 54 29 2e 61 70 74 72 20 3d 09 09 09 09 09 09 09 T).aptr =.......
a660: 5c 0a 20 20 20 20 28 5f 5f 61 76 77 6f 72 64 2a \. (__avword*
a670: 29 28 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 )(((__avword)(LI
a680: 53 54 29 2e 61 70 74 72 2b 28 54 59 50 45 5f 53 ST).aptr+(TYPE_S
a690: 49 5a 45 29 2b 28 54 59 50 45 5f 41 4c 49 47 4e IZE)+(TYPE_ALIGN
a6a0: 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 28 54 )-1) & -(long)(T
a6b0: 59 50 45 5f 41 4c 49 47 4e 29 29 29 5c 0a 20 20 YPE_ALIGN)))\.
a6c0: 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 > __av_eptr(LIS
a6d0: 54 29 09 09 09 09 09 09 09 5c 0a 20 20 20 3f 20 T).......\. ?
a6e0: 2d 31 20 3a 20 28 2b 2b 28 4c 49 53 54 29 2e 61 -1 : (++(LIST).a
a6f0: 6e 75 6d 2c 09 09 09 09 09 09 5c 0a 09 20 20 20 num,......\..
a700: 41 53 53 49 47 4e 28 54 59 50 45 2c 54 59 50 45 ASSIGN(TYPE,TYPE
a710: 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e _SIZE,TYPE_ALIGN
a720: 2c 28 76 6f 69 64 2a 29 28 28 5f 5f 61 76 77 6f ,(void*)((__avwo
a730: 72 64 29 28 4c 49 53 54 29 2e 61 70 74 72 2d 28 rd)(LIST).aptr-(
a740: 54 59 50 45 5f 53 49 5a 45 29 29 2c 56 41 4c 29 TYPE_SIZE)),VAL)
a750: 2c 5c 0a 09 20 20 20 28 4c 49 53 54 29 2e 61 70 ,\.. (LIST).ap
a760: 74 72 20 3d 20 28 5f 5f 61 76 77 6f 72 64 2a 29 tr = (__avword*)
a770: 28 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 (((__avword)(LIS
a780: 54 29 2e 61 70 74 72 2b 73 69 7a 65 6f 66 28 5f T).aptr+sizeof(_
a790: 5f 61 76 77 6f 72 64 29 2d 31 29 20 26 20 2d 28 _avword)-1) & -(
a7a0: 6c 6f 6e 67 29 73 69 7a 65 6f 66 28 5f 5f 61 76 long)sizeof(__av
a7b0: 77 6f 72 64 29 29 2c 5c 0a 09 20 20 20 30 29 29 word)),\.. 0))
a7c0: 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 .#define __av_st
a7d0: 72 75 63 74 5f 72 69 67 68 74 61 64 6a 75 73 74 ruct_rightadjust
a7e0: 65 64 28 4c 49 53 54 2c 54 59 50 45 2c 54 59 50 ed(LIST,TYPE,TYP
a7f0: 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 E_SIZE,TYPE_ALIG
a800: 4e 2c 41 53 53 49 47 4e 2c 56 41 4c 29 20 5c 0a N,ASSIGN,VAL) \.
a810: 20 20 28 28 28 4c 49 53 54 29 2e 61 70 74 72 20 (((LIST).aptr
a820: 3d 09 09 09 09 09 09 09 5c 0a 20 20 20 20 28 5f =.......\. (_
a830: 5f 61 76 77 6f 72 64 2a 29 28 28 28 28 28 5f 5f _avword*)(((((__
a840: 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e 61 70 avword)(LIST).ap
a850: 74 72 2b 28 54 59 50 45 5f 53 49 5a 45 29 2b 28 tr+(TYPE_SIZE)+(
a860: 54 59 50 45 5f 41 4c 49 47 4e 29 2d 31 29 20 26 TYPE_ALIGN)-1) &
a870: 20 2d 28 6c 6f 6e 67 29 28 54 59 50 45 5f 41 4c -(long)(TYPE_AL
a880: 49 47 4e 29 29 5c 0a 09 09 20 2b 73 69 7a 65 6f IGN))\... +sizeo
a890: 66 28 5f 5f 61 76 77 6f 72 64 29 2d 31 29 20 26 f(__avword)-1) &
a8a0: 20 2d 28 6c 6f 6e 67 29 73 69 7a 65 6f 66 28 5f -(long)sizeof(_
a8b0: 5f 61 76 77 6f 72 64 29 29 29 09 5c 0a 20 20 20 _avword))).\.
a8c0: 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 > __av_eptr(LIST
a8d0: 29 09 09 09 09 09 09 09 5c 0a 20 20 20 3f 20 2d ).......\. ? -
a8e0: 31 20 3a 20 28 2b 2b 28 4c 49 53 54 29 2e 61 6e 1 : (++(LIST).an
a8f0: 75 6d 2c 09 09 09 09 09 09 5c 0a 09 20 20 20 41 um,......\.. A
a900: 53 53 49 47 4e 28 54 59 50 45 2c 54 59 50 45 5f SSIGN(TYPE,TYPE_
a910: 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c SIZE,TYPE_ALIGN,
a920: 28 76 6f 69 64 2a 29 28 28 5f 5f 61 76 77 6f 72 (void*)((__avwor
a930: 64 29 28 4c 49 53 54 29 2e 61 70 74 72 2d 28 54 d)(LIST).aptr-(T
a940: 59 50 45 5f 53 49 5a 45 29 29 2c 56 41 4c 29 2c YPE_SIZE)),VAL),
a950: 5c 0a 09 20 20 20 30 29 29 0a 23 64 65 66 69 6e \.. 0)).#defin
a960: 65 20 5f 5f 61 76 5f 73 74 72 75 63 74 28 4c 49 e __av_struct(LI
a970: 53 54 2c 54 59 50 45 2c 54 59 50 45 5f 53 49 5a ST,TYPE,TYPE_SIZ
a980: 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 E,TYPE_ALIGN,ASS
a990: 49 47 4e 2c 56 41 4c 29 09 09 5c 0a 20 20 28 28 IGN,VAL)..\. ((
a9a0: 4c 49 53 54 29 2e 66 6c 61 67 73 20 26 20 5f 5f LIST).flags & __
a9b0: 41 56 5f 53 47 49 43 43 5f 53 54 52 55 43 54 5f AV_SGICC_STRUCT_
a9c0: 41 52 47 53 09 09 09 09 5c 0a 20 20 20 3f 20 2f ARGS....\. ? /
a9d0: 2a 20 53 47 49 20 4d 49 50 53 20 63 63 20 70 61 * SGI MIPS cc pa
a9e0: 73 73 65 73 20 73 6d 61 6c 6c 20 73 74 72 75 63 sses small struc
a9f0: 74 75 72 65 73 20 6c 65 66 74 2d 61 64 6a 75 73 tures left-adjus
aa00: 74 65 64 2c 20 61 6c 74 68 6f 75 67 68 20 62 69 ted, although bi
aa10: 67 2d 65 6e 64 69 61 6e 21 20 2a 2f 5c 0a 20 20 g-endian! */\.
aa20: 20 20 20 5f 5f 61 76 5f 73 74 72 75 63 74 5f 6c __av_struct_l
aa30: 65 66 74 61 64 6a 75 73 74 65 64 28 4c 49 53 54 eftadjusted(LIST
aa40: 2c 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c ,TYPE,TYPE_SIZE,
aa50: 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47 TYPE_ALIGN,ASSIG
aa60: 4e 2c 56 41 4c 29 20 5c 0a 20 20 20 3a 20 2f 2a N,VAL) \. : /*
aa70: 20 53 47 49 20 4d 49 50 53 20 67 63 63 20 70 61 SGI MIPS gcc pa
aa80: 73 73 65 73 20 73 6d 61 6c 6c 20 73 74 72 75 63 sses small struc
aa90: 74 75 72 65 73 20 77 69 74 68 69 6e 20 74 68 65 tures within the
aaa0: 20 66 69 72 73 74 20 66 6f 75 72 20 77 6f 72 64 first four word
aab0: 73 20 6c 65 66 74 2d 09 20 20 5c 0a 20 20 20 20 s left-. \.
aac0: 20 20 2a 20 61 64 6a 75 73 74 65 64 2c 20 66 6f * adjusted, fo
aad0: 72 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 r compatibility
aae0: 77 69 74 68 20 63 63 2e 20 42 75 74 20 73 74 72 with cc. But str
aaf0: 75 63 74 75 72 65 73 20 69 6e 20 6d 65 6d 6f 72 uctures in memor
ab00: 79 20 61 72 65 20 70 61 73 73 65 64 20 20 5c 0a y are passed \.
ab10: 20 20 20 20 20 20 2a 20 72 69 67 68 74 2d 61 64 * right-ad
ab20: 6a 75 73 74 65 64 21 21 20 53 65 65 20 67 63 63 justed!! See gcc
ab30: 2d 32 2e 36 2e 33 2f 63 6f 6e 66 69 67 2f 6d 69 -2.6.3/config/mi
ab40: 70 73 2f 6d 69 70 73 2e 63 3a 66 75 6e 63 74 69 ps/mips.c:functi
ab50: 6f 6e 5f 61 72 67 28 29 2e 09 20 20 5c 0a 20 20 on_arg().. \.
ab60: 20 20 20 20 2a 2f 09 09 09 09 09 09 09 09 09 20 */.........
ab70: 20 5c 0a 20 20 20 20 20 28 28 4c 49 53 54 29 2e \. ((LIST).
ab80: 61 70 74 72 20 3c 20 26 28 4c 49 53 54 29 2e 61 aptr < &(LIST).a
ab90: 72 67 73 5b 34 5d 09 09 09 09 09 09 5c 0a 20 20 rgs[4]......\.
aba0: 20 20 20 20 3f 20 5f 5f 61 76 5f 73 74 72 75 63 ? __av_struc
abb0: 74 5f 6c 65 66 74 61 64 6a 75 73 74 65 64 28 4c t_leftadjusted(L
abc0: 49 53 54 2c 54 59 50 45 2c 54 59 50 45 5f 53 49 IST,TYPE,TYPE_SI
abd0: 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53 ZE,TYPE_ALIGN,AS
abe0: 53 49 47 4e 2c 56 41 4c 29 09 5c 0a 20 20 20 20 SIGN,VAL).\.
abf0: 20 20 3a 20 5f 5f 61 76 5f 73 74 72 75 63 74 5f : __av_struct_
ac00: 72 69 67 68 74 61 64 6a 75 73 74 65 64 28 4c 49 rightadjusted(LI
ac10: 53 54 2c 54 59 50 45 2c 54 59 50 45 5f 53 49 5a ST,TYPE,TYPE_SIZ
ac20: 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 E,TYPE_ALIGN,ASS
ac30: 49 47 4e 2c 56 41 4c 29 29 29 0a 23 65 6e 64 69 IGN,VAL))).#endi
ac40: 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f f.#if defined(__
ac50: 6d 69 70 73 6e 33 32 5f 5f 29 20 7c 7c 20 64 65 mipsn32__) || de
ac60: 66 69 6e 65 64 28 5f 5f 6d 69 70 73 36 34 5f 5f fined(__mips64__
ac70: 29 0a 2f 2a 20 57 68 65 6e 20 61 20 73 74 72 75 )./* When a stru
ac80: 63 74 75 72 65 20 69 73 20 70 61 73 73 65 64 20 cture is passed
ac90: 28 70 61 72 74 69 61 6c 6c 79 29 20 69 6e 20 72 (partially) in r
aca0: 65 67 69 73 74 65 72 73 2c 20 69 74 20 69 73 20 egisters, it is
acb0: 70 61 73 73 65 64 20 69 6e 20 74 68 65 0a 20 2a passed in the. *
acc0: 20 69 6e 74 65 67 65 72 20 72 65 67 69 73 74 65 integer registe
acd0: 72 73 2c 20 65 78 63 65 70 74 20 74 68 61 74 20 rs, except that
ace0: 64 6f 75 62 6c 65 73 20 77 69 74 68 69 6e 20 74 doubles within t
acf0: 68 65 20 73 74 72 75 63 74 75 72 65 20 61 72 65 he structure are
ad00: 20 70 61 73 73 65 64 20 69 6e 0a 20 2a 20 74 68 passed in. * th
ad10: 65 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 e floating point
ad20: 20 72 65 67 69 73 74 65 72 73 2e 20 49 6e 73 74 registers. Inst
ad30: 65 61 64 20 6f 66 20 64 69 73 74 69 6e 67 75 69 ead of distingui
ad40: 73 68 69 6e 67 20 74 68 65 73 65 20 63 61 73 65 shing these case
ad50: 73 2c 20 77 65 0a 20 2a 20 61 6c 77 61 79 73 20 s, we. * always
ad60: 70 61 73 73 20 74 68 65 20 73 74 72 75 63 74 75 pass the structu
ad70: 72 65 20 69 6e 20 62 6f 74 68 20 74 68 65 20 69 re in both the i
ad80: 6e 74 65 67 65 72 20 61 6e 64 20 74 68 65 20 66 nteger and the f
ad90: 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 0a 20 2a loating point. *
ada0: 20 72 65 67 69 73 74 65 72 73 2e 0a 20 2a 2f 0a registers.. */.
adb0: 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 72 #define __av_str
adc0: 75 63 74 5f 6c 65 66 74 61 64 6a 75 73 74 65 64 uct_leftadjusted
add0: 28 4c 49 53 54 2c 54 59 50 45 2c 54 59 50 45 5f (LIST,TYPE,TYPE_
ade0: 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c SIZE,TYPE_ALIGN,
adf0: 41 53 53 49 47 4e 2c 56 41 4c 29 20 5c 0a 20 20 ASSIGN,VAL) \.
ae00: 28 28 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 09 (((LIST).aptr =.
ae10: 09 09 09 09 09 09 5c 0a 20 20 20 20 28 5f 5f 61 ......\. (__a
ae20: 76 77 6f 72 64 2a 29 28 28 28 5f 5f 61 76 77 6f vword*)(((__avwo
ae30: 72 64 29 28 4c 49 53 54 29 2e 61 70 74 72 2b 28 rd)(LIST).aptr+(
ae40: 54 59 50 45 5f 53 49 5a 45 29 2b 28 54 59 50 45 TYPE_SIZE)+(TYPE
ae50: 5f 41 4c 49 47 4e 29 2d 31 29 20 26 20 2d 28 6c _ALIGN)-1) & -(l
ae60: 6f 6e 67 29 28 54 59 50 45 5f 41 4c 49 47 4e 29 ong)(TYPE_ALIGN)
ae70: 29 29 5c 0a 20 20 20 3e 20 5f 5f 61 76 5f 65 70 ))\. > __av_ep
ae80: 74 72 28 4c 49 53 54 29 09 09 09 09 09 09 09 5c tr(LIST).......\
ae90: 0a 20 20 20 3f 20 2d 31 20 3a 20 28 41 53 53 49 . ? -1 : (ASSI
aea0: 47 4e 28 54 59 50 45 2c 54 59 50 45 5f 53 49 5a GN(TYPE,TYPE_SIZ
aeb0: 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 28 76 6f E,TYPE_ALIGN,(vo
aec0: 69 64 2a 29 28 28 5f 5f 61 76 77 6f 72 64 29 28 id*)((__avword)(
aed0: 4c 49 53 54 29 2e 61 70 74 72 2d 28 54 59 50 45 LIST).aptr-(TYPE
aee0: 5f 53 49 5a 45 29 29 2c 56 41 4c 29 2c 5c 0a 09 _SIZE)),VAL),\..
aef0: 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72 20 3d (LIST).aptr =
af00: 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28 28 28 5f (__avword*)(((_
af10: 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e 61 _avword)(LIST).a
af20: 70 74 72 2b 73 69 7a 65 6f 66 28 5f 5f 61 76 77 ptr+sizeof(__avw
af30: 6f 72 64 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 ord)-1) & -(long
af40: 29 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 )sizeof(__avword
af50: 29 29 2c 5c 0a 09 20 20 20 28 28 4c 49 53 54 29 )),\.. ((LIST)
af60: 2e 61 6e 75 6d 20 3c 20 38 20 26 26 20 28 28 4c .anum < 8 && ((L
af70: 49 53 54 29 2e 64 61 72 67 5f 6d 61 73 6b 20 7c IST).darg_mask |
af80: 3d 20 28 2d 31 20 3c 3c 20 28 4c 49 53 54 29 2e = (-1 << (LIST).
af90: 61 6e 75 6d 29 29 29 2c 20 5c 0a 09 20 20 20 28 anum))), \.. (
afa0: 4c 49 53 54 29 2e 61 6e 75 6d 20 2b 3d 20 28 28 LIST).anum += ((
afb0: 28 28 28 54 59 50 45 5f 53 49 5a 45 29 2b 28 54 (((TYPE_SIZE)+(T
afc0: 59 50 45 5f 41 4c 49 47 4e 29 2d 31 29 20 26 20 YPE_ALIGN)-1) &
afd0: 2d 28 6c 6f 6e 67 29 28 54 59 50 45 5f 41 4c 49 -(long)(TYPE_ALI
afe0: 47 4e 29 29 20 2b 20 73 69 7a 65 6f 66 28 5f 5f GN)) + sizeof(__
aff0: 61 76 77 6f 72 64 29 2d 31 29 20 26 20 2d 28 6c avword)-1) & -(l
b000: 6f 6e 67 29 73 69 7a 65 6f 66 28 5f 5f 61 76 77 ong)sizeof(__avw
b010: 6f 72 64 29 29 2f 73 69 7a 65 6f 66 28 5f 5f 61 ord))/sizeof(__a
b020: 76 77 6f 72 64 29 2c 5c 0a 09 20 20 20 28 4c 49 vword),\.. (LI
b030: 53 54 29 2e 64 61 72 67 5f 6d 61 73 6b 20 26 3d ST).darg_mask &=
b040: 20 28 31 20 3c 3c 20 28 28 4c 49 53 54 29 2e 61 (1 << ((LIST).a
b050: 6e 75 6d 20 3c 20 38 20 3f 20 28 4c 49 53 54 29 num < 8 ? (LIST)
b060: 2e 61 6e 75 6d 20 3a 20 38 29 29 20 2d 20 31 2c .anum : 8)) - 1,
b070: 20 5c 0a 09 20 20 20 30 29 29 0a 23 64 65 66 69 \.. 0)).#defi
b080: 6e 65 20 5f 5f 61 76 5f 73 74 72 75 63 74 5f 72 ne __av_struct_r
b090: 69 67 68 74 61 64 6a 75 73 74 65 64 28 4c 49 53 ightadjusted(LIS
b0a0: 54 2c 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 T,TYPE,TYPE_SIZE
b0b0: 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49 ,TYPE_ALIGN,ASSI
b0c0: 47 4e 2c 56 41 4c 29 20 5c 0a 20 20 28 28 28 4c GN,VAL) \. (((L
b0d0: 49 53 54 29 2e 61 70 74 72 20 3d 09 09 09 09 09 IST).aptr =.....
b0e0: 09 09 5c 0a 20 20 20 20 28 5f 5f 61 76 77 6f 72 ..\. (__avwor
b0f0: 64 2a 29 28 28 28 28 28 5f 5f 61 76 77 6f 72 64 d*)(((((__avword
b100: 29 28 4c 49 53 54 29 2e 61 70 74 72 2b 28 54 59 )(LIST).aptr+(TY
b110: 50 45 5f 53 49 5a 45 29 2b 28 54 59 50 45 5f 41 PE_SIZE)+(TYPE_A
b120: 4c 49 47 4e 29 2d 31 29 20 26 20 2d 28 6c 6f 6e LIGN)-1) & -(lon
b130: 67 29 28 54 59 50 45 5f 41 4c 49 47 4e 29 29 5c g)(TYPE_ALIGN))\
b140: 0a 09 09 20 2b 73 69 7a 65 6f 66 28 5f 5f 61 76 ... +sizeof(__av
b150: 77 6f 72 64 29 2d 31 29 20 26 20 2d 28 6c 6f 6e word)-1) & -(lon
b160: 67 29 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 g)sizeof(__avwor
b170: 64 29 29 29 09 5c 0a 20 20 20 3e 20 5f 5f 61 76 d))).\. > __av
b180: 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09 09 09 _eptr(LIST).....
b190: 09 09 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 28 41 ..\. ? -1 : (A
b1a0: 53 53 49 47 4e 28 54 59 50 45 2c 54 59 50 45 5f SSIGN(TYPE,TYPE_
b1b0: 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c SIZE,TYPE_ALIGN,
b1c0: 28 76 6f 69 64 2a 29 28 28 5f 5f 61 76 77 6f 72 (void*)((__avwor
b1d0: 64 29 28 4c 49 53 54 29 2e 61 70 74 72 2d 28 54 d)(LIST).aptr-(T
b1e0: 59 50 45 5f 53 49 5a 45 29 29 2c 56 41 4c 29 2c YPE_SIZE)),VAL),
b1f0: 5c 0a 09 20 20 20 28 28 4c 49 53 54 29 2e 61 6e \.. ((LIST).an
b200: 75 6d 20 3c 20 38 20 26 26 20 28 28 4c 49 53 54 um < 8 && ((LIST
b210: 29 2e 64 61 72 67 5f 6d 61 73 6b 20 7c 3d 20 28 ).darg_mask |= (
b220: 2d 31 20 3c 3c 20 28 4c 49 53 54 29 2e 61 6e 75 -1 << (LIST).anu
b230: 6d 29 29 29 2c 20 5c 0a 09 20 20 20 28 4c 49 53 m))), \.. (LIS
b240: 54 29 2e 61 6e 75 6d 20 2b 3d 20 28 28 28 28 28 T).anum += (((((
b250: 54 59 50 45 5f 53 49 5a 45 29 2b 28 54 59 50 45 TYPE_SIZE)+(TYPE
b260: 5f 41 4c 49 47 4e 29 2d 31 29 20 26 20 2d 28 6c _ALIGN)-1) & -(l
b270: 6f 6e 67 29 28 54 59 50 45 5f 41 4c 49 47 4e 29 ong)(TYPE_ALIGN)
b280: 29 20 2b 20 73 69 7a 65 6f 66 28 5f 5f 61 76 77 ) + sizeof(__avw
b290: 6f 72 64 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 ord)-1) & -(long
b2a0: 29 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 )sizeof(__avword
b2b0: 29 29 2f 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f ))/sizeof(__avwo
b2c0: 72 64 29 2c 5c 0a 09 20 20 20 28 4c 49 53 54 29 rd),\.. (LIST)
b2d0: 2e 64 61 72 67 5f 6d 61 73 6b 20 26 3d 20 28 31 .darg_mask &= (1
b2e0: 20 3c 3c 20 28 28 4c 49 53 54 29 2e 61 6e 75 6d << ((LIST).anum
b2f0: 20 3c 20 38 20 3f 20 28 4c 49 53 54 29 2e 61 6e < 8 ? (LIST).an
b300: 75 6d 20 3a 20 38 29 29 20 2d 20 31 2c 20 5c 0a um : 8)) - 1, \.
b310: 09 20 20 20 30 29 29 0a 23 64 65 66 69 6e 65 20 . 0)).#define
b320: 5f 5f 61 76 5f 73 74 72 75 63 74 28 4c 49 53 54 __av_struct(LIST
b330: 2c 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c ,TYPE,TYPE_SIZE,
b340: 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47 TYPE_ALIGN,ASSIG
b350: 4e 2c 56 41 4c 29 09 09 5c 0a 20 20 28 28 4c 49 N,VAL)..\. ((LI
b360: 53 54 29 2e 66 6c 61 67 73 20 26 20 5f 5f 41 56 ST).flags & __AV
b370: 5f 53 47 49 43 43 5f 53 54 52 55 43 54 5f 41 52 _SGICC_STRUCT_AR
b380: 47 53 09 09 09 09 5c 0a 20 20 20 3f 20 2f 2a 20 GS....\. ? /*
b390: 53 47 49 20 4d 49 50 53 20 63 63 20 70 61 73 73 SGI MIPS cc pass
b3a0: 65 73 20 73 6d 61 6c 6c 20 73 74 72 75 63 74 75 es small structu
b3b0: 72 65 73 20 6c 65 66 74 2d 61 64 6a 75 73 74 65 res left-adjuste
b3c0: 64 2c 20 61 6c 74 68 6f 75 67 68 20 62 69 67 2d d, although big-
b3d0: 65 6e 64 69 61 6e 21 20 2a 2f 5c 0a 20 20 20 20 endian! */\.
b3e0: 20 5f 5f 61 76 5f 73 74 72 75 63 74 5f 6c 65 66 __av_struct_lef
b3f0: 74 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c 54 tadjusted(LIST,T
b400: 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 YPE,TYPE_SIZE,TY
b410: 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e 2c PE_ALIGN,ASSIGN,
b420: 56 41 4c 29 20 5c 0a 20 20 20 3a 20 2f 2a 20 53 VAL) \. : /* S
b430: 47 49 20 4d 49 50 53 20 67 63 63 20 70 61 73 73 GI MIPS gcc pass
b440: 65 73 20 73 6d 61 6c 6c 20 73 74 72 75 63 74 75 es small structu
b450: 72 65 73 20 72 69 67 68 74 2d 61 64 6a 75 73 74 res right-adjust
b460: 65 64 2e 20 2a 2f 09 09 5c 0a 20 20 20 20 20 5f ed. */..\. _
b470: 5f 61 76 5f 73 74 72 75 63 74 5f 72 69 67 68 74 _av_struct_right
b480: 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c 54 59 adjusted(LIST,TY
b490: 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 PE,TYPE_SIZE,TYP
b4a0: 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e 2c 56 E_ALIGN,ASSIGN,V
b4b0: 41 4c 29 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 AL)).#endif.#if
b4c0: 64 65 66 69 6e 65 64 28 5f 5f 72 73 36 30 30 30 defined(__rs6000
b4d0: 5f 5f 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 __).#define __av
b4e0: 5f 73 74 72 75 63 74 5f 6c 65 66 74 61 64 6a 75 _struct_leftadju
b4f0: 73 74 65 64 28 4c 49 53 54 2c 54 59 50 45 2c 54 sted(LIST,TYPE,T
b500: 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c YPE_SIZE,TYPE_AL
b510: 49 47 4e 2c 41 53 53 49 47 4e 2c 56 41 4c 29 5c IGN,ASSIGN,VAL)\
b520: 0a 20 20 28 28 28 4c 49 53 54 29 2e 61 70 74 72 . (((LIST).aptr
b530: 20 3d 09 09 09 09 09 09 09 5c 0a 20 20 20 20 28 =.......\. (
b540: 5f 5f 61 76 77 6f 72 64 2a 29 28 28 28 5f 5f 61 __avword*)(((__a
b550: 76 77 6f 72 64 29 28 4c 49 53 54 29 2e 61 70 74 vword)(LIST).apt
b560: 72 2b 28 54 59 50 45 5f 53 49 5a 45 29 2b 28 54 r+(TYPE_SIZE)+(T
b570: 59 50 45 5f 41 4c 49 47 4e 29 2d 31 29 20 26 20 YPE_ALIGN)-1) &
b580: 2d 28 6c 6f 6e 67 29 28 54 59 50 45 5f 41 4c 49 -(long)(TYPE_ALI
b590: 47 4e 29 29 29 5c 0a 20 20 20 3e 20 5f 5f 61 76 GN)))\. > __av
b5a0: 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09 09 09 _eptr(LIST).....
b5b0: 09 09 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 28 41 ..\. ? -1 : (A
b5c0: 53 53 49 47 4e 28 54 59 50 45 2c 54 59 50 45 5f SSIGN(TYPE,TYPE_
b5d0: 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c SIZE,TYPE_ALIGN,
b5e0: 28 76 6f 69 64 2a 29 28 28 5f 5f 61 76 77 6f 72 (void*)((__avwor
b5f0: 64 29 28 4c 49 53 54 29 2e 61 70 74 72 2d 28 54 d)(LIST).aptr-(T
b600: 59 50 45 5f 53 49 5a 45 29 29 2c 56 41 4c 29 2c YPE_SIZE)),VAL),
b610: 5c 0a 09 20 20 20 28 4c 49 53 54 29 2e 61 70 74 \.. (LIST).apt
b620: 72 20 3d 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28 r = (__avword*)(
b630: 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 ((__avword)(LIST
b640: 29 2e 61 70 74 72 2b 73 69 7a 65 6f 66 28 5f 5f ).aptr+sizeof(__
b650: 61 76 77 6f 72 64 29 2d 31 29 20 26 20 2d 28 6c avword)-1) & -(l
b660: 6f 6e 67 29 73 69 7a 65 6f 66 28 5f 5f 61 76 77 ong)sizeof(__avw
b670: 6f 72 64 29 29 2c 5c 0a 09 20 20 20 30 29 29 0a ord)),\.. 0)).
b680: 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 72 #define __av_str
b690: 75 63 74 5f 72 69 67 68 74 61 64 6a 75 73 74 65 uct_rightadjuste
b6a0: 64 28 4c 49 53 54 2c 54 59 50 45 2c 54 59 50 45 d(LIST,TYPE,TYPE
b6b0: 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e _SIZE,TYPE_ALIGN
b6c0: 2c 41 53 53 49 47 4e 2c 56 41 4c 29 5c 0a 20 20 ,ASSIGN,VAL)\.
b6d0: 28 28 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 09 (((LIST).aptr =.
b6e0: 09 09 09 09 09 09 5c 0a 20 20 20 20 28 5f 5f 61 ......\. (__a
b6f0: 76 77 6f 72 64 2a 29 28 28 28 28 28 5f 5f 61 76 vword*)(((((__av
b700: 77 6f 72 64 29 28 4c 49 53 54 29 2e 61 70 74 72 word)(LIST).aptr
b710: 2b 28 54 59 50 45 5f 53 49 5a 45 29 2b 28 54 59 +(TYPE_SIZE)+(TY
b720: 50 45 5f 41 4c 49 47 4e 29 2d 31 29 20 26 20 2d PE_ALIGN)-1) & -
b730: 28 6c 6f 6e 67 29 28 54 59 50 45 5f 41 4c 49 47 (long)(TYPE_ALIG
b740: 4e 29 29 5c 0a 09 09 20 2b 73 69 7a 65 6f 66 28 N))\... +sizeof(
b750: 5f 5f 61 76 77 6f 72 64 29 2d 31 29 20 26 20 2d __avword)-1) & -
b760: 28 6c 6f 6e 67 29 73 69 7a 65 6f 66 28 5f 5f 61 (long)sizeof(__a
b770: 76 77 6f 72 64 29 29 29 09 5c 0a 20 20 20 3e 20 vword))).\. >
b780: 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29 09 __av_eptr(LIST).
b790: 09 09 09 09 09 09 5c 0a 20 20 20 3f 20 2d 31 20 ......\. ? -1
b7a0: 3a 20 28 41 53 53 49 47 4e 28 54 59 50 45 2c 54 : (ASSIGN(TYPE,T
b7b0: 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c YPE_SIZE,TYPE_AL
b7c0: 49 47 4e 2c 28 76 6f 69 64 2a 29 28 28 5f 5f 61 IGN,(void*)((__a
b7d0: 76 77 6f 72 64 29 28 4c 49 53 54 29 2e 61 70 74 vword)(LIST).apt
b7e0: 72 2d 28 54 59 50 45 5f 53 49 5a 45 29 29 2c 56 r-(TYPE_SIZE)),V
b7f0: 41 4c 29 2c 5c 0a 09 20 20 20 30 29 29 0a 23 64 AL),\.. 0)).#d
b800: 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 72 75 63 efine __av_struc
b810: 74 28 4c 49 53 54 2c 54 59 50 45 2c 54 59 50 45 t(LIST,TYPE,TYPE
b820: 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e _SIZE,TYPE_ALIGN
b830: 2c 41 53 53 49 47 4e 2c 56 41 4c 29 09 09 5c 0a ,ASSIGN,VAL)..\.
b840: 20 20 28 28 4c 49 53 54 29 2e 66 6c 61 67 73 20 ((LIST).flags
b850: 26 20 5f 5f 41 56 5f 41 49 58 43 43 5f 53 54 52 & __AV_AIXCC_STR
b860: 55 43 54 5f 41 52 47 53 09 09 09 09 5c 0a 20 20 UCT_ARGS....\.
b870: 20 3f 20 2f 2a 20 41 49 58 20 63 63 20 61 6e 64 ? /* AIX cc and
b880: 20 78 6c 63 20 70 61 73 73 20 73 6d 61 6c 6c 20 xlc pass small
b890: 73 74 72 75 63 74 75 72 65 73 20 6c 65 66 74 2d structures left-
b8a0: 61 64 6a 75 73 74 65 64 2c 20 61 6c 74 68 6f 75 adjusted, althou
b8b0: 67 68 20 62 69 67 2d 65 6e 64 69 61 6e 21 20 2a gh big-endian! *
b8c0: 2f 5c 0a 20 20 20 20 20 5f 5f 61 76 5f 73 74 72 /\. __av_str
b8d0: 75 63 74 5f 6c 65 66 74 61 64 6a 75 73 74 65 64 uct_leftadjusted
b8e0: 28 4c 49 53 54 2c 54 59 50 45 2c 54 59 50 45 5f (LIST,TYPE,TYPE_
b8f0: 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c SIZE,TYPE_ALIGN,
b900: 41 53 53 49 47 4e 2c 56 41 4c 29 20 5c 0a 20 20 ASSIGN,VAL) \.
b910: 20 3a 20 2f 2a 20 67 63 63 20 70 61 73 73 65 73 : /* gcc passes
b920: 20 73 6d 61 6c 6c 20 73 74 72 75 63 74 75 72 65 small structure
b930: 73 20 72 69 67 68 74 2d 61 64 6a 75 73 74 65 64 s right-adjusted
b940: 2e 20 2a 2f 09 09 09 5c 0a 20 20 20 20 20 5f 5f . */...\. __
b950: 61 76 5f 73 74 72 75 63 74 5f 72 69 67 68 74 61 av_struct_righta
b960: 64 6a 75 73 74 65 64 28 4c 49 53 54 2c 54 59 50 djusted(LIST,TYP
b970: 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 E,TYPE_SIZE,TYPE
b980: 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e 2c 56 41 _ALIGN,ASSIGN,VA
b990: 4c 29 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 L)).#endif.#if d
b9a0: 65 66 69 6e 65 64 28 5f 5f 73 33 39 30 5f 5f 29 efined(__s390__)
b9b0: 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 .#define __av_st
b9c0: 72 75 63 74 5f 72 69 67 68 74 61 64 6a 75 73 74 ruct_rightadjust
b9d0: 65 64 28 4c 49 53 54 2c 54 59 50 45 2c 54 59 50 ed(LIST,TYPE,TYP
b9e0: 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 E_SIZE,TYPE_ALIG
b9f0: 4e 2c 41 53 53 49 47 4e 2c 56 41 4c 29 5c 0a 20 N,ASSIGN,VAL)\.
ba00: 20 28 28 28 4c 49 53 54 29 2e 61 70 74 72 20 3d (((LIST).aptr =
ba10: 09 09 09 09 09 09 09 5c 0a 20 20 20 20 28 5f 5f .......\. (__
ba20: 61 76 77 6f 72 64 2a 29 28 28 28 28 28 5f 5f 61 avword*)(((((__a
ba30: 76 77 6f 72 64 29 28 4c 49 53 54 29 2e 61 70 74 vword)(LIST).apt
ba40: 72 2b 28 54 59 50 45 5f 53 49 5a 45 29 2b 28 54 r+(TYPE_SIZE)+(T
ba50: 59 50 45 5f 41 4c 49 47 4e 29 2d 31 29 20 26 20 YPE_ALIGN)-1) &
ba60: 2d 28 6c 6f 6e 67 29 28 54 59 50 45 5f 41 4c 49 -(long)(TYPE_ALI
ba70: 47 4e 29 29 5c 0a 09 09 20 2b 73 69 7a 65 6f 66 GN))\... +sizeof
ba80: 28 5f 5f 61 76 77 6f 72 64 29 2d 31 29 20 26 20 (__avword)-1) &
ba90: 2d 28 6c 6f 6e 67 29 73 69 7a 65 6f 66 28 5f 5f -(long)sizeof(__
baa0: 61 76 77 6f 72 64 29 29 29 09 5c 0a 20 20 20 3e avword))).\. >
bab0: 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29 __av_eptr(LIST)
bac0: 09 09 09 09 09 09 09 5c 0a 20 20 20 3f 20 2d 31 .......\. ? -1
bad0: 20 3a 20 28 41 53 53 49 47 4e 28 54 59 50 45 2c : (ASSIGN(TYPE,
bae0: 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 TYPE_SIZE,TYPE_A
baf0: 4c 49 47 4e 2c 28 76 6f 69 64 2a 29 28 28 5f 5f LIGN,(void*)((__
bb00: 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e 61 70 avword)(LIST).ap
bb10: 74 72 2d 28 54 59 50 45 5f 53 49 5a 45 29 29 2c tr-(TYPE_SIZE)),
bb20: 56 41 4c 29 2c 5c 0a 09 20 20 20 30 29 29 0a 23 VAL),\.. 0)).#
bb30: 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 72 75 define __av_stru
bb40: 63 74 28 4c 49 53 54 2c 54 59 50 45 2c 54 59 50 ct(LIST,TYPE,TYP
bb50: 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 E_SIZE,TYPE_ALIG
bb60: 4e 2c 41 53 53 49 47 4e 2c 56 41 4c 29 09 09 5c N,ASSIGN,VAL)..\
bb70: 0a 28 28 54 59 50 45 5f 53 49 5a 45 29 20 21 3d .((TYPE_SIZE) !=
bb80: 20 31 20 26 26 20 28 54 59 50 45 5f 53 49 5a 45 1 && (TYPE_SIZE
bb90: 29 20 21 3d 20 32 20 26 26 20 28 54 59 50 45 5f ) != 2 && (TYPE_
bba0: 53 49 5a 45 29 20 21 3d 20 34 20 26 26 20 28 54 SIZE) != 4 && (T
bbb0: 59 50 45 5f 53 49 5a 45 29 20 21 3d 20 38 20 5c YPE_SIZE) != 8 \
bbc0: 0a 20 3f 20 28 2b 2b 28 4c 49 53 54 29 2e 61 70 . ? (++(LIST).ap
bbd0: 74 72 09 09 09 09 09 09 09 5c 0a 20 20 20 20 3e tr.......\. >
bbe0: 20 28 28 4c 49 53 54 29 2e 65 70 74 72 20 3d 20 ((LIST).eptr =
bbf0: 28 5f 5f 61 76 77 6f 72 64 2a 29 28 28 6c 6f 6e (__avword*)((lon
bc00: 67 29 28 4c 49 53 54 29 2e 65 70 74 72 20 2d 20 g)(LIST).eptr -
bc10: 28 28 28 54 59 50 45 5f 53 49 5a 45 29 2b 37 29 (((TYPE_SIZE)+7)
bc20: 26 2d 38 29 29 29 5c 0a 20 20 20 20 3f 20 2d 31 &-8)))\. ? -1
bc30: 20 3a 09 09 09 09 09 09 09 09 5c 0a 20 20 20 20 :........\.
bc40: 28 41 53 53 49 47 4e 28 54 59 50 45 2c 54 59 50 (ASSIGN(TYPE,TYP
bc50: 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 E_SIZE,TYPE_ALIG
bc60: 4e 2c 28 76 6f 69 64 2a 29 28 4c 49 53 54 29 2e N,(void*)(LIST).
bc70: 65 70 74 72 2c 56 41 4c 29 2c 09 09 5c 0a 20 20 eptr,VAL),..\.
bc80: 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72 5b 2d (LIST).aptr[-
bc90: 31 5d 20 3d 20 28 5f 5f 61 76 77 6f 72 64 29 28 1] = (__avword)(
bca0: 4c 49 53 54 29 2e 65 70 74 72 2c 09 09 09 09 5c LIST).eptr,....\
bcb0: 0a 20 20 20 20 20 30 29 29 09 09 09 09 09 09 09 . 0)).......
bcc0: 09 5c 0a 20 3a 20 28 28 28 54 59 50 45 5f 53 49 .\. : (((TYPE_SI
bcd0: 5a 45 29 20 3d 3d 20 38 20 26 26 20 28 4c 49 53 ZE) == 8 && (LIS
bce0: 54 29 2e 61 70 74 72 20 2d 20 28 4c 49 53 54 29 T).aptr - (LIST)
bcf0: 2e 61 72 67 73 20 2d 20 28 4c 49 53 54 29 2e 66 .args - (LIST).f
bd00: 61 72 67 77 6f 72 64 73 20 3d 3d 20 34 20 3f 20 argwords == 4 ?
bd10: 2b 2b 28 4c 49 53 54 29 2e 61 70 74 72 2c 30 20 ++(LIST).aptr,0
bd20: 3a 20 30 29 2c 20 5c 0a 20 20 20 20 5f 5f 61 76 : 0), \. __av
bd30: 5f 73 74 72 75 63 74 5f 72 69 67 68 74 61 64 6a _struct_rightadj
bd40: 75 73 74 65 64 28 4c 49 53 54 2c 54 59 50 45 2c usted(LIST,TYPE,
bd50: 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 TYPE_SIZE,TYPE_A
bd60: 4c 49 47 4e 2c 41 53 53 49 47 4e 2c 56 41 4c 29 LIGN,ASSIGN,VAL)
bd70: 29 29 0a 23 65 6e 64 69 66 0a 2f 2a 20 62 69 67 )).#endif./* big
bd80: 20 65 6e 64 69 61 6e 20 2d 3e 20 73 6d 61 6c 6c endian -> small
bd90: 20 73 74 72 75 63 74 75 72 65 73 20 3c 20 31 20 structures < 1
bda0: 77 6f 72 64 20 61 72 65 20 61 64 6a 75 73 74 65 word are adjuste
bdb0: 64 20 74 6f 20 74 68 65 20 72 69 67 68 74 20 2a d to the right *
bdc0: 2f 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f /.#if defined(__
bdd0: 6d 38 38 6b 5f 5f 29 0a 23 64 65 66 69 6e 65 20 m88k__).#define
bde0: 5f 5f 61 76 5f 73 74 72 75 63 74 28 4c 49 53 54 __av_struct(LIST
bdf0: 2c 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c ,TYPE,TYPE_SIZE,
be00: 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47 TYPE_ALIGN,ASSIG
be10: 4e 2c 56 41 4c 29 09 09 5c 0a 20 20 28 28 28 4c N,VAL)..\. (((L
be20: 49 53 54 29 2e 61 70 74 72 20 3d 09 09 09 09 09 IST).aptr =.....
be30: 09 09 5c 0a 20 20 20 20 28 5f 5f 61 76 77 6f 72 ..\. (__avwor
be40: 64 2a 29 28 28 28 28 28 5f 5f 61 76 77 6f 72 64 d*)(((((__avword
be50: 29 28 4c 49 53 54 29 2e 61 70 74 72 2b 28 54 59 )(LIST).aptr+(TY
be60: 50 45 5f 53 49 5a 45 29 2b 28 54 59 50 45 5f 41 PE_SIZE)+(TYPE_A
be70: 4c 49 47 4e 29 2d 31 29 20 26 20 2d 28 6c 6f 6e LIGN)-1) & -(lon
be80: 67 29 28 54 59 50 45 5f 41 4c 49 47 4e 29 29 5c g)(TYPE_ALIGN))\
be90: 0a 09 09 20 2b 73 69 7a 65 6f 66 28 5f 5f 61 76 ... +sizeof(__av
bea0: 77 6f 72 64 29 2d 31 29 20 26 20 2d 28 6c 6f 6e word)-1) & -(lon
beb0: 67 29 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 g)sizeof(__avwor
bec0: 64 29 29 29 09 5c 0a 20 20 20 3e 20 5f 5f 61 76 d))).\. > __av
bed0: 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09 09 09 _eptr(LIST).....
bee0: 09 09 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 28 41 ..\. ? -1 : (A
bef0: 53 53 49 47 4e 28 54 59 50 45 2c 54 59 50 45 5f SSIGN(TYPE,TYPE_
bf00: 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c SIZE,TYPE_ALIGN,
bf10: 28 76 6f 69 64 2a 29 28 28 5f 5f 61 76 77 6f 72 (void*)((__avwor
bf20: 64 29 28 4c 49 53 54 29 2e 61 70 74 72 2d 28 54 d)(LIST).aptr-(T
bf30: 59 50 45 5f 53 49 5a 45 29 29 2c 56 41 4c 29 2c YPE_SIZE)),VAL),
bf40: 5c 0a 09 20 20 20 30 29 29 0a 23 65 6e 64 69 66 \.. 0)).#endif
bf50: 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 .#endif.#if defi
bf60: 6e 65 64 28 5f 5f 6d 36 38 6b 5f 5f 29 20 7c 7c ned(__m68k__) ||
bf70: 20 64 65 66 69 6e 65 64 28 5f 5f 61 72 6d 5f 5f defined(__arm__
bf80: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 63 ) || defined(__c
bf90: 6f 6e 76 65 78 5f 5f 29 0a 2f 2a 20 53 74 72 75 onvex__)./* Stru
bfa0: 63 74 75 72 65 73 20 61 72 65 20 70 61 73 73 65 ctures are passe
bfb0: 64 20 61 73 20 65 6d 62 65 64 64 65 64 20 63 6f d as embedded co
bfc0: 70 69 65 73 20 6f 6e 20 74 68 65 20 61 72 67 20 pies on the arg
bfd0: 73 74 61 63 6b 2e 0a 20 2a 2f 0a 23 64 65 66 69 stack.. */.#defi
bfe0: 6e 65 20 5f 5f 61 76 5f 73 74 72 75 63 74 28 4c ne __av_struct(L
bff0: 49 53 54 2c 54 59 50 45 2c 54 59 50 45 5f 53 49 IST,TYPE,TYPE_SI
c000: 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53 ZE,TYPE_ALIGN,AS
c010: 53 49 47 4e 2c 56 41 4c 29 09 09 5c 0a 20 20 28 SIGN,VAL)..\. (
c020: 28 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 28 ((LIST).aptr = (
c030: 5f 5f 61 76 77 6f 72 64 2a 29 28 28 28 6c 6f 6e __avword*)(((lon
c040: 67 29 28 4c 49 53 54 29 2e 61 70 74 72 2b 28 54 g)(LIST).aptr+(T
c050: 59 50 45 5f 53 49 5a 45 29 2b 73 69 7a 65 6f 66 YPE_SIZE)+sizeof
c060: 28 5f 5f 61 76 77 6f 72 64 29 2d 31 29 20 26 20 (__avword)-1) &
c070: 2d 28 6c 6f 6e 67 29 73 69 7a 65 6f 66 28 5f 5f -(long)sizeof(__
c080: 61 76 77 6f 72 64 29 29 29 20 5c 0a 20 20 20 20 avword))) \.
c090: 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 > __av_eptr(LIST
c0a0: 29 09 09 09 09 09 09 09 5c 0a 20 20 20 20 3f 20 ).......\. ?
c0b0: 2d 31 20 3a 20 28 41 53 53 49 47 4e 28 54 59 50 -1 : (ASSIGN(TYP
c0c0: 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 E,TYPE_SIZE,TYPE
c0d0: 5f 41 4c 49 47 4e 2c 28 76 6f 69 64 2a 29 28 28 _ALIGN,(void*)((
c0e0: 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e __avword)(LIST).
c0f0: 61 70 74 72 2d 28 54 59 50 45 5f 53 49 5a 45 29 aptr-(TYPE_SIZE)
c100: 29 2c 56 41 4c 29 2c 5c 0a 09 20 20 20 20 30 29 ),VAL),\.. 0)
c110: 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 28 64 65 ).#endif.#if (de
c120: 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f 5f 29 fined(__sparc__)
c130: 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 73 && !defined(__s
c140: 70 61 72 63 36 34 5f 5f 29 29 20 7c 7c 20 28 64 parc64__)) || (d
c150: 65 66 69 6e 65 64 28 5f 5f 72 73 36 30 30 30 5f efined(__rs6000_
c160: 5f 29 20 26 26 20 21 28 64 65 66 69 6e 65 64 28 _) && !(defined(
c170: 5f 41 49 58 29 20 7c 7c 20 28 64 65 66 69 6e 65 _AIX) || (define
c180: 64 28 5f 5f 4d 41 43 48 5f 5f 29 20 26 26 20 64 d(__MACH__) && d
c190: 65 66 69 6e 65 64 28 5f 5f 41 50 50 4c 45 5f 5f efined(__APPLE__
c1a0: 29 29 29 29 0a 2f 2a 20 53 74 72 75 63 74 75 72 ))))./* Structur
c1b0: 65 73 20 61 72 65 20 70 61 73 73 65 64 20 61 73 es are passed as
c1c0: 20 70 6f 69 6e 74 65 72 73 20 74 6f 20 63 61 6c pointers to cal
c1d0: 6c 65 72 2d 6d 61 64 65 20 6c 6f 63 61 6c 20 63 ler-made local c
c1e0: 6f 70 69 65 73 2e 20 57 65 0a 20 2a 20 67 72 61 opies. We. * gra
c1f0: 62 20 73 70 61 63 65 20 66 6f 72 20 74 68 65 20 b space for the
c200: 63 6f 70 69 65 73 20 66 72 6f 6d 20 74 68 65 20 copies from the
c210: 65 6e 64 20 6f 66 20 74 68 65 20 61 72 67 75 6d end of the argum
c220: 65 6e 74 20 6c 69 73 74 20 73 70 61 63 65 0a 20 ent list space.
c230: 2a 20 61 6e 64 20 61 6c 77 61 79 73 20 75 73 65 * and always use
c240: 20 6d 61 78 69 6d 61 6c 20 28 64 6f 75 62 6c 65 maximal (double
c250: 29 20 61 6c 69 67 6e 6d 65 6e 74 2e 0a 20 2a 2f ) alignment.. */
c260: 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 .#define __av_st
c270: 72 75 63 74 28 4c 49 53 54 2c 54 59 50 45 2c 54 ruct(LIST,TYPE,T
c280: 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c YPE_SIZE,TYPE_AL
c290: 49 47 4e 2c 41 53 53 49 47 4e 2c 56 41 4c 29 09 IGN,ASSIGN,VAL).
c2a0: 09 5c 0a 20 20 20 28 2b 2b 28 4c 49 53 54 29 2e .\. (++(LIST).
c2b0: 61 70 74 72 09 09 09 09 09 09 09 5c 0a 20 20 20 aptr.......\.
c2c0: 20 3e 20 28 28 4c 49 53 54 29 2e 65 70 74 72 20 > ((LIST).eptr
c2d0: 3d 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28 28 6c = (__avword*)((l
c2e0: 6f 6e 67 29 28 4c 49 53 54 29 2e 65 70 74 72 20 ong)(LIST).eptr
c2f0: 2d 20 28 28 28 54 59 50 45 5f 53 49 5a 45 29 2b - (((TYPE_SIZE)+
c300: 37 29 26 2d 38 29 29 29 5c 0a 20 20 20 20 3f 20 7)&-8)))\. ?
c310: 2d 31 20 3a 09 09 09 09 09 09 09 09 5c 0a 20 20 -1 :........\.
c320: 20 20 28 41 53 53 49 47 4e 28 54 59 50 45 2c 54 (ASSIGN(TYPE,T
c330: 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c YPE_SIZE,TYPE_AL
c340: 49 47 4e 2c 28 76 6f 69 64 2a 29 28 4c 49 53 54 IGN,(void*)(LIST
c350: 29 2e 65 70 74 72 2c 56 41 4c 29 2c 09 09 5c 0a ).eptr,VAL),..\.
c360: 20 20 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72 (LIST).aptr
c370: 5b 2d 31 5d 20 3d 20 28 5f 5f 61 76 77 6f 72 64 [-1] = (__avword
c380: 29 28 4c 49 53 54 29 2e 65 70 74 72 2c 09 09 09 )(LIST).eptr,...
c390: 09 5c 0a 20 20 20 20 20 30 29 29 0a 23 65 6e 64 .\. 0)).#end
c3a0: 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f if.#if defined(_
c3b0: 5f 73 70 61 72 63 36 34 5f 5f 29 0a 2f 2a 20 53 _sparc64__)./* S
c3c0: 74 72 75 63 74 75 72 65 73 20 3c 3d 20 31 36 20 tructures <= 16
c3d0: 62 79 74 65 73 20 61 72 65 20 70 61 73 73 65 64 bytes are passed
c3e0: 20 61 73 20 65 6d 62 65 64 64 65 64 20 63 6f 70 as embedded cop
c3f0: 69 65 73 20 6f 6e 20 74 68 65 20 61 72 67 20 73 ies on the arg s
c400: 74 61 63 6b 2c 0a 20 2a 20 6c 65 66 74 2d 61 64 tack,. * left-ad
c410: 6a 75 73 74 65 64 20 28 61 6c 74 68 6f 75 67 68 justed (although
c420: 20 62 69 67 2d 65 6e 64 69 61 6e 21 29 2e 0a 20 big-endian!)..
c430: 2a 20 57 68 65 6e 20 61 20 73 74 72 75 63 74 75 * When a structu
c440: 72 65 20 69 73 20 70 61 73 73 65 64 20 28 70 61 re is passed (pa
c450: 72 74 69 61 6c 6c 79 29 20 69 6e 20 72 65 67 69 rtially) in regi
c460: 73 74 65 72 73 2c 20 69 74 20 69 73 20 70 61 73 sters, it is pas
c470: 73 65 64 20 69 6e 20 74 68 65 0a 20 2a 20 69 6e sed in the. * in
c480: 74 65 67 65 72 20 72 65 67 69 73 74 65 72 73 2c teger registers,
c490: 20 65 78 63 65 70 74 20 74 68 61 74 20 66 6c 6f except that flo
c4a0: 61 74 73 20 61 6e 64 20 64 6f 75 62 6c 65 73 20 ats and doubles
c4b0: 77 69 74 68 69 6e 20 74 68 65 20 73 74 72 75 63 within the struc
c4c0: 74 75 72 65 0a 20 2a 20 61 72 65 20 70 61 73 73 ture. * are pass
c4d0: 65 64 20 69 6e 20 74 68 65 20 66 6c 6f 61 74 69 ed in the floati
c4e0: 6e 67 20 70 6f 69 6e 74 20 72 65 67 69 73 74 65 ng point registe
c4f0: 72 73 2e 20 49 6e 73 74 65 61 64 20 6f 66 20 64 rs. Instead of d
c500: 69 73 74 69 6e 67 75 69 73 68 69 6e 67 0a 20 2a istinguishing. *
c510: 20 74 68 65 73 65 20 63 61 73 65 73 2c 20 77 65 these cases, we
c520: 20 61 6c 77 61 79 73 20 70 61 73 73 20 74 68 65 always pass the
c530: 20 73 74 72 75 63 74 75 72 65 20 69 6e 20 62 6f structure in bo
c540: 74 68 20 74 68 65 20 69 6e 74 65 67 65 72 20 61 th the integer a
c550: 6e 64 20 74 68 65 0a 20 2a 20 66 6c 6f 61 74 69 nd the. * floati
c560: 6e 67 20 70 6f 69 6e 74 20 72 65 67 69 73 74 65 ng point registe
c570: 72 73 2e 0a 20 2a 20 42 69 67 20 73 74 72 75 63 rs.. * Big struc
c580: 74 75 72 65 73 20 61 72 65 20 70 61 73 73 65 64 tures are passed
c590: 20 61 73 20 70 6f 69 6e 74 65 72 73 20 74 6f 20 as pointers to
c5a0: 63 61 6c 6c 65 72 2d 6d 61 64 65 20 6c 6f 63 61 caller-made loca
c5b0: 6c 20 63 6f 70 69 65 73 2e 0a 20 2a 20 46 49 58 l copies.. * FIX
c5c0: 4d 45 3a 20 53 68 6f 75 6c 64 6e 27 74 20 28 4c ME: Shouldn't (L
c5d0: 49 53 54 29 2e 61 6e 75 6d 20 62 65 20 69 6e 63 IST).anum be inc
c5e0: 72 65 6d 65 6e 74 65 64 20 69 6e 20 73 79 6e 63 remented in sync
c5f0: 20 77 69 74 68 20 28 4c 49 53 54 29 2e 61 70 74 with (LIST).apt
c600: 72 20 3f 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 r ?. */.#define
c610: 5f 5f 61 76 5f 73 74 72 75 63 74 28 4c 49 53 54 __av_struct(LIST
c620: 2c 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c ,TYPE,TYPE_SIZE,
c630: 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47 TYPE_ALIGN,ASSIG
c640: 4e 2c 56 41 4c 29 09 09 5c 0a 20 20 28 28 54 59 N,VAL)..\. ((TY
c650: 50 45 5f 53 49 5a 45 29 20 3e 20 31 36 09 09 09 PE_SIZE) > 16...
c660: 09 09 09 09 5c 0a 20 20 20 3f 20 28 2b 2b 28 4c ....\. ? (++(L
c670: 49 53 54 29 2e 61 70 74 72 09 09 09 09 09 09 09 IST).aptr.......
c680: 5c 0a 20 20 20 20 20 20 3e 20 28 28 4c 49 53 54 \. > ((LIST
c690: 29 2e 65 70 74 72 20 3d 20 28 5f 5f 61 76 77 6f ).eptr = (__avwo
c6a0: 72 64 2a 29 28 28 6c 6f 6e 67 29 28 4c 49 53 54 rd*)((long)(LIST
c6b0: 29 2e 65 70 74 72 20 2d 20 28 28 28 54 59 50 45 ).eptr - (((TYPE
c6c0: 5f 53 49 5a 45 29 2b 37 29 26 2d 38 29 29 29 5c _SIZE)+7)&-8)))\
c6d0: 0a 20 20 20 20 20 20 3f 20 2d 31 20 3a 09 09 09 . ? -1 :...
c6e0: 09 09 09 09 09 5c 0a 20 20 20 20 20 20 28 41 53 .....\. (AS
c6f0: 53 49 47 4e 28 54 59 50 45 2c 54 59 50 45 5f 53 SIGN(TYPE,TYPE_S
c700: 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 28 IZE,TYPE_ALIGN,(
c710: 76 6f 69 64 2a 29 28 4c 49 53 54 29 2e 65 70 74 void*)(LIST).ept
c720: 72 2c 56 41 4c 29 2c 09 5c 0a 20 20 20 20 20 20 r,VAL),.\.
c730: 20 28 4c 49 53 54 29 2e 61 70 74 72 5b 2d 31 5d (LIST).aptr[-1]
c740: 20 3d 20 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 = (__avword)(LI
c750: 53 54 29 2e 65 70 74 72 2c 09 09 09 09 5c 0a 20 ST).eptr,....\.
c760: 20 20 20 20 20 20 30 29 29 09 09 09 09 09 09 09 0)).......
c770: 09 5c 0a 20 20 20 3a 20 28 28 28 4c 49 53 54 29 .\. : (((LIST)
c780: 2e 61 70 74 72 20 3d 09 09 09 09 09 09 09 5c 0a .aptr =.......\.
c790: 20 20 20 20 20 20 20 28 5f 5f 61 76 77 6f 72 64 (__avword
c7a0: 2a 29 28 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c *)(((__avword)(L
c7b0: 49 53 54 29 2e 61 70 74 72 2b 28 54 59 50 45 5f IST).aptr+(TYPE_
c7c0: 53 49 5a 45 29 2b 28 54 59 50 45 5f 41 4c 49 47 SIZE)+(TYPE_ALIG
c7d0: 4e 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 28 N)-1) & -(long)(
c7e0: 54 59 50 45 5f 41 4c 49 47 4e 29 29 29 5c 0a 20 TYPE_ALIGN)))\.
c7f0: 20 20 20 20 20 3e 20 5f 5f 61 76 5f 65 70 74 72 > __av_eptr
c800: 28 4c 49 53 54 29 09 09 09 09 09 09 09 5c 0a 20 (LIST).......\.
c810: 20 20 20 20 20 3f 20 2d 31 20 3a 20 28 41 53 53 ? -1 : (ASS
c820: 49 47 4e 28 54 59 50 45 2c 54 59 50 45 5f 53 49 IGN(TYPE,TYPE_SI
c830: 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 28 76 ZE,TYPE_ALIGN,(v
c840: 6f 69 64 2a 29 28 28 5f 5f 61 76 77 6f 72 64 29 oid*)((__avword)
c850: 28 4c 49 53 54 29 2e 61 70 74 72 2d 28 54 59 50 (LIST).aptr-(TYP
c860: 45 5f 53 49 5a 45 29 29 2c 56 41 4c 29 2c 5c 0a E_SIZE)),VAL),\.
c870: 09 20 20 20 20 20 20 28 4c 49 53 54 29 2e 61 70 . (LIST).ap
c880: 74 72 20 3d 20 28 5f 5f 61 76 77 6f 72 64 2a 29 tr = (__avword*)
c890: 28 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 (((__avword)(LIS
c8a0: 54 29 2e 61 70 74 72 2b 73 69 7a 65 6f 66 28 5f T).aptr+sizeof(_
c8b0: 5f 61 76 77 6f 72 64 29 2d 31 29 20 26 20 2d 28 _avword)-1) & -(
c8c0: 6c 6f 6e 67 29 73 69 7a 65 6f 66 28 5f 5f 61 76 long)sizeof(__av
c8d0: 77 6f 72 64 29 29 2c 5c 0a 09 20 20 20 20 20 20 word)),\..
c8e0: 28 28 4c 49 53 54 29 2e 61 6e 75 6d 20 3c 20 31 ((LIST).anum < 1
c8f0: 36 09 09 09 09 09 09 5c 0a 09 09 26 26 20 28 28 6......\...&& ((
c900: 4c 49 53 54 29 2e 66 61 72 67 5f 6d 61 73 6b 20 LIST).farg_mask
c910: 7c 3d 20 28 2d 31 20 3c 3c 20 28 4c 49 53 54 29 |= (-1 << (LIST)
c920: 2e 61 6e 75 6d 29 2c 09 09 5c 0a 09 09 20 20 20 .anum),..\...
c930: 20 28 4c 49 53 54 29 2e 64 61 72 67 5f 6d 61 73 (LIST).darg_mas
c940: 6b 20 7c 3d 20 28 2d 31 20 3c 3c 20 28 4c 49 53 k |= (-1 << (LIS
c950: 54 29 2e 61 6e 75 6d 29 29 29 2c 09 09 5c 0a 09 T).anum))),..\..
c960: 20 20 20 20 20 20 28 4c 49 53 54 29 2e 61 6e 75 (LIST).anu
c970: 6d 20 2b 3d 20 28 28 28 28 28 54 59 50 45 5f 53 m += (((((TYPE_S
c980: 49 5a 45 29 2b 28 54 59 50 45 5f 41 4c 49 47 4e IZE)+(TYPE_ALIGN
c990: 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 28 54 )-1) & -(long)(T
c9a0: 59 50 45 5f 41 4c 49 47 4e 29 29 20 2b 20 73 69 YPE_ALIGN)) + si
c9b0: 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 2d 31 zeof(__avword)-1
c9c0: 29 20 26 20 2d 28 6c 6f 6e 67 29 73 69 7a 65 6f ) & -(long)sizeo
c9d0: 66 28 5f 5f 61 76 77 6f 72 64 29 29 2f 73 69 7a f(__avword))/siz
c9e0: 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 2c 5c 0a eof(__avword),\.
c9f0: 09 20 20 20 20 20 20 28 4c 49 53 54 29 2e 66 61 . (LIST).fa
ca00: 72 67 5f 6d 61 73 6b 20 26 3d 20 28 31 20 3c 3c rg_mask &= (1 <<
ca10: 20 28 28 4c 49 53 54 29 2e 61 6e 75 6d 20 3c 20 ((LIST).anum <
ca20: 31 36 20 3f 20 28 4c 49 53 54 29 2e 61 6e 75 6d 16 ? (LIST).anum
ca30: 20 3a 20 31 36 29 29 20 2d 20 31 2c 20 5c 0a 09 : 16)) - 1, \..
ca40: 20 20 20 20 20 20 28 4c 49 53 54 29 2e 64 61 72 (LIST).dar
ca50: 67 5f 6d 61 73 6b 20 26 3d 20 28 31 20 3c 3c 20 g_mask &= (1 <<
ca60: 28 28 4c 49 53 54 29 2e 61 6e 75 6d 20 3c 20 31 ((LIST).anum < 1
ca70: 36 20 3f 20 28 4c 49 53 54 29 2e 61 6e 75 6d 20 6 ? (LIST).anum
ca80: 3a 20 31 36 29 29 20 2d 20 31 2c 20 5c 0a 09 20 : 16)) - 1, \..
ca90: 20 20 20 20 20 30 29 29 29 0a 23 65 6e 64 69 66 0))).#endif
caa0: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 68 .#if defined(__h
cab0: 70 70 61 5f 5f 29 0a 2f 2a 20 53 74 72 75 63 74 ppa__)./* Struct
cac0: 75 72 65 73 20 3c 3d 20 38 20 62 79 74 65 73 20 ures <= 8 bytes
cad0: 61 72 65 20 70 61 73 73 65 64 20 61 73 20 65 6d are passed as em
cae0: 62 65 64 64 65 64 20 63 6f 70 69 65 73 20 6f 6e bedded copies on
caf0: 20 74 68 65 20 61 72 67 20 73 74 61 63 6b 2e 0a the arg stack..
cb00: 20 2a 20 42 69 67 20 73 74 72 75 63 74 75 72 65 * Big structure
cb10: 73 20 61 72 65 20 70 61 73 73 65 64 20 61 73 20 s are passed as
cb20: 70 6f 69 6e 74 65 72 73 20 74 6f 20 63 61 6c 6c pointers to call
cb30: 65 72 2d 6d 61 64 65 20 6c 6f 63 61 6c 20 63 6f er-made local co
cb40: 70 69 65 73 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e pies.. */.#defin
cb50: 65 20 5f 5f 61 76 5f 73 74 72 75 63 74 28 4c 49 e __av_struct(LI
cb60: 53 54 2c 54 59 50 45 2c 54 59 50 45 5f 53 49 5a ST,TYPE,TYPE_SIZ
cb70: 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 E,TYPE_ALIGN,ASS
cb80: 49 47 4e 2c 56 41 4c 29 09 09 09 5c 0a 20 20 28 IGN,VAL)...\. (
cb90: 28 54 59 50 45 5f 53 49 5a 45 29 20 3e 20 38 09 (TYPE_SIZE) > 8.
cba0: 09 09 09 09 09 09 09 5c 0a 20 20 20 3f 20 28 2d .......\. ? (-
cbb0: 2d 28 4c 49 53 54 29 2e 61 70 74 72 09 09 09 09 -(LIST).aptr....
cbc0: 09 09 09 09 5c 0a 20 20 20 20 20 20 3c 20 28 28 ....\. < ((
cbd0: 4c 49 53 54 29 2e 65 70 74 72 20 3d 20 28 5f 5f LIST).eptr = (__
cbe0: 61 76 77 6f 72 64 2a 29 28 28 6c 6f 6e 67 29 28 avword*)((long)(
cbf0: 4c 49 53 54 29 2e 65 70 74 72 20 2b 20 28 28 28 LIST).eptr + (((
cc00: 54 59 50 45 5f 53 49 5a 45 29 20 2b 20 37 29 20 TYPE_SIZE) + 7)
cc10: 26 20 2d 38 29 29 29 20 5c 0a 20 20 20 20 20 20 & -8))) \.
cc20: 3f 20 2d 31 09 09 09 09 09 09 09 09 09 5c 0a 20 ? -1.........\.
cc30: 20 20 20 20 20 3a 20 28 41 53 53 49 47 4e 28 54 : (ASSIGN(T
cc40: 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 YPE,TYPE_SIZE,TY
cc50: 50 45 5f 41 4c 49 47 4e 2c 28 76 6f 69 64 2a 29 PE_ALIGN,(void*)
cc60: 28 28 6c 6f 6e 67 29 28 4c 49 53 54 29 2e 65 70 ((long)(LIST).ep
cc70: 74 72 20 2d 20 28 28 28 54 59 50 45 5f 53 49 5a tr - (((TYPE_SIZ
cc80: 45 29 20 2b 20 37 29 20 26 20 2d 38 29 29 2c 20 E) + 7) & -8)),
cc90: 56 41 4c 29 2c 20 5c 0a 09 20 2a 28 4c 49 53 54 VAL), \.. *(LIST
cca0: 29 2e 61 70 74 72 20 3d 20 28 5f 5f 61 76 77 6f ).aptr = (__avwo
ccb0: 72 64 29 28 28 6c 6f 6e 67 29 28 4c 49 53 54 29 rd)((long)(LIST)
ccc0: 2e 65 70 74 72 20 2d 20 28 28 28 54 59 50 45 5f .eptr - (((TYPE_
ccd0: 53 49 5a 45 29 20 2b 20 37 29 20 26 20 2d 38 29 SIZE) + 7) & -8)
cce0: 29 2c 20 5c 0a 09 20 30 29 29 09 09 09 09 09 09 ), \.. 0))......
ccf0: 09 09 09 5c 0a 20 20 20 3a 20 28 28 54 59 50 45 ...\. : ((TYPE
cd00: 5f 53 49 5a 45 29 20 3e 20 34 09 09 09 09 09 09 _SIZE) > 4......
cd10: 09 09 5c 0a 20 20 20 20 20 20 3f 20 28 28 28 4c ..\. ? (((L
cd20: 49 53 54 29 2e 61 70 74 72 20 3d 20 28 5f 5f 61 IST).aptr = (__a
cd30: 76 77 6f 72 64 2a 29 28 28 28 28 6c 6f 6e 67 29 vword*)((((long)
cd40: 28 4c 49 53 54 29 2e 61 70 74 72 20 26 20 2d 38 (LIST).aptr & -8
cd50: 29 20 2d 20 28 6c 6f 6e 67 29 28 54 59 50 45 5f ) - (long)(TYPE_
cd60: 53 49 5a 45 29 29 20 26 20 2d 38 29 29 20 5c 0a SIZE)) & -8)) \.
cd70: 09 20 20 3c 20 26 28 4c 49 53 54 29 2e 61 72 67 . < &(LIST).arg
cd80: 73 5b 30 5d 09 09 09 09 09 09 09 5c 0a 09 20 20 s[0].......\..
cd90: 3f 20 2d 31 20 3a 20 28 41 53 53 49 47 4e 28 54 ? -1 : (ASSIGN(T
cda0: 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 YPE,TYPE_SIZE,TY
cdb0: 50 45 5f 41 4c 49 47 4e 2c 28 76 6f 69 64 2a 29 PE_ALIGN,(void*)
cdc0: 28 4c 49 53 54 29 2e 61 70 74 72 2c 56 41 4c 29 (LIST).aptr,VAL)
cdd0: 2c 20 30 29 29 09 5c 0a 20 20 20 20 20 20 3a 20 , 0)).\. :
cde0: 2f 2a 20 46 49 58 4d 45 3a 20 67 63 63 2d 32 2e /* FIXME: gcc-2.
cdf0: 36 2e 33 20 70 61 73 73 65 73 20 73 74 72 75 63 6.3 passes struc
ce00: 74 75 72 65 73 20 3c 3d 20 34 20 62 79 74 65 73 tures <= 4 bytes
ce10: 20 69 6e 20 6d 65 6d 6f 72 79 20 6c 65 66 74 2d in memory left-
ce20: 61 64 6a 75 73 74 65 64 21 20 3f 3f 20 2a 2f 5c adjusted! ?? */\
ce30: 0a 20 20 20 20 20 20 20 20 28 28 28 4c 49 53 54 . (((LIST
ce40: 29 2e 61 70 74 72 20 3d 20 28 5f 5f 61 76 77 6f ).aptr = (__avwo
ce50: 72 64 2a 29 28 28 28 6c 6f 6e 67 29 28 4c 49 53 rd*)(((long)(LIS
ce60: 54 29 2e 61 70 74 72 20 26 20 2d 34 29 20 2d 20 T).aptr & -4) -
ce70: 28 6c 6f 6e 67 29 28 54 59 50 45 5f 53 49 5a 45 (long)(TYPE_SIZE
ce80: 29 29 29 20 5c 0a 09 20 20 3c 20 26 28 4c 49 53 ))) \.. < &(LIS
ce90: 54 29 2e 61 72 67 73 5b 30 5d 09 09 09 09 09 09 T).args[0]......
cea0: 09 5c 0a 09 20 20 3f 20 2d 31 20 3a 20 28 41 53 .\.. ? -1 : (AS
ceb0: 53 49 47 4e 28 54 59 50 45 2c 54 59 50 45 5f 53 SIGN(TYPE,TYPE_S
cec0: 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 28 IZE,TYPE_ALIGN,(
ced0: 76 6f 69 64 2a 29 28 4c 49 53 54 29 2e 61 70 74 void*)(LIST).apt
cee0: 72 2c 56 41 4c 29 2c 09 5c 0a 09 09 20 20 28 4c r,VAL),.\... (L
cef0: 49 53 54 29 2e 61 70 74 72 20 3d 20 28 5f 5f 61 IST).aptr = (__a
cf00: 76 77 6f 72 64 2a 29 28 28 6c 6f 6e 67 29 28 4c vword*)((long)(L
cf10: 49 53 54 29 2e 61 70 74 72 20 26 20 2d 34 29 2c IST).aptr & -4),
cf20: 09 09 5c 0a 09 09 20 20 30 29 29 29 29 0a 23 65 ..\... 0)))).#e
cf30: 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 ndif.#if defined
cf40: 28 5f 5f 78 38 36 5f 36 34 5f 5f 29 0a 2f 2a 20 (__x86_64__)./*
cf50: 53 74 72 75 63 74 75 72 65 73 20 3c 3d 20 31 36 Structures <= 16
cf60: 20 62 79 74 65 73 20 63 61 6e 20 62 65 20 70 61 bytes can be pa
cf70: 73 73 65 64 20 69 6e 20 69 6e 74 65 67 65 72 20 ssed in integer
cf80: 6f 72 20 66 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e or floating-poin
cf90: 74 20 72 65 67 69 73 74 65 72 73 0a 20 20 20 69 t registers. i
cfa0: 66 20 74 68 65 72 65 20 69 73 20 65 6e 6f 75 67 f there is enoug
cfb0: 68 20 72 6f 6f 6d 20 66 6f 72 20 74 68 65 20 77 h room for the w
cfc0: 68 6f 6c 65 20 6e 75 6d 62 65 72 20 6f 66 20 77 hole number of w
cfd0: 6f 72 64 73 20 6e 65 65 64 65 64 20 62 79 20 74 ords needed by t
cfe0: 68 65 20 73 74 72 75 63 74 75 72 65 0a 20 20 20 he structure.
cff0: 69 6e 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e in the correspon
d000: 64 69 6e 67 20 69 61 72 67 73 2f 66 61 72 67 73 ding iargs/fargs
d010: 20 62 6c 6f 63 6b 2e 20 57 65 20 63 61 6e 27 74 block. We can't
d020: 20 64 69 73 74 69 6e 67 75 69 73 68 20 74 68 65 distinguish the
d030: 20 74 77 6f 20 63 61 73 65 73 0a 20 20 20 61 6e two cases. an
d040: 64 20 73 75 70 70 6f 72 74 20 6f 6e 6c 79 20 70 d support only p
d050: 61 73 73 69 6e 67 20 69 6e 20 69 6e 74 65 67 65 assing in intege
d060: 72 20 72 65 67 69 73 74 65 72 73 2e 20 4f 74 68 r registers. Oth
d070: 65 72 20 73 74 72 75 63 74 75 72 65 73 20 61 72 er structures ar
d080: 65 20 70 61 73 73 65 64 0a 20 20 20 6f 6e 20 74 e passed. on t
d090: 68 65 20 61 72 67 20 73 74 61 63 6b 2e 20 2a 2f he arg stack. */
d0a0: 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 .#define __av_st
d0b0: 72 75 63 74 28 4c 49 53 54 2c 54 59 50 45 2c 54 ruct(LIST,TYPE,T
d0c0: 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c YPE_SIZE,TYPE_AL
d0d0: 49 47 4e 2c 41 53 53 49 47 4e 2c 56 41 4c 29 09 IGN,ASSIGN,VAL).
d0e0: 09 09 5c 0a 20 20 28 28 4c 49 53 54 29 2e 69 61 ..\. ((LIST).ia
d0f0: 70 74 72 20 2b 20 28 28 54 59 50 45 5f 53 49 5a ptr + ((TYPE_SIZ
d100: 45 29 20 2b 20 73 69 7a 65 6f 66 28 5f 5f 61 76 E) + sizeof(__av
d110: 77 6f 72 64 29 2d 31 29 20 2f 20 73 69 7a 65 6f word)-1) / sizeo
d120: 66 28 5f 5f 61 76 77 6f 72 64 29 20 3c 3d 20 26 f(__avword) <= &
d130: 28 4c 49 53 54 29 2e 69 61 72 67 73 5b 36 5d 20 (LIST).iargs[6]
d140: 5c 0a 20 20 20 3f 20 28 41 53 53 49 47 4e 28 54 \. ? (ASSIGN(T
d150: 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 YPE,TYPE_SIZE,TY
d160: 50 45 5f 41 4c 49 47 4e 2c 28 76 6f 69 64 2a 29 PE_ALIGN,(void*)
d170: 28 4c 49 53 54 29 2e 69 61 70 74 72 2c 56 41 4c (LIST).iaptr,VAL
d180: 29 2c 09 09 5c 0a 20 20 20 20 20 20 28 4c 49 53 ),..\. (LIS
d190: 54 29 2e 69 61 70 74 72 20 2b 3d 20 28 28 54 59 T).iaptr += ((TY
d1a0: 50 45 5f 53 49 5a 45 29 20 2b 20 73 69 7a 65 6f PE_SIZE) + sizeo
d1b0: 66 28 5f 5f 61 76 77 6f 72 64 29 2d 31 29 20 2f f(__avword)-1) /
d1c0: 20 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 sizeof(__avword
d1d0: 29 2c 09 5c 0a 20 20 20 20 20 20 30 29 09 09 09 ),.\. 0)...
d1e0: 09 09 09 09 09 09 5c 0a 20 20 20 3a 20 28 28 4c ......\. : ((L
d1f0: 49 53 54 29 2e 61 70 74 72 20 3d 20 28 5f 5f 61 IST).aptr = (__a
d200: 76 77 6f 72 64 2a 29 28 28 5f 5f 61 76 77 6f 72 vword*)((__avwor
d210: 64 29 28 4c 49 53 54 29 2e 61 70 74 72 20 2b 20 d)(LIST).aptr +
d220: 28 28 28 54 59 50 45 5f 53 49 5a 45 29 2b 5f 5f (((TYPE_SIZE)+__
d230: 61 76 5f 73 74 72 75 63 74 5f 61 6c 69 67 6e 6d av_struct_alignm
d240: 65 6e 74 28 54 59 50 45 5f 41 4c 49 47 4e 29 2d ent(TYPE_ALIGN)-
d250: 31 29 20 26 20 2d 28 6c 6f 6e 67 29 5f 5f 61 76 1) & -(long)__av
d260: 5f 73 74 72 75 63 74 5f 61 6c 69 67 6e 6d 65 6e _struct_alignmen
d270: 74 28 54 59 50 45 5f 41 4c 49 47 4e 29 29 29 2c t(TYPE_ALIGN))),
d280: 20 5c 0a 20 20 20 20 20 20 28 28 4c 49 53 54 29 \. ((LIST)
d290: 2e 61 70 74 72 20 3e 20 5f 5f 61 76 5f 65 70 74 .aptr > __av_ept
d2a0: 72 28 4c 49 53 54 29 09 09 09 09 09 09 5c 0a 20 r(LIST)......\.
d2b0: 20 20 20 20 20 20 3f 20 2d 31 20 3a 20 28 41 53 ? -1 : (AS
d2c0: 53 49 47 4e 28 54 59 50 45 2c 54 59 50 45 5f 53 SIGN(TYPE,TYPE_S
d2d0: 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 28 IZE,TYPE_ALIGN,(
d2e0: 76 6f 69 64 2a 29 28 28 5f 5f 61 76 77 6f 72 64 void*)((__avword
d2f0: 29 28 4c 49 53 54 29 2e 61 70 74 72 20 2d 20 28 )(LIST).aptr - (
d300: 28 28 54 59 50 45 5f 53 49 5a 45 29 2b 5f 5f 61 ((TYPE_SIZE)+__a
d310: 76 5f 73 74 72 75 63 74 5f 61 6c 69 67 6e 6d 65 v_struct_alignme
d320: 6e 74 28 54 59 50 45 5f 41 4c 49 47 4e 29 2d 31 nt(TYPE_ALIGN)-1
d330: 29 20 26 20 2d 28 6c 6f 6e 67 29 5f 5f 61 76 5f ) & -(long)__av_
d340: 73 74 72 75 63 74 5f 61 6c 69 67 6e 6d 65 6e 74 struct_alignment
d350: 28 54 59 50 45 5f 41 4c 49 47 4e 29 29 29 2c 56 (TYPE_ALIGN))),V
d360: 41 4c 29 2c 5c 0a 09 20 20 20 20 20 20 20 30 29 AL),\.. 0)
d370: 29 29 29 0a 23 65 6e 64 69 66 0a 0a 2f 2a 0a 20 ))).#endif../*.
d380: 2a 20 63 61 6c 6c 69 6e 67 20 74 68 65 20 66 75 * calling the fu
d390: 6e 63 74 69 6f 6e 0a 20 2a 2f 0a 0a 23 64 65 66 nction. */..#def
d3a0: 69 6e 65 20 61 76 5f 63 61 6c 6c 28 4c 49 53 54 ine av_call(LIST
d3b0: 29 20 5f 5f 62 75 69 6c 74 69 6e 5f 61 76 63 61 ) __builtin_avca
d3c0: 6c 6c 28 26 28 4c 49 53 54 29 29 0a 0a 2f 2a 20 ll(&(LIST))../*
d3d0: 44 65 74 65 72 6d 69 6e 65 20 77 68 65 74 68 65 Determine whethe
d3e0: 72 20 61 20 73 74 72 75 63 74 20 74 79 70 65 20 r a struct type
d3f0: 69 73 20 77 6f 72 64 2d 73 70 6c 69 74 74 61 62 is word-splittab
d400: 6c 65 2c 20 69 2e 65 2e 20 77 68 65 74 68 65 72 le, i.e. whether
d410: 20 65 61 63 68 20 6f 66 0a 20 2a 20 69 74 73 20 each of. * its
d420: 63 6f 6d 70 6f 6e 65 6e 74 73 20 66 69 74 20 69 components fit i
d430: 6e 74 6f 20 61 20 72 65 67 69 73 74 65 72 2e 0a nto a register..
d440: 20 2a 20 54 68 65 20 65 6e 74 69 72 65 20 63 6f * The entire co
d450: 6d 70 75 74 61 74 69 6f 6e 20 69 73 20 64 6f 6e mputation is don
d460: 65 20 61 74 20 63 6f 6d 70 69 6c 65 20 74 69 6d e at compile tim
d470: 65 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 61 e.. */.#define a
d480: 76 5f 77 6f 72 64 5f 73 70 6c 69 74 74 61 62 6c v_word_splittabl
d490: 65 5f 31 28 73 6c 6f 74 31 29 20 20 5c 0a 20 20 e_1(slot1) \.
d4a0: 28 5f 5f 61 76 5f 6f 66 66 73 65 74 31 28 73 6c (__av_offset1(sl
d4b0: 6f 74 31 29 2f 73 69 7a 65 6f 66 28 5f 5f 61 76 ot1)/sizeof(__av
d4c0: 77 6f 72 64 29 20 3d 3d 20 28 5f 5f 61 76 5f 6f word) == (__av_o
d4d0: 66 66 73 65 74 31 28 73 6c 6f 74 31 29 2b 73 69 ffset1(slot1)+si
d4e0: 7a 65 6f 66 28 73 6c 6f 74 31 29 2d 31 29 2f 73 zeof(slot1)-1)/s
d4f0: 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 29 izeof(__avword))
d500: 0a 23 64 65 66 69 6e 65 20 61 76 5f 77 6f 72 64 .#define av_word
d510: 5f 73 70 6c 69 74 74 61 62 6c 65 5f 32 28 73 6c _splittable_2(sl
d520: 6f 74 31 2c 73 6c 6f 74 32 29 20 20 5c 0a 20 20 ot1,slot2) \.
d530: 28 28 5f 5f 61 76 5f 6f 66 66 73 65 74 31 28 73 ((__av_offset1(s
d540: 6c 6f 74 31 29 2f 73 69 7a 65 6f 66 28 5f 5f 61 lot1)/sizeof(__a
d550: 76 77 6f 72 64 29 20 3d 3d 20 28 5f 5f 61 76 5f vword) == (__av_
d560: 6f 66 66 73 65 74 31 28 73 6c 6f 74 31 29 2b 73 offset1(slot1)+s
d570: 69 7a 65 6f 66 28 73 6c 6f 74 31 29 2d 31 29 2f izeof(slot1)-1)/
d580: 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 sizeof(__avword)
d590: 29 20 5c 0a 20 20 20 26 26 20 28 5f 5f 61 76 5f ) \. && (__av_
d5a0: 6f 66 66 73 65 74 32 28 73 6c 6f 74 31 2c 73 6c offset2(slot1,sl
d5b0: 6f 74 32 29 2f 73 69 7a 65 6f 66 28 5f 5f 61 76 ot2)/sizeof(__av
d5c0: 77 6f 72 64 29 20 3d 3d 20 28 5f 5f 61 76 5f 6f word) == (__av_o
d5d0: 66 66 73 65 74 32 28 73 6c 6f 74 31 2c 73 6c 6f ffset2(slot1,slo
d5e0: 74 32 29 2b 73 69 7a 65 6f 66 28 73 6c 6f 74 32 t2)+sizeof(slot2
d5f0: 29 2d 31 29 2f 73 69 7a 65 6f 66 28 5f 5f 61 76 )-1)/sizeof(__av
d600: 77 6f 72 64 29 29 20 5c 0a 20 20 29 0a 23 64 65 word)) \. ).#de
d610: 66 69 6e 65 20 61 76 5f 77 6f 72 64 5f 73 70 6c fine av_word_spl
d620: 69 74 74 61 62 6c 65 5f 33 28 73 6c 6f 74 31 2c ittable_3(slot1,
d630: 73 6c 6f 74 32 2c 73 6c 6f 74 33 29 20 20 5c 0a slot2,slot3) \.
d640: 20 20 28 28 5f 5f 61 76 5f 6f 66 66 73 65 74 31 ((__av_offset1
d650: 28 73 6c 6f 74 31 29 2f 73 69 7a 65 6f 66 28 5f (slot1)/sizeof(_
d660: 5f 61 76 77 6f 72 64 29 20 3d 3d 20 28 5f 5f 61 _avword) == (__a
d670: 76 5f 6f 66 66 73 65 74 31 28 73 6c 6f 74 31 29 v_offset1(slot1)
d680: 2b 73 69 7a 65 6f 66 28 73 6c 6f 74 31 29 2d 31 +sizeof(slot1)-1
d690: 29 2f 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 )/sizeof(__avwor
d6a0: 64 29 29 20 5c 0a 20 20 20 26 26 20 28 5f 5f 61 d)) \. && (__a
d6b0: 76 5f 6f 66 66 73 65 74 32 28 73 6c 6f 74 31 2c v_offset2(slot1,
d6c0: 73 6c 6f 74 32 29 2f 73 69 7a 65 6f 66 28 5f 5f slot2)/sizeof(__
d6d0: 61 76 77 6f 72 64 29 20 3d 3d 20 28 5f 5f 61 76 avword) == (__av
d6e0: 5f 6f 66 66 73 65 74 32 28 73 6c 6f 74 31 2c 73 _offset2(slot1,s
d6f0: 6c 6f 74 32 29 2b 73 69 7a 65 6f 66 28 73 6c 6f lot2)+sizeof(slo
d700: 74 32 29 2d 31 29 2f 73 69 7a 65 6f 66 28 5f 5f t2)-1)/sizeof(__
d710: 61 76 77 6f 72 64 29 29 20 5c 0a 20 20 20 26 26 avword)) \. &&
d720: 20 28 5f 5f 61 76 5f 6f 66 66 73 65 74 33 28 73 (__av_offset3(s
d730: 6c 6f 74 31 2c 73 6c 6f 74 32 2c 73 6c 6f 74 33 lot1,slot2,slot3
d740: 29 2f 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 )/sizeof(__avwor
d750: 64 29 20 3d 3d 20 28 5f 5f 61 76 5f 6f 66 66 73 d) == (__av_offs
d760: 65 74 33 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 2c et3(slot1,slot2,
d770: 73 6c 6f 74 33 29 2b 73 69 7a 65 6f 66 28 73 6c slot3)+sizeof(sl
d780: 6f 74 33 29 2d 31 29 2f 73 69 7a 65 6f 66 28 5f ot3)-1)/sizeof(_
d790: 5f 61 76 77 6f 72 64 29 29 20 5c 0a 20 20 29 0a _avword)) \. ).
d7a0: 23 64 65 66 69 6e 65 20 61 76 5f 77 6f 72 64 5f #define av_word_
d7b0: 73 70 6c 69 74 74 61 62 6c 65 5f 34 28 73 6c 6f splittable_4(slo
d7c0: 74 31 2c 73 6c 6f 74 32 2c 73 6c 6f 74 33 2c 73 t1,slot2,slot3,s
d7d0: 6c 6f 74 34 29 20 20 5c 0a 20 20 28 28 5f 5f 61 lot4) \. ((__a
d7e0: 76 5f 6f 66 66 73 65 74 31 28 73 6c 6f 74 31 29 v_offset1(slot1)
d7f0: 2f 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 /sizeof(__avword
d800: 29 20 3d 3d 20 28 5f 5f 61 76 5f 6f 66 66 73 65 ) == (__av_offse
d810: 74 31 28 73 6c 6f 74 31 29 2b 73 69 7a 65 6f 66 t1(slot1)+sizeof
d820: 28 73 6c 6f 74 31 29 2d 31 29 2f 73 69 7a 65 6f (slot1)-1)/sizeo
d830: 66 28 5f 5f 61 76 77 6f 72 64 29 29 20 5c 0a 20 f(__avword)) \.
d840: 20 20 26 26 20 28 5f 5f 61 76 5f 6f 66 66 73 65 && (__av_offse
d850: 74 32 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 29 2f t2(slot1,slot2)/
d860: 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 sizeof(__avword)
d870: 20 3d 3d 20 28 5f 5f 61 76 5f 6f 66 66 73 65 74 == (__av_offset
d880: 32 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 29 2b 73 2(slot1,slot2)+s
d890: 69 7a 65 6f 66 28 73 6c 6f 74 32 29 2d 31 29 2f izeof(slot2)-1)/
d8a0: 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 sizeof(__avword)
d8b0: 29 20 5c 0a 20 20 20 26 26 20 28 5f 5f 61 76 5f ) \. && (__av_
d8c0: 6f 66 66 73 65 74 33 28 73 6c 6f 74 31 2c 73 6c offset3(slot1,sl
d8d0: 6f 74 32 2c 73 6c 6f 74 33 29 2f 73 69 7a 65 6f ot2,slot3)/sizeo
d8e0: 66 28 5f 5f 61 76 77 6f 72 64 29 20 3d 3d 20 28 f(__avword) == (
d8f0: 5f 5f 61 76 5f 6f 66 66 73 65 74 33 28 73 6c 6f __av_offset3(slo
d900: 74 31 2c 73 6c 6f 74 32 2c 73 6c 6f 74 33 29 2b t1,slot2,slot3)+
d910: 73 69 7a 65 6f 66 28 73 6c 6f 74 33 29 2d 31 29 sizeof(slot3)-1)
d920: 2f 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 /sizeof(__avword
d930: 29 29 20 5c 0a 20 20 20 26 26 20 28 5f 5f 61 76 )) \. && (__av
d940: 5f 6f 66 66 73 65 74 34 28 73 6c 6f 74 31 2c 73 _offset4(slot1,s
d950: 6c 6f 74 32 2c 73 6c 6f 74 33 2c 73 6c 6f 74 34 lot2,slot3,slot4
d960: 29 2f 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 )/sizeof(__avwor
d970: 64 29 20 3d 3d 20 28 5f 5f 61 76 5f 6f 66 66 73 d) == (__av_offs
d980: 65 74 34 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 2c et4(slot1,slot2,
d990: 73 6c 6f 74 33 2c 73 6c 6f 74 34 29 2b 73 69 7a slot3,slot4)+siz
d9a0: 65 6f 66 28 73 6c 6f 74 34 29 2d 31 29 2f 73 69 eof(slot4)-1)/si
d9b0: 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 29 20 zeof(__avword))
d9c0: 5c 0a 20 20 29 0a 23 64 65 66 69 6e 65 20 5f 5f \. ).#define __
d9d0: 61 76 5f 6f 66 66 73 65 74 31 28 73 6c 6f 74 31 av_offset1(slot1
d9e0: 29 20 20 5c 0a 20 20 30 0a 23 64 65 66 69 6e 65 ) \. 0.#define
d9f0: 20 5f 5f 61 76 5f 6f 66 66 73 65 74 32 28 73 6c __av_offset2(sl
da00: 6f 74 31 2c 73 6c 6f 74 32 29 20 20 5c 0a 20 20 ot1,slot2) \.
da10: 28 28 5f 5f 61 76 5f 6f 66 66 73 65 74 31 28 73 ((__av_offset1(s
da20: 6c 6f 74 31 29 2b 73 69 7a 65 6f 66 28 73 6c 6f lot1)+sizeof(slo
da30: 74 31 29 2b 5f 5f 41 56 5f 61 6c 69 67 6e 6f 66 t1)+__AV_alignof
da40: 28 73 6c 6f 74 32 29 2d 31 29 20 26 20 2d 28 6c (slot2)-1) & -(l
da50: 6f 6e 67 29 5f 5f 41 56 5f 61 6c 69 67 6e 6f 66 ong)__AV_alignof
da60: 28 73 6c 6f 74 32 29 29 0a 23 64 65 66 69 6e 65 (slot2)).#define
da70: 20 5f 5f 61 76 5f 6f 66 66 73 65 74 33 28 73 6c __av_offset3(sl
da80: 6f 74 31 2c 73 6c 6f 74 32 2c 73 6c 6f 74 33 29 ot1,slot2,slot3)
da90: 20 20 5c 0a 20 20 28 28 5f 5f 61 76 5f 6f 66 66 \. ((__av_off
daa0: 73 65 74 32 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 set2(slot1,slot2
dab0: 29 2b 73 69 7a 65 6f 66 28 73 6c 6f 74 32 29 2b )+sizeof(slot2)+
dac0: 5f 5f 41 56 5f 61 6c 69 67 6e 6f 66 28 73 6c 6f __AV_alignof(slo
dad0: 74 33 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 t3)-1) & -(long)
dae0: 5f 5f 41 56 5f 61 6c 69 67 6e 6f 66 28 73 6c 6f __AV_alignof(slo
daf0: 74 33 29 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61 t3)).#define __a
db00: 76 5f 6f 66 66 73 65 74 34 28 73 6c 6f 74 31 2c v_offset4(slot1,
db10: 73 6c 6f 74 32 2c 73 6c 6f 74 33 2c 73 6c 6f 74 slot2,slot3,slot
db20: 34 29 20 20 5c 0a 20 20 28 28 5f 5f 61 76 5f 6f 4) \. ((__av_o
db30: 66 66 73 65 74 33 28 73 6c 6f 74 31 2c 73 6c 6f ffset3(slot1,slo
db40: 74 32 2c 73 6c 6f 74 33 29 2b 73 69 7a 65 6f 66 t2,slot3)+sizeof
db50: 28 73 6c 6f 74 33 29 2b 5f 5f 41 56 5f 61 6c 69 (slot3)+__AV_ali
db60: 67 6e 6f 66 28 73 6c 6f 74 34 29 2d 31 29 20 26 gnof(slot4)-1) &
db70: 20 2d 28 6c 6f 6e 67 29 5f 5f 41 56 5f 61 6c 69 -(long)__AV_ali
db80: 67 6e 6f 66 28 73 6c 6f 74 34 29 29 0a 0a 2f 2a gnof(slot4))../*
db90: 0a 20 2a 20 4d 69 73 63 65 6c 6c 61 6e 65 6f 75 . * Miscellaneou
dba0: 73 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 2e 0a s declarations..
dbb0: 20 2a 2f 0a 0a 23 69 66 20 64 65 66 69 6e 65 64 */..#if defined
dbc0: 28 5f 5f 53 54 44 43 5f 5f 29 20 7c 7c 20 64 65 (__STDC__) || de
dbd0: 66 69 6e 65 64 28 5f 5f 47 4e 55 43 5f 5f 29 20 fined(__GNUC__)
dbe0: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 63 70 6c || defined(__cpl
dbf0: 75 73 70 6c 75 73 29 0a 65 78 74 65 72 6e 20 69 usplus).extern i
dc00: 6e 74 20 5f 5f 62 75 69 6c 74 69 6e 5f 61 76 63 nt __builtin_avc
dc10: 61 6c 6c 20 28 61 76 5f 61 6c 69 73 74 2a 20 6c all (av_alist* l
dc20: 29 3b 0a 65 78 74 65 72 6e 20 76 6f 69 64 20 5f );.extern void _
dc30: 5f 73 74 72 75 63 74 63 70 79 20 28 76 6f 69 64 _structcpy (void
dc40: 2a 20 64 65 73 74 2c 20 76 6f 69 64 2a 20 73 72 * dest, void* sr
dc50: 63 2c 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 c, unsigned long
dc60: 20 73 69 7a 65 2c 20 75 6e 73 69 67 6e 65 64 20 size, unsigned
dc70: 6c 6f 6e 67 20 61 6c 69 67 6e 6d 65 6e 74 29 3b long alignment);
dc80: 0a 23 65 6c 73 65 0a 65 78 74 65 72 6e 20 69 6e .#else.extern in
dc90: 74 20 5f 5f 62 75 69 6c 74 69 6e 5f 61 76 63 61 t __builtin_avca
dca0: 6c 6c 20 28 29 3b 0a 65 78 74 65 72 6e 20 76 6f ll ();.extern vo
dcb0: 69 64 20 5f 5f 73 74 72 75 63 74 63 70 79 20 28 id __structcpy (
dcc0: 29 3b 0a 23 65 6e 64 69 66 0a 0a 23 65 6e 64 69 );.#endif..#endi
dcd0: 66 20 2f 2a 5f 61 76 63 61 6c 6c 5f 68 20 2a 2f f /*_avcall_h */
dce0: 0a .