0000: 2f 2a 20 61 76 63 61 6c 6c 2e 68 2e 20 20 47 65 /* avcall.h. Ge
0010: 6e 65 72 61 74 65 64 20 62 79 20 63 6f 6e 66 69 nerated by confi
0020: 67 75 72 65 2e 20 20 2a 2f 0a 23 69 66 6e 64 65 gure. */.#ifnde
0030: 66 20 5f 61 76 63 61 6c 6c 5f 68 09 09 09 09 2f f _avcall_h..../
0040: 2a 2d 2a 2d 20 43 20 2d 2a 2d 2a 2f 0a 23 64 65 *-*- C -*-*/.#de
0050: 66 69 6e 65 20 5f 61 76 63 61 6c 6c 5f 68 0a 2f fine _avcall_h./
0060: 2a 2a 0a 20 20 43 6f 70 79 72 69 67 68 74 20 31 **. Copyright 1
0070: 39 39 33 20 42 69 6c 6c 20 54 72 69 67 67 73 2c 993 Bill Triggs,
0080: 20 3c 42 69 6c 6c 2e 54 72 69 67 67 73 40 69 6e <Bill.Triggs@in
0090: 72 69 61 6c 70 65 73 2e 66 72 3e 0a 0a 20 20 43 rialpes.fr>.. C
00a0: 6f 70 79 72 69 67 68 74 20 31 39 39 35 2d 32 30 opyright 1995-20
00b0: 30 34 20 42 72 75 6e 6f 20 48 61 69 62 6c 65 2c 04 Bruno Haible,
00c0: 20 3c 62 72 75 6e 6f 40 63 6c 69 73 70 2e 6f 72 <bruno@clisp.or
00d0: 67 3e 0a 0a 20 20 54 68 69 73 20 69 73 20 66 72 g>.. This is fr
00e0: 65 65 20 73 6f 66 74 77 61 72 65 20 64 69 73 74 ee software dist
00f0: 72 69 62 75 74 65 64 20 75 6e 64 65 72 20 74 68 ributed under th
0100: 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 e GNU General Pu
0110: 62 6c 69 63 0a 20 20 4c 69 63 65 6e 63 65 20 64 blic. Licence d
0120: 65 73 63 72 69 62 65 64 20 69 6e 20 74 68 65 20 escribed in the
0130: 66 69 6c 65 20 43 4f 50 59 49 4e 47 2e 20 43 6f file COPYING. Co
0140: 6e 74 61 63 74 20 74 68 65 20 61 75 74 68 6f 72 ntact the author
0150: 20 69 66 0a 20 20 79 6f 75 20 64 6f 6e 27 74 20 if. you don't
0160: 68 61 76 65 20 74 68 69 73 20 6f 72 20 63 61 6e have this or can
0170: 27 74 20 6c 69 76 65 20 77 69 74 68 20 69 74 2e 't live with it.
0180: 20 54 68 65 72 65 20 69 73 20 41 42 53 4f 4c 55 There is ABSOLU
0190: 54 45 4c 59 0a 20 20 4e 4f 20 57 41 52 52 41 4e TELY. NO WARRAN
01a0: 54 59 2c 20 65 78 70 6c 69 63 69 74 20 6f 72 20 TY, explicit or
01b0: 69 6d 70 6c 69 65 64 2c 20 6f 6e 20 74 68 69 73 implied, on this
01c0: 20 73 6f 66 74 77 61 72 65 2e 0a 2a 2a 2f 0a 2f software..**/./
01d0: 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d *---------------
01e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
01f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0200: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0210: 2d 2d 2d 2d 2d 2d 2d 0a 20 20 61 76 5f 63 61 6c -------. av_cal
0220: 6c 28 29 20 66 6f 72 65 69 67 6e 20 66 75 6e 63 l() foreign func
0230: 74 69 6f 6e 20 69 6e 74 65 72 66 61 63 65 2e 0a tion interface..
0240: 0a 20 20 56 61 72 61 72 67 73 2d 73 74 79 6c 65 . Varargs-style
0250: 20 6d 61 63 72 6f 73 20 74 6f 20 62 75 69 6c 64 macros to build
0260: 20 61 20 43 20 61 72 67 75 6d 65 6e 74 20 6c 69 a C argument li
0270: 73 74 20 69 6e 63 72 65 6d 65 6e 74 61 6c 6c 79 st incrementally
0280: 0a 20 20 61 6e 64 20 63 61 6c 6c 20 61 20 66 75 . and call a fu
0290: 6e 63 74 69 6f 6e 20 6f 6e 20 69 74 2e 0a 20 2d nction on it.. -
02a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
02b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
02c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
02d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
02e0: 2d 2d 2d 2d 2d 2a 2f 0a 0a 0a 2f 2a 20 54 68 65 -----*/.../* The
02f0: 73 65 20 64 65 66 69 6e 69 74 69 6f 6e 73 20 61 se definitions a
0300: 72 65 20 61 64 6a 75 73 74 65 64 20 62 79 20 60 re adjusted by `
0310: 63 6f 6e 66 69 67 75 72 65 27 20 61 75 74 6f 6d configure' autom
0320: 61 74 69 63 61 6c 6c 79 2e 20 2a 2f 0a 0a 2f 2a atically. */../*
0330: 20 43 50 55 20 2a 2f 0a 23 69 66 6e 64 65 66 20 CPU */.#ifndef
0340: 5f 5f 69 33 38 36 5f 5f 0a 23 64 65 66 69 6e 65 __i386__.#define
0350: 20 5f 5f 69 33 38 36 5f 5f 20 31 0a 23 65 6e 64 __i386__ 1.#end
0360: 69 66 0a 23 69 66 6e 64 65 66 20 5f 5f 6d 36 38 if.#ifndef __m68
0370: 6b 5f 5f 0a 2f 2a 20 23 75 6e 64 65 66 20 5f 5f k__./* #undef __
0380: 6d 36 38 6b 5f 5f 20 2a 2f 0a 23 65 6e 64 69 66 m68k__ */.#endif
0390: 0a 23 69 66 6e 64 65 66 20 5f 5f 6d 69 70 73 5f .#ifndef __mips_
03a0: 5f 0a 2f 2a 20 23 75 6e 64 65 66 20 5f 5f 6d 69 _./* #undef __mi
03b0: 70 73 5f 5f 20 2a 2f 0a 23 65 6e 64 69 66 0a 23 ps__ */.#endif.#
03c0: 69 66 6e 64 65 66 20 5f 5f 6d 69 70 73 6e 33 32 ifndef __mipsn32
03d0: 5f 5f 0a 2f 2a 20 23 75 6e 64 65 66 20 5f 5f 6d __./* #undef __m
03e0: 69 70 73 6e 33 32 5f 5f 20 2a 2f 0a 23 65 6e 64 ipsn32__ */.#end
03f0: 69 66 0a 23 69 66 6e 64 65 66 20 5f 5f 6d 69 70 if.#ifndef __mip
0400: 73 36 34 5f 5f 0a 2f 2a 20 23 75 6e 64 65 66 20 s64__./* #undef
0410: 5f 5f 6d 69 70 73 36 34 5f 5f 20 2a 2f 0a 23 65 __mips64__ */.#e
0420: 6e 64 69 66 0a 23 69 66 6e 64 65 66 20 5f 5f 73 ndif.#ifndef __s
0430: 70 61 72 63 5f 5f 0a 2f 2a 20 23 75 6e 64 65 66 parc__./* #undef
0440: 20 5f 5f 73 70 61 72 63 5f 5f 20 2a 2f 0a 23 65 __sparc__ */.#e
0450: 6e 64 69 66 0a 23 69 66 6e 64 65 66 20 5f 5f 73 ndif.#ifndef __s
0460: 70 61 72 63 36 34 5f 5f 0a 2f 2a 20 23 75 6e 64 parc64__./* #und
0470: 65 66 20 5f 5f 73 70 61 72 63 36 34 5f 5f 20 2a ef __sparc64__ *
0480: 2f 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64 65 66 /.#endif.#ifndef
0490: 20 5f 5f 61 6c 70 68 61 5f 5f 0a 2f 2a 20 23 75 __alpha__./* #u
04a0: 6e 64 65 66 20 5f 5f 61 6c 70 68 61 5f 5f 20 2a ndef __alpha__ *
04b0: 2f 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64 65 66 /.#endif.#ifndef
04c0: 20 5f 5f 68 70 70 61 5f 5f 0a 2f 2a 20 23 75 6e __hppa__./* #un
04d0: 64 65 66 20 5f 5f 68 70 70 61 5f 5f 20 2a 2f 0a def __hppa__ */.
04e0: 23 65 6e 64 69 66 0a 23 69 66 6e 64 65 66 20 5f #endif.#ifndef _
04f0: 5f 61 72 6d 5f 5f 0a 2f 2a 20 23 75 6e 64 65 66 _arm__./* #undef
0500: 20 5f 5f 61 72 6d 5f 5f 20 2a 2f 0a 23 65 6e 64 __arm__ */.#end
0510: 69 66 0a 23 69 66 6e 64 65 66 20 5f 5f 72 73 36 if.#ifndef __rs6
0520: 30 30 30 5f 5f 0a 2f 2a 20 23 75 6e 64 65 66 20 000__./* #undef
0530: 5f 5f 72 73 36 30 30 30 5f 5f 20 2a 2f 0a 23 65 __rs6000__ */.#e
0540: 6e 64 69 66 0a 23 69 66 6e 64 65 66 20 5f 5f 73 ndif.#ifndef __s
0550: 33 39 30 5f 5f 0a 2f 2a 20 23 75 6e 64 65 66 20 390__./* #undef
0560: 5f 5f 73 33 39 30 5f 5f 20 2a 2f 0a 23 65 6e 64 __s390__ */.#end
0570: 69 66 0a 23 69 66 6e 64 65 66 20 5f 5f 6d 38 38 if.#ifndef __m88
0580: 6b 5f 5f 0a 2f 2a 20 23 75 6e 64 65 66 20 5f 5f k__./* #undef __
0590: 6d 38 38 6b 5f 5f 20 2a 2f 0a 23 65 6e 64 69 66 m88k__ */.#endif
05a0: 0a 23 69 66 6e 64 65 66 20 5f 5f 63 6f 6e 76 65 .#ifndef __conve
05b0: 78 5f 5f 0a 2f 2a 20 23 75 6e 64 65 66 20 5f 5f x__./* #undef __
05c0: 63 6f 6e 76 65 78 5f 5f 20 2a 2f 0a 23 65 6e 64 convex__ */.#end
05d0: 69 66 0a 23 69 66 6e 64 65 66 20 5f 5f 69 61 36 if.#ifndef __ia6
05e0: 34 5f 5f 0a 2f 2a 20 23 75 6e 64 65 66 20 5f 5f 4__./* #undef __
05f0: 69 61 36 34 5f 5f 20 2a 2f 0a 23 65 6e 64 69 66 ia64__ */.#endif
0600: 0a 23 69 66 6e 64 65 66 20 5f 5f 78 38 36 5f 36 .#ifndef __x86_6
0610: 34 5f 5f 0a 2f 2a 20 23 75 6e 64 65 66 20 5f 5f 4__./* #undef __
0620: 78 38 36 5f 36 34 5f 5f 20 2a 2f 0a 23 65 6e 64 x86_64__ */.#end
0630: 69 66 0a 0a 2f 2a 20 43 61 6c 6c 69 6e 67 20 63 if../* Calling c
0640: 6f 6e 76 65 6e 74 69 6f 6e 20 2a 2f 0a 2f 2a 20 onvention */./*
0650: 44 65 66 69 6e 65 20 69 66 20 75 73 69 6e 67 20 Define if using
0660: 70 63 63 20 6e 6f 6e 2d 72 65 65 6e 74 72 61 6e pcc non-reentran
0670: 74 20 73 74 72 75 63 74 20 72 65 74 75 72 6e 20 t struct return
0680: 63 6f 6e 76 65 6e 74 69 6f 6e 20 2a 2f 0a 2f 2a convention */./*
0690: 20 23 75 6e 64 65 66 20 5f 5f 50 43 43 5f 53 54 #undef __PCC_ST
06a0: 52 55 43 54 5f 52 45 54 55 52 4e 5f 5f 20 2a 2f RUCT_RETURN__ */
06b0: 0a 2f 2a 20 44 65 66 69 6e 65 20 69 66 20 73 6d ./* Define if sm
06c0: 61 6c 6c 20 73 74 72 75 63 74 73 20 61 72 65 20 all structs are
06d0: 72 65 74 75 72 6e 65 64 20 69 6e 20 72 65 67 69 returned in regi
06e0: 73 74 65 72 73 20 2a 2f 0a 23 64 65 66 69 6e 65 sters */.#define
06f0: 20 5f 5f 53 4d 41 4c 4c 5f 53 54 52 55 43 54 5f __SMALL_STRUCT_
0700: 52 45 54 55 52 4e 5f 5f 20 31 0a 2f 2a 20 44 65 RETURN__ 1./* De
0710: 66 69 6e 65 20 69 66 20 66 6c 6f 61 74 69 6e 67 fine if floating
0720: 2d 70 6f 69 6e 74 20 72 65 73 75 6c 74 73 20 61 -point results a
0730: 72 65 20 72 65 74 75 72 6e 65 64 20 69 6e 20 74 re returned in t
0740: 68 65 20 69 6e 74 65 67 65 72 20 72 65 67 69 73 he integer regis
0750: 74 65 72 73 20 2a 2f 0a 2f 2a 20 23 75 6e 64 65 ters */./* #unde
0760: 66 20 5f 5f 49 52 45 47 5f 46 4c 4f 41 54 5f 52 f __IREG_FLOAT_R
0770: 45 54 55 52 4e 5f 5f 20 2a 2f 0a 0a 2f 2a 20 43 ETURN__ */../* C
0780: 4c 5f 4c 4f 4e 47 4c 4f 4e 47 20 2a 2f 0a 2f 2a L_LONGLONG */./*
0790: 20 44 65 66 69 6e 65 20 69 66 20 79 6f 75 72 20 Define if your
07a0: 63 6f 6d 70 69 6c 65 72 20 73 75 70 70 6f 72 74 compiler support
07b0: 73 20 74 68 65 20 60 6c 6f 6e 67 20 6c 6f 6e 67 s the `long long
07c0: 27 20 74 79 70 65 2e 20 2a 2f 0a 23 64 65 66 69 ' type. */.#defi
07d0: 6e 65 20 48 41 56 45 5f 4c 4f 4e 47 4c 4f 4e 47 ne HAVE_LONGLONG
07e0: 20 0a 0a 2f 2a 20 45 6e 64 20 6f 66 20 64 65 66 ../* End of def
07f0: 69 6e 69 74 69 6f 6e 73 20 61 64 6a 75 73 74 65 initions adjuste
0800: 64 20 62 79 20 60 63 6f 6e 66 69 67 75 72 65 27 d by `configure'
0810: 2e 20 2a 2f 0a 0a 0a 2f 2a 20 4d 61 78 20 23 20 . */.../* Max #
0820: 77 6f 72 64 73 20 69 6e 20 61 72 67 75 6d 65 6e words in argumen
0830: 74 2d 6c 69 73 74 20 61 6e 64 20 74 65 6d 70 6f t-list and tempo
0840: 72 61 72 79 20 73 74 72 75 63 74 75 72 65 20 73 rary structure s
0850: 74 6f 72 61 67 65 2e 0a 20 2a 2f 0a 23 69 66 6e torage.. */.#ifn
0860: 64 65 66 20 5f 5f 41 56 5f 41 4c 49 53 54 5f 57 def __AV_ALIST_W
0870: 4f 52 44 53 0a 23 64 65 66 69 6e 65 20 5f 5f 41 ORDS.#define __A
0880: 56 5f 41 4c 49 53 54 5f 57 4f 52 44 53 20 20 32 V_ALIST_WORDS 2
0890: 35 36 0a 23 65 6e 64 69 66 0a 0a 2f 2a 20 44 65 56.#endif../* De
08a0: 74 65 72 6d 69 6e 65 20 74 68 65 20 61 6c 69 67 termine the alig
08b0: 6e 6d 65 6e 74 20 6f 66 20 61 20 74 79 70 65 20 nment of a type
08c0: 61 74 20 63 6f 6d 70 69 6c 65 20 74 69 6d 65 2e at compile time.
08d0: 0a 20 2a 2f 0a 23 69 66 20 64 65 66 69 6e 65 64 . */.#if defined
08e0: 28 5f 5f 47 4e 55 43 5f 5f 29 0a 23 64 65 66 69 (__GNUC__).#defi
08f0: 6e 65 20 5f 5f 41 56 5f 61 6c 69 67 6e 6f 66 20 ne __AV_alignof
0900: 5f 5f 61 6c 69 67 6e 6f 66 5f 5f 0a 23 65 6c 73 __alignof__.#els
0910: 65 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f e.#if defined(__
0920: 6d 69 70 73 5f 5f 29 20 7c 7c 20 64 65 66 69 6e mips__) || defin
0930: 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 ed(__mipsn32__)
0940: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 || defined(__mip
0950: 73 36 34 5f 5f 29 20 2f 2a 20 53 47 49 20 63 6f s64__) /* SGI co
0960: 6d 70 69 6c 65 72 20 2a 2f 0a 23 64 65 66 69 6e mpiler */.#defin
0970: 65 20 5f 5f 41 56 5f 61 6c 69 67 6e 6f 66 20 5f e __AV_alignof _
0980: 5f 62 75 69 6c 74 69 6e 5f 61 6c 69 67 6e 6f 66 _builtin_alignof
0990: 0a 23 65 6c 73 65 0a 23 64 65 66 69 6e 65 20 5f .#else.#define _
09a0: 5f 41 56 5f 6f 66 66 73 65 74 6f 66 28 74 79 70 _AV_offsetof(typ
09b0: 65 2c 69 64 65 6e 74 29 20 20 28 28 75 6e 73 69 e,ident) ((unsi
09c0: 67 6e 65 64 20 6c 6f 6e 67 29 26 28 28 28 74 79 gned long)&(((ty
09d0: 70 65 2a 29 30 29 2d 3e 69 64 65 6e 74 29 29 0a pe*)0)->ident)).
09e0: 23 64 65 66 69 6e 65 20 5f 5f 41 56 5f 61 6c 69 #define __AV_ali
09f0: 67 6e 6f 66 28 74 79 70 65 29 20 20 5f 5f 41 56 gnof(type) __AV
0a00: 5f 6f 66 66 73 65 74 6f 66 28 73 74 72 75 63 74 _offsetof(struct
0a10: 20 7b 20 63 68 61 72 20 5f 5f 73 6c 6f 74 31 3b { char __slot1;
0a20: 20 74 79 70 65 20 5f 5f 73 6c 6f 74 32 3b 20 7d type __slot2; }
0a30: 2c 20 5f 5f 73 6c 6f 74 32 29 0a 23 65 6e 64 69 , __slot2).#endi
0a40: 66 0a 23 65 6e 64 69 66 0a 0a 2f 2a 20 43 20 62 f.#endif../* C b
0a50: 75 69 6c 74 69 6e 20 74 79 70 65 73 2e 0a 20 2a uiltin types.. *
0a60: 2f 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f /.#if defined(__
0a70: 6d 69 70 73 6e 33 32 5f 5f 29 0a 74 79 70 65 64 mipsn32__).typed
0a80: 65 66 20 6c 6f 6e 67 20 6c 6f 6e 67 20 5f 5f 61 ef long long __a
0a90: 76 77 6f 72 64 3b 0a 23 65 6c 73 65 0a 74 79 70 vword;.#else.typ
0aa0: 65 64 65 66 20 6c 6f 6e 67 20 5f 5f 61 76 77 6f edef long __avwo
0ab0: 72 64 3b 0a 23 65 6e 64 69 66 0a 0a 65 6e 75 6d rd;.#endif..enum
0ac0: 20 5f 5f 41 56 74 79 70 65 0a 7b 0a 20 20 5f 5f __AVtype.{. __
0ad0: 41 56 77 6f 72 64 2c 0a 20 20 5f 5f 41 56 76 6f AVword,. __AVvo
0ae0: 69 64 2c 0a 20 20 5f 5f 41 56 63 68 61 72 2c 0a id,. __AVchar,.
0af0: 20 20 5f 5f 41 56 73 63 68 61 72 2c 0a 20 20 5f __AVschar,. _
0b00: 5f 41 56 75 63 68 61 72 2c 0a 20 20 5f 5f 41 56 _AVuchar,. __AV
0b10: 73 68 6f 72 74 2c 0a 20 20 5f 5f 41 56 75 73 68 short,. __AVush
0b20: 6f 72 74 2c 0a 20 20 5f 5f 41 56 69 6e 74 2c 0a ort,. __AVint,.
0b30: 20 20 5f 5f 41 56 75 69 6e 74 2c 0a 20 20 5f 5f __AVuint,. __
0b40: 41 56 6c 6f 6e 67 2c 0a 20 20 5f 5f 41 56 75 6c AVlong,. __AVul
0b50: 6f 6e 67 2c 0a 20 20 5f 5f 41 56 6c 6f 6e 67 6c ong,. __AVlongl
0b60: 6f 6e 67 2c 0a 20 20 5f 5f 41 56 75 6c 6f 6e 67 ong,. __AVulong
0b70: 6c 6f 6e 67 2c 0a 20 20 5f 5f 41 56 66 6c 6f 61 long,. __AVfloa
0b80: 74 2c 0a 20 20 5f 5f 41 56 64 6f 75 62 6c 65 2c t,. __AVdouble,
0b90: 0a 20 20 5f 5f 41 56 76 6f 69 64 70 2c 0a 20 20 . __AVvoidp,.
0ba0: 5f 5f 41 56 73 74 72 75 63 74 0a 7d 3b 0a 0a 65 __AVstruct.};..e
0bb0: 6e 75 6d 20 5f 5f 41 56 5f 61 6c 69 73 74 5f 66 num __AV_alist_f
0bc0: 6c 61 67 73 0a 7b 0a 0a 20 20 2f 2a 20 68 6f 77 lags.{.. /* how
0bd0: 20 74 6f 20 72 65 74 75 72 6e 20 73 74 72 75 63 to return struc
0be0: 74 73 20 2a 2f 0a 20 20 2f 2a 20 54 68 65 72 65 ts */. /* There
0bf0: 20 61 72 65 20 62 61 73 69 63 61 6c 6c 79 20 33 are basically 3
0c00: 20 77 61 79 73 20 74 6f 20 72 65 74 75 72 6e 20 ways to return
0c10: 73 74 72 75 63 74 73 3a 0a 20 20 20 2a 20 61 2e structs:. * a.
0c20: 20 54 68 65 20 63 61 6c 6c 65 64 20 66 75 6e 63 The called func
0c30: 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 61 20 70 tion returns a p
0c40: 6f 69 6e 74 65 72 20 74 6f 20 73 74 61 74 69 63 ointer to static
0c50: 20 64 61 74 61 2e 20 4e 6f 74 20 72 65 65 6e 74 data. Not reent
0c60: 72 61 6e 74 2e 0a 20 20 20 2a 20 62 2e 20 54 68 rant.. * b. Th
0c70: 65 20 63 61 6c 6c 65 72 20 70 61 73 73 65 73 20 e caller passes
0c80: 74 68 65 20 72 65 74 75 72 6e 20 73 74 72 75 63 the return struc
0c90: 74 75 72 65 20 61 64 64 72 65 73 73 20 69 6e 20 ture address in
0ca0: 61 20 64 65 64 69 63 61 74 65 64 20 72 65 67 69 a dedicated regi
0cb0: 73 74 65 72 0a 20 20 20 2a 20 20 20 20 6f 72 20 ster. * or
0cc0: 61 73 20 61 20 66 69 72 73 74 20 28 6f 72 20 6c as a first (or l
0cd0: 61 73 74 29 2c 20 69 6e 76 69 73 69 62 6c 65 20 ast), invisible
0ce0: 61 72 67 75 6d 65 6e 74 2e 20 54 68 65 20 63 61 argument. The ca
0cf0: 6c 6c 65 64 20 66 75 6e 63 74 69 6f 6e 20 73 74 lled function st
0d00: 6f 72 65 73 0a 20 20 20 2a 20 20 20 20 69 74 73 ores. * its
0d10: 20 72 65 73 75 6c 74 20 74 68 65 72 65 2e 0a 20 result there..
0d20: 20 20 2a 20 63 2e 20 4c 69 6b 65 20 62 2c 20 61 * c. Like b, a
0d30: 6e 64 20 74 68 65 20 63 61 6c 6c 65 64 20 66 75 nd the called fu
0d40: 6e 63 74 69 6f 6e 20 61 6c 73 6f 20 72 65 74 75 nction also retu
0d50: 72 6e 73 20 74 68 65 20 72 65 74 75 72 6e 20 73 rns the return s
0d60: 74 72 75 63 74 75 72 65 0a 20 20 20 2a 20 20 20 tructure. *
0d70: 20 61 64 64 72 65 73 73 20 69 6e 20 74 68 65 20 address in the
0d80: 72 65 74 75 72 6e 20 76 61 6c 75 65 20 72 65 67 return value reg
0d90: 69 73 74 65 72 2e 20 28 54 68 69 73 20 69 73 20 ister. (This is
0da0: 6e 6f 74 20 76 65 72 79 20 64 69 73 74 69 6e 67 not very disting
0db0: 75 69 73 68 61 62 6c 65 0a 20 20 20 2a 20 20 20 uishable. *
0dc0: 20 66 72 6f 6d 20 62 2e 29 0a 20 20 20 2a 20 49 from b.). * I
0dd0: 6e 64 65 70 65 6e 64 65 6e 74 6c 79 20 6f 66 20 ndependently of
0de0: 74 68 69 73 2c 0a 20 20 20 2a 20 72 2e 20 73 6d this,. * r. sm
0df0: 61 6c 6c 20 73 74 72 75 63 74 75 72 65 73 20 28 all structures (
0e00: 3c 3d 20 34 20 6f 72 20 3c 3d 20 38 20 62 79 74 <= 4 or <= 8 byt
0e10: 65 73 29 20 6d 61 79 20 62 65 20 72 65 74 75 72 es) may be retur
0e20: 6e 65 64 20 69 6e 20 74 68 65 20 72 65 74 75 72 ned in the retur
0e30: 6e 0a 20 20 20 2a 20 20 20 20 76 61 6c 75 65 20 n. * value
0e40: 72 65 67 69 73 74 65 72 28 73 29 2c 20 6f 72 0a register(s), or.
0e50: 20 20 20 2a 20 6d 2e 20 65 76 65 6e 20 73 6d 61 * m. even sma
0e60: 6c 6c 20 73 74 72 75 63 74 75 72 65 73 20 61 72 ll structures ar
0e70: 65 20 70 61 73 73 65 64 20 69 6e 20 6d 65 6d 6f e passed in memo
0e80: 72 79 2e 0a 20 20 20 2a 2f 0a 20 20 2f 2a 20 67 ry.. */. /* g
0e90: 63 63 2d 32 2e 36 2e 33 20 65 6d 70 6c 6f 79 73 cc-2.6.3 employs
0ea0: 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 73 the following s
0eb0: 74 72 61 74 65 67 79 3a 0a 20 20 20 2a 20 20 20 trategy:. *
0ec0: 2d 20 49 66 20 50 43 43 5f 53 54 41 54 49 43 5f - If PCC_STATIC_
0ed0: 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20 69 73 STRUCT_RETURN is
0ee0: 20 64 65 66 69 6e 65 64 20 69 6e 20 74 68 65 20 defined in the
0ef0: 6d 61 63 68 69 6e 65 20 64 65 73 63 72 69 70 74 machine descript
0f00: 69 6f 6e 0a 20 20 20 2a 20 20 20 20 20 69 74 20 ion. * it
0f10: 75 73 65 73 20 6d 65 74 68 6f 64 20 61 2c 20 65 uses method a, e
0f20: 6c 73 65 20 6d 65 74 68 6f 64 20 63 2e 0a 20 20 lse method c..
0f30: 20 2a 20 20 20 2d 20 49 66 20 66 6c 61 67 5f 70 * - If flag_p
0f40: 63 63 5f 73 74 72 75 63 74 5f 72 65 74 75 72 6e cc_struct_return
0f50: 20 69 73 20 73 65 74 20 28 65 69 74 68 65 72 20 is set (either
0f60: 62 79 20 2d 66 70 63 63 2d 73 74 72 75 63 74 2d by -fpcc-struct-
0f70: 72 65 74 75 72 6e 20 6f 72 20 69 66 0a 20 20 20 return or if.
0f80: 2a 20 20 20 20 20 44 45 46 41 55 4c 54 5f 50 43 * DEFAULT_PC
0f90: 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20 C_STRUCT_RETURN
0fa0: 69 73 20 64 65 66 69 6e 65 64 20 74 6f 20 31 20 is defined to 1
0fb0: 69 6e 20 74 68 65 20 6d 61 63 68 69 6e 65 20 64 in the machine d
0fc0: 65 73 63 72 69 70 74 69 6f 6e 29 0a 20 20 20 2a escription). *
0fd0: 20 20 20 20 20 69 74 20 75 73 65 73 20 6d 65 74 it uses met
0fe0: 68 6f 64 20 6d 2c 20 65 6c 73 65 20 28 65 69 74 hod m, else (eit
0ff0: 68 65 72 20 62 79 20 2d 66 72 65 67 2d 73 74 72 her by -freg-str
1000: 75 63 74 2d 72 65 74 75 72 6e 20 6f 72 20 69 66 uct-return or if
1010: 0a 20 20 20 2a 20 20 20 20 20 44 45 46 41 55 4c . * DEFAUL
1020: 54 5f 50 43 43 5f 53 54 52 55 43 54 5f 52 45 54 T_PCC_STRUCT_RET
1030: 55 52 4e 20 69 73 20 64 65 66 69 6e 65 64 20 74 URN is defined t
1040: 6f 20 30 20 69 6e 20 74 68 65 20 6d 61 63 68 69 o 0 in the machi
1050: 6e 65 20 64 65 73 63 72 69 70 74 69 6f 6e 29 0a ne description).
1060: 20 20 20 2a 20 20 20 20 20 6d 65 74 68 6f 64 20 * method
1070: 72 2e 0a 20 20 20 2a 2f 0a 20 20 5f 5f 41 56 5f r.. */. __AV_
1080: 50 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52 PCC_STRUCT_RETUR
1090: 4e 09 3d 20 31 3c 3c 30 2c 09 2f 2a 20 61 3a 20 N.= 1<<0,./* a:
10a0: 6e 65 65 64 20 74 6f 20 63 6f 70 79 20 74 68 65 need to copy the
10b0: 20 73 74 72 75 63 74 20 2a 2f 0a 20 20 5f 5f 41 struct */. __A
10c0: 56 5f 53 4d 41 4c 4c 5f 53 54 52 55 43 54 5f 52 V_SMALL_STRUCT_R
10d0: 45 54 55 52 4e 09 3d 20 31 3c 3c 31 2c 09 2f 2a ETURN.= 1<<1,./*
10e0: 20 72 3a 20 73 70 65 63 69 61 6c 20 63 61 73 65 r: special case
10f0: 20 66 6f 72 20 73 6d 61 6c 6c 20 73 74 72 75 63 for small struc
1100: 74 73 20 2a 2f 0a 20 20 5f 5f 41 56 5f 47 43 43 ts */. __AV_GCC
1110: 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 09 3d _STRUCT_RETURN.=
1120: 20 31 3c 3c 32 2c 09 2f 2a 20 63 6f 6e 73 69 64 1<<2,./* consid
1130: 65 72 20 38 20 62 79 74 65 20 73 74 72 75 63 74 er 8 byte struct
1140: 73 20 61 73 20 73 6d 61 6c 6c 20 2a 2f 0a 23 69 s as small */.#i
1150: 66 20 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 f defined(__spar
1160: 63 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 c__) && !defined
1170: 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29 0a 20 20 (__sparc64__).
1180: 5f 5f 41 56 5f 53 55 4e 43 43 5f 53 54 52 55 43 __AV_SUNCC_STRUC
1190: 54 5f 52 45 54 55 52 4e 09 3d 20 31 3c 3c 33 2c T_RETURN.= 1<<3,
11a0: 0a 20 20 5f 5f 41 56 5f 53 55 4e 50 52 4f 43 43 . __AV_SUNPROCC
11b0: 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 09 3d _STRUCT_RETURN.=
11c0: 20 31 3c 3c 34 2c 0a 23 65 6e 64 69 66 0a 23 69 1<<4,.#endif.#i
11d0: 66 20 64 65 66 69 6e 65 64 28 5f 5f 69 33 38 36 f defined(__i386
11e0: 5f 5f 29 0a 20 20 5f 5f 41 56 5f 4e 45 58 54 47 __). __AV_NEXTG
11f0: 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e CC_STRUCT_RETURN
1200: 09 3d 20 31 3c 3c 33 2c 0a 20 20 5f 5f 41 56 5f .= 1<<3,. __AV_
1210: 4d 53 56 43 5f 53 54 52 55 43 54 5f 52 45 54 55 MSVC_STRUCT_RETU
1220: 52 4e 09 3d 20 31 3c 3c 34 2c 0a 23 65 6e 64 69 RN.= 1<<4,.#endi
1230: 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f f.#if defined(__
1240: 68 70 70 61 5f 5f 29 0a 20 20 5f 5f 41 56 5f 4f hppa__). __AV_O
1250: 4c 44 47 43 43 5f 53 54 52 55 43 54 5f 52 45 54 LDGCC_STRUCT_RET
1260: 55 52 4e 09 3d 20 31 3c 3c 33 2c 0a 23 65 6e 64 URN.= 1<<3,.#end
1270: 69 66 0a 20 20 2f 2a 20 74 68 65 20 64 65 66 61 if. /* the defa
1280: 75 6c 74 20 77 61 79 20 74 6f 20 72 65 74 75 72 ult way to retur
1290: 6e 20 73 74 72 75 63 74 73 20 2a 2f 0a 20 20 2f n structs */. /
12a0: 2a 20 54 68 69 73 20 63 68 6f 69 63 65 20 68 65 * This choice he
12b0: 72 65 20 69 73 20 62 61 73 65 64 20 6f 6e 20 74 re is based on t
12c0: 68 65 20 61 73 73 75 6d 70 74 69 6f 6e 20 74 68 he assumption th
12d0: 61 74 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 at the function
12e0: 79 6f 75 20 61 72 65 0a 20 20 20 2a 20 67 6f 69 you are. * goi
12f0: 6e 67 20 74 6f 20 63 61 6c 6c 20 68 61 73 20 62 ng to call has b
1300: 65 65 6e 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 een compiled wit
1310: 68 20 74 68 65 20 73 61 6d 65 20 63 6f 6d 70 69 h the same compi
1320: 6c 65 72 20 79 6f 75 20 61 72 65 20 75 73 69 6e ler you are usin
1330: 67 20 74 6f 0a 20 20 20 2a 20 69 6e 63 6c 75 64 g to. * includ
1340: 65 20 74 68 69 73 20 66 69 6c 65 2e 0a 20 20 20 e this file..
1350: 2a 20 49 66 20 79 6f 75 20 77 61 6e 74 20 74 6f * If you want to
1360: 20 63 61 6c 6c 20 66 75 6e 63 74 69 6f 6e 73 20 call functions
1370: 77 69 74 68 20 61 6e 6f 74 68 65 72 20 73 74 72 with another str
1380: 75 63 74 20 72 65 74 75 72 6e 69 6e 67 20 63 6f uct returning co
1390: 6e 76 65 6e 74 69 6f 6e 2c 0a 20 20 20 2a 20 6a nvention,. * j
13a0: 75 73 74 20 20 23 64 65 66 69 6e 65 20 5f 5f 41 ust #define __A
13b0: 56 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20 V_STRUCT_RETURN
13c0: 2e 2e 2e 0a 20 20 20 2a 20 62 65 66 6f 72 65 20 .... * before
13d0: 6f 72 20 61 66 74 65 72 20 23 69 6e 63 6c 75 64 or after #includ
13e0: 69 6e 67 20 3c 61 76 63 61 6c 6c 2e 68 3e 2e 0a ing <avcall.h>..
13f0: 20 20 20 2a 2f 0a 23 69 66 6e 64 65 66 20 5f 5f */.#ifndef __
1400: 41 56 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e AV_STRUCT_RETURN
1410: 0a 20 20 5f 5f 41 56 5f 53 54 52 55 43 54 5f 52 . __AV_STRUCT_R
1420: 45 54 55 52 4e 09 09 3d 0a 23 69 66 20 64 65 66 ETURN..=.#if def
1430: 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f 5f 29 20 ined(__sparc__)
1440: 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 73 70 && !defined(__sp
1450: 61 72 63 36 34 5f 5f 29 20 26 26 20 64 65 66 69 arc64__) && defi
1460: 6e 65 64 28 73 75 6e 29 20 26 26 20 64 65 66 69 ned(sun) && defi
1470: 6e 65 64 28 5f 5f 53 55 4e 50 52 4f 5f 43 29 20 ned(__SUNPRO_C)
1480: 2f 2a 20 53 55 4e 57 73 70 72 6f 20 63 63 20 2a /* SUNWspro cc *
1490: 2f 0a 09 09 09 09 20 20 5f 5f 41 56 5f 53 55 4e /..... __AV_SUN
14a0: 50 52 4f 43 43 5f 53 54 52 55 43 54 5f 52 45 54 PROCC_STRUCT_RET
14b0: 55 52 4e 2c 0a 23 65 6c 73 65 0a 23 69 66 20 64 URN,.#else.#if d
14c0: 65 66 69 6e 65 64 28 5f 5f 50 43 43 5f 53 54 52 efined(__PCC_STR
14d0: 55 43 54 5f 52 45 54 55 52 4e 5f 5f 29 20 2f 2a UCT_RETURN__) /*
14e0: 20 64 65 66 69 6e 65 64 20 74 68 72 6f 75 67 68 defined through
14f0: 20 63 6f 6e 66 69 67 75 72 65 2c 20 73 65 65 20 configure, see
1500: 61 62 6f 76 65 20 2a 2f 0a 09 09 09 09 20 20 5f above */..... _
1510: 5f 41 56 5f 50 43 43 5f 53 54 52 55 43 54 5f 52 _AV_PCC_STRUCT_R
1520: 45 54 55 52 4e 20 7c 0a 23 69 66 20 64 65 66 69 ETURN |.#if defi
1530: 6e 65 64 28 5f 5f 73 70 61 72 63 5f 5f 29 20 26 ned(__sparc__) &
1540: 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 & !defined(__spa
1550: 72 63 36 34 5f 5f 29 20 26 26 20 64 65 66 69 6e rc64__) && defin
1560: 65 64 28 73 75 6e 29 20 26 26 20 21 28 64 65 66 ed(sun) && !(def
1570: 69 6e 65 64 28 5f 5f 53 54 44 43 5f 5f 29 20 7c ined(__STDC__) |
1580: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 47 4e 55 43 | defined(__GNUC
1590: 5f 5f 29 29 20 2f 2a 20 73 75 6e 20 63 63 20 2a __)) /* sun cc *
15a0: 2f 0a 20 20 09 09 09 09 20 20 5f 5f 41 56 5f 53 /. .... __AV_S
15b0: 55 4e 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55 UNCC_STRUCT_RETU
15c0: 52 4e 2c 0a 23 65 6c 73 65 0a 20 20 09 09 09 09 RN,.#else. ....
15d0: 20 20 30 2c 0a 23 65 6e 64 69 66 0a 23 65 6c 73 0,.#endif.#els
15e0: 65 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f e.#if defined(__
15f0: 53 4d 41 4c 4c 5f 53 54 52 55 43 54 5f 52 45 54 SMALL_STRUCT_RET
1600: 55 52 4e 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 URN__) || define
1610: 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 7c d(__mipsn32__) |
1620: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 | defined(__mips
1630: 36 34 5f 5f 29 20 2f 2a 20 64 65 66 69 6e 65 64 64__) /* defined
1640: 20 74 68 72 6f 75 67 68 20 63 6f 6e 66 69 67 75 through configu
1650: 72 65 2c 20 73 65 65 20 61 62 6f 76 65 20 2a 2f re, see above */
1660: 0a 09 09 09 09 20 20 5f 5f 41 56 5f 53 4d 41 4c ..... __AV_SMAL
1670: 4c 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20 L_STRUCT_RETURN
1680: 7c 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 |.#endif.#if def
1690: 69 6e 65 64 28 5f 5f 47 4e 55 43 5f 5f 29 0a 09 ined(__GNUC__)..
16a0: 09 09 09 20 20 5f 5f 41 56 5f 47 43 43 5f 53 54 ... __AV_GCC_ST
16b0: 52 55 43 54 5f 52 45 54 55 52 4e 20 7c 0a 23 65 RUCT_RETURN |.#e
16c0: 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 ndif.#if defined
16d0: 28 5f 5f 69 33 38 36 5f 5f 29 20 26 26 20 64 65 (__i386__) && de
16e0: 66 69 6e 65 64 28 4e 65 58 54 29 20 26 26 20 64 fined(NeXT) && d
16f0: 65 66 69 6e 65 64 28 5f 5f 47 4e 55 43 5f 5f 29 efined(__GNUC__)
1700: 20 2f 2a 20 4e 65 58 54 20 67 63 63 2d 32 2e 35 /* NeXT gcc-2.5
1710: 2e 38 20 2a 2f 0a 09 09 09 09 20 20 5f 5f 41 56 .8 */..... __AV
1720: 5f 4e 45 58 54 47 43 43 5f 53 54 52 55 43 54 5f _NEXTGCC_STRUCT_
1730: 52 45 54 55 52 4e 20 7c 0a 23 65 6e 64 69 66 0a RETURN |.#endif.
1740: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 69 33 #if defined(__i3
1750: 38 36 5f 5f 29 20 26 26 20 64 65 66 69 6e 65 64 86__) && defined
1760: 28 5f 4d 53 43 5f 56 45 52 29 20 2f 2a 20 4d 53 (_MSC_VER) /* MS
1770: 56 43 20 34 2e 30 20 2a 2f 0a 09 09 09 09 20 20 VC 4.0 */.....
1780: 5f 5f 41 56 5f 4d 53 56 43 5f 53 54 52 55 43 54 __AV_MSVC_STRUCT
1790: 5f 52 45 54 55 52 4e 20 7c 0a 23 65 6e 64 69 66 _RETURN |.#endif
17a0: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 68 .#if defined(__h
17b0: 70 70 61 5f 5f 29 20 26 26 20 64 65 66 69 6e 65 ppa__) && define
17c0: 64 28 5f 5f 47 4e 55 43 5f 5f 29 20 26 26 20 28 d(__GNUC__) && (
17d0: 5f 5f 47 4e 55 43 5f 5f 20 3c 20 33 29 20 26 26 __GNUC__ < 3) &&
17e0: 20 28 5f 5f 47 4e 55 43 5f 4d 49 4e 4f 52 5f 5f (__GNUC_MINOR__
17f0: 20 3c 20 37 29 0a 09 09 09 09 20 20 5f 5f 41 56 < 7)..... __AV
1800: 5f 4f 4c 44 47 43 43 5f 53 54 52 55 43 54 5f 52 _OLDGCC_STRUCT_R
1810: 45 54 55 52 4e 20 7c 0a 23 65 6e 64 69 66 0a 20 ETURN |.#endif.
1820: 20 09 09 09 09 20 20 30 2c 0a 23 65 6e 64 69 66 .... 0,.#endif
1830: 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69 66 0a 0a .#endif.#endif..
1840: 20 20 2f 2a 20 68 6f 77 20 74 6f 20 72 65 74 75 /* how to retu
1850: 72 6e 20 66 6c 6f 61 74 73 20 2a 2f 0a 23 69 66 rn floats */.#if
1860: 20 64 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f defined(__m68k_
1870: 5f 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f _) || (defined(_
1880: 5f 73 70 61 72 63 5f 5f 29 20 26 26 20 21 64 65 _sparc__) && !de
1890: 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f fined(__sparc64_
18a0: 5f 29 29 0a 20 20 5f 5f 41 56 5f 53 55 4e 43 43 _)). __AV_SUNCC
18b0: 5f 46 4c 4f 41 54 5f 52 45 54 55 52 4e 09 3d 20 _FLOAT_RETURN.=
18c0: 31 3c 3c 35 2c 0a 23 65 6e 64 69 66 0a 23 69 66 1<<5,.#endif.#if
18d0: 20 64 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f defined(__m68k_
18e0: 5f 29 0a 20 20 5f 5f 41 56 5f 46 52 45 47 5f 46 _). __AV_FREG_F
18f0: 4c 4f 41 54 5f 52 45 54 55 52 4e 09 3d 20 31 3c LOAT_RETURN.= 1<
1900: 3c 36 2c 0a 23 65 6e 64 69 66 0a 20 20 2f 2a 20 <6,.#endif. /*
1910: 74 68 65 20 64 65 66 61 75 6c 74 20 77 61 79 20 the default way
1920: 74 6f 20 72 65 74 75 72 6e 20 66 6c 6f 61 74 73 to return floats
1930: 20 2a 2f 0a 20 20 2f 2a 20 54 68 69 73 20 63 68 */. /* This ch
1940: 6f 69 63 65 20 68 65 72 65 20 69 73 20 62 61 73 oice here is bas
1950: 65 64 20 6f 6e 20 74 68 65 20 61 73 73 75 6d 70 ed on the assump
1960: 74 69 6f 6e 20 74 68 61 74 20 74 68 65 20 66 75 tion that the fu
1970: 6e 63 74 69 6f 6e 20 79 6f 75 20 61 72 65 0a 20 nction you are.
1980: 20 20 2a 20 67 6f 69 6e 67 20 74 6f 20 63 61 6c * going to cal
1990: 6c 20 68 61 73 20 62 65 65 6e 20 63 6f 6d 70 69 l has been compi
19a0: 6c 65 64 20 77 69 74 68 20 74 68 65 20 73 61 6d led with the sam
19b0: 65 20 63 6f 6d 70 69 6c 65 72 20 79 6f 75 20 61 e compiler you a
19c0: 72 65 20 75 73 69 6e 67 20 74 6f 0a 20 20 20 2a re using to. *
19d0: 20 69 6e 63 6c 75 64 65 20 74 68 69 73 20 66 69 include this fi
19e0: 6c 65 2e 0a 20 20 20 2a 20 49 66 20 79 6f 75 20 le.. * If you
19f0: 77 61 6e 74 20 74 6f 20 63 61 6c 6c 20 66 75 6e want to call fun
1a00: 63 74 69 6f 6e 73 20 77 69 74 68 20 61 6e 6f 74 ctions with anot
1a10: 68 65 72 20 66 6c 6f 61 74 20 72 65 74 75 72 6e her float return
1a20: 69 6e 67 20 63 6f 6e 76 65 6e 74 69 6f 6e 2c 0a ing convention,.
1a30: 20 20 20 2a 20 6a 75 73 74 20 20 23 64 65 66 69 * just #defi
1a40: 6e 65 20 5f 5f 41 56 5f 46 4c 4f 41 54 5f 52 45 ne __AV_FLOAT_RE
1a50: 54 55 52 4e 20 2e 2e 2e 0a 20 20 20 2a 20 62 65 TURN .... * be
1a60: 66 6f 72 65 20 6f 72 20 61 66 74 65 72 20 23 69 fore or after #i
1a70: 6e 63 6c 75 64 69 6e 67 20 3c 61 76 63 61 6c 6c ncluding <avcall
1a80: 2e 68 3e 2e 0a 20 20 20 2a 2f 0a 23 69 66 6e 64 .h>.. */.#ifnd
1a90: 65 66 20 5f 5f 41 56 5f 46 4c 4f 41 54 5f 52 45 ef __AV_FLOAT_RE
1aa0: 54 55 52 4e 0a 23 69 66 20 28 64 65 66 69 6e 65 TURN.#if (define
1ab0: 64 28 5f 5f 6d 36 38 6b 5f 5f 29 20 7c 7c 20 28 d(__m68k__) || (
1ac0: 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f defined(__sparc_
1ad0: 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f _) && !defined(_
1ae0: 5f 73 70 61 72 63 36 34 5f 5f 29 29 29 20 26 26 _sparc64__))) &&
1af0: 20 21 64 65 66 69 6e 65 64 28 5f 5f 47 4e 55 43 !defined(__GNUC
1b00: 5f 5f 29 20 26 26 20 64 65 66 69 6e 65 64 28 73 __) && defined(s
1b10: 75 6e 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 un) && !defined(
1b20: 5f 5f 53 55 4e 50 52 4f 5f 43 29 20 20 2f 2a 20 __SUNPRO_C) /*
1b30: 73 75 6e 20 63 63 20 2a 2f 0a 20 20 5f 5f 41 56 sun cc */. __AV
1b40: 5f 46 4c 4f 41 54 5f 52 45 54 55 52 4e 09 09 3d _FLOAT_RETURN..=
1b50: 20 5f 5f 41 56 5f 53 55 4e 43 43 5f 46 4c 4f 41 __AV_SUNCC_FLOA
1b60: 54 5f 52 45 54 55 52 4e 2c 0a 23 65 6c 69 66 20 T_RETURN,.#elif
1b70: 28 64 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f (defined(__m68k_
1b80: 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f _) && !defined(_
1b90: 5f 49 52 45 47 5f 46 4c 4f 41 54 5f 52 45 54 55 _IREG_FLOAT_RETU
1ba0: 52 4e 5f 5f 29 29 0a 20 20 5f 5f 41 56 5f 46 4c RN__)). __AV_FL
1bb0: 4f 41 54 5f 52 45 54 55 52 4e 09 09 3d 20 5f 5f OAT_RETURN..= __
1bc0: 41 56 5f 46 52 45 47 5f 46 4c 4f 41 54 5f 52 45 AV_FREG_FLOAT_RE
1bd0: 54 55 52 4e 2c 0a 23 65 6c 73 65 0a 20 20 5f 5f TURN,.#else. __
1be0: 41 56 5f 46 4c 4f 41 54 5f 52 45 54 55 52 4e 09 AV_FLOAT_RETURN.
1bf0: 09 3d 20 30 2c 0a 23 65 6e 64 69 66 0a 23 65 6e .= 0,.#endif.#en
1c00: 64 69 66 0a 0a 20 20 2f 2a 20 68 6f 77 20 74 6f dif.. /* how to
1c10: 20 70 61 73 73 20 73 74 72 75 63 74 73 20 2a 2f pass structs */
1c20: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d .#if defined(__m
1c30: 69 70 73 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 ips__) || define
1c40: 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 7c d(__mipsn32__) |
1c50: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 | defined(__mips
1c60: 36 34 5f 5f 29 0a 20 20 5f 5f 41 56 5f 53 47 49 64__). __AV_SGI
1c70: 43 43 5f 53 54 52 55 43 54 5f 41 52 47 53 09 3d CC_STRUCT_ARGS.=
1c80: 20 31 3c 3c 37 2c 0a 23 65 6e 64 69 66 0a 23 69 1<<7,.#endif.#i
1c90: 66 20 64 65 66 69 6e 65 64 28 5f 5f 72 73 36 30 f defined(__rs60
1ca0: 30 30 5f 5f 29 0a 20 20 5f 5f 41 56 5f 41 49 58 00__). __AV_AIX
1cb0: 43 43 5f 53 54 52 55 43 54 5f 41 52 47 53 09 3d CC_STRUCT_ARGS.=
1cc0: 20 31 3c 3c 37 2c 0a 23 65 6e 64 69 66 0a 20 20 1<<7,.#endif.
1cd0: 2f 2a 20 74 68 65 20 64 65 66 61 75 6c 74 20 77 /* the default w
1ce0: 61 79 20 74 6f 20 70 61 73 73 20 66 6c 6f 61 74 ay to pass float
1cf0: 73 20 2a 2f 0a 20 20 2f 2a 20 54 68 69 73 20 63 s */. /* This c
1d00: 68 6f 69 63 65 20 68 65 72 65 20 69 73 20 62 61 hoice here is ba
1d10: 73 65 64 20 6f 6e 20 74 68 65 20 61 73 73 75 6d sed on the assum
1d20: 70 74 69 6f 6e 20 74 68 61 74 20 74 68 65 20 66 ption that the f
1d30: 75 6e 63 74 69 6f 6e 20 79 6f 75 20 61 72 65 0a unction you are.
1d40: 20 20 20 2a 20 67 6f 69 6e 67 20 74 6f 20 63 61 * going to ca
1d50: 6c 6c 20 68 61 73 20 62 65 65 6e 20 63 6f 6d 70 ll has been comp
1d60: 69 6c 65 64 20 77 69 74 68 20 74 68 65 20 73 61 iled with the sa
1d70: 6d 65 20 63 6f 6d 70 69 6c 65 72 20 79 6f 75 20 me compiler you
1d80: 61 72 65 20 75 73 69 6e 67 20 74 6f 0a 20 20 20 are using to.
1d90: 2a 20 69 6e 63 6c 75 64 65 20 74 68 69 73 20 66 * include this f
1da0: 69 6c 65 2e 0a 20 20 20 2a 20 49 66 20 79 6f 75 ile.. * If you
1db0: 20 77 61 6e 74 20 74 6f 20 63 61 6c 6c 20 66 75 want to call fu
1dc0: 6e 63 74 69 6f 6e 73 20 77 69 74 68 20 61 6e 6f nctions with ano
1dd0: 74 68 65 72 20 66 6c 6f 61 74 20 70 61 73 73 69 ther float passi
1de0: 6e 67 20 63 6f 6e 76 65 6e 74 69 6f 6e 2c 0a 20 ng convention,.
1df0: 20 20 2a 20 6a 75 73 74 20 20 23 64 65 66 69 6e * just #defin
1e00: 65 20 5f 5f 41 56 5f 53 54 52 55 43 54 5f 41 52 e __AV_STRUCT_AR
1e10: 47 53 20 2e 2e 2e 0a 20 20 20 2a 20 62 65 66 6f GS .... * befo
1e20: 72 65 20 6f 72 20 61 66 74 65 72 20 23 69 6e 63 re or after #inc
1e30: 6c 75 64 69 6e 67 20 3c 61 76 63 61 6c 6c 2e 68 luding <avcall.h
1e40: 3e 2e 0a 20 20 20 2a 2f 0a 23 69 66 6e 64 65 66 >.. */.#ifndef
1e50: 20 5f 5f 41 56 5f 53 54 52 55 43 54 5f 41 52 47 __AV_STRUCT_ARG
1e60: 53 0a 23 69 66 20 28 64 65 66 69 6e 65 64 28 5f S.#if (defined(_
1e70: 5f 6d 69 70 73 5f 5f 29 20 7c 7c 20 64 65 66 69 _mips__) || defi
1e80: 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 ned(__mipsn32__)
1e90: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 || defined(__mi
1ea0: 70 73 36 34 5f 5f 29 29 20 26 26 20 21 64 65 66 ps64__)) && !def
1eb0: 69 6e 65 64 28 5f 5f 47 4e 55 43 5f 5f 29 20 2f ined(__GNUC__) /
1ec0: 2a 20 53 47 49 20 6d 69 70 73 20 63 63 20 2a 2f * SGI mips cc */
1ed0: 0a 20 20 5f 5f 41 56 5f 53 54 52 55 43 54 5f 41 . __AV_STRUCT_A
1ee0: 52 47 53 09 09 3d 20 5f 5f 41 56 5f 53 47 49 43 RGS..= __AV_SGIC
1ef0: 43 5f 53 54 52 55 43 54 5f 41 52 47 53 2c 0a 23 C_STRUCT_ARGS,.#
1f00: 65 6c 73 65 0a 23 69 66 20 64 65 66 69 6e 65 64 else.#if defined
1f10: 28 5f 5f 72 73 36 30 30 30 5f 5f 29 20 26 26 20 (__rs6000__) &&
1f20: 64 65 66 69 6e 65 64 28 5f 41 49 58 29 20 26 26 defined(_AIX) &&
1f30: 20 21 64 65 66 69 6e 65 64 28 5f 5f 47 4e 55 43 !defined(__GNUC
1f40: 5f 5f 29 20 2f 2a 20 41 49 58 20 63 63 2c 20 78 __) /* AIX cc, x
1f50: 6c 63 20 2a 2f 0a 20 20 5f 5f 41 56 5f 53 54 52 lc */. __AV_STR
1f60: 55 43 54 5f 41 52 47 53 09 09 3d 20 5f 5f 41 56 UCT_ARGS..= __AV
1f70: 5f 41 49 58 43 43 5f 53 54 52 55 43 54 5f 41 52 _AIXCC_STRUCT_AR
1f80: 47 53 2c 0a 23 65 6c 73 65 0a 20 20 5f 5f 41 56 GS,.#else. __AV
1f90: 5f 53 54 52 55 43 54 5f 41 52 47 53 09 09 3d 20 _STRUCT_ARGS..=
1fa0: 30 2c 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69 66 0,.#endif.#endif
1fb0: 0a 23 65 6e 64 69 66 0a 0a 20 20 2f 2a 20 68 6f .#endif.. /* ho
1fc0: 77 20 74 6f 20 70 61 73 73 20 66 6c 6f 61 74 73 w to pass floats
1fd0: 20 2a 2f 0a 20 20 2f 2a 20 41 4e 53 49 20 43 20 */. /* ANSI C
1fe0: 63 6f 6d 70 69 6c 65 72 73 20 61 6e 64 20 47 4e compilers and GN
1ff0: 55 20 67 63 63 20 70 61 73 73 20 66 6c 6f 61 74 U gcc pass float
2000: 73 20 61 73 20 66 6c 6f 61 74 73 2e 0a 20 20 20 s as floats..
2010: 2a 20 4b 26 52 20 43 20 63 6f 6d 70 69 6c 65 72 * K&R C compiler
2020: 73 20 70 61 73 73 20 66 6c 6f 61 74 73 20 61 73 s pass floats as
2030: 20 64 6f 75 62 6c 65 73 2e 0a 20 20 20 2a 20 28 doubles.. * (
2040: 45 78 63 65 70 74 20 73 6f 6d 65 20 63 6f 6d 70 Except some comp
2050: 69 6c 65 72 73 20 6c 69 6b 65 20 53 47 49 20 4d ilers like SGI M
2060: 49 50 53 20 22 63 63 22 20 61 6e 64 20 22 63 63 IPS "cc" and "cc
2070: 20 2d 63 63 6b 72 22 20 69 66 20 61 20 70 72 6f -cckr" if a pro
2080: 74 6f 74 79 70 65 20 69 73 0a 20 20 20 2a 20 6b totype is. * k
2090: 6e 6f 77 6e 20 66 6f 72 20 74 68 65 20 63 61 6c nown for the cal
20a0: 6c 65 64 20 66 75 6e 63 74 69 6f 6e 73 2e 20 42 led functions. B
20b0: 75 74 20 74 6f 20 63 6f 6d 70 69 6c 65 20 61 20 ut to compile a
20c0: 70 72 6f 67 72 61 6d 20 77 69 74 68 20 70 72 6f program with pro
20d0: 74 6f 74 79 70 65 73 2c 0a 20 20 20 2a 20 22 63 totypes,. * "c
20e0: 63 20 2d 61 6e 73 69 22 20 69 73 20 62 65 74 74 c -ansi" is bett
20f0: 65 72 20 61 6e 79 77 61 79 2e 0a 20 20 20 2a 2f er anyway.. */
2100: 0a 20 20 5f 5f 41 56 5f 41 4e 53 49 5f 46 4c 4f . __AV_ANSI_FLO
2110: 41 54 5f 41 52 47 53 09 09 3d 20 30 2c 20 20 20 AT_ARGS..= 0,
2120: 20 2f 2a 20 70 61 73 73 20 66 6c 6f 61 74 73 20 /* pass floats
2130: 61 73 20 66 6c 6f 61 74 73 20 2a 2f 0a 20 20 5f as floats */. _
2140: 5f 41 56 5f 54 52 41 44 49 54 49 4f 4e 41 4c 5f _AV_TRADITIONAL_
2150: 46 4c 4f 41 54 5f 41 52 47 53 09 3d 20 31 3c 3c FLOAT_ARGS.= 1<<
2160: 38 2c 20 2f 2a 20 70 61 73 73 20 66 6c 6f 61 74 8, /* pass float
2170: 73 20 61 73 20 64 6f 75 62 6c 65 73 20 2a 2f 0a s as doubles */.
2180: 20 20 2f 2a 20 74 68 65 20 64 65 66 61 75 6c 74 /* the default
2190: 20 77 61 79 20 74 6f 20 70 61 73 73 20 66 6c 6f way to pass flo
21a0: 61 74 73 20 2a 2f 0a 20 20 2f 2a 20 54 68 69 73 ats */. /* This
21b0: 20 63 68 6f 69 63 65 20 68 65 72 65 20 69 73 20 choice here is
21c0: 62 61 73 65 64 20 6f 6e 20 74 68 65 20 61 73 73 based on the ass
21d0: 75 6d 70 74 69 6f 6e 20 74 68 61 74 20 74 68 65 umption that the
21e0: 20 66 75 6e 63 74 69 6f 6e 20 79 6f 75 20 61 72 function you ar
21f0: 65 0a 20 20 20 2a 20 67 6f 69 6e 67 20 74 6f 20 e. * going to
2200: 63 61 6c 6c 20 68 61 73 20 62 65 65 6e 20 63 6f call has been co
2210: 6d 70 69 6c 65 64 20 77 69 74 68 20 74 68 65 20 mpiled with the
2220: 73 61 6d 65 20 63 6f 6d 70 69 6c 65 72 20 79 6f same compiler yo
2230: 75 20 61 72 65 20 75 73 69 6e 67 20 74 6f 0a 20 u are using to.
2240: 20 20 2a 20 69 6e 63 6c 75 64 65 20 74 68 69 73 * include this
2250: 20 66 69 6c 65 2e 0a 20 20 20 2a 20 49 66 20 79 file.. * If y
2260: 6f 75 20 77 61 6e 74 20 74 6f 20 63 61 6c 6c 20 ou want to call
2270: 66 75 6e 63 74 69 6f 6e 73 20 77 69 74 68 20 61 functions with a
2280: 6e 6f 74 68 65 72 20 66 6c 6f 61 74 20 70 61 73 nother float pas
2290: 73 69 6e 67 20 63 6f 6e 76 65 6e 74 69 6f 6e 2c sing convention,
22a0: 0a 20 20 20 2a 20 6a 75 73 74 20 20 23 64 65 66 . * just #def
22b0: 69 6e 65 20 5f 5f 41 56 5f 46 4c 4f 41 54 5f 41 ine __AV_FLOAT_A
22c0: 52 47 53 20 2e 2e 2e 0a 20 20 20 2a 20 62 65 66 RGS .... * bef
22d0: 6f 72 65 20 6f 72 20 61 66 74 65 72 20 23 69 6e ore or after #in
22e0: 63 6c 75 64 69 6e 67 20 3c 61 76 63 61 6c 6c 2e cluding <avcall.
22f0: 68 3e 2e 0a 20 20 20 2a 2f 0a 23 69 66 6e 64 65 h>.. */.#ifnde
2300: 66 20 5f 5f 41 56 5f 46 4c 4f 41 54 5f 41 52 47 f __AV_FLOAT_ARG
2310: 53 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f S.#if defined(__
2320: 53 54 44 43 5f 5f 29 20 7c 7c 20 64 65 66 69 6e STDC__) || defin
2330: 65 64 28 5f 5f 47 4e 55 43 5f 5f 29 20 2f 2a 20 ed(__GNUC__) /*
2340: 77 68 61 74 20 61 62 6f 75 74 20 68 70 70 61 20 what about hppa
2350: 22 63 63 20 2d 41 61 22 20 3f 3f 20 2a 2f 0a 20 "cc -Aa" ?? */.
2360: 20 5f 5f 41 56 5f 46 4c 4f 41 54 5f 41 52 47 53 __AV_FLOAT_ARGS
2370: 09 09 3d 20 5f 5f 41 56 5f 41 4e 53 49 5f 46 4c ..= __AV_ANSI_FL
2380: 4f 41 54 5f 41 52 47 53 2c 0a 23 65 6c 73 65 0a OAT_ARGS,.#else.
2390: 20 20 5f 5f 41 56 5f 46 4c 4f 41 54 5f 41 52 47 __AV_FLOAT_ARG
23a0: 53 09 09 3d 20 5f 5f 41 56 5f 54 52 41 44 49 54 S..= __AV_TRADIT
23b0: 49 4f 4e 41 4c 5f 46 4c 4f 41 54 5f 41 52 47 53 IONAL_FLOAT_ARGS
23c0: 2c 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69 66 0a ,.#endif.#endif.
23d0: 0a 20 20 2f 2a 20 68 6f 77 20 74 6f 20 70 61 73 . /* how to pas
23e0: 73 20 61 6e 64 20 72 65 74 75 72 6e 20 73 6d 61 s and return sma
23f0: 6c 6c 20 69 6e 74 65 67 65 72 20 61 72 67 75 6d ll integer argum
2400: 65 6e 74 73 20 2a 2f 0a 20 20 5f 5f 41 56 5f 41 ents */. __AV_A
2410: 4e 53 49 5f 49 4e 54 45 47 45 52 53 09 09 3d 20 NSI_INTEGERS..=
2420: 30 2c 20 2f 2a 20 6e 6f 20 70 72 6f 6d 6f 74 69 0, /* no promoti
2430: 6f 6e 73 20 2a 2f 0a 20 20 5f 5f 41 56 5f 54 52 ons */. __AV_TR
2440: 41 44 49 54 49 4f 4e 41 4c 5f 49 4e 54 45 47 45 ADITIONAL_INTEGE
2450: 52 53 09 3d 20 30 2c 20 2f 2a 20 70 72 6f 6d 6f RS.= 0, /* promo
2460: 74 65 20 5b 75 5d 63 68 61 72 2c 20 5b 75 5d 73 te [u]char, [u]s
2470: 68 6f 72 74 20 74 6f 20 5b 75 5d 69 6e 74 20 2a hort to [u]int *
2480: 2f 0a 20 20 2f 2a 20 46 6f 72 74 75 6e 61 74 65 /. /* Fortunate
2490: 6c 79 20 74 68 65 73 65 20 74 77 6f 20 6d 65 74 ly these two met
24a0: 68 6f 64 73 20 61 72 65 20 63 6f 6d 70 61 74 69 hods are compati
24b0: 62 6c 65 2e 20 4f 75 72 20 6d 61 63 72 6f 73 20 ble. Our macros
24c0: 77 6f 72 6b 20 77 69 74 68 20 62 6f 74 68 2e 20 work with both.
24d0: 2a 2f 0a 20 20 2f 2a 20 74 68 65 20 64 65 66 61 */. /* the defa
24e0: 75 6c 74 20 77 61 79 20 74 6f 20 70 61 73 73 20 ult way to pass
24f0: 61 6e 64 20 72 65 74 75 72 6e 20 73 6d 61 6c 6c and return small
2500: 20 69 6e 74 65 67 65 72 20 61 72 67 75 6d 65 6e integer argumen
2510: 74 73 20 2a 2f 0a 20 20 2f 2a 20 54 68 69 73 20 ts */. /* This
2520: 63 68 6f 69 63 65 20 68 65 72 65 20 69 73 20 62 choice here is b
2530: 61 73 65 64 20 6f 6e 20 74 68 65 20 61 73 73 75 ased on the assu
2540: 6d 70 74 69 6f 6e 20 74 68 61 74 20 74 68 65 20 mption that the
2550: 66 75 6e 63 74 69 6f 6e 20 79 6f 75 20 61 72 65 function you are
2560: 0a 20 20 20 2a 20 67 6f 69 6e 67 20 74 6f 20 63 . * going to c
2570: 61 6c 6c 20 68 61 73 20 62 65 65 6e 20 63 6f 6d all has been com
2580: 70 69 6c 65 64 20 77 69 74 68 20 74 68 65 20 73 piled with the s
2590: 61 6d 65 20 63 6f 6d 70 69 6c 65 72 20 79 6f 75 ame compiler you
25a0: 20 61 72 65 20 75 73 69 6e 67 20 74 6f 0a 20 20 are using to.
25b0: 20 2a 20 69 6e 63 6c 75 64 65 20 74 68 69 73 20 * include this
25c0: 66 69 6c 65 2e 0a 20 20 20 2a 20 49 66 20 79 6f file.. * If yo
25d0: 75 20 77 61 6e 74 20 74 6f 20 63 61 6c 6c 20 66 u want to call f
25e0: 75 6e 63 74 69 6f 6e 73 20 77 69 74 68 20 61 6e unctions with an
25f0: 6f 74 68 65 72 20 66 6c 6f 61 74 20 70 61 73 73 other float pass
2600: 69 6e 67 20 63 6f 6e 76 65 6e 74 69 6f 6e 2c 0a ing convention,.
2610: 20 20 20 2a 20 6a 75 73 74 20 20 23 64 65 66 69 * just #defi
2620: 6e 65 20 5f 5f 41 56 5f 49 4e 54 45 47 45 52 53 ne __AV_INTEGERS
2630: 20 2e 2e 2e 0a 20 20 20 2a 20 62 65 66 6f 72 65 .... * before
2640: 20 6f 72 20 61 66 74 65 72 20 23 69 6e 63 6c 75 or after #inclu
2650: 64 69 6e 67 20 3c 61 76 63 61 6c 6c 2e 68 3e 2e ding <avcall.h>.
2660: 0a 20 20 20 2a 2f 0a 23 69 66 6e 64 65 66 20 5f . */.#ifndef _
2670: 5f 41 56 5f 49 4e 54 45 47 45 52 53 0a 23 69 66 _AV_INTEGERS.#if
2680: 20 64 65 66 69 6e 65 64 28 5f 5f 53 54 44 43 5f defined(__STDC_
2690: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f _) || defined(__
26a0: 47 4e 55 43 5f 5f 29 0a 20 20 5f 5f 41 56 5f 49 GNUC__). __AV_I
26b0: 4e 54 45 47 45 52 53 09 09 09 3d 20 5f 5f 41 56 NTEGERS...= __AV
26c0: 5f 41 4e 53 49 5f 49 4e 54 45 47 45 52 53 2c 0a _ANSI_INTEGERS,.
26d0: 23 65 6c 73 65 0a 20 20 5f 5f 41 56 5f 49 4e 54 #else. __AV_INT
26e0: 45 47 45 52 53 09 09 09 3d 20 5f 5f 41 56 5f 54 EGERS...= __AV_T
26f0: 52 41 44 49 54 49 4f 4e 41 4c 5f 49 4e 54 45 47 RADITIONAL_INTEG
2700: 45 52 53 2c 0a 23 65 6e 64 69 66 0a 23 65 6e 64 ERS,.#endif.#end
2710: 69 66 0a 0a 20 20 2f 2a 20 73 74 61 63 6b 20 63 if.. /* stack c
2720: 6c 65 61 6e 75 70 20 70 6f 6c 69 63 79 20 2a 2f leanup policy */
2730: 0a 20 20 5f 5f 41 56 5f 43 44 45 43 4c 5f 43 4c . __AV_CDECL_CL
2740: 45 41 4e 55 50 09 09 3d 20 30 2c 20 2f 2a 20 63 EANUP..= 0, /* c
2750: 61 6c 6c 65 72 20 70 6f 70 73 20 61 72 67 73 20 aller pops args
2760: 61 66 74 65 72 20 72 65 74 75 72 6e 20 2a 2f 0a after return */.
2770: 20 20 5f 5f 41 56 5f 53 54 44 43 41 4c 4c 5f 43 __AV_STDCALL_C
2780: 4c 45 41 4e 55 50 09 09 3d 20 30 2c 20 2f 2a 20 LEANUP..= 0, /*
2790: 63 61 6c 6c 65 65 20 70 6f 70 73 20 61 72 67 73 callee pops args
27a0: 20 62 65 66 6f 72 65 20 72 65 74 75 72 6e 20 2a before return *
27b0: 2f 0a 09 09 09 09 20 20 20 20 20 2f 2a 20 63 75 /..... /* cu
27c0: 72 72 65 6e 74 6c 79 20 6f 6e 6c 79 20 73 75 70 rrently only sup
27d0: 70 6f 72 74 65 64 20 6f 6e 20 5f 5f 69 33 38 36 ported on __i386
27e0: 5f 5f 20 2a 2f 0a 23 69 66 6e 64 65 66 20 5f 5f __ */.#ifndef __
27f0: 41 56 5f 43 4c 45 41 4e 55 50 0a 20 20 5f 5f 41 AV_CLEANUP. __A
2800: 56 5f 43 4c 45 41 4e 55 50 09 09 09 3d 20 5f 5f V_CLEANUP...= __
2810: 41 56 5f 43 44 45 43 4c 5f 43 4c 45 41 4e 55 50 AV_CDECL_CLEANUP
2820: 2c 0a 23 65 6e 64 69 66 0a 0a 20 20 2f 2a 20 54 ,.#endif.. /* T
2830: 68 65 73 65 20 61 72 65 20 66 6f 72 20 69 6e 74 hese are for int
2840: 65 72 6e 61 6c 20 75 73 65 20 6f 6e 6c 79 20 2a ernal use only *
2850: 2f 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f /.#if defined(__
2860: 69 33 38 36 5f 5f 29 20 7c 7c 20 64 65 66 69 6e i386__) || defin
2870: 65 64 28 5f 5f 6d 36 38 6b 5f 5f 29 20 7c 7c 20 ed(__m68k__) ||
2880: 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 defined(__mipsn3
2890: 32 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 2__) || defined(
28a0: 5f 5f 6d 69 70 73 36 34 5f 5f 29 20 7c 7c 20 64 __mips64__) || d
28b0: 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 efined(__sparc64
28c0: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f __) || defined(_
28d0: 5f 61 6c 70 68 61 5f 5f 29 20 7c 7c 20 64 65 66 _alpha__) || def
28e0: 69 6e 65 64 28 5f 5f 61 72 6d 5f 5f 29 20 7c 7c ined(__arm__) ||
28f0: 20 64 65 66 69 6e 65 64 28 5f 5f 72 73 36 30 30 defined(__rs600
2900: 30 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 0__) || defined(
2910: 5f 5f 63 6f 6e 76 65 78 5f 5f 29 20 7c 7c 20 64 __convex__) || d
2920: 65 66 69 6e 65 64 28 5f 5f 69 61 36 34 5f 5f 29 efined(__ia64__)
2930: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 78 38 || defined(__x8
2940: 36 5f 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 6_64__) || defin
2950: 65 64 28 5f 5f 73 33 39 30 5f 5f 29 0a 20 20 5f ed(__s390__). _
2960: 5f 41 56 5f 52 45 47 49 53 54 45 52 5f 53 54 52 _AV_REGISTER_STR
2970: 55 43 54 5f 52 45 54 55 52 4e 09 3d 20 31 3c 3c UCT_RETURN.= 1<<
2980: 39 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 9,.#endif.#if de
2990: 66 69 6e 65 64 28 5f 5f 6d 69 70 73 5f 5f 29 20 fined(__mips__)
29a0: 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 6d 69 && !defined(__mi
29b0: 70 73 6e 33 32 5f 5f 29 0a 20 20 5f 5f 41 56 5f psn32__). __AV_
29c0: 46 4c 4f 41 54 5f 31 09 09 09 3d 20 31 3c 3c 31 FLOAT_1...= 1<<1
29d0: 30 2c 0a 20 20 5f 5f 41 56 5f 46 4c 4f 41 54 5f 0,. __AV_FLOAT_
29e0: 32 09 09 09 3d 20 31 3c 3c 31 31 2c 0a 23 65 6e 2...= 1<<11,.#en
29f0: 64 69 66 0a 0a 20 20 5f 5f 41 56 5f 66 6c 61 67 dif.. __AV_flag
2a00: 5f 66 6f 72 5f 62 72 6f 6b 65 6e 5f 63 6f 6d 70 _for_broken_comp
2a10: 69 6c 65 72 73 5f 74 68 61 74 5f 64 6f 6e 74 5f ilers_that_dont_
2a20: 6c 69 6b 65 5f 74 72 61 69 6c 69 6e 67 5f 63 6f like_trailing_co
2a30: 6d 6d 61 73 0a 7d 3b 0a 0a 74 79 70 65 64 65 66 mmas.};..typedef
2a40: 20 73 74 72 75 63 74 0a 7b 0a 20 20 2f 2a 20 66 struct.{. /* f
2a50: 75 6e 63 74 69 6f 6e 20 74 6f 20 62 65 20 63 61 unction to be ca
2a60: 6c 6c 65 64 20 2a 2f 0a 20 20 5f 5f 61 76 77 6f lled */. __avwo
2a70: 72 64 09 09 28 2a 66 75 6e 63 29 28 29 3b 0a 20 rd..(*func)();.
2a80: 20 2f 2a 20 73 6f 6d 65 20 61 76 5f 2e 2e 2e 20 /* some av_...
2a90: 6d 61 63 72 6f 73 20 6e 65 65 64 20 74 68 65 73 macros need thes
2aa0: 65 20 66 6c 61 67 73 20 2a 2f 0a 20 20 69 6e 74 e flags */. int
2ab0: 09 09 09 66 6c 61 67 73 3b 0a 20 20 2f 2a 20 72 ...flags;. /* r
2ac0: 65 74 75 72 6e 20 74 79 70 65 2c 20 61 64 64 72 eturn type, addr
2ad0: 65 73 73 20 66 6f 72 20 74 68 65 20 72 65 73 75 ess for the resu
2ae0: 6c 74 20 2a 2f 0a 20 20 76 6f 69 64 2a 09 09 09 lt */. void*...
2af0: 72 61 64 64 72 3b 0a 20 20 65 6e 75 6d 20 5f 5f raddr;. enum __
2b00: 41 56 74 79 70 65 09 09 72 74 79 70 65 3b 0a 20 AVtype..rtype;.
2b10: 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 09 09 unsigned long..
2b20: 72 73 69 7a 65 3b 0a 20 20 2f 2a 20 63 75 72 72 rsize;. /* curr
2b30: 65 6e 74 20 70 6f 69 6e 74 65 72 20 69 6e 74 6f ent pointer into
2b40: 20 74 68 65 20 61 72 67 73 5b 5d 20 61 72 72 61 the args[] arra
2b50: 79 20 2a 2f 0a 20 20 5f 5f 61 76 77 6f 72 64 2a y */. __avword*
2b60: 09 09 61 70 74 72 3b 0a 23 69 66 20 64 65 66 69 ..aptr;.#if defi
2b70: 6e 65 64 28 5f 5f 73 70 61 72 63 5f 5f 29 20 7c ned(__sparc__) |
2b80: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 | defined(__spar
2b90: 63 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 c64__) || define
2ba0: 64 28 5f 5f 68 70 70 61 5f 5f 29 20 7c 7c 20 28 d(__hppa__) || (
2bb0: 64 65 66 69 6e 65 64 28 5f 5f 72 73 36 30 30 30 defined(__rs6000
2bc0: 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 __) && !defined(
2bd0: 5f 41 49 58 29 20 26 26 20 21 28 64 65 66 69 6e _AIX) && !(defin
2be0: 65 64 28 5f 5f 4d 41 43 48 5f 5f 29 20 26 26 20 ed(__MACH__) &&
2bf0: 64 65 66 69 6e 65 64 28 5f 5f 41 50 50 4c 45 5f defined(__APPLE_
2c00: 5f 29 29 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 _))) || defined(
2c10: 5f 5f 73 33 39 30 5f 5f 29 0a 20 20 2f 2a 20 6c __s390__). /* l
2c20: 69 6d 69 74 20 70 6f 69 6e 74 65 72 20 69 6e 74 imit pointer int
2c30: 6f 20 74 68 65 20 61 72 67 73 5b 5d 20 61 72 72 o the args[] arr
2c40: 61 79 20 2a 2f 0a 20 20 5f 5f 61 76 77 6f 72 64 ay */. __avword
2c50: 2a 09 09 65 70 74 72 3b 0a 23 65 6e 64 69 66 0a *..eptr;.#endif.
2c60: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 69 33 #if defined(__i3
2c70: 38 36 5f 5f 29 20 26 26 20 30 0a 20 20 2f 2a 20 86__) && 0. /*
2c80: 46 69 6c 6c 65 72 20 77 6f 72 64 2c 20 6e 65 65 Filler word, nee
2c90: 64 65 64 20 69 66 20 74 68 65 20 6e 75 6d 62 65 ded if the numbe
2ca0: 72 73 20 6f 66 20 77 6f 72 64 73 20 75 70 20 74 rs of words up t
2cb0: 6f 20 6e 6f 77 20 69 6e 20 74 68 69 73 20 73 74 o now in this st
2cc0: 72 75 63 74 75 72 65 20 2a 2f 0a 20 20 2f 2a 20 ructure */. /*
2cd0: 69 73 20 6f 64 64 20 28 62 65 63 61 75 73 65 20 is odd (because
2ce0: 6f 6e 20 4d 53 56 43 2c 20 61 6c 69 67 6e 6f 66 on MSVC, alignof
2cf0: 28 64 6f 75 62 6c 65 29 20 3d 20 38 2c 20 6e 6f (double) = 8, no
2d00: 72 6d 61 6c 6c 79 20 3d 20 34 29 2e 20 20 20 20 rmally = 4).
2d10: 20 20 20 20 20 20 20 20 2a 2f 0a 20 20 5f 5f 61 */. __a
2d20: 76 77 6f 72 64 09 09 66 69 6c 6c 65 72 31 3b 0a vword..filler1;.
2d30: 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e #endif.#if defin
2d40: 65 64 28 5f 5f 69 33 38 36 5f 5f 29 20 7c 7c 20 ed(__i386__) ||
2d50: 64 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f 5f defined(__m68k__
2d60: 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f ) || (defined(__
2d70: 73 70 61 72 63 5f 5f 29 20 26 26 20 21 64 65 66 sparc__) && !def
2d80: 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f ined(__sparc64__
2d90: 29 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f )) || defined(__
2da0: 68 70 70 61 5f 5f 29 20 7c 7c 20 64 65 66 69 6e hppa__) || defin
2db0: 65 64 28 5f 5f 61 72 6d 5f 5f 29 20 7c 7c 20 64 ed(__arm__) || d
2dc0: 65 66 69 6e 65 64 28 5f 5f 72 73 36 30 30 30 5f efined(__rs6000_
2dd0: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f _) || defined(__
2de0: 63 6f 6e 76 65 78 5f 5f 29 20 7c 7c 20 64 65 66 convex__) || def
2df0: 69 6e 65 64 28 5f 5f 73 33 39 30 5f 5f 29 0a 20 ined(__s390__).
2e00: 20 2f 2a 20 74 65 6d 70 6f 72 61 72 79 20 73 74 /* temporary st
2e10: 6f 72 61 67 65 2c 20 75 73 65 64 20 74 6f 20 73 orage, used to s
2e20: 70 6c 69 74 20 64 6f 75 62 6c 65 73 20 69 6e 74 plit doubles int
2e30: 6f 20 74 77 6f 20 77 6f 72 64 73 20 2a 2f 0a 20 o two words */.
2e40: 20 75 6e 69 6f 6e 20 7b 0a 20 20 20 20 64 6f 75 union {. dou
2e50: 62 6c 65 09 5f 64 6f 75 62 6c 65 3b 0a 23 69 66 ble._double;.#if
2e60: 20 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 defined(__sparc
2e70: 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 __) && !defined(
2e80: 5f 5f 73 70 61 72 63 36 34 5f 5f 29 20 26 26 20 __sparc64__) &&
2e90: 64 65 66 69 6e 65 64 28 48 41 56 45 5f 4c 4f 4e defined(HAVE_LON
2ea0: 47 4c 4f 4e 47 29 0a 20 20 20 20 6c 6f 6e 67 20 GLONG). long
2eb0: 6c 6f 6e 67 09 5f 6c 6f 6e 67 6c 6f 6e 67 3b 0a long._longlong;.
2ec0: 23 65 6e 64 69 66 0a 20 20 20 20 5f 5f 61 76 77 #endif. __avw
2ed0: 6f 72 64 09 77 6f 72 64 73 5b 32 5d 3b 0a 20 20 ord.words[2];.
2ee0: 7d 09 09 09 74 6d 70 3b 0a 23 65 6e 64 69 66 0a }...tmp;.#endif.
2ef0: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 78 38 #if defined(__x8
2f00: 36 5f 36 34 5f 5f 29 0a 20 20 2f 2a 20 73 74 6f 6_64__). /* sto
2f10: 72 65 20 74 68 65 20 69 6e 74 65 67 65 72 20 61 re the integer a
2f20: 72 67 75 6d 65 6e 74 73 20 69 6e 20 61 6e 20 65 rguments in an e
2f30: 78 74 72 61 20 61 72 72 61 79 20 2a 2f 0a 20 20 xtra array */.
2f40: 5f 5f 61 76 77 6f 72 64 2a 09 09 69 61 70 74 72 __avword*..iaptr
2f50: 3b 0a 20 20 5f 5f 61 76 77 6f 72 64 09 09 69 61 ;. __avword..ia
2f60: 72 67 73 5b 36 5d 3b 0a 23 65 6e 64 69 66 0a 23 rgs[6];.#endif.#
2f70: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 if defined(__mip
2f80: 73 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 s__) && !defined
2f90: 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 0a 20 20 (__mipsn32__).
2fa0: 2f 2a 20 73 74 6f 72 65 20 74 68 65 20 66 6c 6f /* store the flo
2fb0: 61 74 69 6e 67 2d 70 6f 69 6e 74 20 61 72 67 75 ating-point argu
2fc0: 6d 65 6e 74 73 20 69 6e 20 61 6e 20 65 78 74 72 ments in an extr
2fd0: 61 20 61 72 72 61 79 20 2a 2f 0a 20 20 69 6e 74 a array */. int
2fe0: 09 09 09 61 6e 75 6d 3b 0a 20 20 64 6f 75 62 6c ...anum;. doubl
2ff0: 65 09 09 66 6c 6f 61 74 61 72 67 5b 32 5d 3b 0a e..floatarg[2];.
3000: 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e #endif.#if defin
3010: 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 ed(__mipsn32__)
3020: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 || defined(__mip
3030: 73 36 34 5f 5f 29 0a 20 20 2f 2a 20 73 74 6f 72 s64__). /* stor
3040: 65 20 74 68 65 20 66 6c 6f 61 74 69 6e 67 2d 70 e the floating-p
3050: 6f 69 6e 74 20 61 72 67 75 6d 65 6e 74 73 20 69 oint arguments i
3060: 6e 20 61 6e 20 65 78 74 72 61 20 61 72 72 61 79 n an extra array
3070: 20 2a 2f 0a 20 20 69 6e 74 09 09 09 61 6e 75 6d */. int...anum
3080: 3b 09 09 2f 2a 20 72 65 64 75 6e 64 61 6e 74 3a ;../* redundant:
3090: 20 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 26 (LIST).aptr = &
30a0: 28 4c 49 53 54 29 2e 61 72 67 73 5b 28 4c 49 53 (LIST).args[(LIS
30b0: 54 29 2e 61 6e 75 6d 5d 20 2a 2f 0a 20 20 75 6e T).anum] */. un
30c0: 73 69 67 6e 65 64 20 69 6e 74 09 09 66 61 72 67 signed int..farg
30d0: 5f 6d 61 73 6b 3b 09 2f 2a 20 62 69 74 6d 61 73 _mask;./* bitmas
30e0: 6b 20 6f 66 20 74 68 6f 73 65 20 65 6e 74 72 69 k of those entri
30f0: 65 73 20 69 6e 20 66 61 72 67 5b 5d 20 77 68 69 es in farg[] whi
3100: 63 68 20 68 61 76 65 20 61 20 76 61 6c 75 65 20 ch have a value
3110: 2a 2f 0a 20 20 75 6e 73 69 67 6e 65 64 20 69 6e */. unsigned in
3120: 74 09 09 64 61 72 67 5f 6d 61 73 6b 3b 09 2f 2a t..darg_mask;./*
3130: 20 62 69 74 6d 61 73 6b 20 6f 66 20 74 68 6f 73 bitmask of thos
3140: 65 20 65 6e 74 72 69 65 73 20 69 6e 20 61 72 67 e entries in arg
3150: 73 5b 5d 20 77 68 69 63 68 20 68 61 76 65 20 61 s[] which have a
3160: 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 20 2a 2f double value */
3170: 0a 20 20 66 6c 6f 61 74 09 09 09 66 61 72 67 5b . float...farg[
3180: 38 5d 3b 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 8];.#endif.#if d
3190: 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 efined(__sparc64
31a0: 5f 5f 29 0a 20 20 2f 2a 20 73 74 6f 72 65 20 74 __). /* store t
31b0: 68 65 20 66 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e he floating-poin
31c0: 74 20 61 72 67 75 6d 65 6e 74 73 20 69 6e 20 61 t arguments in a
31d0: 6e 20 65 78 74 72 61 20 61 72 72 61 79 20 2a 2f n extra array */
31e0: 0a 20 20 69 6e 74 09 09 09 61 6e 75 6d 3b 09 09 . int...anum;..
31f0: 2f 2a 20 72 65 64 75 6e 64 61 6e 74 3a 20 28 4c /* redundant: (L
3200: 49 53 54 29 2e 61 70 74 72 20 3d 20 26 28 4c 49 IST).aptr = &(LI
3210: 53 54 29 2e 61 72 67 73 5b 28 4c 49 53 54 29 2e ST).args[(LIST).
3220: 61 6e 75 6d 5d 20 2a 2f 0a 20 20 75 6e 73 69 67 anum] */. unsig
3230: 6e 65 64 20 69 6e 74 09 09 66 61 72 67 5f 6d 61 ned int..farg_ma
3240: 73 6b 3b 09 2f 2a 20 62 69 74 6d 61 73 6b 20 6f sk;./* bitmask o
3250: 66 20 74 68 6f 73 65 20 65 6e 74 72 69 65 73 20 f those entries
3260: 69 6e 20 66 61 72 67 5b 5d 20 77 68 69 63 68 20 in farg[] which
3270: 68 61 76 65 20 61 20 76 61 6c 75 65 20 2a 2f 0a have a value */.
3280: 20 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 09 09 unsigned int..
3290: 64 61 72 67 5f 6d 61 73 6b 3b 09 2f 2a 20 62 69 darg_mask;./* bi
32a0: 74 6d 61 73 6b 20 6f 66 20 74 68 6f 73 65 20 65 tmask of those e
32b0: 6e 74 72 69 65 73 20 69 6e 20 61 72 67 73 5b 5d ntries in args[]
32c0: 20 77 68 69 63 68 20 68 61 76 65 20 61 20 64 6f which have a do
32d0: 75 62 6c 65 20 76 61 6c 75 65 20 2a 2f 0a 23 65 uble value */.#e
32e0: 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 ndif.#if defined
32f0: 28 5f 5f 69 61 36 34 5f 5f 29 20 7c 7c 20 64 65 (__ia64__) || de
3300: 66 69 6e 65 64 28 5f 5f 78 38 36 5f 36 34 5f 5f fined(__x86_64__
3310: 29 0a 20 20 2f 2a 20 73 74 6f 72 65 20 74 68 65 ). /* store the
3320: 20 66 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e 74 20 floating-point
3330: 61 72 67 75 6d 65 6e 74 73 20 69 6e 20 61 6e 20 arguments in an
3340: 65 78 74 72 61 20 61 72 72 61 79 20 2a 2f 0a 20 extra array */.
3350: 20 64 6f 75 62 6c 65 2a 09 09 66 61 70 74 72 3b double*..faptr;
3360: 0a 20 20 64 6f 75 62 6c 65 09 09 66 61 72 67 73 . double..fargs
3370: 5b 38 5d 3b 0a 23 65 6e 64 69 66 0a 20 20 5f 5f [8];.#endif. __
3380: 61 76 77 6f 72 64 09 09 61 72 67 73 5b 5f 5f 41 avword..args[__A
3390: 56 5f 41 4c 49 53 54 5f 57 4f 52 44 53 5d 3b 20 V_ALIST_WORDS];
33a0: 2f 2a 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 /* sizeof(double
33b0: 29 2d 61 6c 69 67 6e 65 64 20 2a 2f 0a 23 69 66 )-aligned */.#if
33c0: 20 64 65 66 69 6e 65 64 28 5f 5f 72 73 36 30 30 defined(__rs600
33d0: 30 5f 5f 29 0a 20 20 2f 2a 20 73 74 6f 72 65 20 0__). /* store
33e0: 74 68 65 20 66 6c 6f 61 74 69 6e 67 2d 70 6f 69 the floating-poi
33f0: 6e 74 20 61 72 67 75 6d 65 6e 74 73 20 69 6e 20 nt arguments in
3400: 61 6e 20 65 78 74 72 61 20 61 72 72 61 79 20 2a an extra array *
3410: 2f 0a 20 20 64 6f 75 62 6c 65 2a 09 09 66 61 70 /. double*..fap
3420: 74 72 3b 0a 20 20 64 6f 75 62 6c 65 09 09 66 61 tr;. double..fa
3430: 72 67 73 5b 31 33 5d 3b 0a 23 65 6e 64 69 66 0a rgs[13];.#endif.
3440: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 73 33 #if defined(__s3
3450: 39 30 5f 5f 29 0a 20 20 2f 2a 20 73 74 6f 72 65 90__). /* store
3460: 20 74 68 65 20 66 6c 6f 61 74 69 6e 67 2d 70 6f the floating-po
3470: 69 6e 74 20 61 72 67 75 6d 65 6e 74 73 20 69 6e int arguments in
3480: 20 61 6e 20 65 78 74 72 61 20 61 72 72 61 79 20 an extra array
3490: 2a 2f 0a 20 20 69 6e 74 20 20 20 09 09 66 61 72 */. int ..far
34a0: 67 77 6f 72 64 73 3b 0a 20 20 66 6c 6f 61 74 2a gwords;. float*
34b0: 09 09 66 61 70 74 72 3b 0a 20 20 66 6c 6f 61 74 ..faptr;. float
34c0: 20 09 09 66 61 72 67 73 5b 32 5d 3b 0a 20 20 69 ..fargs[2];. i
34d0: 6e 74 2a 09 09 09 66 61 72 67 73 75 73 65 64 70 nt*...fargsusedp
34e0: 74 72 3b 0a 20 20 69 6e 74 09 09 09 66 61 72 67 tr;. int...farg
34f0: 73 75 73 65 64 5b 32 5d 3b 0a 20 20 64 6f 75 62 sused[2];. doub
3500: 6c 65 2a 09 09 64 61 70 74 72 3b 0a 20 20 64 6f le*..daptr;. do
3510: 75 62 6c 65 09 09 64 61 72 67 73 5b 32 5d 3b 0a uble..dargs[2];.
3520: 20 20 69 6e 74 2a 09 09 09 64 61 72 67 73 75 73 int*...dargsus
3530: 65 64 70 74 72 3b 0a 20 20 69 6e 74 09 09 09 64 edptr;. int...d
3540: 61 72 67 73 75 73 65 64 5b 32 5d 3b 0a 23 65 6e argsused[2];.#en
3550: 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 dif.#if defined(
3560: 41 4d 49 47 41 29 0a 20 20 2f 2a 20 73 74 6f 72 AMIGA). /* stor
3570: 65 20 74 68 65 20 61 72 67 75 6d 65 6e 74 73 20 e the arguments
3580: 70 61 73 73 65 64 20 69 6e 20 72 65 67 69 73 74 passed in regist
3590: 65 72 73 20 69 6e 20 61 6e 20 65 78 74 72 61 20 ers in an extra
35a0: 61 72 72 61 79 20 2a 2f 0a 20 20 5f 5f 61 76 77 array */. __avw
35b0: 6f 72 64 09 09 72 65 67 61 72 67 73 5b 38 2b 37 ord..regargs[8+7
35c0: 5d 3b 0a 23 65 6e 64 69 66 0a 7d 20 61 76 5f 61 ];.#endif.} av_a
35d0: 6c 69 73 74 3b 0a 0a 2f 2a 20 54 68 65 20 6c 69 list;../* The li
35e0: 6d 69 74 20 66 6f 72 20 74 68 65 20 70 6f 69 6e mit for the poin
35f0: 74 65 72 20 69 6e 74 6f 20 74 68 65 20 61 72 67 ter into the arg
3600: 73 5b 5d 20 61 72 72 61 79 2e 20 2a 2f 0a 23 69 s[] array. */.#i
3610: 66 20 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 f defined(__spar
3620: 63 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 c__) || defined(
3630: 5f 5f 73 70 61 72 63 36 34 5f 5f 29 20 7c 7c 20 __sparc64__) ||
3640: 64 65 66 69 6e 65 64 28 5f 5f 68 70 70 61 5f 5f defined(__hppa__
3650: 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f ) || (defined(__
3660: 72 73 36 30 30 30 5f 5f 29 20 26 26 20 21 64 65 rs6000__) && !de
3670: 66 69 6e 65 64 28 5f 41 49 58 29 20 26 26 20 21 fined(_AIX) && !
3680: 28 64 65 66 69 6e 65 64 28 5f 5f 4d 41 43 48 5f (defined(__MACH_
3690: 5f 29 20 26 26 20 64 65 66 69 6e 65 64 28 5f 5f _) && defined(__
36a0: 41 50 50 4c 45 5f 5f 29 29 29 20 7c 7c 20 64 65 APPLE__))) || de
36b0: 66 69 6e 65 64 28 5f 5f 73 33 39 30 29 0a 23 64 fined(__s390).#d
36c0: 65 66 69 6e 65 20 5f 5f 61 76 5f 65 70 74 72 28 efine __av_eptr(
36d0: 4c 49 53 54 29 09 28 28 4c 49 53 54 29 2e 65 70 LIST).((LIST).ep
36e0: 74 72 29 0a 23 65 6c 73 65 0a 23 64 65 66 69 6e tr).#else.#defin
36f0: 65 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 e __av_eptr(LIST
3700: 29 09 28 26 28 4c 49 53 54 29 2e 61 72 67 73 5b ).(&(LIST).args[
3710: 5f 5f 41 56 5f 41 4c 49 53 54 5f 57 4f 52 44 53 __AV_ALIST_WORDS
3720: 5d 29 0a 23 65 6e 64 69 66 0a 0a 2f 2a 20 44 65 ]).#endif../* De
3730: 6c 61 79 65 64 20 6f 76 65 72 66 6c 6f 77 20 64 layed overflow d
3740: 65 74 65 63 74 69 6f 6e 20 2a 2f 0a 23 69 66 20 etection */.#if
3750: 64 65 66 69 6e 65 64 28 5f 5f 68 70 70 61 5f 5f defined(__hppa__
3760: 29 0a 23 64 65 66 69 6e 65 20 61 76 5f 6f 76 65 ).#define av_ove
3770: 72 66 6c 6f 77 6e 28 4c 49 53 54 29 20 28 28 4c rflown(LIST) ((L
3780: 49 53 54 29 2e 61 70 74 72 20 3c 20 5f 5f 61 76 IST).aptr < __av
3790: 5f 65 70 74 72 28 4c 49 53 54 29 29 0a 23 65 6c _eptr(LIST)).#el
37a0: 73 65 0a 23 64 65 66 69 6e 65 20 61 76 5f 6f 76 se.#define av_ov
37b0: 65 72 66 6c 6f 77 6e 28 4c 49 53 54 29 20 28 28 erflown(LIST) ((
37c0: 4c 49 53 54 29 2e 61 70 74 72 20 3e 20 5f 5f 61 LIST).aptr > __a
37d0: 76 5f 65 70 74 72 28 4c 49 53 54 29 29 0a 23 65 v_eptr(LIST)).#e
37e0: 6e 64 69 66 0a 0a 0a 2f 2a 0a 20 2a 20 20 61 76 ndif.../*. * av
37f0: 5f 73 74 61 72 74 5f 3c 74 79 70 65 3e 20 6d 61 _start_<type> ma
3800: 63 72 6f 73 20 77 68 69 63 68 20 73 70 65 63 69 cros which speci
3810: 66 79 20 74 68 65 20 72 65 74 75 72 6e 20 74 79 fy the return ty
3820: 70 65 0a 20 2a 2f 0a 0a 23 64 65 66 69 6e 65 20 pe. */..#define
3830: 5f 5f 41 56 5f 53 54 41 52 54 5f 46 4c 41 47 53 __AV_START_FLAGS
3840: 20 20 5c 0a 20 20 5f 5f 41 56 5f 53 54 52 55 43 \. __AV_STRUC
3850: 54 5f 52 45 54 55 52 4e 20 7c 20 5f 5f 41 56 5f T_RETURN | __AV_
3860: 46 4c 4f 41 54 5f 52 45 54 55 52 4e 20 7c 20 5f FLOAT_RETURN | _
3870: 5f 41 56 5f 53 54 52 55 43 54 5f 41 52 47 53 20 _AV_STRUCT_ARGS
3880: 7c 20 5f 5f 41 56 5f 46 4c 4f 41 54 5f 41 52 47 | __AV_FLOAT_ARG
3890: 53 20 7c 20 5f 5f 41 56 5f 49 4e 54 45 47 45 52 S | __AV_INTEGER
38a0: 53 20 7c 20 5f 5f 41 56 5f 43 4c 45 41 4e 55 50 S | __AV_CLEANUP
38b0: 0a 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 ..#define __av_s
38c0: 74 61 72 74 28 4c 49 53 54 2c 46 55 4e 43 2c 52 tart(LIST,FUNC,R
38d0: 41 44 44 52 2c 52 45 54 54 59 50 45 29 09 09 09 ADDR,RETTYPE)...
38e0: 09 5c 0a 20 20 28 28 4c 49 53 54 29 2e 66 75 6e .\. ((LIST).fun
38f0: 63 20 3d 20 28 5f 5f 61 76 77 6f 72 64 28 2a 29 c = (__avword(*)
3900: 28 29 29 28 46 55 4e 43 29 2c 09 09 09 09 09 5c ())(FUNC),.....\
3910: 0a 20 20 20 28 4c 49 53 54 29 2e 72 61 64 64 72 . (LIST).raddr
3920: 20 3d 20 28 76 6f 69 64 2a 29 28 52 41 44 44 52 = (void*)(RADDR
3930: 29 2c 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 53 ),.....\. (LIS
3940: 54 29 2e 72 74 79 70 65 20 3d 20 28 52 45 54 54 T).rtype = (RETT
3950: 59 50 45 29 2c 09 09 09 09 09 09 5c 0a 20 20 20 YPE),......\.
3960: 5f 5f 61 76 5f 73 74 61 72 74 31 28 4c 49 53 54 __av_start1(LIST
3970: 29 09 09 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 ).......\. (LI
3980: 53 54 29 2e 66 6c 61 67 73 20 3d 20 5f 5f 41 56 ST).flags = __AV
3990: 5f 53 54 41 52 54 5f 46 4c 41 47 53 29 0a 0a 23 _START_FLAGS)..#
39a0: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 69 33 38 if defined(__i38
39b0: 36 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 6__) || defined(
39c0: 5f 5f 6d 36 38 6b 5f 5f 29 20 7c 7c 20 64 65 66 __m68k__) || def
39d0: 69 6e 65 64 28 5f 5f 61 6c 70 68 61 5f 5f 29 20 ined(__alpha__)
39e0: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 61 72 6d || defined(__arm
39f0: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f __) || defined(_
3a00: 5f 6d 38 38 6b 5f 5f 29 20 7c 7c 20 64 65 66 69 _m88k__) || defi
3a10: 6e 65 64 28 5f 5f 63 6f 6e 76 65 78 5f 5f 29 0a ned(__convex__).
3a20: 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61 #define __av_sta
3a30: 72 74 31 28 4c 49 53 54 29 09 09 09 09 09 09 5c rt1(LIST)......\
3a40: 0a 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72 20 . (LIST).aptr
3a50: 3d 20 26 28 4c 49 53 54 29 2e 61 72 67 73 5b 30 = &(LIST).args[0
3a60: 5d 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 ],.#endif.#if de
3a70: 66 69 6e 65 64 28 5f 5f 6d 69 70 73 5f 5f 29 20 fined(__mips__)
3a80: 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 6d 69 && !defined(__mi
3a90: 70 73 6e 33 32 5f 5f 29 0a 23 64 65 66 69 6e 65 psn32__).#define
3aa0: 20 5f 5f 61 76 5f 73 74 61 72 74 31 28 4c 49 53 __av_start1(LIS
3ab0: 54 29 09 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 T)......\. (LI
3ac0: 53 54 29 2e 61 6e 75 6d 20 3d 20 30 2c 09 09 09 ST).anum = 0,...
3ad0: 09 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2e ....\. (LIST).
3ae0: 61 70 74 72 20 3d 20 26 28 4c 49 53 54 29 2e 61 aptr = &(LIST).a
3af0: 72 67 73 5b 30 5d 2c 0a 23 65 6e 64 69 66 0a 23 rgs[0],.#endif.#
3b00: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 if defined(__mip
3b10: 73 6e 33 32 5f 5f 29 20 7c 7c 20 64 65 66 69 6e sn32__) || defin
3b20: 65 64 28 5f 5f 6d 69 70 73 36 34 5f 5f 29 0a 23 ed(__mips64__).#
3b30: 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72 define __av_star
3b40: 74 31 28 4c 49 53 54 29 09 09 09 09 09 09 5c 0a t1(LIST)......\.
3b50: 20 20 20 28 4c 49 53 54 29 2e 61 6e 75 6d 20 3d (LIST).anum =
3b60: 20 30 2c 09 09 09 09 09 09 09 5c 0a 20 20 20 28 0,.......\. (
3b70: 4c 49 53 54 29 2e 66 61 72 67 5f 6d 61 73 6b 20 LIST).farg_mask
3b80: 3d 20 30 2c 09 09 09 09 09 09 5c 0a 20 20 20 28 = 0,......\. (
3b90: 4c 49 53 54 29 2e 64 61 72 67 5f 6d 61 73 6b 20 LIST).darg_mask
3ba0: 3d 20 30 2c 09 09 09 09 09 09 5c 0a 20 20 20 28 = 0,......\. (
3bb0: 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 26 28 4c LIST).aptr = &(L
3bc0: 49 53 54 29 2e 61 72 67 73 5b 30 5d 2c 0a 23 65 IST).args[0],.#e
3bd0: 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 ndif.#if defined
3be0: 28 5f 5f 73 70 61 72 63 5f 5f 29 20 26 26 20 21 (__sparc__) && !
3bf0: 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 defined(__sparc6
3c00: 34 5f 5f 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61 4__).#define __a
3c10: 76 5f 73 74 61 72 74 31 28 4c 49 53 54 29 09 09 v_start1(LIST)..
3c20: 09 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2e ....\. (LIST).
3c30: 61 70 74 72 20 3d 20 26 28 4c 49 53 54 29 2e 61 aptr = &(LIST).a
3c40: 72 67 73 5b 30 5d 2c 09 09 09 09 09 5c 0a 20 20 rgs[0],.....\.
3c50: 20 28 4c 49 53 54 29 2e 65 70 74 72 20 3d 20 26 (LIST).eptr = &
3c60: 28 4c 49 53 54 29 2e 61 72 67 73 5b 5f 5f 41 56 (LIST).args[__AV
3c70: 5f 41 4c 49 53 54 5f 57 4f 52 44 53 5d 2c 0a 23 _ALIST_WORDS],.#
3c80: 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 endif.#if define
3c90: 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29 0a 23 d(__sparc64__).#
3ca0: 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72 define __av_star
3cb0: 74 31 28 4c 49 53 54 29 09 09 09 09 09 09 5c 0a t1(LIST)......\.
3cc0: 20 20 20 28 4c 49 53 54 29 2e 61 6e 75 6d 20 3d (LIST).anum =
3cd0: 20 30 2c 09 09 09 09 09 09 09 5c 0a 20 20 20 28 0,.......\. (
3ce0: 4c 49 53 54 29 2e 66 61 72 67 5f 6d 61 73 6b 20 LIST).farg_mask
3cf0: 3d 20 30 2c 09 09 09 09 09 09 5c 0a 20 20 20 28 = 0,......\. (
3d00: 4c 49 53 54 29 2e 64 61 72 67 5f 6d 61 73 6b 20 LIST).darg_mask
3d10: 3d 20 30 2c 09 09 09 09 09 09 5c 0a 20 20 20 28 = 0,......\. (
3d20: 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 26 28 4c LIST).aptr = &(L
3d30: 49 53 54 29 2e 61 72 67 73 5b 30 5d 2c 09 09 09 IST).args[0],...
3d40: 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2e 65 70 ..\. (LIST).ep
3d50: 74 72 20 3d 20 26 28 4c 49 53 54 29 2e 61 72 67 tr = &(LIST).arg
3d60: 73 5b 5f 5f 41 56 5f 41 4c 49 53 54 5f 57 4f 52 s[__AV_ALIST_WOR
3d70: 44 53 5d 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 DS],.#endif.#if
3d80: 64 65 66 69 6e 65 64 28 5f 5f 68 70 70 61 5f 5f defined(__hppa__
3d90: 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 ).#define __av_s
3da0: 74 61 72 74 31 28 4c 49 53 54 29 09 09 09 09 09 tart1(LIST).....
3db0: 09 5c 0a 20 20 20 28 4c 49 53 54 29 2e 61 70 74 .\. (LIST).apt
3dc0: 72 20 3d 20 26 28 4c 49 53 54 29 2e 61 72 67 73 r = &(LIST).args
3dd0: 5b 5f 5f 41 56 5f 41 4c 49 53 54 5f 57 4f 52 44 [__AV_ALIST_WORD
3de0: 53 5d 2c 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 S],...\. (LIST
3df0: 29 2e 65 70 74 72 20 3d 20 26 28 4c 49 53 54 29 ).eptr = &(LIST)
3e00: 2e 61 72 67 73 5b 30 5d 2c 0a 23 65 6e 64 69 66 .args[0],.#endif
3e10: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 72 .#if defined(__r
3e20: 73 36 30 30 30 5f 5f 29 0a 23 69 66 20 64 65 66 s6000__).#if def
3e30: 69 6e 65 64 28 5f 41 49 58 29 20 7c 7c 20 28 64 ined(_AIX) || (d
3e40: 65 66 69 6e 65 64 28 5f 5f 4d 41 43 48 5f 5f 29 efined(__MACH__)
3e50: 20 26 26 20 64 65 66 69 6e 65 64 28 5f 5f 41 50 && defined(__AP
3e60: 50 4c 45 5f 5f 29 29 0a 23 64 65 66 69 6e 65 20 PLE__)).#define
3e70: 5f 5f 61 76 5f 73 74 61 72 74 31 28 4c 49 53 54 __av_start1(LIST
3e80: 29 09 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 53 )......\. (LIS
3e90: 54 29 2e 61 70 74 72 20 3d 20 26 28 4c 49 53 54 T).aptr = &(LIST
3ea0: 29 2e 61 72 67 73 5b 30 5d 2c 09 09 09 09 09 5c ).args[0],.....\
3eb0: 0a 20 20 20 28 4c 49 53 54 29 2e 66 61 70 74 72 . (LIST).faptr
3ec0: 20 3d 20 26 28 4c 49 53 54 29 2e 66 61 72 67 73 = &(LIST).fargs
3ed0: 5b 30 5d 2c 0a 23 65 6c 73 65 0a 23 64 65 66 69 [0],.#else.#defi
3ee0: 6e 65 20 5f 5f 61 76 5f 73 74 61 72 74 31 28 4c ne __av_start1(L
3ef0: 49 53 54 29 09 09 09 09 09 09 5c 0a 20 20 20 28 IST)......\. (
3f00: 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 26 28 4c LIST).aptr = &(L
3f10: 49 53 54 29 2e 61 72 67 73 5b 30 5d 2c 09 09 09 IST).args[0],...
3f20: 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2e 66 61 ..\. (LIST).fa
3f30: 70 74 72 20 3d 20 26 28 4c 49 53 54 29 2e 66 61 ptr = &(LIST).fa
3f40: 72 67 73 5b 30 5d 2c 20 20 20 20 20 20 20 20 20 rgs[0],
3f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3f60: 20 20 20 20 20 20 20 20 20 20 20 20 5c 0a 20 20 \.
3f70: 20 28 4c 49 53 54 29 2e 65 70 74 72 20 3d 20 26 (LIST).eptr = &
3f80: 28 4c 49 53 54 29 2e 61 72 67 73 5b 5f 5f 41 56 (LIST).args[__AV
3f90: 5f 41 4c 49 53 54 5f 57 4f 52 44 53 5d 2c 0a 23 _ALIST_WORDS],.#
3fa0: 65 6e 64 69 66 0a 23 65 6e 64 69 66 0a 23 69 66 endif.#endif.#if
3fb0: 20 64 65 66 69 6e 65 64 28 5f 5f 73 33 39 30 5f defined(__s390_
3fc0: 5f 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f _).#define __av_
3fd0: 73 74 61 72 74 31 28 4c 49 53 54 29 09 09 09 09 start1(LIST)....
3fe0: 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2e 61 70 ..\. (LIST).ap
3ff0: 74 72 20 3d 20 26 28 4c 49 53 54 29 2e 61 72 67 tr = &(LIST).arg
4000: 73 5b 30 5d 2c 09 09 09 09 09 5c 0a 20 20 20 28 s[0],.....\. (
4010: 4c 49 53 54 29 2e 66 61 72 67 77 6f 72 64 73 20 LIST).fargwords
4020: 3d 20 30 2c 09 09 09 09 09 09 5c 0a 20 20 20 28 = 0,......\. (
4030: 4c 49 53 54 29 2e 66 61 70 74 72 20 3d 20 26 28 LIST).faptr = &(
4040: 4c 49 53 54 29 2e 66 61 72 67 73 5b 30 5d 2c 20 LIST).fargs[0],
4050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4070: 20 20 20 20 5c 0a 20 20 20 28 4c 49 53 54 29 2e \. (LIST).
4080: 64 61 70 74 72 20 3d 20 26 28 4c 49 53 54 29 2e daptr = &(LIST).
4090: 64 61 72 67 73 5b 30 5d 2c 20 20 20 20 20 20 20 dargs[0],
40a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
40b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 0a \.
40c0: 20 20 20 28 4c 49 53 54 29 2e 66 61 72 67 73 75 (LIST).fargsu
40d0: 73 65 64 70 74 72 20 3d 20 26 28 4c 49 53 54 29 sedptr = &(LIST)
40e0: 2e 66 61 72 67 73 75 73 65 64 5b 30 5d 2c 20 20 .fargsused[0],
40f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4100: 20 20 20 20 20 20 20 20 5c 0a 20 20 20 28 4c 49 \. (LI
4110: 53 54 29 2e 64 61 72 67 73 75 73 65 64 70 74 72 ST).dargsusedptr
4120: 20 3d 20 26 28 4c 49 53 54 29 2e 64 61 72 67 73 = &(LIST).dargs
4130: 75 73 65 64 5b 30 5d 2c 20 20 20 20 20 20 20 20 used[0],
4140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4150: 20 20 5c 0a 20 20 20 28 4c 49 53 54 29 2e 65 70 \. (LIST).ep
4160: 74 72 20 3d 20 26 28 4c 49 53 54 29 2e 61 72 67 tr = &(LIST).arg
4170: 73 5b 5f 5f 41 56 5f 41 4c 49 53 54 5f 57 4f 52 s[__AV_ALIST_WOR
4180: 44 53 5d 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 DS],.#endif.#if
4190: 64 65 66 69 6e 65 64 28 5f 5f 69 61 36 34 5f 5f defined(__ia64__
41a0: 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 ).#define __av_s
41b0: 74 61 72 74 31 28 4c 49 53 54 29 09 09 09 09 09 tart1(LIST).....
41c0: 09 5c 0a 20 20 20 28 4c 49 53 54 29 2e 61 70 74 .\. (LIST).apt
41d0: 72 20 3d 20 26 28 4c 49 53 54 29 2e 61 72 67 73 r = &(LIST).args
41e0: 5b 30 5d 2c 09 09 09 09 09 5c 0a 20 20 20 28 4c [0],.....\. (L
41f0: 49 53 54 29 2e 66 61 70 74 72 20 3d 20 26 28 4c IST).faptr = &(L
4200: 49 53 54 29 2e 66 61 72 67 73 5b 30 5d 2c 0a 23 IST).fargs[0],.#
4210: 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 endif.#if define
4220: 64 28 5f 5f 78 38 36 5f 36 34 5f 5f 29 0a 23 64 d(__x86_64__).#d
4230: 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72 74 efine __av_start
4240: 31 28 4c 49 53 54 29 09 09 09 09 09 09 5c 0a 20 1(LIST)......\.
4250: 20 20 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 (LIST).aptr =
4260: 26 28 4c 49 53 54 29 2e 61 72 67 73 5b 30 5d 2c &(LIST).args[0],
4270: 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 .....\. (LIST)
4280: 2e 69 61 70 74 72 20 3d 20 26 28 4c 49 53 54 29 .iaptr = &(LIST)
4290: 2e 69 61 72 67 73 5b 30 5d 2c 09 09 09 09 09 5c .iargs[0],.....\
42a0: 0a 20 20 20 28 4c 49 53 54 29 2e 66 61 70 74 72 . (LIST).faptr
42b0: 20 3d 20 26 28 4c 49 53 54 29 2e 66 61 72 67 73 = &(LIST).fargs
42c0: 5b 30 5d 2c 0a 23 65 6e 64 69 66 0a 0a 23 64 65 [0],.#endif..#de
42d0: 66 69 6e 65 20 61 76 5f 73 74 61 72 74 5f 76 6f fine av_start_vo
42e0: 69 64 28 4c 49 53 54 2c 46 55 4e 43 29 09 09 5f id(LIST,FUNC).._
42f0: 5f 61 76 5f 73 74 61 72 74 28 4c 49 53 54 2c 46 _av_start(LIST,F
4300: 55 4e 43 2c 30 2c 20 20 20 20 5f 5f 41 56 76 6f UNC,0, __AVvo
4310: 69 64 29 0a 23 64 65 66 69 6e 65 20 61 76 5f 73 id).#define av_s
4320: 74 61 72 74 5f 63 68 61 72 28 4c 49 53 54 2c 46 tart_char(LIST,F
4330: 55 4e 43 2c 52 41 44 44 52 29 09 09 5f 5f 61 76 UNC,RADDR)..__av
4340: 5f 73 74 61 72 74 28 4c 49 53 54 2c 46 55 4e 43 _start(LIST,FUNC
4350: 2c 52 41 44 44 52 2c 5f 5f 41 56 63 68 61 72 29 ,RADDR,__AVchar)
4360: 0a 23 64 65 66 69 6e 65 20 61 76 5f 73 74 61 72 .#define av_star
4370: 74 5f 73 63 68 61 72 28 4c 49 53 54 2c 46 55 4e t_schar(LIST,FUN
4380: 43 2c 52 41 44 44 52 29 09 09 5f 5f 61 76 5f 73 C,RADDR)..__av_s
4390: 74 61 72 74 28 4c 49 53 54 2c 46 55 4e 43 2c 52 tart(LIST,FUNC,R
43a0: 41 44 44 52 2c 5f 5f 41 56 73 63 68 61 72 29 0a ADDR,__AVschar).
43b0: 23 64 65 66 69 6e 65 20 61 76 5f 73 74 61 72 74 #define av_start
43c0: 5f 75 63 68 61 72 28 4c 49 53 54 2c 46 55 4e 43 _uchar(LIST,FUNC
43d0: 2c 52 41 44 44 52 29 09 09 5f 5f 61 76 5f 73 74 ,RADDR)..__av_st
43e0: 61 72 74 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41 art(LIST,FUNC,RA
43f0: 44 44 52 2c 5f 5f 41 56 75 63 68 61 72 29 0a 23 DDR,__AVuchar).#
4400: 64 65 66 69 6e 65 20 61 76 5f 73 74 61 72 74 5f define av_start_
4410: 73 68 6f 72 74 28 4c 49 53 54 2c 46 55 4e 43 2c short(LIST,FUNC,
4420: 52 41 44 44 52 29 09 09 5f 5f 61 76 5f 73 74 61 RADDR)..__av_sta
4430: 72 74 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44 rt(LIST,FUNC,RAD
4440: 44 52 2c 5f 5f 41 56 73 68 6f 72 74 29 0a 23 64 DR,__AVshort).#d
4450: 65 66 69 6e 65 20 61 76 5f 73 74 61 72 74 5f 75 efine av_start_u
4460: 73 68 6f 72 74 28 4c 49 53 54 2c 46 55 4e 43 2c short(LIST,FUNC,
4470: 52 41 44 44 52 29 09 5f 5f 61 76 5f 73 74 61 72 RADDR).__av_star
4480: 74 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44 44 t(LIST,FUNC,RADD
4490: 52 2c 5f 5f 41 56 75 73 68 6f 72 74 29 0a 23 64 R,__AVushort).#d
44a0: 65 66 69 6e 65 20 61 76 5f 73 74 61 72 74 5f 69 efine av_start_i
44b0: 6e 74 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44 nt(LIST,FUNC,RAD
44c0: 44 52 29 09 09 5f 5f 61 76 5f 73 74 61 72 74 28 DR)..__av_start(
44d0: 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44 44 52 2c LIST,FUNC,RADDR,
44e0: 5f 5f 41 56 69 6e 74 29 0a 23 64 65 66 69 6e 65 __AVint).#define
44f0: 20 61 76 5f 73 74 61 72 74 5f 75 69 6e 74 28 4c av_start_uint(L
4500: 49 53 54 2c 46 55 4e 43 2c 52 41 44 44 52 29 09 IST,FUNC,RADDR).
4510: 09 5f 5f 61 76 5f 73 74 61 72 74 28 4c 49 53 54 .__av_start(LIST
4520: 2c 46 55 4e 43 2c 52 41 44 44 52 2c 5f 5f 41 56 ,FUNC,RADDR,__AV
4530: 75 69 6e 74 29 0a 23 64 65 66 69 6e 65 20 61 76 uint).#define av
4540: 5f 73 74 61 72 74 5f 6c 6f 6e 67 28 4c 49 53 54 _start_long(LIST
4550: 2c 46 55 4e 43 2c 52 41 44 44 52 29 09 09 5f 5f ,FUNC,RADDR)..__
4560: 61 76 5f 73 74 61 72 74 28 4c 49 53 54 2c 46 55 av_start(LIST,FU
4570: 4e 43 2c 52 41 44 44 52 2c 5f 5f 41 56 6c 6f 6e NC,RADDR,__AVlon
4580: 67 29 0a 23 64 65 66 69 6e 65 20 61 76 5f 73 74 g).#define av_st
4590: 61 72 74 5f 75 6c 6f 6e 67 28 4c 49 53 54 2c 46 art_ulong(LIST,F
45a0: 55 4e 43 2c 52 41 44 44 52 29 09 09 5f 5f 61 76 UNC,RADDR)..__av
45b0: 5f 73 74 61 72 74 28 4c 49 53 54 2c 46 55 4e 43 _start(LIST,FUNC
45c0: 2c 52 41 44 44 52 2c 5f 5f 41 56 75 6c 6f 6e 67 ,RADDR,__AVulong
45d0: 29 0a 23 64 65 66 69 6e 65 20 61 76 5f 73 74 61 ).#define av_sta
45e0: 72 74 5f 6c 6f 6e 67 6c 6f 6e 67 28 4c 49 53 54 rt_longlong(LIST
45f0: 2c 46 55 4e 43 2c 52 41 44 44 52 29 09 5f 5f 61 ,FUNC,RADDR).__a
4600: 76 5f 73 74 61 72 74 28 4c 49 53 54 2c 46 55 4e v_start(LIST,FUN
4610: 43 2c 52 41 44 44 52 2c 5f 5f 41 56 6c 6f 6e 67 C,RADDR,__AVlong
4620: 6c 6f 6e 67 29 0a 23 64 65 66 69 6e 65 20 61 76 long).#define av
4630: 5f 73 74 61 72 74 5f 75 6c 6f 6e 67 6c 6f 6e 67 _start_ulonglong
4640: 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44 44 52 (LIST,FUNC,RADDR
4650: 29 09 5f 5f 61 76 5f 73 74 61 72 74 28 4c 49 53 ).__av_start(LIS
4660: 54 2c 46 55 4e 43 2c 52 41 44 44 52 2c 5f 5f 41 T,FUNC,RADDR,__A
4670: 56 75 6c 6f 6e 67 6c 6f 6e 67 29 0a 23 64 65 66 Vulonglong).#def
4680: 69 6e 65 20 61 76 5f 73 74 61 72 74 5f 66 6c 6f ine av_start_flo
4690: 61 74 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44 at(LIST,FUNC,RAD
46a0: 44 52 29 09 09 5f 5f 61 76 5f 73 74 61 72 74 28 DR)..__av_start(
46b0: 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44 44 52 2c LIST,FUNC,RADDR,
46c0: 5f 5f 41 56 66 6c 6f 61 74 29 0a 23 64 65 66 69 __AVfloat).#defi
46d0: 6e 65 20 61 76 5f 73 74 61 72 74 5f 64 6f 75 62 ne av_start_doub
46e0: 6c 65 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44 le(LIST,FUNC,RAD
46f0: 44 52 29 09 5f 5f 61 76 5f 73 74 61 72 74 28 4c DR).__av_start(L
4700: 49 53 54 2c 46 55 4e 43 2c 52 41 44 44 52 2c 5f IST,FUNC,RADDR,_
4710: 5f 41 56 64 6f 75 62 6c 65 29 0a 23 64 65 66 69 _AVdouble).#defi
4720: 6e 65 20 61 76 5f 73 74 61 72 74 5f 70 74 72 28 ne av_start_ptr(
4730: 4c 49 53 54 2c 46 55 4e 43 2c 54 59 50 45 2c 52 LIST,FUNC,TYPE,R
4740: 41 44 44 52 29 09 5f 5f 61 76 5f 73 74 61 72 74 ADDR).__av_start
4750: 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44 44 52 (LIST,FUNC,RADDR
4760: 2c 5f 5f 41 56 76 6f 69 64 70 29 0a 0a 23 64 65 ,__AVvoidp)..#de
4770: 66 69 6e 65 20 61 76 5f 73 74 61 72 74 5f 73 74 fine av_start_st
4780: 72 75 63 74 28 4c 49 53 54 2c 46 55 4e 43 2c 54 ruct(LIST,FUNC,T
4790: 59 50 45 2c 54 59 50 45 5f 53 50 4c 49 54 54 41 YPE,TYPE_SPLITTA
47a0: 42 4c 45 2c 52 41 44 44 52 29 09 09 5c 0a 20 20 BLE,RADDR)..\.
47b0: 5f 61 76 5f 73 74 61 72 74 5f 73 74 72 75 63 74 _av_start_struct
47c0: 28 4c 49 53 54 2c 46 55 4e 43 2c 73 69 7a 65 6f (LIST,FUNC,sizeo
47d0: 66 28 54 59 50 45 29 2c 54 59 50 45 5f 53 50 4c f(TYPE),TYPE_SPL
47e0: 49 54 54 41 42 4c 45 2c 52 41 44 44 52 29 0a 23 ITTABLE,RADDR).#
47f0: 64 65 66 69 6e 65 20 5f 61 76 5f 73 74 61 72 74 define _av_start
4800: 5f 73 74 72 75 63 74 28 4c 49 53 54 2c 46 55 4e _struct(LIST,FUN
4810: 43 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 C,TYPE_SIZE,TYPE
4820: 5f 53 50 4c 49 54 54 41 42 4c 45 2c 52 41 44 44 _SPLITTABLE,RADD
4830: 52 29 09 5c 0a 20 20 28 5f 5f 61 76 5f 73 74 61 R).\. (__av_sta
4840: 72 74 28 4c 49 53 54 2c 46 55 4e 43 2c 52 41 44 rt(LIST,FUNC,RAD
4850: 44 52 2c 5f 5f 41 56 73 74 72 75 63 74 29 2c 09 DR,__AVstruct),.
4860: 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2e 72 ...\. (LIST).r
4870: 73 69 7a 65 20 3d 20 54 59 50 45 5f 53 49 5a 45 size = TYPE_SIZE
4880: 2c 09 09 09 09 09 09 5c 0a 20 20 20 5f 5f 61 76 ,......\. __av
4890: 5f 73 74 61 72 74 5f 73 74 72 75 63 74 31 28 4c _start_struct1(L
48a0: 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 IST,TYPE_SIZE,TY
48b0: 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 2c 09 PE_SPLITTABLE),.
48c0: 09 09 5c 0a 20 20 20 30 29 0a 0a 23 64 65 66 69 ..\. 0)..#defi
48d0: 6e 65 20 5f 5f 61 76 5f 73 74 61 72 74 5f 73 74 ne __av_start_st
48e0: 72 75 63 74 31 28 4c 49 53 54 2c 54 59 50 45 5f ruct1(LIST,TYPE_
48f0: 53 49 5a 45 2c 54 59 50 45 5f 53 50 4c 49 54 54 SIZE,TYPE_SPLITT
4900: 41 42 4c 45 29 20 20 5c 0a 20 20 28 28 4c 49 53 ABLE) \. ((LIS
4910: 54 29 2e 66 6c 61 67 73 20 26 20 5f 5f 41 56 5f T).flags & __AV_
4920: 50 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52 PCC_STRUCT_RETUR
4930: 4e 09 09 09 09 5c 0a 20 20 20 3f 20 2f 2a 20 70 N....\. ? /* p
4940: 63 63 20 73 74 72 75 63 74 20 72 65 74 75 72 6e cc struct return
4950: 20 63 6f 6e 76 65 6e 74 69 6f 6e 3a 09 09 09 09 convention:....
4960: 09 5c 0a 20 20 20 20 20 20 2a 20 63 61 6c 6c 65 .\. * calle
4970: 64 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 d function retur
4980: 6e 73 20 70 6f 69 6e 74 65 72 20 74 6f 20 76 61 ns pointer to va
4990: 6c 75 65 2c 20 77 65 27 6c 6c 20 63 6f 70 79 20 lue, we'll copy
49a0: 69 74 73 20 63 6f 6e 74 65 6e 74 73 20 61 66 74 its contents aft
49b0: 65 72 77 61 72 64 73 2e 20 5c 0a 20 20 20 20 20 erwards. \.
49c0: 20 2a 2f 09 09 09 09 09 09 09 09 5c 0a 20 20 20 */........\.
49d0: 20 20 30 09 09 09 09 09 09 09 09 09 5c 0a 20 20 0.........\.
49e0: 20 3a 20 5f 5f 61 76 5f 73 74 61 72 74 5f 73 74 : __av_start_st
49f0: 72 75 63 74 32 28 4c 49 53 54 2c 54 59 50 45 5f ruct2(LIST,TYPE_
4a00: 53 49 5a 45 2c 54 59 50 45 5f 53 50 4c 49 54 54 SIZE,TYPE_SPLITT
4a10: 41 42 4c 45 29 09 09 09 5c 0a 20 20 29 0a 23 69 ABLE)...\. ).#i
4a20: 66 20 28 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 f (defined(__spa
4a30: 72 63 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65 rc__) && !define
4a40: 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29 29 20 d(__sparc64__))
4a50: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 38 38 || defined(__m88
4a60: 6b 5f 5f 29 0a 2f 2a 20 52 65 74 75 72 6e 20 73 k__)./* Return s
4a70: 74 72 75 63 74 75 72 65 20 70 6f 69 6e 74 65 72 tructure pointer
4a80: 20 69 73 20 70 61 73 73 65 64 20 69 6e 20 61 20 is passed in a
4a90: 73 70 65 63 69 61 6c 20 72 65 67 69 73 74 65 72 special register
4aa0: 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f .. */.#define __
4ab0: 61 76 5f 73 74 61 72 74 5f 73 74 72 75 63 74 32 av_start_struct2
4ac0: 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c (LIST,TYPE_SIZE,
4ad0: 54 59 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 TYPE_SPLITTABLE)
4ae0: 20 20 30 0a 23 65 6c 73 65 0a 23 64 65 66 69 6e 0.#else.#defin
4af0: 65 20 5f 5f 61 76 5f 73 74 61 72 74 5f 73 74 72 e __av_start_str
4b00: 75 63 74 32 28 4c 49 53 54 2c 54 59 50 45 5f 53 uct2(LIST,TYPE_S
4b10: 49 5a 45 2c 54 59 50 45 5f 53 50 4c 49 54 54 41 IZE,TYPE_SPLITTA
4b20: 42 4c 45 29 20 20 5c 0a 20 20 28 28 28 4c 49 53 BLE) \. (((LIS
4b30: 54 29 2e 66 6c 61 67 73 20 26 20 5f 5f 41 56 5f T).flags & __AV_
4b40: 53 4d 41 4c 4c 5f 53 54 52 55 43 54 5f 52 45 54 SMALL_STRUCT_RET
4b50: 55 52 4e 29 09 09 09 09 5c 0a 20 20 20 26 26 20 URN)....\. &&
4b60: 5f 5f 61 76 5f 72 65 67 5f 73 74 72 75 63 74 5f __av_reg_struct_
4b70: 72 65 74 75 72 6e 28 4c 49 53 54 2c 54 59 50 45 return(LIST,TYPE
4b80: 5f 53 49 5a 45 2c 54 59 50 45 5f 53 50 4c 49 54 _SIZE,TYPE_SPLIT
4b90: 54 41 42 4c 45 29 09 09 5c 0a 20 20 20 3f 20 2f TABLE)..\. ? /
4ba0: 2a 20 3c 3d 20 57 6f 72 64 2d 73 69 7a 65 64 20 * <= Word-sized
4bb0: 73 74 72 75 63 74 75 72 65 73 20 61 72 65 20 72 structures are r
4bc0: 65 74 75 72 6e 65 64 20 69 6e 20 61 20 72 65 67 eturned in a reg
4bd0: 69 73 74 65 72 2e 20 2a 2f 09 09 5c 0a 20 20 20 ister. */..\.
4be0: 20 20 5f 5f 61 76 5f 73 74 61 72 74 5f 73 74 72 __av_start_str
4bf0: 75 63 74 33 28 4c 49 53 54 29 09 09 09 09 09 09 uct3(LIST)......
4c00: 5c 0a 20 20 20 3a 20 5f 5f 61 76 5f 73 74 61 72 \. : __av_star
4c10: 74 5f 73 74 72 75 63 74 34 28 4c 49 53 54 2c 54 t_struct4(LIST,T
4c20: 59 50 45 5f 53 49 5a 45 29 09 09 09 09 09 5c 0a YPE_SIZE).....\.
4c30: 20 20 29 0a 2f 2a 20 44 65 74 65 72 6d 69 6e 65 )./* Determine
4c40: 73 20 77 68 65 74 68 65 72 20 61 20 73 74 72 75 s whether a stru
4c50: 63 74 75 72 65 20 69 73 20 72 65 74 75 72 6e 65 cture is returne
4c60: 64 20 69 6e 20 72 65 67 69 73 74 65 72 73 2c 0a d in registers,.
4c70: 20 2a 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 * depending on
4c80: 69 74 73 20 73 69 7a 65 20 61 6e 64 20 69 74 73 its size and its
4c90: 20 77 6f 72 64 2d 73 70 6c 69 74 74 61 62 6c 65 word-splittable
4ca0: 20 66 6c 61 67 2e 0a 20 2a 2f 0a 23 69 66 20 28 flag.. */.#if (
4cb0: 64 65 66 69 6e 65 64 28 5f 5f 69 33 38 36 5f 5f defined(__i386__
4cc0: 29 20 26 26 20 64 65 66 69 6e 65 64 28 5f 57 49 ) && defined(_WI
4cd0: 4e 33 32 29 29 0a 23 64 65 66 69 6e 65 20 5f 5f N32)).#define __
4ce0: 61 76 5f 72 65 67 5f 73 74 72 75 63 74 5f 72 65 av_reg_struct_re
4cf0: 74 75 72 6e 28 4c 49 53 54 2c 54 59 50 45 5f 53 turn(LIST,TYPE_S
4d00: 49 5a 45 2c 54 59 50 45 5f 53 50 4c 49 54 54 41 IZE,TYPE_SPLITTA
4d10: 42 4c 45 29 20 20 5c 0a 20 20 28 28 54 59 50 45 BLE) \. ((TYPE
4d20: 5f 53 49 5a 45 29 20 3d 3d 20 31 20 7c 7c 20 28 _SIZE) == 1 || (
4d30: 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 32 20 TYPE_SIZE) == 2
4d40: 7c 7c 20 28 54 59 50 45 5f 53 49 5a 45 29 20 3d || (TYPE_SIZE) =
4d50: 3d 20 34 09 09 5c 0a 20 20 20 7c 7c 20 28 28 54 = 4..\. || ((T
4d60: 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 38 09 09 YPE_SIZE) == 8..
4d70: 09 09 09 09 09 5c 0a 20 20 20 20 20 20 20 26 26 .....\. &&
4d80: 20 28 28 28 4c 49 53 54 29 2e 66 6c 61 67 73 20 (((LIST).flags
4d90: 26 20 5f 5f 41 56 5f 4d 53 56 43 5f 53 54 52 55 & __AV_MSVC_STRU
4da0: 43 54 5f 52 45 54 55 52 4e 29 09 09 09 5c 0a 20 CT_RETURN)...\.
4db0: 20 20 20 20 20 20 20 20 20 20 7c 7c 20 28 28 54 || ((T
4dc0: 59 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 09 YPE_SPLITTABLE).
4dd0: 09 09 09 09 5c 0a 20 20 20 20 20 20 20 20 20 20 ....\.
4de0: 20 20 20 20 20 26 26 20 28 28 4c 49 53 54 29 2e && ((LIST).
4df0: 66 6c 61 67 73 20 26 20 5f 5f 41 56 5f 47 43 43 flags & __AV_GCC
4e00: 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 29 09 _STRUCT_RETURN).
4e10: 09 5c 0a 20 20 29 20 20 20 29 20 20 20 29 20 20 .\. ) ) )
4e20: 20 29 0a 2f 2a 20 54 75 72 6e 20 6f 6e 20 5f 5f )./* Turn on __
4e30: 41 56 5f 52 45 47 49 53 54 45 52 5f 53 54 52 55 AV_REGISTER_STRU
4e40: 43 54 5f 52 45 54 55 52 4e 20 69 66 20 5f 5f 41 CT_RETURN if __A
4e50: 56 5f 53 4d 41 4c 4c 5f 53 54 52 55 43 54 5f 52 V_SMALL_STRUCT_R
4e60: 45 54 55 52 4e 20 77 61 73 20 73 65 74 0a 20 2a ETURN was set. *
4e70: 20 61 6e 64 20 74 68 65 20 73 74 72 75 63 74 20 and the struct
4e80: 77 69 6c 6c 20 61 63 74 75 61 6c 6c 79 20 62 65 will actually be
4e90: 20 72 65 74 75 72 6e 65 64 20 69 6e 20 72 65 67 returned in reg
4ea0: 69 73 74 65 72 73 2e 0a 20 2a 2f 0a 23 64 65 66 isters.. */.#def
4eb0: 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72 74 5f 73 ine __av_start_s
4ec0: 74 72 75 63 74 33 28 4c 49 53 54 29 20 20 5c 0a truct3(LIST) \.
4ed0: 20 20 28 28 4c 49 53 54 29 2e 66 6c 61 67 73 20 ((LIST).flags
4ee0: 7c 3d 20 5f 5f 41 56 5f 52 45 47 49 53 54 45 52 |= __AV_REGISTER
4ef0: 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 2c 20 _STRUCT_RETURN,
4f00: 30 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 28 64 0).#endif.#if (d
4f10: 65 66 69 6e 65 64 28 5f 5f 69 33 38 36 5f 5f 29 efined(__i386__)
4f20: 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 57 49 && !defined(_WI
4f30: 4e 33 32 29 29 20 7c 7c 20 64 65 66 69 6e 65 64 N32)) || defined
4f40: 28 5f 5f 6d 36 38 6b 5f 5f 29 20 7c 7c 20 64 65 (__m68k__) || de
4f50: 66 69 6e 65 64 28 5f 5f 61 72 6d 5f 5f 29 20 7c fined(__arm__) |
4f60: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 72 73 36 30 | defined(__rs60
4f70: 30 30 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 00__) || defined
4f80: 28 5f 5f 63 6f 6e 76 65 78 5f 5f 29 20 7c 7c 20 (__convex__) ||
4f90: 64 65 66 69 6e 65 64 28 5f 5f 73 33 39 30 5f 5f defined(__s390__
4fa0: 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 72 ).#define __av_r
4fb0: 65 67 5f 73 74 72 75 63 74 5f 72 65 74 75 72 6e eg_struct_return
4fc0: 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c (LIST,TYPE_SIZE,
4fd0: 54 59 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 TYPE_SPLITTABLE)
4fe0: 20 20 5c 0a 20 20 28 28 54 59 50 45 5f 53 49 5a \. ((TYPE_SIZ
4ff0: 45 29 20 3d 3d 20 31 20 7c 7c 20 28 54 59 50 45 E) == 1 || (TYPE
5000: 5f 53 49 5a 45 29 20 3d 3d 20 32 20 7c 7c 20 28 _SIZE) == 2 || (
5010: 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 34 09 TYPE_SIZE) == 4.
5020: 09 5c 0a 20 20 20 7c 7c 20 28 28 54 59 50 45 5f .\. || ((TYPE_
5030: 53 49 5a 45 29 20 3d 3d 20 38 20 26 26 20 28 54 SIZE) == 8 && (T
5040: 59 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 09 YPE_SPLITTABLE).
5050: 09 09 09 5c 0a 20 20 20 20 20 20 20 26 26 20 28 ...\. && (
5060: 28 4c 49 53 54 29 2e 66 6c 61 67 73 20 26 20 5f (LIST).flags & _
5070: 5f 41 56 5f 47 43 43 5f 53 54 52 55 43 54 5f 52 _AV_GCC_STRUCT_R
5080: 45 54 55 52 4e 29 09 09 09 5c 0a 20 20 29 20 20 ETURN)...\. )
5090: 20 29 0a 2f 2a 20 54 75 72 6e 20 6f 6e 20 5f 5f )./* Turn on __
50a0: 41 56 5f 52 45 47 49 53 54 45 52 5f 53 54 52 55 AV_REGISTER_STRU
50b0: 43 54 5f 52 45 54 55 52 4e 20 69 66 20 5f 5f 41 CT_RETURN if __A
50c0: 56 5f 53 4d 41 4c 4c 5f 53 54 52 55 43 54 5f 52 V_SMALL_STRUCT_R
50d0: 45 54 55 52 4e 20 77 61 73 20 73 65 74 0a 20 2a ETURN was set. *
50e0: 20 61 6e 64 20 74 68 65 20 73 74 72 75 63 74 20 and the struct
50f0: 77 69 6c 6c 20 61 63 74 75 61 6c 6c 79 20 62 65 will actually be
5100: 20 72 65 74 75 72 6e 65 64 20 69 6e 20 72 65 67 returned in reg
5110: 69 73 74 65 72 73 2e 0a 20 2a 2f 0a 23 64 65 66 isters.. */.#def
5120: 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72 74 5f 73 ine __av_start_s
5130: 74 72 75 63 74 33 28 4c 49 53 54 29 20 20 5c 0a truct3(LIST) \.
5140: 20 20 28 28 4c 49 53 54 29 2e 66 6c 61 67 73 20 ((LIST).flags
5150: 7c 3d 20 5f 5f 41 56 5f 52 45 47 49 53 54 45 52 |= __AV_REGISTER
5160: 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 2c 20 _STRUCT_RETURN,
5170: 30 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 0).#endif.#if de
5180: 66 69 6e 65 64 28 5f 5f 61 6c 70 68 61 5f 5f 29 fined(__alpha__)
5190: 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 72 65 .#define __av_re
51a0: 67 5f 73 74 72 75 63 74 5f 72 65 74 75 72 6e 28 g_struct_return(
51b0: 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 LIST,TYPE_SIZE,T
51c0: 59 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 20 YPE_SPLITTABLE)
51d0: 20 5c 0a 20 20 28 28 54 59 50 45 5f 53 49 5a 45 \. ((TYPE_SIZE
51e0: 29 20 3d 3d 20 31 20 7c 7c 20 28 54 59 50 45 5f ) == 1 || (TYPE_
51f0: 53 49 5a 45 29 20 3d 3d 20 32 20 7c 7c 20 28 54 SIZE) == 2 || (T
5200: 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 34 20 7c YPE_SIZE) == 4 |
5210: 7c 20 28 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d | (TYPE_SIZE) ==
5220: 20 38 09 5c 0a 20 20 20 7c 7c 20 28 28 54 59 50 8.\. || ((TYP
5230: 45 5f 53 49 5a 45 29 20 3d 3d 20 31 36 20 26 26 E_SIZE) == 16 &&
5240: 20 28 54 59 50 45 5f 53 50 4c 49 54 54 41 42 4c (TYPE_SPLITTABL
5250: 45 29 09 09 09 09 5c 0a 20 20 20 20 20 20 20 26 E)....\. &
5260: 26 20 28 28 4c 49 53 54 29 2e 66 6c 61 67 73 20 & ((LIST).flags
5270: 26 20 5f 5f 41 56 5f 47 43 43 5f 53 54 52 55 43 & __AV_GCC_STRUC
5280: 54 5f 52 45 54 55 52 4e 29 09 09 09 5c 0a 20 20 T_RETURN)...\.
5290: 29 20 20 20 29 0a 2f 2a 20 54 75 72 6e 20 6f 6e ) )./* Turn on
52a0: 20 5f 5f 41 56 5f 52 45 47 49 53 54 45 52 5f 53 __AV_REGISTER_S
52b0: 54 52 55 43 54 5f 52 45 54 55 52 4e 20 69 66 20 TRUCT_RETURN if
52c0: 5f 5f 41 56 5f 53 4d 41 4c 4c 5f 53 54 52 55 43 __AV_SMALL_STRUC
52d0: 54 5f 52 45 54 55 52 4e 20 77 61 73 20 73 65 74 T_RETURN was set
52e0: 0a 20 2a 20 61 6e 64 20 74 68 65 20 73 74 72 75 . * and the stru
52f0: 63 74 20 77 69 6c 6c 20 61 63 74 75 61 6c 6c 79 ct will actually
5300: 20 62 65 20 72 65 74 75 72 6e 65 64 20 69 6e 20 be returned in
5310: 72 65 67 69 73 74 65 72 73 2e 0a 20 2a 2f 0a 23 registers.. */.#
5320: 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72 define __av_star
5330: 74 5f 73 74 72 75 63 74 33 28 4c 49 53 54 29 20 t_struct3(LIST)
5340: 20 5c 0a 20 20 28 28 4c 49 53 54 29 2e 66 6c 61 \. ((LIST).fla
5350: 67 73 20 7c 3d 20 5f 5f 41 56 5f 52 45 47 49 53 gs |= __AV_REGIS
5360: 54 45 52 5f 53 54 52 55 43 54 5f 52 45 54 55 52 TER_STRUCT_RETUR
5370: 4e 2c 20 30 29 0a 23 65 6e 64 69 66 0a 23 69 66 N, 0).#endif.#if
5380: 20 64 65 66 69 6e 65 64 28 5f 5f 68 70 70 61 5f defined(__hppa_
5390: 5f 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f _).#define __av_
53a0: 72 65 67 5f 73 74 72 75 63 74 5f 72 65 74 75 72 reg_struct_retur
53b0: 6e 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 n(LIST,TYPE_SIZE
53c0: 2c 54 59 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 ,TYPE_SPLITTABLE
53d0: 29 20 20 5c 0a 20 20 28 28 4c 49 53 54 29 2e 66 ) \. ((LIST).f
53e0: 6c 61 67 73 20 26 20 5f 5f 41 56 5f 4f 4c 44 47 lags & __AV_OLDG
53f0: 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e CC_STRUCT_RETURN
5400: 09 09 09 09 5c 0a 20 20 20 3f 20 28 28 54 59 50 ....\. ? ((TYP
5410: 45 5f 53 49 5a 45 29 20 3d 3d 20 31 20 7c 7c 20 E_SIZE) == 1 ||
5420: 28 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 32 (TYPE_SIZE) == 2
5430: 20 7c 7c 20 28 54 59 50 45 5f 53 49 5a 45 29 20 || (TYPE_SIZE)
5440: 3d 3d 20 34 29 09 09 5c 0a 20 20 20 3a 20 28 28 == 4)..\. : ((
5450: 54 59 50 45 5f 53 49 5a 45 29 20 3c 3d 20 38 29 TYPE_SIZE) <= 8)
5460: 09 09 09 09 09 09 09 5c 0a 20 20 29 0a 2f 2a 20 .......\. )./*
5470: 54 65 73 74 20 62 6f 74 68 20 5f 5f 41 56 5f 4f Test both __AV_O
5480: 4c 44 47 43 43 5f 53 54 52 55 43 54 5f 52 45 54 LDGCC_STRUCT_RET
5490: 55 52 4e 20 61 6e 64 20 5f 5f 41 56 5f 53 4d 41 URN and __AV_SMA
54a0: 4c 4c 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e LL_STRUCT_RETURN
54b0: 20 61 74 20 72 75 6e 20 74 69 6d 65 2e 20 2a 2f at run time. */
54c0: 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 .#define __av_st
54d0: 61 72 74 5f 73 74 72 75 63 74 33 28 4c 49 53 54 art_struct3(LIST
54e0: 29 20 20 5c 0a 20 20 30 0a 23 65 6e 64 69 66 0a ) \. 0.#endif.
54f0: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 #if defined(__mi
5500: 70 73 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65 ps__) && !define
5510: 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 0a 23 d(__mipsn32__).#
5520: 64 65 66 69 6e 65 20 5f 5f 61 76 5f 72 65 67 5f define __av_reg_
5530: 73 74 72 75 63 74 5f 72 65 74 75 72 6e 28 4c 49 struct_return(LI
5540: 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 ST,TYPE_SIZE,TYP
5550: 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 20 20 5c E_SPLITTABLE) \
5560: 0a 20 20 28 28 54 59 50 45 5f 53 49 5a 45 29 20 . ((TYPE_SIZE)
5570: 3d 3d 20 31 20 7c 7c 20 28 54 59 50 45 5f 53 49 == 1 || (TYPE_SI
5580: 5a 45 29 20 3d 3d 20 32 20 7c 7c 20 28 54 59 50 ZE) == 2 || (TYP
5590: 45 5f 53 49 5a 45 29 20 3d 3d 20 34 29 0a 2f 2a E_SIZE) == 4)./*
55a0: 20 54 65 73 74 20 5f 5f 41 56 5f 53 4d 41 4c 4c Test __AV_SMALL
55b0: 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20 69 _STRUCT_RETURN i
55c0: 6e 73 74 65 61 64 20 6f 66 20 5f 5f 41 56 5f 52 nstead of __AV_R
55d0: 45 47 49 53 54 45 52 5f 53 54 52 55 43 54 5f 52 EGISTER_STRUCT_R
55e0: 45 54 55 52 4e 2e 20 2a 2f 0a 23 64 65 66 69 6e ETURN. */.#defin
55f0: 65 20 5f 5f 61 76 5f 73 74 61 72 74 5f 73 74 72 e __av_start_str
5600: 75 63 74 33 28 4c 49 53 54 29 20 20 5c 0a 20 20 uct3(LIST) \.
5610: 30 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 0.#endif.#if def
5620: 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f ined(__mipsn32__
5630: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d ) || defined(__m
5640: 69 70 73 36 34 5f 5f 29 0a 23 64 65 66 69 6e 65 ips64__).#define
5650: 20 5f 5f 61 76 5f 72 65 67 5f 73 74 72 75 63 74 __av_reg_struct
5660: 5f 72 65 74 75 72 6e 28 4c 49 53 54 2c 54 59 50 _return(LIST,TYP
5670: 45 5f 53 49 5a 45 2c 54 59 50 45 5f 53 50 4c 49 E_SIZE,TYPE_SPLI
5680: 54 54 41 42 4c 45 29 20 20 5c 0a 20 20 28 28 4c TTABLE) \. ((L
5690: 49 53 54 29 2e 66 6c 61 67 73 20 26 20 5f 5f 41 IST).flags & __A
56a0: 56 5f 47 43 43 5f 53 54 52 55 43 54 5f 52 45 54 V_GCC_STRUCT_RET
56b0: 55 52 4e 09 09 09 09 5c 0a 20 20 20 3f 20 28 28 URN....\. ? ((
56c0: 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 31 20 TYPE_SIZE) == 1
56d0: 7c 7c 20 28 54 59 50 45 5f 53 49 5a 45 29 20 3d || (TYPE_SIZE) =
56e0: 3d 20 32 20 7c 7c 20 28 54 59 50 45 5f 53 49 5a = 2 || (TYPE_SIZ
56f0: 45 29 20 3d 3d 20 34 20 7c 7c 20 28 54 59 50 45 E) == 4 || (TYPE
5700: 5f 53 49 5a 45 29 20 3d 3d 20 38 29 20 5c 0a 20 _SIZE) == 8) \.
5710: 20 20 3a 20 28 28 54 59 50 45 5f 53 49 5a 45 29 : ((TYPE_SIZE)
5720: 20 3c 3d 20 31 36 29 09 09 09 09 09 09 5c 0a 20 <= 16)......\.
5730: 20 29 0a 2f 2a 20 54 75 72 6e 20 6f 6e 20 5f 5f )./* Turn on __
5740: 41 56 5f 52 45 47 49 53 54 45 52 5f 53 54 52 55 AV_REGISTER_STRU
5750: 43 54 5f 52 45 54 55 52 4e 20 69 66 20 5f 5f 41 CT_RETURN if __A
5760: 56 5f 53 4d 41 4c 4c 5f 53 54 52 55 43 54 5f 52 V_SMALL_STRUCT_R
5770: 45 54 55 52 4e 20 77 61 73 20 73 65 74 0a 20 2a ETURN was set. *
5780: 20 61 6e 64 20 74 68 65 20 73 74 72 75 63 74 20 and the struct
5790: 77 69 6c 6c 20 61 63 74 75 61 6c 6c 79 20 62 65 will actually be
57a0: 20 72 65 74 75 72 6e 65 64 20 69 6e 20 72 65 67 returned in reg
57b0: 69 73 74 65 72 73 2e 0a 20 2a 2f 0a 23 64 65 66 isters.. */.#def
57c0: 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72 74 5f 73 ine __av_start_s
57d0: 74 72 75 63 74 33 28 4c 49 53 54 29 20 20 5c 0a truct3(LIST) \.
57e0: 20 20 28 28 4c 49 53 54 29 2e 66 6c 61 67 73 20 ((LIST).flags
57f0: 7c 3d 20 5f 5f 41 56 5f 52 45 47 49 53 54 45 52 |= __AV_REGISTER
5800: 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 2c 20 _STRUCT_RETURN,
5810: 30 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 0).#endif.#if de
5820: 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f fined(__sparc64_
5830: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f _) || defined(__
5840: 69 61 36 34 5f 5f 29 0a 23 64 65 66 69 6e 65 20 ia64__).#define
5850: 5f 5f 61 76 5f 72 65 67 5f 73 74 72 75 63 74 5f __av_reg_struct_
5860: 72 65 74 75 72 6e 28 4c 49 53 54 2c 54 59 50 45 return(LIST,TYPE
5870: 5f 53 49 5a 45 2c 54 59 50 45 5f 53 50 4c 49 54 _SIZE,TYPE_SPLIT
5880: 54 41 42 4c 45 29 20 20 5c 0a 20 20 28 28 54 59 TABLE) \. ((TY
5890: 50 45 5f 53 49 5a 45 29 20 3c 3d 20 33 32 29 0a PE_SIZE) <= 32).
58a0: 2f 2a 20 54 75 72 6e 20 6f 6e 20 5f 5f 41 56 5f /* Turn on __AV_
58b0: 52 45 47 49 53 54 45 52 5f 53 54 52 55 43 54 5f REGISTER_STRUCT_
58c0: 52 45 54 55 52 4e 20 69 66 20 5f 5f 41 56 5f 53 RETURN if __AV_S
58d0: 4d 41 4c 4c 5f 53 54 52 55 43 54 5f 52 45 54 55 MALL_STRUCT_RETU
58e0: 52 4e 20 77 61 73 20 73 65 74 0a 20 2a 20 61 6e RN was set. * an
58f0: 64 20 74 68 65 20 73 74 72 75 63 74 20 77 69 6c d the struct wil
5900: 6c 20 61 63 74 75 61 6c 6c 79 20 62 65 20 72 65 l actually be re
5910: 74 75 72 6e 65 64 20 69 6e 20 72 65 67 69 73 74 turned in regist
5920: 65 72 73 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 ers.. */.#define
5930: 20 5f 5f 61 76 5f 73 74 61 72 74 5f 73 74 72 75 __av_start_stru
5940: 63 74 33 28 4c 49 53 54 29 20 20 5c 0a 20 20 28 ct3(LIST) \. (
5950: 28 4c 49 53 54 29 2e 66 6c 61 67 73 20 7c 3d 20 (LIST).flags |=
5960: 5f 5f 41 56 5f 52 45 47 49 53 54 45 52 5f 53 54 __AV_REGISTER_ST
5970: 52 55 43 54 5f 52 45 54 55 52 4e 2c 20 30 29 0a RUCT_RETURN, 0).
5980: 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e #endif.#if defin
5990: 65 64 28 5f 5f 78 38 36 5f 36 34 5f 5f 29 0a 23 ed(__x86_64__).#
59a0: 64 65 66 69 6e 65 20 5f 5f 61 76 5f 72 65 67 5f define __av_reg_
59b0: 73 74 72 75 63 74 5f 72 65 74 75 72 6e 28 4c 49 struct_return(LI
59c0: 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 ST,TYPE_SIZE,TYP
59d0: 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 20 20 5c E_SPLITTABLE) \
59e0: 0a 20 20 28 28 54 59 50 45 5f 53 49 5a 45 29 20 . ((TYPE_SIZE)
59f0: 3c 3d 20 31 36 29 0a 2f 2a 20 54 75 72 6e 20 6f <= 16)./* Turn o
5a00: 6e 20 5f 5f 41 56 5f 52 45 47 49 53 54 45 52 5f n __AV_REGISTER_
5a10: 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20 69 66 STRUCT_RETURN if
5a20: 20 5f 5f 41 56 5f 53 4d 41 4c 4c 5f 53 54 52 55 __AV_SMALL_STRU
5a30: 43 54 5f 52 45 54 55 52 4e 20 77 61 73 20 73 65 CT_RETURN was se
5a40: 74 0a 20 2a 20 61 6e 64 20 74 68 65 20 73 74 72 t. * and the str
5a50: 75 63 74 20 77 69 6c 6c 20 61 63 74 75 61 6c 6c uct will actuall
5a60: 79 20 62 65 20 72 65 74 75 72 6e 65 64 20 69 6e y be returned in
5a70: 20 72 65 67 69 73 74 65 72 73 2e 0a 20 2a 2f 0a registers.. */.
5a80: 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61 #define __av_sta
5a90: 72 74 5f 73 74 72 75 63 74 33 28 4c 49 53 54 29 rt_struct3(LIST)
5aa0: 20 20 5c 0a 20 20 28 28 4c 49 53 54 29 2e 66 6c \. ((LIST).fl
5ab0: 61 67 73 20 7c 3d 20 5f 5f 41 56 5f 52 45 47 49 ags |= __AV_REGI
5ac0: 53 54 45 52 5f 53 54 52 55 43 54 5f 52 45 54 55 STER_STRUCT_RETU
5ad0: 52 4e 2c 20 30 29 0a 23 65 6e 64 69 66 0a 23 69 RN, 0).#endif.#i
5ae0: 66 20 64 65 66 69 6e 65 64 28 5f 5f 69 33 38 36 f defined(__i386
5af0: 5f 5f 29 0a 2f 2a 20 52 65 74 75 72 6e 20 73 74 __)./* Return st
5b00: 72 75 63 74 75 72 65 20 70 6f 69 6e 74 65 72 20 ructure pointer
5b10: 69 73 20 70 61 73 73 65 64 20 69 6e 20 61 20 73 is passed in a s
5b20: 70 65 63 69 61 6c 20 72 65 67 69 73 74 65 72 20 pecial register
5b30: 6f 72 20 61 73 20 66 69 72 73 74 20 61 72 67 2e or as first arg.
5b40: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 */.#define __av
5b50: 5f 73 74 61 72 74 5f 73 74 72 75 63 74 34 28 4c _start_struct4(L
5b60: 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 29 09 09 IST,TYPE_SIZE)..
5b70: 09 09 5c 0a 20 20 28 28 4c 49 53 54 29 2e 66 6c ..\. ((LIST).fl
5b80: 61 67 73 20 26 20 5f 5f 41 56 5f 4e 45 58 54 47 ags & __AV_NEXTG
5b90: 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e CC_STRUCT_RETURN
5ba0: 09 09 09 09 5c 0a 20 20 20 3f 20 30 09 09 09 09 ....\. ? 0....
5bb0: 09 09 20 2f 2a 20 73 70 65 63 69 61 6c 20 72 65 .. /* special re
5bc0: 67 69 73 74 65 72 20 2a 2f 09 5c 0a 20 20 20 3a gister */.\. :
5bd0: 20 28 2a 28 4c 49 53 54 29 2e 61 70 74 72 2b 2b (*(LIST).aptr++
5be0: 20 3d 20 28 5f 5f 61 76 77 6f 72 64 29 28 28 4c = (__avword)((L
5bf0: 49 53 54 29 2e 72 61 64 64 72 29 2c 20 30 29 09 IST).raddr), 0).
5c00: 2f 2a 20 66 69 72 73 74 20 61 72 67 20 2a 2f 09 /* first arg */.
5c10: 5c 0a 20 20 29 0a 23 65 6e 64 69 66 0a 23 69 66 \. ).#endif.#if
5c20: 20 64 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f defined(__m68k_
5c30: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f _) || defined(__
5c40: 68 70 70 61 5f 5f 29 20 7c 7c 20 64 65 66 69 6e hppa__) || defin
5c50: 65 64 28 5f 5f 69 61 36 34 5f 5f 29 0a 2f 2a 20 ed(__ia64__)./*
5c60: 52 65 74 75 72 6e 20 73 74 72 75 63 74 75 72 65 Return structure
5c70: 20 70 6f 69 6e 74 65 72 20 69 73 20 70 61 73 73 pointer is pass
5c80: 65 64 20 69 6e 20 61 20 73 70 65 63 69 61 6c 20 ed in a special
5c90: 72 65 67 69 73 74 65 72 2e 0a 20 2a 2f 0a 23 64 register.. */.#d
5ca0: 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72 74 efine __av_start
5cb0: 5f 73 74 72 75 63 74 34 28 4c 49 53 54 2c 54 59 _struct4(LIST,TY
5cc0: 50 45 5f 53 49 5a 45 29 20 20 30 0a 23 65 6e 64 PE_SIZE) 0.#end
5cd0: 69 66 0a 2f 2a 20 52 65 74 75 72 6e 20 73 74 72 if./* Return str
5ce0: 75 63 74 75 72 65 20 70 6f 69 6e 74 65 72 20 69 ucture pointer i
5cf0: 73 20 70 61 73 73 65 64 20 61 73 20 66 69 72 73 s passed as firs
5d00: 74 20 61 72 67 2e 0a 20 2a 2f 0a 23 69 66 20 64 t arg.. */.#if d
5d10: 65 66 69 6e 65 64 28 5f 5f 61 6c 70 68 61 5f 5f efined(__alpha__
5d20: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 61 ) || defined(__a
5d30: 72 6d 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 rm__) || defined
5d40: 28 5f 5f 72 73 36 30 30 30 5f 5f 29 20 7c 7c 20 (__rs6000__) ||
5d50: 64 65 66 69 6e 65 64 28 5f 5f 63 6f 6e 76 65 78 defined(__convex
5d60: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f __) || defined(_
5d70: 5f 73 33 39 30 5f 5f 29 0a 23 64 65 66 69 6e 65 _s390__).#define
5d80: 20 5f 5f 61 76 5f 73 74 61 72 74 5f 73 74 72 75 __av_start_stru
5d90: 63 74 34 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 ct4(LIST,TYPE_SI
5da0: 5a 45 29 09 09 09 09 5c 0a 20 20 20 28 2a 28 4c ZE)....\. (*(L
5db0: 49 53 54 29 2e 61 70 74 72 2b 2b 20 3d 20 28 5f IST).aptr++ = (_
5dc0: 5f 61 76 77 6f 72 64 29 28 28 4c 49 53 54 29 2e _avword)((LIST).
5dd0: 72 61 64 64 72 29 2c 20 30 29 0a 23 65 6e 64 69 raddr), 0).#endi
5de0: 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f f.#if defined(__
5df0: 6d 69 70 73 5f 5f 29 20 7c 7c 20 64 65 66 69 6e mips__) || defin
5e00: 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 ed(__mipsn32__)
5e10: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 || defined(__mip
5e20: 73 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 s64__) || define
5e30: 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29 0a 23 d(__sparc64__).#
5e40: 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 61 72 define __av_star
5e50: 74 5f 73 74 72 75 63 74 34 28 4c 49 53 54 2c 54 t_struct4(LIST,T
5e60: 59 50 45 5f 53 49 5a 45 29 09 09 09 09 5c 0a 20 YPE_SIZE)....\.
5e70: 20 20 28 2a 28 4c 49 53 54 29 2e 61 70 74 72 2b (*(LIST).aptr+
5e80: 2b 20 3d 20 28 5f 5f 61 76 77 6f 72 64 29 28 28 + = (__avword)((
5e90: 4c 49 53 54 29 2e 72 61 64 64 72 29 2c 09 09 09 LIST).raddr),...
5ea0: 09 5c 0a 20 20 20 20 28 4c 49 53 54 29 2e 61 6e .\. (LIST).an
5eb0: 75 6d 2b 2b 2c 09 09 09 09 09 09 09 5c 0a 20 20 um++,.......\.
5ec0: 20 20 30 09 09 09 09 09 09 09 09 09 5c 0a 20 20 0.........\.
5ed0: 20 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 ).#endif.#if de
5ee0: 66 69 6e 65 64 28 5f 5f 78 38 36 5f 36 34 5f 5f fined(__x86_64__
5ef0: 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 ).#define __av_s
5f00: 74 61 72 74 5f 73 74 72 75 63 74 34 28 4c 49 53 tart_struct4(LIS
5f10: 54 2c 54 59 50 45 5f 53 49 5a 45 29 09 09 09 09 T,TYPE_SIZE)....
5f20: 5c 0a 20 20 20 28 2a 28 4c 49 53 54 29 2e 69 61 \. (*(LIST).ia
5f30: 70 74 72 2b 2b 20 3d 20 28 5f 5f 61 76 77 6f 72 ptr++ = (__avwor
5f40: 64 29 28 28 4c 49 53 54 29 2e 72 61 64 64 72 29 d)((LIST).raddr)
5f50: 2c 20 30 29 0a 23 65 6e 64 69 66 0a 23 65 6e 64 , 0).#endif.#end
5f60: 69 66 0a 0a 0a 2f 2a 0a 20 2a 20 61 76 5f 3c 74 if.../*. * av_<t
5f70: 79 70 65 3e 20 6d 61 63 72 6f 73 20 77 68 69 63 ype> macros whic
5f80: 68 20 73 70 65 63 69 66 79 20 74 68 65 20 61 72 h specify the ar
5f90: 67 75 6d 65 6e 74 20 61 6e 64 20 69 74 73 20 74 gument and its t
5fa0: 79 70 65 0a 20 2a 2f 0a 0a 2f 2a 0a 20 2a 20 73 ype. */../*. * s
5fb0: 63 61 6c 61 72 20 61 72 67 75 6d 65 6e 74 20 74 calar argument t
5fc0: 79 70 65 73 0a 20 2a 2f 0a 0a 23 69 66 20 64 65 ypes. */..#if de
5fd0: 66 69 6e 65 64 28 5f 5f 69 33 38 36 5f 5f 29 20 fined(__i386__)
5fe0: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 36 38 || defined(__m68
5ff0: 6b 5f 5f 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 k__) || (defined
6000: 28 5f 5f 73 70 61 72 63 5f 5f 29 20 26 26 20 21 (__sparc__) && !
6010: 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 defined(__sparc6
6020: 34 5f 5f 29 29 20 7c 7c 20 64 65 66 69 6e 65 64 4__)) || defined
6030: 28 5f 5f 61 6c 70 68 61 5f 5f 29 20 7c 7c 20 64 (__alpha__) || d
6040: 65 66 69 6e 65 64 28 5f 5f 61 72 6d 5f 5f 29 20 efined(__arm__)
6050: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 72 73 36 || defined(__rs6
6060: 30 30 30 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 000__) || define
6070: 64 28 5f 5f 6d 38 38 6b 5f 5f 29 20 7c 7c 20 64 d(__m88k__) || d
6080: 65 66 69 6e 65 64 28 5f 5f 63 6f 6e 76 65 78 5f efined(__convex_
6090: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f _) || defined(__
60a0: 69 61 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e ia64__) || defin
60b0: 65 64 28 5f 5f 78 38 36 5f 36 34 5f 5f 29 20 7c ed(__x86_64__) |
60c0: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 73 33 39 30 | defined(__s390
60d0: 5f 5f 29 0a 2f 2a 20 46 6c 6f 61 74 73 20 61 6e __)./* Floats an
60e0: 64 20 61 6c 6c 20 69 6e 74 65 67 65 72 20 74 79 d all integer ty
60f0: 70 65 73 20 61 72 65 20 70 61 73 73 65 64 20 61 pes are passed a
6100: 73 20 77 6f 72 64 73 2c 0a 20 2a 20 64 6f 75 62 s words,. * doub
6110: 6c 65 73 20 61 73 20 74 77 6f 20 77 6f 72 64 73 les as two words
6120: 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f .. */.#define __
6130: 61 76 5f 77 6f 72 64 28 4c 49 53 54 2c 56 41 4c av_word(LIST,VAL
6140: 29 09 09 09 09 09 09 5c 0a 20 20 28 2b 2b 28 4c )......\. (++(L
6150: 49 53 54 29 2e 61 70 74 72 20 3e 20 5f 5f 61 76 IST).aptr > __av
6160: 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09 09 09 _eptr(LIST).....
6170: 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 28 28 4c 49 \. ? -1 : ((LI
6180: 53 54 29 2e 61 70 74 72 5b 2d 31 5d 20 3d 20 28 ST).aptr[-1] = (
6190: 5f 5f 61 76 77 6f 72 64 29 28 56 41 4c 29 2c 20 __avword)(VAL),
61a0: 30 29 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 0)).#endif.#if d
61b0: 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 5f 5f 29 efined(__mips__)
61c0: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 || defined(__mi
61d0: 70 73 6e 33 32 5f 5f 29 20 7c 7c 20 64 65 66 69 psn32__) || defi
61e0: 6e 65 64 28 5f 5f 6d 69 70 73 36 34 5f 5f 29 20 ned(__mips64__)
61f0: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 || defined(__spa
6200: 72 63 36 34 5f 5f 29 0a 2f 2a 20 4d 6f 73 74 20 rc64__)./* Most
6210: 74 68 69 6e 67 73 20 61 72 65 20 70 61 73 73 65 things are passe
6220: 64 20 61 73 20 69 6e 74 65 67 65 72 73 3a 0a 20 d as integers:.
6230: 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f */.#define __av_
6240: 77 6f 72 64 28 4c 49 53 54 2c 56 41 4c 29 09 09 word(LIST,VAL)..
6250: 09 09 09 09 5c 0a 20 20 28 2b 2b 28 4c 49 53 54 ....\. (++(LIST
6260: 29 2e 61 70 74 72 20 3e 20 5f 5f 61 76 5f 65 70 ).aptr > __av_ep
6270: 74 72 28 4c 49 53 54 29 09 09 09 09 09 5c 0a 20 tr(LIST).....\.
6280: 20 20 3f 20 2d 31 20 3a 20 28 28 4c 49 53 54 29 ? -1 : ((LIST)
6290: 2e 61 6e 75 6d 2b 2b 2c 20 28 4c 49 53 54 29 2e .anum++, (LIST).
62a0: 61 70 74 72 5b 2d 31 5d 20 3d 20 28 5f 5f 61 76 aptr[-1] = (__av
62b0: 77 6f 72 64 29 28 56 41 4c 29 2c 20 30 29 29 0a word)(VAL), 0)).
62c0: 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e #endif.#if defin
62d0: 65 64 28 5f 5f 68 70 70 61 5f 5f 29 0a 2f 2a 20 ed(__hppa__)./*
62e0: 46 6c 6f 61 74 73 20 61 6e 64 20 61 6c 6c 20 69 Floats and all i
62f0: 6e 74 65 67 65 72 20 74 79 70 65 73 20 61 72 65 nteger types are
6300: 20 70 61 73 73 65 64 20 61 73 20 77 6f 72 64 73 passed as words
6310: 2c 0a 20 2a 20 64 6f 75 62 6c 65 73 20 61 73 20 ,. * doubles as
6320: 74 77 6f 20 77 6f 72 64 73 2e 0a 20 2a 2f 0a 23 two words.. */.#
6330: 64 65 66 69 6e 65 20 5f 5f 61 76 5f 77 6f 72 64 define __av_word
6340: 28 4c 49 53 54 2c 56 41 4c 29 09 09 09 09 09 09 (LIST,VAL)......
6350: 5c 0a 20 20 28 2d 2d 28 4c 49 53 54 29 2e 61 70 \. (--(LIST).ap
6360: 74 72 20 3c 20 5f 5f 61 76 5f 65 70 74 72 28 4c tr < __av_eptr(L
6370: 49 53 54 29 09 09 09 09 09 5c 0a 20 20 20 3f 20 IST).....\. ?
6380: 2d 31 20 3a 20 28 2a 28 4c 49 53 54 29 2e 61 70 -1 : (*(LIST).ap
6390: 74 72 20 3d 20 28 5f 5f 61 76 77 6f 72 64 29 28 tr = (__avword)(
63a0: 56 41 4c 29 2c 20 30 29 29 0a 23 65 6e 64 69 66 VAL), 0)).#endif
63b0: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 41 4d 49 .#if defined(AMI
63c0: 47 41 29 0a 2f 2a 20 53 6f 6d 65 20 61 72 67 75 GA)./* Some argu
63d0: 6d 65 6e 74 73 20 61 72 65 20 70 61 73 73 65 64 ments are passed
63e0: 20 69 6e 20 72 65 67 69 73 74 65 72 73 2e 20 51 in registers. Q
63f0: 75 65 72 79 20 74 68 65 20 6d 61 63 72 6f 20 41 uery the macro A
6400: 56 5f 41 52 47 5f 52 45 47 4e 55 4d 2e 0a 20 2a V_ARG_REGNUM.. *
6410: 20 54 68 69 73 20 73 68 6f 75 6c 64 20 72 65 61 This should rea
6420: 6c 6c 79 20 62 65 20 61 6e 20 61 72 67 75 6d 65 lly be an argume
6430: 6e 74 20 74 6f 20 5f 5f 61 76 5f 77 6f 72 64 2e nt to __av_word.
6440: 0a 20 2a 2f 0a 2f 2a 20 23 75 6e 64 65 66 20 5f . */./* #undef _
6450: 5f 61 76 5f 77 6f 72 64 20 2a 2f 20 2f 2a 2a 2f _av_word */ /**/
6460: 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 77 6f .#define __av_wo
6470: 72 64 28 4c 49 53 54 2c 56 41 4c 29 09 09 09 09 rd(LIST,VAL)....
6480: 09 09 5c 0a 20 20 28 28 41 56 5f 41 52 47 5f 52 ..\. ((AV_ARG_R
6490: 45 47 4e 55 4d 29 20 3e 3d 20 30 09 09 09 09 09 EGNUM) >= 0.....
64a0: 09 09 5c 0a 20 20 20 3f 20 28 28 41 56 5f 41 52 ..\. ? ((AV_AR
64b0: 47 5f 52 45 47 4e 55 4d 29 20 3c 20 38 2b 37 09 G_REGNUM) < 8+7.
64c0: 09 09 09 09 09 5c 0a 20 20 20 20 20 20 3f 20 2d .....\. ? -
64d0: 31 20 3a 20 28 28 4c 49 53 54 29 2e 72 65 67 61 1 : ((LIST).rega
64e0: 72 67 73 5b 28 41 56 5f 41 52 47 5f 52 45 47 4e rgs[(AV_ARG_REGN
64f0: 55 4d 29 5d 20 3d 20 28 5f 5f 61 76 77 6f 72 64 UM)] = (__avword
6500: 29 28 56 41 4c 29 2c 20 30 29 29 09 5c 0a 20 20 )(VAL), 0)).\.
6510: 20 3a 20 28 2b 2b 28 4c 49 53 54 29 2e 61 70 74 : (++(LIST).apt
6520: 72 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 r > __av_eptr(LI
6530: 53 54 29 09 09 09 09 09 5c 0a 20 20 20 20 20 20 ST).....\.
6540: 3f 20 2d 31 20 3a 20 28 28 4c 49 53 54 29 2e 61 ? -1 : ((LIST).a
6550: 70 74 72 5b 2d 31 5d 20 3d 20 28 5f 5f 61 76 77 ptr[-1] = (__avw
6560: 6f 72 64 29 28 56 41 4c 29 2c 20 30 29 29 29 0a ord)(VAL), 0))).
6570: 23 65 6e 64 69 66 0a 0a 2f 2a 20 69 6e 74 65 67 #endif../* integ
6580: 65 72 20 61 72 67 75 6d 65 6e 74 20 74 79 70 65 er argument type
6590: 73 20 2a 2f 0a 0a 23 69 66 20 64 65 66 69 6e 65 s */..#if define
65a0: 64 28 5f 5f 78 38 36 5f 36 34 5f 5f 29 0a 2f 2a d(__x86_64__)./*
65b0: 20 54 68 65 20 66 69 72 73 74 20 36 20 69 6e 74 The first 6 int
65c0: 65 67 65 72 20 61 72 67 75 6d 65 6e 74 73 20 61 eger arguments a
65d0: 72 65 20 70 61 73 73 65 64 20 69 6e 20 72 65 67 re passed in reg
65e0: 69 73 74 65 72 73 2e 20 2a 2f 0a 23 64 65 66 69 isters. */.#defi
65f0: 6e 65 20 61 76 5f 6c 6f 6e 67 28 4c 49 53 54 2c ne av_long(LIST,
6600: 56 41 4c 29 09 09 09 09 09 09 5c 0a 20 20 28 28 VAL)......\. ((
6610: 4c 49 53 54 29 2e 69 61 70 74 72 20 3c 20 26 28 LIST).iaptr < &(
6620: 4c 49 53 54 29 2e 69 61 72 67 73 5b 36 5d 09 09 LIST).iargs[6]..
6630: 09 09 09 5c 0a 20 20 20 3f 20 28 2a 28 4c 49 53 ...\. ? (*(LIS
6640: 54 29 2e 69 61 70 74 72 2b 2b 20 3d 20 28 6c 6f T).iaptr++ = (lo
6650: 6e 67 29 28 56 41 4c 29 2c 20 30 29 09 09 09 09 ng)(VAL), 0)....
6660: 09 5c 0a 20 20 20 3a 20 5f 5f 61 76 5f 77 6f 72 .\. : __av_wor
6670: 64 28 4c 49 53 54 2c 28 6c 6f 6e 67 29 28 56 41 d(LIST,(long)(VA
6680: 4c 29 29 29 0a 23 65 6c 73 65 0a 23 64 65 66 69 L))).#else.#defi
6690: 6e 65 20 61 76 5f 6c 6f 6e 67 28 4c 49 53 54 2c ne av_long(LIST,
66a0: 56 41 4c 29 09 5f 5f 61 76 5f 77 6f 72 64 28 4c VAL).__av_word(L
66b0: 49 53 54 2c 28 6c 6f 6e 67 29 28 56 41 4c 29 29 IST,(long)(VAL))
66c0: 0a 23 65 6e 64 69 66 0a 0a 23 69 66 20 64 65 66 .#endif..#if def
66d0: 69 6e 65 64 28 5f 5f 78 38 36 5f 36 34 5f 5f 29 ined(__x86_64__)
66e0: 0a 2f 2a 20 54 68 65 20 66 69 72 73 74 20 36 20 ./* The first 6
66f0: 69 6e 74 65 67 65 72 20 61 72 67 75 6d 65 6e 74 integer argument
6700: 73 20 61 72 65 20 70 61 73 73 65 64 20 69 6e 20 s are passed in
6710: 72 65 67 69 73 74 65 72 73 2e 20 2a 2f 0a 23 64 registers. */.#d
6720: 65 66 69 6e 65 20 61 76 5f 75 6c 6f 6e 67 28 4c efine av_ulong(L
6730: 49 53 54 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a IST,VAL)......\.
6740: 20 20 28 28 4c 49 53 54 29 2e 69 61 70 74 72 20 ((LIST).iaptr
6750: 3c 20 26 28 4c 49 53 54 29 2e 69 61 72 67 73 5b < &(LIST).iargs[
6760: 36 5d 09 09 09 09 09 5c 0a 20 20 20 3f 20 28 2a 6].....\. ? (*
6770: 28 4c 49 53 54 29 2e 69 61 70 74 72 2b 2b 20 3d (LIST).iaptr++ =
6780: 20 28 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 29 (unsigned long)
6790: 28 56 41 4c 29 2c 20 30 29 09 09 09 5c 0a 20 20 (VAL), 0)...\.
67a0: 20 3a 20 5f 5f 61 76 5f 77 6f 72 64 28 4c 49 53 : __av_word(LIS
67b0: 54 2c 28 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 T,(unsigned long
67c0: 29 28 56 41 4c 29 29 29 0a 23 65 6c 73 65 0a 23 )(VAL))).#else.#
67d0: 64 65 66 69 6e 65 20 61 76 5f 75 6c 6f 6e 67 28 define av_ulong(
67e0: 4c 49 53 54 2c 56 41 4c 29 09 5f 5f 61 76 5f 77 LIST,VAL).__av_w
67f0: 6f 72 64 28 4c 49 53 54 2c 28 75 6e 73 69 67 6e ord(LIST,(unsign
6800: 65 64 20 6c 6f 6e 67 29 28 56 41 4c 29 29 0a 23 ed long)(VAL)).#
6810: 65 6e 64 69 66 0a 0a 23 69 66 20 64 65 66 69 6e endif..#if defin
6820: 65 64 28 5f 5f 78 38 36 5f 36 34 5f 5f 29 0a 2f ed(__x86_64__)./
6830: 2a 20 54 68 65 20 66 69 72 73 74 20 36 20 69 6e * The first 6 in
6840: 74 65 67 65 72 20 61 72 67 75 6d 65 6e 74 73 20 teger arguments
6850: 61 72 65 20 70 61 73 73 65 64 20 69 6e 20 72 65 are passed in re
6860: 67 69 73 74 65 72 73 2e 20 2a 2f 0a 23 64 65 66 gisters. */.#def
6870: 69 6e 65 20 61 76 5f 70 74 72 28 4c 49 53 54 2c ine av_ptr(LIST,
6880: 54 59 50 45 2c 56 41 4c 29 09 09 09 09 09 09 5c TYPE,VAL)......\
6890: 0a 20 20 28 28 4c 49 53 54 29 2e 69 61 70 74 72 . ((LIST).iaptr
68a0: 20 3c 20 26 28 4c 49 53 54 29 2e 69 61 72 67 73 < &(LIST).iargs
68b0: 5b 36 5d 09 09 09 09 09 5c 0a 20 20 20 3f 20 28 [6].....\. ? (
68c0: 2a 28 4c 49 53 54 29 2e 69 61 70 74 72 2b 2b 20 *(LIST).iaptr++
68d0: 3d 20 28 5f 5f 61 76 77 6f 72 64 29 28 54 59 50 = (__avword)(TYP
68e0: 45 29 28 56 41 4c 29 2c 20 30 29 09 09 09 5c 0a E)(VAL), 0)...\.
68f0: 20 20 20 3a 20 5f 5f 61 76 5f 77 6f 72 64 28 4c : __av_word(L
6900: 49 53 54 2c 28 54 59 50 45 29 28 56 41 4c 29 29 IST,(TYPE)(VAL))
6910: 29 0a 23 65 6c 73 65 0a 23 64 65 66 69 6e 65 20 ).#else.#define
6920: 61 76 5f 70 74 72 28 4c 49 53 54 2c 54 59 50 45 av_ptr(LIST,TYPE
6930: 2c 56 41 4c 29 09 5f 5f 61 76 5f 77 6f 72 64 28 ,VAL).__av_word(
6940: 4c 49 53 54 2c 28 54 59 50 45 29 28 56 41 4c 29 LIST,(TYPE)(VAL)
6950: 29 0a 23 65 6e 64 69 66 0a 0a 23 64 65 66 69 6e ).#endif..#defin
6960: 65 20 61 76 5f 63 68 61 72 09 09 09 61 76 5f 6c e av_char...av_l
6970: 6f 6e 67 0a 23 64 65 66 69 6e 65 20 61 76 5f 73 ong.#define av_s
6980: 63 68 61 72 09 09 61 76 5f 6c 6f 6e 67 0a 23 64 char..av_long.#d
6990: 65 66 69 6e 65 20 61 76 5f 73 68 6f 72 74 09 09 efine av_short..
69a0: 61 76 5f 6c 6f 6e 67 0a 23 64 65 66 69 6e 65 20 av_long.#define
69b0: 61 76 5f 69 6e 74 09 09 09 61 76 5f 6c 6f 6e 67 av_int...av_long
69c0: 0a 23 64 65 66 69 6e 65 20 61 76 5f 75 63 68 61 .#define av_ucha
69d0: 72 09 09 61 76 5f 75 6c 6f 6e 67 0a 23 64 65 66 r..av_ulong.#def
69e0: 69 6e 65 20 61 76 5f 75 73 68 6f 72 74 09 09 61 ine av_ushort..a
69f0: 76 5f 75 6c 6f 6e 67 0a 23 64 65 66 69 6e 65 20 v_ulong.#define
6a00: 61 76 5f 75 69 6e 74 09 09 09 61 76 5f 75 6c 6f av_uint...av_ulo
6a10: 6e 67 0a 0a 23 69 66 20 64 65 66 69 6e 65 64 28 ng..#if defined(
6a20: 5f 5f 6d 69 70 73 36 34 5f 5f 29 20 7c 7c 20 64 __mips64__) || d
6a30: 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 efined(__sparc64
6a40: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f __) || defined(_
6a50: 5f 61 6c 70 68 61 5f 5f 29 20 7c 7c 20 64 65 66 _alpha__) || def
6a60: 69 6e 65 64 28 5f 5f 69 61 36 34 5f 5f 29 20 7c ined(__ia64__) |
6a70: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 78 38 36 5f | defined(__x86_
6a80: 36 34 5f 5f 29 0a 2f 2a 20 60 6c 6f 6e 67 20 6c 64__)./* `long l
6a90: 6f 6e 67 27 20 61 6e 64 20 60 6c 6f 6e 67 27 20 ong' and `long'
6aa0: 61 72 65 20 69 64 65 6e 74 69 63 61 6c 2e 20 2a are identical. *
6ab0: 2f 0a 23 64 65 66 69 6e 65 20 61 76 5f 6c 6f 6e /.#define av_lon
6ac0: 67 6c 6f 6e 67 09 09 61 76 5f 6c 6f 6e 67 0a 23 glong..av_long.#
6ad0: 64 65 66 69 6e 65 20 61 76 5f 75 6c 6f 6e 67 6c define av_ulongl
6ae0: 6f 6e 67 09 09 61 76 5f 75 6c 6f 6e 67 0a 23 65 ong..av_ulong.#e
6af0: 6c 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 lif defined(__mi
6b00: 70 73 6e 33 32 5f 5f 29 0a 2f 2a 20 60 6c 6f 6e psn32__)./* `lon
6b10: 67 20 6c 6f 6e 67 27 20 66 69 74 73 20 69 6e 20 g long' fits in
6b20: 5f 5f 61 76 77 6f 72 64 2e 20 2a 2f 0a 23 64 65 __avword. */.#de
6b30: 66 69 6e 65 20 61 76 5f 6c 6f 6e 67 6c 6f 6e 67 fine av_longlong
6b40: 09 09 5f 5f 61 76 5f 77 6f 72 64 0a 23 64 65 66 ..__av_word.#def
6b50: 69 6e 65 20 61 76 5f 75 6c 6f 6e 67 6c 6f 6e 67 ine av_ulonglong
6b60: 28 4c 49 53 54 2c 56 41 4c 29 09 5f 5f 61 76 5f (LIST,VAL).__av_
6b70: 77 6f 72 64 28 4c 49 53 54 2c 28 75 6e 73 69 67 word(LIST,(unsig
6b80: 6e 65 64 20 6c 6f 6e 67 20 6c 6f 6e 67 29 28 56 ned long long)(V
6b90: 41 4c 29 29 0a 23 65 6c 69 66 20 64 65 66 69 6e AL)).#elif defin
6ba0: 65 64 28 5f 5f 69 33 38 36 5f 5f 29 20 7c 7c 20 ed(__i386__) ||
6bb0: 64 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f 5f defined(__m68k__
6bc0: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d ) || defined(__m
6bd0: 69 70 73 5f 5f 29 20 7c 7c 20 28 64 65 66 69 6e ips__) || (defin
6be0: 65 64 28 5f 5f 73 70 61 72 63 5f 5f 29 20 26 26 ed(__sparc__) &&
6bf0: 20 21 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 !defined(__spar
6c00: 63 36 34 5f 5f 29 29 20 7c 7c 20 64 65 66 69 6e c64__)) || defin
6c10: 65 64 28 5f 5f 68 70 70 61 5f 5f 29 20 7c 7c 20 ed(__hppa__) ||
6c20: 64 65 66 69 6e 65 64 28 5f 5f 61 72 6d 5f 5f 29 defined(__arm__)
6c30: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 72 73 || defined(__rs
6c40: 36 30 30 30 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 6000__) || defin
6c50: 65 64 28 5f 5f 6d 38 38 6b 5f 5f 29 20 7c 7c 20 ed(__m88k__) ||
6c60: 64 65 66 69 6e 65 64 28 5f 5f 63 6f 6e 76 65 78 defined(__convex
6c70: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f __) || defined(_
6c80: 5f 73 33 39 30 5f 5f 29 0a 2f 2a 20 60 6c 6f 6e _s390__)./* `lon
6c90: 67 20 6c 6f 6e 67 27 73 20 61 72 65 20 70 61 73 g long's are pas
6ca0: 73 65 64 20 65 6d 62 65 64 64 65 64 20 6f 6e 20 sed embedded on
6cb0: 74 68 65 20 61 72 67 20 73 74 61 63 6b 2e 20 2a the arg stack. *
6cc0: 2f 0a 23 64 65 66 69 6e 65 20 61 76 5f 6c 6f 6e /.#define av_lon
6cd0: 67 6c 6f 6e 67 28 4c 49 53 54 2c 56 41 4c 29 09 glong(LIST,VAL).
6ce0: 5f 5f 61 76 5f 6c 6f 6e 67 6c 6f 6e 67 28 4c 49 __av_longlong(LI
6cf0: 53 54 2c 6c 6f 6e 67 20 6c 6f 6e 67 2c 56 41 4c ST,long long,VAL
6d00: 29 0a 23 64 65 66 69 6e 65 20 61 76 5f 75 6c 6f ).#define av_ulo
6d10: 6e 67 6c 6f 6e 67 28 4c 49 53 54 2c 56 41 4c 29 nglong(LIST,VAL)
6d20: 09 5f 5f 61 76 5f 6c 6f 6e 67 6c 6f 6e 67 28 4c .__av_longlong(L
6d30: 49 53 54 2c 75 6e 73 69 67 6e 65 64 20 6c 6f 6e IST,unsigned lon
6d40: 67 20 6c 6f 6e 67 2c 56 41 4c 29 0a 23 69 66 20 g long,VAL).#if
6d50: 64 65 66 69 6e 65 64 28 5f 5f 69 33 38 36 5f 5f defined(__i386__
6d60: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d ) || defined(__m
6d70: 36 38 6b 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 68k__) || define
6d80: 64 28 5f 5f 61 72 6d 5f 5f 29 20 7c 7c 20 28 64 d(__arm__) || (d
6d90: 65 66 69 6e 65 64 28 5f 5f 72 73 36 30 30 30 5f efined(__rs6000_
6da0: 5f 29 20 26 26 20 28 64 65 66 69 6e 65 64 28 5f _) && (defined(_
6db0: 41 49 58 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 AIX) || (defined
6dc0: 28 5f 5f 4d 41 43 48 5f 5f 29 20 26 26 20 64 65 (__MACH__) && de
6dd0: 66 69 6e 65 64 28 5f 5f 41 50 50 4c 45 5f 5f 29 fined(__APPLE__)
6de0: 29 29 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f ))) || defined(_
6df0: 5f 63 6f 6e 76 65 78 5f 5f 29 0a 2f 2a 20 60 6c _convex__)./* `l
6e00: 6f 6e 67 20 6c 6f 6e 67 27 73 20 61 72 65 20 28 ong long's are (
6e10: 61 74 20 6d 6f 73 74 29 20 77 6f 72 64 2d 61 6c at most) word-al
6e20: 69 67 6e 65 64 2e 20 2a 2f 0a 23 64 65 66 69 6e igned. */.#defin
6e30: 65 20 5f 5f 61 76 5f 6c 6f 6e 67 6c 6f 6e 67 28 e __av_longlong(
6e40: 4c 49 53 54 2c 54 59 50 45 2c 56 41 4c 29 09 09 LIST,TYPE,VAL)..
6e50: 09 09 09 5c 0a 20 20 28 28 28 4c 49 53 54 29 2e ...\. (((LIST).
6e60: 61 70 74 72 20 2b 3d 20 73 69 7a 65 6f 66 28 54 aptr += sizeof(T
6e70: 59 50 45 29 2f 73 69 7a 65 6f 66 28 5f 5f 61 76 YPE)/sizeof(__av
6e80: 77 6f 72 64 29 29 20 3e 20 5f 5f 61 76 5f 65 70 word)) > __av_ep
6e90: 74 72 28 4c 49 53 54 29 09 5c 0a 20 20 20 3f 20 tr(LIST).\. ?
6ea0: 2d 31 20 3a 20 28 28 28 54 59 50 45 2a 29 28 4c -1 : (((TYPE*)(L
6eb0: 49 53 54 29 2e 61 70 74 72 29 5b 2d 31 5d 20 3d IST).aptr)[-1] =
6ec0: 20 28 54 59 50 45 29 28 56 41 4c 29 2c 20 30 29 (TYPE)(VAL), 0)
6ed0: 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 ).#endif.#if def
6ee0: 69 6e 65 64 28 5f 5f 6d 69 70 73 5f 5f 29 20 7c ined(__mips__) |
6ef0: 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 | (defined(__spa
6f00: 72 63 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65 rc__) && !define
6f10: 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29 29 20 d(__sparc64__))
6f20: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 68 70 70 || defined(__hpp
6f30: 61 5f 5f 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 a__) || (defined
6f40: 28 5f 5f 72 73 36 30 30 30 5f 5f 29 20 26 26 20 (__rs6000__) &&
6f50: 21 28 64 65 66 69 6e 65 64 28 5f 41 49 58 29 20 !(defined(_AIX)
6f60: 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f 4d 41 || (defined(__MA
6f70: 43 48 5f 5f 29 20 26 26 20 64 65 66 69 6e 65 64 CH__) && defined
6f80: 28 5f 5f 41 50 50 4c 45 5f 5f 29 29 29 29 20 7c (__APPLE__)))) |
6f90: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 38 38 6b | defined(__m88k
6fa0: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f __) || defined(_
6fb0: 5f 73 33 39 30 5f 5f 29 0a 2f 2a 20 60 6c 6f 6e _s390__)./* `lon
6fc0: 67 20 6c 6f 6e 67 27 73 20 68 61 76 65 20 61 6c g long's have al
6fd0: 69 67 6e 6d 65 6e 74 20 38 2e 20 2a 2f 0a 23 69 ignment 8. */.#i
6fe0: 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 f defined(__mips
6ff0: 5f 5f 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 __).#define __av
7000: 5f 6c 6f 6e 67 6c 6f 6e 67 28 4c 49 53 54 2c 54 _longlong(LIST,T
7010: 59 50 45 2c 56 41 4c 29 09 09 09 09 09 5c 0a 20 YPE,VAL).....\.
7020: 20 28 28 28 4c 49 53 54 29 2e 61 70 74 72 20 3d (((LIST).aptr =
7030: 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28 28 28 5f (__avword*)(((_
7040: 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e 61 _avword)(LIST).a
7050: 70 74 72 2b 73 69 7a 65 6f 66 28 54 59 50 45 29 ptr+sizeof(TYPE)
7060: 2b 5f 5f 41 56 5f 61 6c 69 67 6e 6f 66 28 54 59 +__AV_alignof(TY
7070: 50 45 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 PE)-1) & -(long)
7080: 5f 5f 41 56 5f 61 6c 69 67 6e 6f 66 28 54 59 50 __AV_alignof(TYP
7090: 45 29 29 29 20 3e 20 5f 5f 61 76 5f 65 70 74 72 E))) > __av_eptr
70a0: 28 4c 49 53 54 29 20 5c 0a 20 20 20 3f 20 2d 31 (LIST) \. ? -1
70b0: 20 3a 20 28 28 4c 49 53 54 29 2e 61 6e 75 6d 2b : ((LIST).anum+
70c0: 2b 2c 20 28 28 54 59 50 45 2a 29 28 4c 49 53 54 +, ((TYPE*)(LIST
70d0: 29 2e 61 70 74 72 29 5b 2d 31 5d 20 3d 20 28 54 ).aptr)[-1] = (T
70e0: 59 50 45 29 28 56 41 4c 29 2c 20 30 29 29 0a 23 YPE)(VAL), 0)).#
70f0: 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 endif.#if define
7100: 64 28 5f 5f 73 70 61 72 63 5f 5f 29 20 26 26 20 d(__sparc__) &&
7110: 21 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 !defined(__sparc
7120: 36 34 5f 5f 29 0a 2f 2a 20 57 69 74 68 69 6e 20 64__)./* Within
7130: 74 68 65 20 61 72 67 20 73 74 61 63 6b 2c 20 74 the arg stack, t
7140: 68 65 20 61 6c 69 67 6e 6d 65 6e 74 20 69 73 20 he alignment is
7150: 6f 6e 6c 79 20 34 2c 20 6e 6f 74 20 38 2e 20 2a only 4, not 8. *
7160: 2f 0a 2f 2a 20 54 68 69 73 20 61 73 73 75 6d 65 /./* This assume
7170: 73 20 73 69 7a 65 6f 66 28 6c 6f 6e 67 20 6c 6f s sizeof(long lo
7180: 6e 67 29 20 3d 3d 20 32 2a 73 69 7a 65 6f 66 28 ng) == 2*sizeof(
7190: 5f 5f 61 76 77 6f 72 64 29 2e 20 2a 2f 0a 23 64 __avword). */.#d
71a0: 65 66 69 6e 65 20 5f 5f 61 76 5f 6c 6f 6e 67 6c efine __av_longl
71b0: 6f 6e 67 28 4c 49 53 54 2c 54 59 50 45 2c 56 41 ong(LIST,TYPE,VA
71c0: 4c 29 09 09 09 09 09 5c 0a 20 20 28 28 28 4c 49 L).....\. (((LI
71d0: 53 54 29 2e 61 70 74 72 20 2b 3d 20 73 69 7a 65 ST).aptr += size
71e0: 6f 66 28 54 59 50 45 29 2f 73 69 7a 65 6f 66 28 of(TYPE)/sizeof(
71f0: 5f 5f 61 76 77 6f 72 64 29 29 20 3e 20 5f 5f 61 __avword)) > __a
7200: 76 5f 65 70 74 72 28 4c 49 53 54 29 09 5c 0a 20 v_eptr(LIST).\.
7210: 20 20 3f 20 2d 31 20 3a 09 09 09 09 09 09 09 09 ? -1 :........
7220: 5c 0a 20 20 20 28 28 4c 49 53 54 29 2e 74 6d 70 \. ((LIST).tmp
7230: 2e 5f 6c 6f 6e 67 6c 6f 6e 67 20 3d 20 28 54 59 ._longlong = (TY
7240: 50 45 29 28 56 41 4c 29 2c 09 09 09 09 09 5c 0a PE)(VAL),.....\.
7250: 20 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72 5b (LIST).aptr[
7260: 2d 32 5d 20 3d 20 28 4c 49 53 54 29 2e 74 6d 70 -2] = (LIST).tmp
7270: 2e 77 6f 72 64 73 5b 30 5d 2c 09 09 09 09 5c 0a .words[0],....\.
7280: 20 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72 5b (LIST).aptr[
7290: 2d 31 5d 20 3d 20 28 4c 49 53 54 29 2e 74 6d 70 -1] = (LIST).tmp
72a0: 2e 77 6f 72 64 73 5b 31 5d 2c 09 09 09 09 5c 0a .words[1],....\.
72b0: 20 20 20 20 30 29 29 0a 23 65 6e 64 69 66 0a 23 0)).#endif.#
72c0: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 68 70 70 if defined(__hpp
72d0: 61 5f 5f 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61 a__).#define __a
72e0: 76 5f 6c 6f 6e 67 6c 6f 6e 67 28 4c 49 53 54 2c v_longlong(LIST,
72f0: 54 59 50 45 2c 56 41 4c 29 09 09 09 09 09 5c 0a TYPE,VAL).....\.
7300: 20 20 28 28 28 4c 49 53 54 29 2e 61 70 74 72 20 (((LIST).aptr
7310: 3d 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28 28 28 = (__avword*)(((
7320: 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e __avword)(LIST).
7330: 61 70 74 72 20 26 20 2d 28 6c 6f 6e 67 29 5f 5f aptr & -(long)__
7340: 41 56 5f 61 6c 69 67 6e 6f 66 28 54 59 50 45 29 AV_alignof(TYPE)
7350: 29 20 2d 20 73 69 7a 65 6f 66 28 54 59 50 45 29 ) - sizeof(TYPE)
7360: 29 29 20 3c 20 5f 5f 61 76 5f 65 70 74 72 28 4c )) < __av_eptr(L
7370: 49 53 54 29 20 5c 0a 20 20 20 3f 20 2d 31 20 3a IST) \. ? -1 :
7380: 20 28 2a 28 54 59 50 45 2a 29 28 4c 49 53 54 29 (*(TYPE*)(LIST)
7390: 2e 61 70 74 72 20 3d 20 28 54 59 50 45 29 28 56 .aptr = (TYPE)(V
73a0: 41 4c 29 2c 20 30 29 29 0a 23 65 6e 64 69 66 0a AL), 0)).#endif.
73b0: 23 69 66 20 28 64 65 66 69 6e 65 64 28 5f 5f 72 #if (defined(__r
73c0: 73 36 30 30 30 5f 5f 29 20 26 26 20 21 28 64 65 s6000__) && !(de
73d0: 66 69 6e 65 64 28 5f 41 49 58 29 20 7c 7c 20 28 fined(_AIX) || (
73e0: 64 65 66 69 6e 65 64 28 5f 5f 4d 41 43 48 5f 5f defined(__MACH__
73f0: 29 20 26 26 20 64 65 66 69 6e 65 64 28 5f 5f 41 ) && defined(__A
7400: 50 50 4c 45 5f 5f 29 29 29 29 20 7c 7c 20 64 65 PPLE__)))) || de
7410: 66 69 6e 65 64 28 5f 5f 6d 38 38 6b 5f 5f 29 0a fined(__m88k__).
7420: 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 6c 6f 6e #define __av_lon
7430: 67 6c 6f 6e 67 28 4c 49 53 54 2c 54 59 50 45 2c glong(LIST,TYPE,
7440: 56 41 4c 29 09 09 09 09 09 5c 0a 20 20 28 28 28 VAL).....\. (((
7450: 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 28 5f 5f LIST).aptr = (__
7460: 61 76 77 6f 72 64 2a 29 28 28 28 5f 5f 61 76 77 avword*)(((__avw
7470: 6f 72 64 29 28 4c 49 53 54 29 2e 61 70 74 72 2b ord)(LIST).aptr+
7480: 73 69 7a 65 6f 66 28 54 59 50 45 29 2b 5f 5f 41 sizeof(TYPE)+__A
7490: 56 5f 61 6c 69 67 6e 6f 66 28 54 59 50 45 29 2d V_alignof(TYPE)-
74a0: 31 29 20 26 20 2d 28 6c 6f 6e 67 29 5f 5f 41 56 1) & -(long)__AV
74b0: 5f 61 6c 69 67 6e 6f 66 28 54 59 50 45 29 29 29 _alignof(TYPE)))
74c0: 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 > __av_eptr(LIS
74d0: 54 29 20 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 28 T) \. ? -1 : (
74e0: 28 28 54 59 50 45 2a 29 28 4c 49 53 54 29 2e 61 ((TYPE*)(LIST).a
74f0: 70 74 72 29 5b 2d 31 5d 20 3d 20 28 54 59 50 45 ptr)[-1] = (TYPE
7500: 29 28 56 41 4c 29 2c 20 30 29 29 0a 23 65 6e 64 )(VAL), 0)).#end
7510: 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f if.#if defined(_
7520: 5f 73 33 39 30 5f 5f 29 0a 23 64 65 66 69 6e 65 _s390__).#define
7530: 20 5f 5f 61 76 5f 6c 6f 6e 67 6c 6f 6e 67 28 4c __av_longlong(L
7540: 49 53 54 2c 54 59 50 45 2c 56 41 4c 29 09 09 09 IST,TYPE,VAL)...
7550: 09 09 5c 0a 20 20 28 28 28 4c 49 53 54 29 2e 61 ..\. (((LIST).a
7560: 70 74 72 20 3d 20 28 5f 5f 61 76 77 6f 72 64 2a ptr = (__avword*
7570: 29 28 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 )(((__avword)(LI
7580: 53 54 29 2e 61 70 74 72 2b 73 69 7a 65 6f 66 28 ST).aptr+sizeof(
7590: 54 59 50 45 29 2b 5f 5f 41 56 5f 61 6c 69 67 6e TYPE)+__AV_align
75a0: 6f 66 28 54 59 50 45 29 2d 31 29 20 26 20 2d 28 of(TYPE)-1) & -(
75b0: 6c 6f 6e 67 29 5f 5f 41 56 5f 61 6c 69 67 6e 6f long)__AV_aligno
75c0: 66 28 54 59 50 45 29 29 29 20 3e 20 5f 5f 61 76 f(TYPE))) > __av
75d0: 5f 65 70 74 72 28 4c 49 53 54 29 20 5c 0a 20 20 _eptr(LIST) \.
75e0: 20 3f 20 2d 31 20 3a 09 09 09 09 09 09 5c 0a 20 ? -1 :......\.
75f0: 20 20 28 28 28 4c 49 53 54 29 2e 61 70 74 72 20 (((LIST).aptr
7600: 2d 20 28 4c 49 53 54 29 2e 61 72 67 73 20 2d 20 - (LIST).args -
7610: 28 4c 49 53 54 29 2e 66 61 72 67 77 6f 72 64 73 (LIST).fargwords
7620: 20 3d 3d 20 34 20 3f 20 2b 2b 28 4c 49 53 54 29 == 4 ? ++(LIST)
7630: 2e 61 70 74 72 2c 30 20 3a 20 30 29 2c 20 5c 0a .aptr,0 : 0), \.
7640: 20 20 20 20 28 28 28 54 59 50 45 2a 29 28 4c 49 (((TYPE*)(LI
7650: 53 54 29 2e 61 70 74 72 29 5b 2d 31 5d 20 3d 20 ST).aptr)[-1] =
7660: 28 54 59 50 45 29 28 56 41 4c 29 2c 20 30 29 29 (TYPE)(VAL), 0))
7670: 29 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69 66 0a ).#endif.#endif.
7680: 23 65 6e 64 69 66 0a 0a 2f 2a 20 66 6c 6f 61 74 #endif../* float
7690: 69 6e 67 2d 70 6f 69 6e 74 20 61 72 67 75 6d 65 ing-point argume
76a0: 6e 74 20 74 79 70 65 73 20 2a 2f 0a 0a 23 64 65 nt types */..#de
76b0: 66 69 6e 65 20 61 76 5f 66 6c 6f 61 74 28 4c 49 fine av_float(LI
76c0: 53 54 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a 20 ST,VAL)......\.
76d0: 20 28 28 4c 49 53 54 29 2e 66 6c 61 67 73 20 26 ((LIST).flags &
76e0: 20 5f 5f 41 56 5f 54 52 41 44 49 54 49 4f 4e 41 __AV_TRADITIONA
76f0: 4c 5f 46 4c 4f 41 54 5f 41 52 47 53 09 09 09 09 L_FLOAT_ARGS....
7700: 5c 0a 20 20 20 3f 20 61 76 5f 64 6f 75 62 6c 65 \. ? av_double
7710: 28 4c 49 53 54 2c 28 66 6c 6f 61 74 29 28 56 41 (LIST,(float)(VA
7720: 4c 29 29 09 09 09 09 09 5c 0a 20 20 20 3a 20 5f L)).....\. : _
7730: 5f 61 76 5f 66 6c 6f 61 74 28 4c 49 53 54 2c 56 _av_float(LIST,V
7740: 41 4c 29 29 0a 0a 23 69 66 20 64 65 66 69 6e 65 AL))..#if define
7750: 64 28 5f 5f 69 33 38 36 5f 5f 29 20 7c 7c 20 64 d(__i386__) || d
7760: 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f 5f 29 efined(__m68k__)
7770: 20 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f 73 || (defined(__s
7780: 70 61 72 63 5f 5f 29 20 26 26 20 21 64 65 66 69 parc__) && !defi
7790: 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29 ned(__sparc64__)
77a0: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 61 ) || defined(__a
77b0: 72 6d 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 rm__) || defined
77c0: 28 5f 5f 63 6f 6e 76 65 78 5f 5f 29 0a 0a 23 64 (__convex__)..#d
77d0: 65 66 69 6e 65 20 5f 5f 61 76 5f 66 6c 6f 61 74 efine __av_float
77e0: 28 4c 49 53 54 2c 56 41 4c 29 09 09 09 09 09 09 (LIST,VAL)......
77f0: 5c 0a 20 20 28 2b 2b 28 4c 49 53 54 29 2e 61 70 \. (++(LIST).ap
7800: 74 72 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c tr > __av_eptr(L
7810: 49 53 54 29 09 09 09 09 09 5c 0a 20 20 20 3f 20 IST).....\. ?
7820: 2d 31 20 3a 20 28 28 28 66 6c 6f 61 74 2a 29 28 -1 : (((float*)(
7830: 4c 49 53 54 29 2e 61 70 74 72 29 5b 2d 31 5d 20 LIST).aptr)[-1]
7840: 3d 20 28 66 6c 6f 61 74 29 28 56 41 4c 29 2c 20 = (float)(VAL),
7850: 30 29 29 0a 0a 2f 2a 20 54 68 69 73 20 61 73 73 0))../* This ass
7860: 75 6d 65 73 20 73 69 7a 65 6f 66 28 64 6f 75 62 umes sizeof(doub
7870: 6c 65 29 20 3d 3d 20 32 2a 73 69 7a 65 6f 66 28 le) == 2*sizeof(
7880: 5f 5f 61 76 77 6f 72 64 29 2e 20 2a 2f 0a 23 64 __avword). */.#d
7890: 65 66 69 6e 65 20 61 76 5f 64 6f 75 62 6c 65 28 efine av_double(
78a0: 4c 49 53 54 2c 56 41 4c 29 09 09 09 09 09 09 5c LIST,VAL)......\
78b0: 0a 20 20 20 28 28 28 4c 49 53 54 29 2e 61 70 74 . (((LIST).apt
78c0: 72 20 2b 3d 20 32 29 20 3e 20 5f 5f 61 76 5f 65 r += 2) > __av_e
78d0: 70 74 72 28 4c 49 53 54 29 09 09 09 09 5c 0a 20 ptr(LIST)....\.
78e0: 20 20 20 3f 20 2d 31 20 3a 09 09 09 09 09 09 09 ? -1 :.......
78f0: 09 5c 0a 20 20 20 20 28 28 4c 49 53 54 29 2e 74 .\. ((LIST).t
7900: 6d 70 2e 5f 64 6f 75 62 6c 65 20 3d 20 28 64 6f mp._double = (do
7910: 75 62 6c 65 29 28 56 41 4c 29 2c 09 09 09 09 5c uble)(VAL),....\
7920: 0a 20 20 20 20 20 28 4c 49 53 54 29 2e 61 70 74 . (LIST).apt
7930: 72 5b 2d 32 5d 20 3d 20 28 4c 49 53 54 29 2e 74 r[-2] = (LIST).t
7940: 6d 70 2e 77 6f 72 64 73 5b 30 5d 2c 09 09 09 09 mp.words[0],....
7950: 5c 0a 20 20 20 20 20 28 4c 49 53 54 29 2e 61 70 \. (LIST).ap
7960: 74 72 5b 2d 31 5d 20 3d 20 28 4c 49 53 54 29 2e tr[-1] = (LIST).
7970: 74 6d 70 2e 77 6f 72 64 73 5b 31 5d 2c 09 09 09 tmp.words[1],...
7980: 09 5c 0a 20 20 20 20 20 30 29 29 0a 0a 23 65 6e .\. 0))..#en
7990: 64 69 66 0a 0a 23 69 66 20 64 65 66 69 6e 65 64 dif..#if defined
79a0: 28 5f 5f 6d 69 70 73 5f 5f 29 20 26 26 20 21 64 (__mips__) && !d
79b0: 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 efined(__mipsn32
79c0: 5f 5f 29 0a 0a 2f 2a 20 55 70 20 74 6f 20 32 20 __)../* Up to 2
79d0: 6c 65 61 64 69 6e 67 20 66 6c 6f 61 74 20 6f 72 leading float or
79e0: 20 64 6f 75 62 6c 65 20 6e 6f 6e 2d 76 61 72 61 double non-vara
79f0: 72 67 73 20 61 72 67 73 20 63 61 6e 20 62 65 20 rgs args can be
7a00: 70 61 73 73 65 64 20 69 6e 0a 20 2a 20 66 6c 6f passed in. * flo
7a10: 61 74 20 72 65 67 69 73 74 65 72 73 2c 20 62 75 at registers, bu
7a20: 74 20 77 65 20 61 6c 73 6f 20 70 75 73 68 20 74 t we also push t
7a30: 68 65 6d 20 69 6e 74 6f 20 74 68 65 20 63 6f 72 hem into the cor
7a40: 72 65 73 70 6f 6e 64 69 6e 67 20 69 6e 74 0a 20 responding int.
7a50: 2a 20 72 65 67 69 73 74 65 72 73 20 69 6e 20 63 * registers in c
7a60: 61 73 65 20 6f 66 20 76 61 72 61 72 67 73 2e 20 ase of varargs.
7a70: 46 6f 72 20 64 6f 75 62 6c 65 73 20 77 65 20 6e For doubles we n
7a80: 65 65 64 20 74 6f 20 61 6c 69 67 6e 20 74 68 65 eed to align the
7a90: 20 61 70 74 72 0a 20 2a 20 74 6f 20 61 6e 20 65 aptr. * to an e
7aa0: 76 65 6e 20 62 6f 75 6e 64 61 72 79 2e 0a 20 2a ven boundary.. *
7ab0: 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 66 /.#define __av_f
7ac0: 6c 6f 61 74 28 4c 49 53 54 2c 56 41 4c 29 09 09 loat(LIST,VAL)..
7ad0: 09 09 09 09 5c 0a 20 20 28 2b 2b 28 4c 49 53 54 ....\. (++(LIST
7ae0: 29 2e 61 70 74 72 20 3e 20 5f 5f 61 76 5f 65 70 ).aptr > __av_ep
7af0: 74 72 28 4c 49 53 54 29 09 09 09 09 09 5c 0a 20 tr(LIST).....\.
7b00: 20 20 3f 20 2d 31 20 3a 20 28 28 2b 2b 28 4c 49 ? -1 : ((++(LI
7b10: 53 54 29 2e 61 6e 75 6d 20 3d 3d 20 31 09 09 09 ST).anum == 1...
7b20: 09 09 09 5c 0a 09 20 20 20 20 3f 20 28 28 4c 49 ...\.. ? ((LI
7b30: 53 54 29 2e 66 6c 61 67 73 20 7c 3d 20 5f 5f 41 ST).flags |= __A
7b40: 56 5f 46 4c 4f 41 54 5f 31 2c 09 09 09 09 5c 0a V_FLOAT_1,....\.
7b50: 09 20 20 20 20 20 20 20 28 28 66 6c 6f 61 74 2a . ((float*
7b60: 29 28 4c 49 53 54 29 2e 66 6c 6f 61 74 61 72 67 )(LIST).floatarg
7b70: 29 5b 31 5d 20 3d 20 28 28 66 6c 6f 61 74 2a 29 )[1] = ((float*)
7b80: 28 4c 49 53 54 29 2e 61 70 74 72 29 5b 2d 31 5d (LIST).aptr)[-1]
7b90: 20 3d 20 28 66 6c 6f 61 74 29 28 56 41 4c 29 29 = (float)(VAL))
7ba0: 5c 0a 09 20 20 20 20 3a 20 28 4c 49 53 54 29 2e \.. : (LIST).
7bb0: 61 6e 75 6d 20 3d 3d 20 32 20 26 26 20 28 28 4c anum == 2 && ((L
7bc0: 49 53 54 29 2e 66 6c 61 67 73 20 26 20 5f 5f 41 IST).flags & __A
7bd0: 56 5f 46 4c 4f 41 54 5f 31 29 09 09 5c 0a 09 20 V_FLOAT_1)..\..
7be0: 20 20 20 3f 20 28 28 4c 49 53 54 29 2e 66 6c 61 ? ((LIST).fla
7bf0: 67 73 20 7c 3d 20 5f 5f 41 56 5f 46 4c 4f 41 54 gs |= __AV_FLOAT
7c00: 5f 32 2c 09 09 09 09 5c 0a 09 20 20 20 20 20 20 _2,....\..
7c10: 20 28 28 66 6c 6f 61 74 2a 29 28 4c 49 53 54 29 ((float*)(LIST)
7c20: 2e 66 6c 6f 61 74 61 72 67 29 5b 33 5d 20 3d 20 .floatarg)[3] =
7c30: 28 28 66 6c 6f 61 74 2a 29 28 4c 49 53 54 29 2e ((float*)(LIST).
7c40: 61 70 74 72 29 5b 2d 31 5d 20 3d 20 28 66 6c 6f aptr)[-1] = (flo
7c50: 61 74 29 28 56 41 4c 29 29 5c 0a 09 20 20 20 20 at)(VAL))\..
7c60: 3a 20 28 2a 28 66 6c 6f 61 74 2a 29 26 28 4c 49 : (*(float*)&(LI
7c70: 53 54 29 2e 61 70 74 72 5b 2d 31 5d 20 3d 20 28 ST).aptr[-1] = (
7c80: 66 6c 6f 61 74 29 28 56 41 4c 29 29 29 2c 09 09 float)(VAL))),..
7c90: 5c 0a 09 20 20 20 30 29 29 0a 0a 23 64 65 66 69 \.. 0))..#defi
7ca0: 6e 65 20 61 76 5f 64 6f 75 62 6c 65 28 4c 49 53 ne av_double(LIS
7cb0: 54 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a 20 20 T,VAL)......\.
7cc0: 28 28 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 (((LIST).aptr =
7cd0: 28 5f 5f 61 76 77 6f 72 64 2a 29 28 28 28 5f 5f (__avword*)(((__
7ce0: 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e 61 70 avword)(LIST).ap
7cf0: 74 72 2b 31 35 29 26 2d 38 29 29 09 09 5c 0a 20 tr+15)&-8))..\.
7d00: 20 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 > __av_eptr(LI
7d10: 53 54 29 09 09 09 09 09 09 09 5c 0a 20 20 20 3f ST).......\. ?
7d20: 20 2d 31 20 3a 20 28 28 2b 2b 28 4c 49 53 54 29 -1 : ((++(LIST)
7d30: 2e 61 6e 75 6d 20 3d 3d 20 31 09 09 09 09 09 09 .anum == 1......
7d40: 5c 0a 09 20 20 20 20 3f 20 28 28 4c 49 53 54 29 \.. ? ((LIST)
7d50: 2e 66 6c 61 67 73 20 7c 3d 20 5f 5f 41 56 5f 46 .flags |= __AV_F
7d60: 4c 4f 41 54 5f 31 2c 09 09 09 09 5c 0a 09 20 20 LOAT_1,....\..
7d70: 20 20 20 20 20 28 4c 49 53 54 29 2e 66 6c 6f 61 (LIST).floa
7d80: 74 61 72 67 5b 30 5d 20 3d 20 28 28 64 6f 75 62 targ[0] = ((doub
7d90: 6c 65 2a 29 28 4c 49 53 54 29 2e 61 70 74 72 29 le*)(LIST).aptr)
7da0: 5b 2d 31 5d 20 3d 20 28 64 6f 75 62 6c 65 29 28 [-1] = (double)(
7db0: 56 41 4c 29 29 5c 0a 09 20 20 20 20 3a 20 28 4c VAL))\.. : (L
7dc0: 49 53 54 29 2e 61 6e 75 6d 20 3d 3d 20 32 20 26 IST).anum == 2 &
7dd0: 26 20 28 28 4c 49 53 54 29 2e 66 6c 61 67 73 20 & ((LIST).flags
7de0: 26 20 5f 5f 41 56 5f 46 4c 4f 41 54 5f 31 29 09 & __AV_FLOAT_1).
7df0: 09 5c 0a 09 20 20 20 20 3f 20 28 28 4c 49 53 54 .\.. ? ((LIST
7e00: 29 2e 66 6c 61 67 73 20 7c 3d 20 5f 5f 41 56 5f ).flags |= __AV_
7e10: 46 4c 4f 41 54 5f 32 2c 09 09 09 09 5c 0a 09 20 FLOAT_2,....\..
7e20: 20 20 20 20 20 20 28 4c 49 53 54 29 2e 66 6c 6f (LIST).flo
7e30: 61 74 61 72 67 5b 31 5d 20 3d 20 28 28 64 6f 75 atarg[1] = ((dou
7e40: 62 6c 65 2a 29 28 4c 49 53 54 29 2e 61 70 74 72 ble*)(LIST).aptr
7e50: 29 5b 2d 31 5d 20 3d 20 28 64 6f 75 62 6c 65 29 )[-1] = (double)
7e60: 28 56 41 4c 29 29 5c 0a 09 20 20 20 20 3a 20 28 (VAL))\.. : (
7e70: 28 28 64 6f 75 62 6c 65 2a 29 28 4c 49 53 54 29 ((double*)(LIST)
7e80: 2e 61 70 74 72 29 5b 2d 31 5d 20 3d 20 28 64 6f .aptr)[-1] = (do
7e90: 75 62 6c 65 29 28 56 41 4c 29 29 29 2c 09 09 5c uble)(VAL))),..\
7ea0: 0a 09 20 20 20 30 29 29 0a 0a 23 65 6e 64 69 66 .. 0))..#endif
7eb0: 0a 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f ..#if defined(__
7ec0: 6d 69 70 73 6e 33 32 5f 5f 29 20 7c 7c 20 64 65 mipsn32__) || de
7ed0: 66 69 6e 65 64 28 5f 5f 6d 69 70 73 36 34 5f 5f fined(__mips64__
7ee0: 29 0a 0a 2f 2a 20 55 70 20 74 6f 20 38 20 6c 65 )../* Up to 8 le
7ef0: 61 64 69 6e 67 20 66 6c 6f 61 74 20 6f 72 20 64 ading float or d
7f00: 6f 75 62 6c 65 20 6e 6f 6e 2d 76 61 72 61 72 67 ouble non-vararg
7f10: 73 20 61 72 67 73 20 63 61 6e 20 62 65 20 70 61 s args can be pa
7f20: 73 73 65 64 20 69 6e 0a 20 2a 20 66 6c 6f 61 74 ssed in. * float
7f30: 20 72 65 67 69 73 74 65 72 73 2c 20 62 75 74 20 registers, but
7f40: 77 65 20 61 6c 73 6f 20 70 75 73 68 20 74 68 65 we also push the
7f50: 6d 20 69 6e 74 6f 20 74 68 65 20 63 6f 72 72 65 m into the corre
7f60: 73 70 6f 6e 64 69 6e 67 20 69 6e 74 0a 20 2a 20 sponding int. *
7f70: 72 65 67 69 73 74 65 72 73 20 69 6e 20 63 61 73 registers in cas
7f80: 65 20 6f 66 20 76 61 72 61 72 67 73 2e 0a 20 2a e of varargs.. *
7f90: 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 66 /.#define __av_f
7fa0: 6c 6f 61 74 28 4c 49 53 54 2c 56 41 4c 29 09 09 loat(LIST,VAL)..
7fb0: 09 09 09 09 5c 0a 20 20 28 28 4c 49 53 54 29 2e ....\. ((LIST).
7fc0: 61 70 74 72 20 3e 3d 20 5f 5f 61 76 5f 65 70 74 aptr >= __av_ept
7fd0: 72 28 4c 49 53 54 29 09 09 09 09 09 5c 0a 20 20 r(LIST).....\.
7fe0: 20 3f 20 2d 31 20 3a 20 28 28 28 4c 49 53 54 29 ? -1 : (((LIST)
7ff0: 2e 61 6e 75 6d 20 3c 20 38 09 09 09 09 09 09 5c .anum < 8......\
8000: 0a 09 20 20 20 20 3f 20 28 28 4c 49 53 54 29 2e .. ? ((LIST).
8010: 66 61 72 67 5f 6d 61 73 6b 20 7c 3d 20 28 31 20 farg_mask |= (1
8020: 3c 3c 20 28 4c 49 53 54 29 2e 61 6e 75 6d 29 2c << (LIST).anum),
8030: 09 09 09 5c 0a 09 20 20 20 20 20 20 20 28 4c 49 ...\.. (LI
8040: 53 54 29 2e 66 61 72 67 5b 28 4c 49 53 54 29 2e ST).farg[(LIST).
8050: 61 6e 75 6d 5d 20 3d 20 2a 28 66 6c 6f 61 74 2a anum] = *(float*
8060: 29 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 28 )(LIST).aptr = (
8070: 66 6c 6f 61 74 29 28 56 41 4c 29 29 20 5c 0a 09 float)(VAL)) \..
8080: 20 20 20 20 3a 20 28 2a 28 66 6c 6f 61 74 2a 29 : (*(float*)
8090: 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 28 66 (LIST).aptr = (f
80a0: 6c 6f 61 74 29 28 56 41 4c 29 29 29 2c 09 09 09 loat)(VAL))),...
80b0: 5c 0a 09 20 20 20 28 4c 49 53 54 29 2e 61 6e 75 \.. (LIST).anu
80c0: 6d 2b 2b 2c 09 09 09 09 09 09 5c 0a 09 20 20 20 m++,......\..
80d0: 28 4c 49 53 54 29 2e 61 70 74 72 2b 2b 2c 09 09 (LIST).aptr++,..
80e0: 09 09 09 09 5c 0a 09 20 20 20 30 29 29 0a 0a 23 ....\.. 0))..#
80f0: 64 65 66 69 6e 65 20 61 76 5f 64 6f 75 62 6c 65 define av_double
8100: 28 4c 49 53 54 2c 56 41 4c 29 09 09 09 09 09 09 (LIST,VAL)......
8110: 5c 0a 20 20 28 28 4c 49 53 54 29 2e 61 70 74 72 \. ((LIST).aptr
8120: 20 3e 3d 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 >= __av_eptr(LI
8130: 53 54 29 09 09 09 09 09 5c 0a 20 20 20 3f 20 2d ST).....\. ? -
8140: 31 20 3a 20 28 28 28 4c 49 53 54 29 2e 61 6e 75 1 : (((LIST).anu
8150: 6d 20 3c 20 38 20 26 26 20 28 28 4c 49 53 54 29 m < 8 && ((LIST)
8160: 2e 64 61 72 67 5f 6d 61 73 6b 20 7c 3d 20 28 31 .darg_mask |= (1
8170: 20 3c 3c 20 28 4c 49 53 54 29 2e 61 6e 75 6d 29 << (LIST).anum)
8180: 29 29 2c 20 5c 0a 09 20 20 20 2a 28 64 6f 75 62 )), \.. *(doub
8190: 6c 65 2a 29 28 4c 49 53 54 29 2e 61 70 74 72 20 le*)(LIST).aptr
81a0: 3d 20 28 64 6f 75 62 6c 65 29 28 56 41 4c 29 2c = (double)(VAL),
81b0: 09 09 09 5c 0a 09 20 20 20 28 4c 49 53 54 29 2e ...\.. (LIST).
81c0: 61 6e 75 6d 2b 2b 2c 09 09 09 09 09 09 5c 0a 09 anum++,......\..
81d0: 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72 2b 2b (LIST).aptr++
81e0: 2c 09 09 09 09 09 09 5c 0a 09 20 20 20 30 29 29 ,......\.. 0))
81f0: 0a 0a 23 65 6e 64 69 66 0a 0a 23 69 66 20 64 65 ..#endif..#if de
8200: 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f fined(__sparc64_
8210: 5f 29 0a 0a 2f 2a 20 55 70 20 74 6f 20 31 36 20 _)../* Up to 16
8220: 6c 65 61 64 69 6e 67 20 66 6c 6f 61 74 20 6f 72 leading float or
8230: 20 64 6f 75 62 6c 65 20 6e 6f 6e 2d 76 61 72 61 double non-vara
8240: 72 67 73 20 61 72 67 73 20 63 61 6e 20 62 65 20 rgs args can be
8250: 70 61 73 73 65 64 20 69 6e 0a 20 2a 20 66 6c 6f passed in. * flo
8260: 61 74 20 72 65 67 69 73 74 65 72 73 2c 20 62 75 at registers, bu
8270: 74 20 77 65 20 61 6c 73 6f 20 70 75 73 68 20 74 t we also push t
8280: 68 65 6d 20 69 6e 74 6f 20 74 68 65 20 63 6f 72 hem into the cor
8290: 72 65 73 70 6f 6e 64 69 6e 67 20 69 6e 74 0a 20 responding int.
82a0: 2a 20 72 65 67 69 73 74 65 72 73 20 69 6e 20 63 * registers in c
82b0: 61 73 65 20 6f 66 20 76 61 72 61 72 67 73 2e 0a ase of varargs..
82c0: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 */.#define __av
82d0: 5f 66 6c 6f 61 74 28 4c 49 53 54 2c 56 41 4c 29 _float(LIST,VAL)
82e0: 09 09 09 09 09 09 5c 0a 20 20 28 28 4c 49 53 54 ......\. ((LIST
82f0: 29 2e 61 70 74 72 20 3e 3d 20 5f 5f 61 76 5f 65 ).aptr >= __av_e
8300: 70 74 72 28 4c 49 53 54 29 09 09 09 09 09 5c 0a ptr(LIST).....\.
8310: 20 20 20 3f 20 2d 31 20 3a 20 28 28 28 4c 49 53 ? -1 : (((LIS
8320: 54 29 2e 61 6e 75 6d 20 3c 20 31 36 20 26 26 20 T).anum < 16 &&
8330: 28 28 4c 49 53 54 29 2e 66 61 72 67 5f 6d 61 73 ((LIST).farg_mas
8340: 6b 20 7c 3d 20 28 31 20 3c 3c 20 28 4c 49 53 54 k |= (1 << (LIST
8350: 29 2e 61 6e 75 6d 29 29 29 2c 20 5c 0a 09 20 20 ).anum))), \..
8360: 20 28 2a 28 66 6c 6f 61 74 2a 29 28 4c 49 53 54 (*(float*)(LIST
8370: 29 2e 61 70 74 72 20 3d 20 28 66 6c 6f 61 74 29 ).aptr = (float)
8380: 28 56 41 4c 29 29 2c 09 09 09 5c 0a 09 20 20 20 (VAL)),...\..
8390: 28 4c 49 53 54 29 2e 61 6e 75 6d 2b 2b 2c 09 09 (LIST).anum++,..
83a0: 09 09 09 09 5c 0a 09 20 20 20 28 4c 49 53 54 29 ....\.. (LIST)
83b0: 2e 61 70 74 72 2b 2b 2c 09 09 09 09 09 09 5c 0a .aptr++,......\.
83c0: 09 20 20 20 30 29 29 0a 0a 23 64 65 66 69 6e 65 . 0))..#define
83d0: 20 61 76 5f 64 6f 75 62 6c 65 28 4c 49 53 54 2c av_double(LIST,
83e0: 56 41 4c 29 09 09 09 09 09 09 5c 0a 20 20 28 28 VAL)......\. ((
83f0: 4c 49 53 54 29 2e 61 70 74 72 20 3e 3d 20 5f 5f LIST).aptr >= __
8400: 61 76 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09 av_eptr(LIST)...
8410: 09 09 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 28 28 ..\. ? -1 : ((
8420: 28 4c 49 53 54 29 2e 61 6e 75 6d 20 3c 20 31 36 (LIST).anum < 16
8430: 20 26 26 20 28 28 4c 49 53 54 29 2e 64 61 72 67 && ((LIST).darg
8440: 5f 6d 61 73 6b 20 7c 3d 20 28 31 20 3c 3c 20 28 _mask |= (1 << (
8450: 4c 49 53 54 29 2e 61 6e 75 6d 29 29 29 2c 20 5c LIST).anum))), \
8460: 0a 09 20 20 20 2a 28 64 6f 75 62 6c 65 2a 29 28 .. *(double*)(
8470: 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 28 64 6f LIST).aptr = (do
8480: 75 62 6c 65 29 28 56 41 4c 29 2c 09 09 09 5c 0a uble)(VAL),...\.
8490: 09 20 20 20 28 4c 49 53 54 29 2e 61 6e 75 6d 2b . (LIST).anum+
84a0: 2b 2c 09 09 09 09 09 09 5c 0a 09 20 20 20 28 4c +,......\.. (L
84b0: 49 53 54 29 2e 61 70 74 72 2b 2b 2c 09 09 09 09 IST).aptr++,....
84c0: 09 09 5c 0a 09 20 20 20 30 29 29 0a 0a 23 65 6e ..\.. 0))..#en
84d0: 64 69 66 0a 0a 23 69 66 20 64 65 66 69 6e 65 64 dif..#if defined
84e0: 28 5f 5f 61 6c 70 68 61 5f 5f 29 0a 0a 23 64 65 (__alpha__)..#de
84f0: 66 69 6e 65 20 61 76 5f 64 6f 75 62 6c 65 28 4c fine av_double(L
8500: 49 53 54 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a IST,VAL)......\.
8510: 20 20 28 2b 2b 28 4c 49 53 54 29 2e 61 70 74 72 (++(LIST).aptr
8520: 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 > __av_eptr(LIS
8530: 54 29 09 09 09 09 09 5c 0a 20 20 20 3f 20 2d 31 T).....\. ? -1
8540: 20 3a 20 28 28 28 64 6f 75 62 6c 65 2a 29 28 4c : (((double*)(L
8550: 49 53 54 29 2e 61 70 74 72 29 5b 2d 31 5d 20 3d IST).aptr)[-1] =
8560: 20 28 64 6f 75 62 6c 65 29 28 56 41 4c 29 2c 20 (double)(VAL),
8570: 30 29 29 0a 0a 23 64 65 66 69 6e 65 20 5f 5f 61 0))..#define __a
8580: 76 5f 66 6c 6f 61 74 28 4c 49 53 54 2c 56 41 4c v_float(LIST,VAL
8590: 29 09 09 09 09 09 09 5c 0a 20 20 28 2b 2b 28 4c )......\. (++(L
85a0: 49 53 54 29 2e 61 70 74 72 20 3e 20 5f 5f 61 76 IST).aptr > __av
85b0: 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09 09 09 _eptr(LIST).....
85c0: 5c 0a 20 20 20 3f 20 2d 31 09 09 09 09 09 09 09 \. ? -1.......
85d0: 09 09 5c 0a 20 20 20 3a 20 28 28 28 4c 49 53 54 ..\. : (((LIST
85e0: 29 2e 61 70 74 72 20 3e 20 26 28 4c 49 53 54 29 ).aptr > &(LIST)
85f0: 2e 61 72 67 73 5b 36 5d 09 09 09 09 09 5c 0a 20 .args[6].....\.
8600: 20 20 20 20 20 20 3f 20 2f 2a 20 54 68 65 73 65 ? /* These
8610: 20 61 72 67 73 20 77 69 6c 6c 20 62 65 20 66 65 args will be fe
8620: 74 63 68 65 64 20 66 72 6f 6d 20 6d 65 6d 6f 72 tched from memor
8630: 79 20 75 73 69 6e 67 20 22 6c 64 73 22 20 69 6e y using "lds" in
8640: 73 74 72 75 63 74 69 6f 6e 73 20 2a 2f 20 5c 0a structions */ \.
8650: 09 20 2f 2a 20 74 68 65 72 65 66 6f 72 65 20 73 . /* therefore s
8660: 74 6f 72 65 20 74 68 65 6d 20 61 73 20 66 6c 6f tore them as flo
8670: 61 74 73 20 2a 2f 09 09 09 09 5c 0a 09 20 28 2a ats */....\.. (*
8680: 28 66 6c 6f 61 74 2a 29 28 28 4c 49 53 54 29 2e (float*)((LIST).
8690: 61 70 74 72 2d 31 29 20 3d 20 28 66 6c 6f 61 74 aptr-1) = (float
86a0: 29 28 56 41 4c 29 29 09 09 09 5c 0a 20 20 20 20 )(VAL))...\.
86b0: 20 20 20 3a 20 2f 2a 20 54 68 65 20 66 69 72 73 : /* The firs
86c0: 74 20 36 20 61 72 67 73 20 77 69 6c 6c 20 62 65 t 6 args will be
86d0: 20 70 75 74 20 69 6e 74 6f 20 72 65 67 69 73 74 put into regist
86e0: 65 72 73 20 62 79 20 22 6c 64 74 22 20 69 6e 73 ers by "ldt" ins
86f0: 74 72 75 63 74 69 6f 6e 73 20 2a 2f 20 5c 0a 09 tructions */ \..
8700: 20 2f 2a 20 28 73 65 65 20 61 76 63 61 6c 6c 2d /* (see avcall-
8710: 61 6c 70 68 61 2e 63 21 29 2e 20 54 68 65 72 65 alpha.c!). There
8720: 66 6f 72 65 20 73 74 6f 72 65 20 74 68 65 6d 20 fore store them
8730: 61 73 20 64 6f 75 62 6c 65 73 2e 20 2a 2f 09 5c as doubles. */.\
8740: 0a 09 20 2f 2a 20 57 68 65 6e 20 76 69 65 77 65 .. /* When viewe
8750: 64 20 61 73 20 66 6c 6f 61 74 73 2c 20 74 68 65 d as floats, the
8760: 20 76 61 6c 75 65 20 77 69 6c 6c 20 62 65 20 74 value will be t
8770: 68 65 20 63 6f 72 72 65 63 74 20 6f 6e 65 2e 20 he correct one.
8780: 2a 2f 5c 0a 09 20 28 2a 28 64 6f 75 62 6c 65 2a */\.. (*(double*
8790: 29 28 28 4c 49 53 54 29 2e 61 70 74 72 2d 31 29 )((LIST).aptr-1)
87a0: 20 3d 20 28 64 6f 75 62 6c 65 29 28 66 6c 6f 61 = (double)(floa
87b0: 74 29 28 56 41 4c 29 29 09 09 5c 0a 20 20 20 20 t)(VAL))..\.
87c0: 20 29 2c 20 30 29 29 0a 0a 23 65 6e 64 69 66 0a ), 0))..#endif.
87d0: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 68 .#if defined(__h
87e0: 70 70 61 5f 5f 29 0a 0a 23 64 65 66 69 6e 65 20 ppa__)..#define
87f0: 5f 5f 61 76 5f 66 6c 6f 61 74 28 4c 49 53 54 2c __av_float(LIST,
8800: 56 41 4c 29 09 09 09 09 09 09 5c 0a 20 20 28 2d VAL)......\. (-
8810: 2d 28 4c 49 53 54 29 2e 61 70 74 72 20 3c 20 5f -(LIST).aptr < _
8820: 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29 09 09 _av_eptr(LIST)..
8830: 09 09 09 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 28 ...\. ? -1 : (
8840: 2a 28 66 6c 6f 61 74 2a 29 28 4c 49 53 54 29 2e *(float*)(LIST).
8850: 61 70 74 72 20 3d 20 28 66 6c 6f 61 74 29 28 56 aptr = (float)(V
8860: 41 4c 29 2c 20 30 29 29 0a 0a 23 64 65 66 69 6e AL), 0))..#defin
8870: 65 20 61 76 5f 64 6f 75 62 6c 65 28 4c 49 53 54 e av_double(LIST
8880: 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a 20 20 28 ,VAL)......\. (
8890: 28 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 28 ((LIST).aptr = (
88a0: 5f 5f 61 76 77 6f 72 64 2a 29 28 28 28 6c 6f 6e __avword*)(((lon
88b0: 67 29 28 4c 49 53 54 29 2e 61 70 74 72 2d 73 69 g)(LIST).aptr-si
88c0: 7a 65 6f 66 28 64 6f 75 62 6c 65 29 29 20 26 20 zeof(double)) &
88d0: 2d 28 6c 6f 6e 67 29 73 69 7a 65 6f 66 28 64 6f -(long)sizeof(do
88e0: 75 62 6c 65 29 29 29 20 5c 0a 20 20 20 20 3c 20 uble))) \. <
88f0: 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29 09 __av_eptr(LIST).
8900: 09 09 09 09 09 09 5c 0a 20 20 20 20 3f 20 2d 31 ......\. ? -1
8910: 20 3a 20 28 2a 28 64 6f 75 62 6c 65 2a 29 28 4c : (*(double*)(L
8920: 49 53 54 29 2e 61 70 74 72 20 3d 20 28 64 6f 75 IST).aptr = (dou
8930: 62 6c 65 29 28 56 41 4c 29 2c 20 30 29 29 0a 0a ble)(VAL), 0))..
8940: 23 65 6e 64 69 66 0a 0a 23 69 66 20 64 65 66 69 #endif..#if defi
8950: 6e 65 64 28 5f 5f 72 73 36 30 30 30 5f 5f 29 20 ned(__rs6000__)
8960: 26 26 20 28 64 65 66 69 6e 65 64 28 5f 41 49 58 && (defined(_AIX
8970: 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f ) || (defined(__
8980: 4d 41 43 48 5f 5f 29 20 26 26 20 64 65 66 69 6e MACH__) && defin
8990: 65 64 28 5f 5f 41 50 50 4c 45 5f 5f 29 29 29 0a ed(__APPLE__))).
89a0: 0a 2f 2a 20 55 70 20 74 6f 20 31 33 20 66 6c 6f ./* Up to 13 flo
89b0: 61 74 20 6f 72 20 64 6f 75 62 6c 65 20 6e 6f 6e at or double non
89c0: 2d 76 61 72 61 72 67 73 20 61 72 67 73 20 63 61 -varargs args ca
89d0: 6e 20 62 65 20 70 61 73 73 65 64 20 69 6e 0a 20 n be passed in.
89e0: 2a 20 66 6c 6f 61 74 20 72 65 67 69 73 74 65 72 * float register
89f0: 73 2c 20 62 75 74 20 77 65 20 61 6c 73 6f 20 70 s, but we also p
8a00: 75 73 68 20 74 68 65 6d 20 69 6e 74 6f 20 74 68 ush them into th
8a10: 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 e corresponding
8a20: 69 6e 74 0a 20 2a 20 72 65 67 69 73 74 65 72 73 int. * registers
8a30: 20 69 6e 20 63 61 73 65 20 6f 66 20 76 61 72 61 in case of vara
8a40: 72 67 73 2e 0a 20 2a 2f 0a 0a 23 64 65 66 69 6e rgs.. */..#defin
8a50: 65 20 5f 5f 61 76 5f 66 6c 6f 61 74 28 4c 49 53 e __av_float(LIS
8a60: 54 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a 20 20 T,VAL)......\.
8a70: 28 2b 2b 28 4c 49 53 54 29 2e 61 70 74 72 20 3e (++(LIST).aptr >
8a80: 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29 __av_eptr(LIST)
8a90: 09 09 09 09 09 5c 0a 20 20 20 3f 20 2d 31 20 3a .....\. ? -1 :
8aa0: 20 28 28 28 66 6c 6f 61 74 2a 29 28 4c 49 53 54 (((float*)(LIST
8ab0: 29 2e 61 70 74 72 29 5b 2d 31 5d 20 3d 20 28 66 ).aptr)[-1] = (f
8ac0: 6c 6f 61 74 29 28 56 41 4c 29 2c 09 09 09 5c 0a loat)(VAL),...\.
8ad0: 09 20 20 20 28 4c 49 53 54 29 2e 66 61 70 74 72 . (LIST).faptr
8ae0: 20 3c 20 26 28 4c 49 53 54 29 2e 66 61 72 67 73 < &(LIST).fargs
8af0: 5b 31 33 5d 20 26 26 09 09 09 09 5c 0a 09 09 28 [13] &&....\...(
8b00: 2a 28 4c 49 53 54 29 2e 66 61 70 74 72 2b 2b 20 *(LIST).faptr++
8b10: 3d 20 28 64 6f 75 62 6c 65 29 28 66 6c 6f 61 74 = (double)(float
8b20: 29 28 56 41 4c 29 29 2c 09 09 5c 0a 09 20 20 20 )(VAL)),..\..
8b30: 30 29 29 0a 0a 23 64 65 66 69 6e 65 20 61 76 5f 0))..#define av_
8b40: 64 6f 75 62 6c 65 28 4c 49 53 54 2c 56 41 4c 29 double(LIST,VAL)
8b50: 09 09 09 09 09 09 5c 0a 20 20 20 28 28 28 4c 49 ......\. (((LI
8b60: 53 54 29 2e 61 70 74 72 20 2b 3d 20 32 29 20 3e ST).aptr += 2) >
8b70: 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29 __av_eptr(LIST)
8b80: 09 09 09 09 5c 0a 20 20 20 20 3f 20 2d 31 20 3a ....\. ? -1 :
8b90: 09 09 09 09 09 09 09 09 5c 0a 20 20 20 20 28 28 ........\. ((
8ba0: 4c 49 53 54 29 2e 74 6d 70 2e 5f 64 6f 75 62 6c LIST).tmp._doubl
8bb0: 65 20 3d 20 28 64 6f 75 62 6c 65 29 28 56 41 4c e = (double)(VAL
8bc0: 29 2c 09 09 09 09 5c 0a 20 20 20 20 20 28 4c 49 ),....\. (LI
8bd0: 53 54 29 2e 61 70 74 72 5b 2d 32 5d 20 3d 20 28 ST).aptr[-2] = (
8be0: 4c 49 53 54 29 2e 74 6d 70 2e 77 6f 72 64 73 5b LIST).tmp.words[
8bf0: 30 5d 2c 09 09 09 09 5c 0a 20 20 20 20 20 28 4c 0],....\. (L
8c00: 49 53 54 29 2e 61 70 74 72 5b 2d 31 5d 20 3d 20 IST).aptr[-1] =
8c10: 28 4c 49 53 54 29 2e 74 6d 70 2e 77 6f 72 64 73 (LIST).tmp.words
8c20: 5b 31 5d 2c 09 09 09 09 5c 0a 20 20 20 20 20 28 [1],....\. (
8c30: 4c 49 53 54 29 2e 66 61 70 74 72 20 3c 20 26 28 LIST).faptr < &(
8c40: 4c 49 53 54 29 2e 66 61 72 67 73 5b 31 33 5d 20 LIST).fargs[13]
8c50: 26 26 09 09 09 09 5c 0a 09 28 2a 28 4c 49 53 54 &&....\..(*(LIST
8c60: 29 2e 66 61 70 74 72 2b 2b 20 3d 20 28 4c 49 53 ).faptr++ = (LIS
8c70: 54 29 2e 74 6d 70 2e 5f 64 6f 75 62 6c 65 29 2c T).tmp._double),
8c80: 09 09 09 09 5c 0a 20 20 20 20 20 30 29 29 0a 0a ....\. 0))..
8c90: 23 65 6e 64 69 66 0a 0a 23 69 66 20 64 65 66 69 #endif..#if defi
8ca0: 6e 65 64 28 5f 5f 72 73 36 30 30 30 5f 5f 29 20 ned(__rs6000__)
8cb0: 26 26 20 21 28 64 65 66 69 6e 65 64 28 5f 41 49 && !(defined(_AI
8cc0: 58 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f X) || (defined(_
8cd0: 5f 4d 41 43 48 5f 5f 29 20 26 26 20 64 65 66 69 _MACH__) && defi
8ce0: 6e 65 64 28 5f 5f 41 50 50 4c 45 5f 5f 29 29 29 ned(__APPLE__)))
8cf0: 0a 0a 2f 2a 20 55 70 20 74 6f 20 38 20 66 6c 6f ../* Up to 8 flo
8d00: 61 74 20 6f 72 20 64 6f 75 62 6c 65 20 6e 6f 6e at or double non
8d10: 2d 76 61 72 61 72 67 73 20 61 72 67 73 20 63 61 -varargs args ca
8d20: 6e 20 62 65 20 70 61 73 73 65 64 20 69 6e 0a 20 n be passed in.
8d30: 2a 20 66 6c 6f 61 74 20 72 65 67 69 73 74 65 72 * float register
8d40: 73 2c 20 77 69 74 68 6f 75 74 20 6f 63 63 75 70 s, without occup
8d50: 79 69 6e 67 20 73 70 61 63 65 20 69 6e 20 74 68 ying space in th
8d60: 65 20 67 65 6e 65 72 61 6c 20 72 65 67 69 73 74 e general regist
8d70: 65 72 73 2e 0a 20 2a 2f 0a 0a 23 64 65 66 69 6e ers.. */..#defin
8d80: 65 20 5f 5f 61 76 5f 66 6c 6f 61 74 28 4c 49 53 e __av_float(LIS
8d90: 54 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a 20 20 T,VAL)......\.
8da0: 28 28 4c 49 53 54 29 2e 66 61 70 74 72 20 3c 20 ((LIST).faptr <
8db0: 26 28 4c 49 53 54 29 2e 66 61 72 67 73 5b 38 5d &(LIST).fargs[8]
8dc0: 09 09 09 09 09 5c 0a 20 20 20 3f 20 28 28 2a 28 .....\. ? ((*(
8dd0: 4c 49 53 54 29 2e 66 61 70 74 72 2b 2b 20 3d 20 LIST).faptr++ =
8de0: 28 64 6f 75 62 6c 65 29 28 66 6c 6f 61 74 29 28 (double)(float)(
8df0: 56 41 4c 29 29 2c 20 30 29 09 09 09 5c 0a 20 20 VAL)), 0)...\.
8e00: 20 3a 20 28 2b 2b 28 4c 49 53 54 29 2e 61 70 74 : (++(LIST).apt
8e10: 72 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 r > __av_eptr(LI
8e20: 53 54 29 09 09 09 09 09 5c 0a 20 20 20 20 20 20 ST).....\.
8e30: 3f 20 2d 31 20 3a 20 28 28 28 66 6c 6f 61 74 2a ? -1 : (((float*
8e40: 29 28 4c 49 53 54 29 2e 61 70 74 72 29 5b 2d 31 )(LIST).aptr)[-1
8e50: 5d 20 3d 20 28 66 6c 6f 61 74 29 28 56 41 4c 29 ] = (float)(VAL)
8e60: 2c 20 30 29 29 29 0a 0a 23 64 65 66 69 6e 65 20 , 0)))..#define
8e70: 61 76 5f 64 6f 75 62 6c 65 28 4c 49 53 54 2c 56 av_double(LIST,V
8e80: 41 4c 29 09 09 09 09 09 09 5c 0a 20 20 28 28 4c AL)......\. ((L
8e90: 49 53 54 29 2e 66 61 70 74 72 20 3c 20 26 28 4c IST).faptr < &(L
8ea0: 49 53 54 29 2e 66 61 72 67 73 5b 38 5d 09 09 09 IST).fargs[8]...
8eb0: 09 09 5c 0a 20 20 20 3f 20 28 28 2a 28 4c 49 53 ..\. ? ((*(LIS
8ec0: 54 29 2e 66 61 70 74 72 2b 2b 20 3d 20 28 64 6f T).faptr++ = (do
8ed0: 75 62 6c 65 29 28 56 41 4c 29 29 2c 20 30 29 09 uble)(VAL)), 0).
8ee0: 09 09 09 5c 0a 20 20 20 3a 20 28 28 28 4c 49 53 ...\. : (((LIS
8ef0: 54 29 2e 61 70 74 72 20 2b 3d 20 32 29 20 3e 20 T).aptr += 2) >
8f00: 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29 09 __av_eptr(LIST).
8f10: 09 09 09 5c 0a 20 20 20 20 20 20 3f 20 2d 31 20 ...\. ? -1
8f20: 3a 09 09 09 09 09 09 09 09 5c 0a 20 20 20 20 20 :........\.
8f30: 20 28 28 4c 49 53 54 29 2e 74 6d 70 2e 5f 64 6f ((LIST).tmp._do
8f40: 75 62 6c 65 20 3d 20 28 64 6f 75 62 6c 65 29 28 uble = (double)(
8f50: 56 41 4c 29 2c 09 09 09 09 5c 0a 20 20 20 20 20 VAL),....\.
8f60: 20 20 28 4c 49 53 54 29 2e 61 70 74 72 5b 2d 32 (LIST).aptr[-2
8f70: 5d 20 3d 20 28 4c 49 53 54 29 2e 74 6d 70 2e 77 ] = (LIST).tmp.w
8f80: 6f 72 64 73 5b 30 5d 2c 09 09 09 09 5c 0a 20 20 ords[0],....\.
8f90: 20 20 20 20 20 28 4c 49 53 54 29 2e 61 70 74 72 (LIST).aptr
8fa0: 5b 2d 31 5d 20 3d 20 28 4c 49 53 54 29 2e 74 6d [-1] = (LIST).tm
8fb0: 70 2e 77 6f 72 64 73 5b 31 5d 2c 09 09 09 09 5c p.words[1],....\
8fc0: 0a 20 20 20 20 20 20 20 30 29 29 29 0a 0a 23 65 . 0)))..#e
8fd0: 6e 64 69 66 0a 0a 23 69 66 20 64 65 66 69 6e 65 ndif..#if define
8fe0: 64 28 5f 5f 73 33 39 30 5f 5f 29 0a 0a 2f 2a 20 d(__s390__)../*
8ff0: 55 70 20 74 6f 20 32 20 66 6c 6f 61 74 20 6f 72 Up to 2 float or
9000: 20 64 6f 75 62 6c 65 20 6e 6f 6e 2d 76 61 72 61 double non-vara
9010: 72 67 73 20 61 72 67 73 20 63 61 6e 20 62 65 20 rgs args can be
9020: 70 61 73 73 65 64 20 69 6e 0a 20 2a 20 66 6c 6f passed in. * flo
9030: 61 74 20 72 65 67 69 73 74 65 72 73 2c 20 77 69 at registers, wi
9040: 74 68 6f 75 74 20 6f 63 63 75 70 79 69 6e 67 20 thout occupying
9050: 73 70 61 63 65 20 69 6e 20 74 68 65 20 67 65 6e space in the gen
9060: 65 72 61 6c 20 72 65 67 69 73 74 65 72 73 2e 0a eral registers..
9070: 20 2a 2f 0a 0a 23 64 65 66 69 6e 65 20 5f 5f 61 */..#define __a
9080: 76 5f 66 6c 6f 61 74 28 4c 49 53 54 2c 56 41 4c v_float(LIST,VAL
9090: 29 09 09 09 09 09 09 5c 0a 20 20 28 28 4c 49 53 )......\. ((LIS
90a0: 54 29 2e 66 61 70 74 72 20 3c 20 26 28 4c 49 53 T).faptr < &(LIS
90b0: 54 29 2e 66 61 72 67 73 5b 32 5d 09 09 09 09 09 T).fargs[2].....
90c0: 5c 0a 20 20 20 3f 20 28 4c 49 53 54 29 2e 64 61 \. ? (LIST).da
90d0: 70 74 72 2b 2b 2c 20 2a 28 4c 49 53 54 29 2e 66 ptr++, *(LIST).f
90e0: 61 72 67 73 75 73 65 64 70 74 72 2b 2b 20 3d 20 argsusedptr++ =
90f0: 31 2c 20 2a 28 4c 49 53 54 29 2e 64 61 72 67 73 1, *(LIST).dargs
9100: 75 73 65 64 70 74 72 2b 2b 20 3d 20 30 2c 20 28 usedptr++ = 0, (
9110: 28 2a 28 4c 49 53 54 29 2e 66 61 70 74 72 2b 2b (*(LIST).faptr++
9120: 20 3d 20 28 66 6c 6f 61 74 29 28 56 41 4c 29 29 = (float)(VAL))
9130: 2c 20 30 29 09 09 5c 0a 20 20 20 3a 20 28 2b 2b , 0)..\. : (++
9140: 28 4c 49 53 54 29 2e 61 70 74 72 20 3e 20 5f 5f (LIST).aptr > __
9150: 61 76 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09 av_eptr(LIST)...
9160: 09 09 5c 0a 20 20 20 20 20 20 3f 20 2d 31 20 3a ..\. ? -1 :
9170: 20 28 28 4c 49 53 54 29 2e 66 61 72 67 77 6f 72 ((LIST).fargwor
9180: 64 73 2b 2b 2c 20 28 28 66 6c 6f 61 74 2a 29 28 ds++, ((float*)(
9190: 4c 49 53 54 29 2e 61 70 74 72 29 5b 2d 31 5d 20 LIST).aptr)[-1]
91a0: 3d 20 28 66 6c 6f 61 74 29 28 56 41 4c 29 2c 20 = (float)(VAL),
91b0: 30 29 29 29 0a 0a 23 64 65 66 69 6e 65 20 61 76 0)))..#define av
91c0: 5f 64 6f 75 62 6c 65 28 4c 49 53 54 2c 56 41 4c _double(LIST,VAL
91d0: 29 09 09 09 09 09 09 5c 0a 20 20 28 28 4c 49 53 )......\. ((LIS
91e0: 54 29 2e 64 61 70 74 72 20 3c 20 26 28 4c 49 53 T).daptr < &(LIS
91f0: 54 29 2e 64 61 72 67 73 5b 32 5d 09 09 09 09 09 T).dargs[2].....
9200: 5c 0a 20 20 20 3f 20 28 4c 49 53 54 29 2e 66 61 \. ? (LIST).fa
9210: 70 74 72 2b 2b 2c 20 2a 28 4c 49 53 54 29 2e 64 ptr++, *(LIST).d
9220: 61 72 67 73 75 73 65 64 70 74 72 2b 2b 20 3d 20 argsusedptr++ =
9230: 31 2c 20 2a 28 4c 49 53 54 29 2e 66 61 72 67 73 1, *(LIST).fargs
9240: 75 73 65 64 70 74 72 2b 2b 20 3d 20 30 2c 20 28 usedptr++ = 0, (
9250: 28 2a 28 4c 49 53 54 29 2e 64 61 70 74 72 2b 2b (*(LIST).daptr++
9260: 20 3d 20 28 64 6f 75 62 6c 65 29 28 56 41 4c 29 = (double)(VAL)
9270: 29 2c 20 30 29 09 09 5c 0a 20 20 20 3a 20 28 28 ), 0)..\. : ((
9280: 28 4c 49 53 54 29 2e 61 70 74 72 20 2b 3d 20 32 (LIST).aptr += 2
9290: 29 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 ) > __av_eptr(LI
92a0: 53 54 29 09 09 09 09 5c 0a 20 20 20 20 20 20 3f ST)....\. ?
92b0: 20 2d 31 20 3a 09 09 09 09 09 09 09 09 5c 0a 20 -1 :........\.
92c0: 20 20 20 20 20 28 28 4c 49 53 54 29 2e 66 61 72 ((LIST).far
92d0: 67 77 6f 72 64 73 2b 3d 32 2c 20 28 4c 49 53 54 gwords+=2, (LIST
92e0: 29 2e 74 6d 70 2e 5f 64 6f 75 62 6c 65 20 3d 20 ).tmp._double =
92f0: 28 64 6f 75 62 6c 65 29 28 56 41 4c 29 2c 09 09 (double)(VAL),..
9300: 09 5c 0a 20 20 20 20 20 20 20 28 4c 49 53 54 29 .\. (LIST)
9310: 2e 61 70 74 72 5b 2d 32 5d 20 3d 20 28 4c 49 53 .aptr[-2] = (LIS
9320: 54 29 2e 74 6d 70 2e 77 6f 72 64 73 5b 30 5d 2c T).tmp.words[0],
9330: 09 09 09 09 5c 0a 20 20 20 20 20 20 20 28 4c 49 ....\. (LI
9340: 53 54 29 2e 61 70 74 72 5b 2d 31 5d 20 3d 20 28 ST).aptr[-1] = (
9350: 4c 49 53 54 29 2e 74 6d 70 2e 77 6f 72 64 73 5b LIST).tmp.words[
9360: 31 5d 2c 09 09 09 09 5c 0a 20 20 20 20 20 20 20 1],....\.
9370: 30 29 29 29 0a 0a 23 65 6e 64 69 66 0a 0a 23 69 0)))..#endif..#i
9380: 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 38 38 6b f defined(__m88k
9390: 5f 5f 29 0a 0a 23 64 65 66 69 6e 65 20 5f 5f 61 __)..#define __a
93a0: 76 5f 66 6c 6f 61 74 28 4c 49 53 54 2c 56 41 4c v_float(LIST,VAL
93b0: 29 09 09 09 09 09 09 5c 0a 20 20 28 2b 2b 28 4c )......\. (++(L
93c0: 49 53 54 29 2e 61 70 74 72 20 3e 20 5f 5f 61 76 IST).aptr > __av
93d0: 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09 09 09 _eptr(LIST).....
93e0: 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 28 28 28 66 \. ? -1 : (((f
93f0: 6c 6f 61 74 2a 29 28 4c 49 53 54 29 2e 61 70 74 loat*)(LIST).apt
9400: 72 29 5b 2d 31 5d 20 3d 20 28 66 6c 6f 61 74 29 r)[-1] = (float)
9410: 28 56 41 4c 29 2c 20 30 29 29 0a 0a 23 64 65 66 (VAL), 0))..#def
9420: 69 6e 65 20 61 76 5f 64 6f 75 62 6c 65 28 4c 49 ine av_double(LI
9430: 53 54 2c 56 41 4c 29 09 09 09 09 09 09 5c 0a 20 ST,VAL)......\.
9440: 20 20 28 28 28 4c 49 53 54 29 2e 61 70 74 72 20 (((LIST).aptr
9450: 3d 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28 28 28 = (__avword*)(((
9460: 6c 6f 6e 67 29 28 4c 49 53 54 29 2e 61 70 74 72 long)(LIST).aptr
9470: 2b 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29 2b +sizeof(double)+
9480: 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29 2d 31 sizeof(double)-1
9490: 29 20 26 20 2d 28 6c 6f 6e 67 29 73 69 7a 65 6f ) & -(long)sizeo
94a0: 66 28 64 6f 75 62 6c 65 29 29 29 20 5c 0a 20 20 f(double))) \.
94b0: 20 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 > __av_eptr(LI
94c0: 53 54 29 09 09 09 09 09 09 09 5c 0a 20 20 20 20 ST).......\.
94d0: 3f 20 2d 31 20 3a 20 28 28 28 64 6f 75 62 6c 65 ? -1 : (((double
94e0: 2a 29 28 4c 49 53 54 29 2e 61 70 74 72 29 5b 2d *)(LIST).aptr)[-
94f0: 31 5d 20 3d 20 28 64 6f 75 62 6c 65 29 28 56 41 1] = (double)(VA
9500: 4c 29 2c 20 30 29 29 0a 0a 23 65 6e 64 69 66 0a L), 0))..#endif.
9510: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 69 .#if defined(__i
9520: 61 36 34 5f 5f 29 0a 0a 2f 2a 20 55 70 20 74 6f a64__)../* Up to
9530: 20 38 20 6c 65 61 64 69 6e 67 20 66 6c 6f 61 74 8 leading float
9540: 20 6f 72 20 64 6f 75 62 6c 65 20 6e 6f 6e 2d 76 or double non-v
9550: 61 72 61 72 67 73 20 61 72 67 73 20 63 61 6e 20 arargs args can
9560: 62 65 20 70 61 73 73 65 64 20 69 6e 0a 20 2a 20 be passed in. *
9570: 66 6c 6f 61 74 20 72 65 67 69 73 74 65 72 73 2c float registers,
9580: 20 62 75 74 20 77 65 20 61 6c 73 6f 20 70 75 73 but we also pus
9590: 68 20 74 68 65 6d 20 69 6e 74 6f 20 74 68 65 20 h them into the
95a0: 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 69 6e corresponding in
95b0: 74 0a 20 2a 20 72 65 67 69 73 74 65 72 73 20 69 t. * registers i
95c0: 6e 20 63 61 73 65 20 6f 66 20 76 61 72 61 72 67 n case of vararg
95d0: 73 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f s.. */.#define _
95e0: 5f 61 76 5f 66 6c 6f 61 74 28 4c 49 53 54 2c 56 _av_float(LIST,V
95f0: 41 4c 29 09 09 09 09 09 09 5c 0a 20 20 28 28 4c AL)......\. ((L
9600: 49 53 54 29 2e 61 70 74 72 20 3e 3d 20 5f 5f 61 IST).aptr >= __a
9610: 76 5f 65 70 74 72 28 4c 49 53 54 29 09 09 09 09 v_eptr(LIST)....
9620: 09 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 28 28 2a .\. ? -1 : ((*
9630: 28 66 6c 6f 61 74 2a 29 28 4c 49 53 54 29 2e 61 (float*)(LIST).a
9640: 70 74 72 20 3d 20 28 66 6c 6f 61 74 29 28 56 41 ptr = (float)(VA
9650: 4c 29 29 2c 09 09 09 5c 0a 09 20 20 20 28 28 4c L)),...\.. ((L
9660: 49 53 54 29 2e 66 61 70 74 72 20 3c 20 26 28 4c IST).faptr < &(L
9670: 49 53 54 29 2e 66 61 72 67 73 5b 38 5d 20 26 26 IST).fargs[8] &&
9680: 20 28 2a 28 4c 49 53 54 29 2e 66 61 70 74 72 20 (*(LIST).faptr
9690: 3d 20 2a 28 66 6c 6f 61 74 2a 29 28 4c 49 53 54 = *(float*)(LIST
96a0: 29 2e 61 70 74 72 2c 20 28 4c 49 53 54 29 2e 66 ).aptr, (LIST).f
96b0: 61 70 74 72 2b 2b 29 29 2c 20 5c 0a 09 20 20 20 aptr++)), \..
96c0: 28 4c 49 53 54 29 2e 61 70 74 72 2b 2b 2c 09 09 (LIST).aptr++,..
96d0: 09 09 09 09 5c 0a 09 20 20 20 30 29 29 0a 0a 23 ....\.. 0))..#
96e0: 64 65 66 69 6e 65 20 61 76 5f 64 6f 75 62 6c 65 define av_double
96f0: 28 4c 49 53 54 2c 56 41 4c 29 09 09 09 09 09 09 (LIST,VAL)......
9700: 5c 0a 20 20 28 28 4c 49 53 54 29 2e 61 70 74 72 \. ((LIST).aptr
9710: 20 3e 3d 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 >= __av_eptr(LI
9720: 53 54 29 09 09 09 09 09 5c 0a 20 20 20 3f 20 2d ST).....\. ? -
9730: 31 20 3a 20 28 2a 28 64 6f 75 62 6c 65 2a 29 28 1 : (*(double*)(
9740: 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 28 64 6f LIST).aptr = (do
9750: 75 62 6c 65 29 28 56 41 4c 29 2c 09 09 09 5c 0a uble)(VAL),...\.
9760: 09 20 20 20 28 28 4c 49 53 54 29 2e 66 61 70 74 . ((LIST).fapt
9770: 72 20 3c 20 26 28 4c 49 53 54 29 2e 66 61 72 67 r < &(LIST).farg
9780: 73 5b 38 5d 20 26 26 20 28 2a 28 4c 49 53 54 29 s[8] && (*(LIST)
9790: 2e 66 61 70 74 72 20 3d 20 2a 28 64 6f 75 62 6c .faptr = *(doubl
97a0: 65 2a 29 28 4c 49 53 54 29 2e 61 70 74 72 2c 20 e*)(LIST).aptr,
97b0: 28 4c 49 53 54 29 2e 66 61 70 74 72 2b 2b 29 29 (LIST).faptr++))
97c0: 2c 20 5c 0a 09 20 20 20 28 4c 49 53 54 29 2e 61 , \.. (LIST).a
97d0: 70 74 72 2b 2b 2c 09 09 09 09 09 09 5c 0a 09 20 ptr++,......\..
97e0: 20 20 30 29 29 0a 0a 23 65 6e 64 69 66 0a 0a 23 0))..#endif..#
97f0: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 78 38 36 if defined(__x86
9800: 5f 36 34 5f 5f 29 0a 0a 2f 2a 20 55 70 20 74 6f _64__)../* Up to
9810: 20 38 20 6c 65 61 64 69 6e 67 20 66 6c 6f 61 74 8 leading float
9820: 20 6f 72 20 64 6f 75 62 6c 65 20 61 72 67 73 20 or double args
9830: 63 61 6e 20 62 65 20 70 61 73 73 65 64 20 69 6e can be passed in
9840: 20 66 6c 6f 61 74 20 72 65 67 69 73 74 65 72 73 float registers
9850: 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f .. */.#define __
9860: 61 76 5f 66 6c 6f 61 74 28 4c 49 53 54 2c 56 41 av_float(LIST,VA
9870: 4c 29 09 09 09 09 09 09 5c 0a 20 20 28 28 4c 49 L)......\. ((LI
9880: 53 54 29 2e 66 61 70 74 72 20 3c 20 26 28 4c 49 ST).faptr < &(LI
9890: 53 54 29 2e 66 61 72 67 73 5b 38 5d 09 09 09 09 ST).fargs[8]....
98a0: 09 5c 0a 20 20 20 3f 20 28 2a 28 4c 49 53 54 29 .\. ? (*(LIST)
98b0: 2e 66 61 70 74 72 20 3d 20 30 2e 30 2c 20 2a 28 .faptr = 0.0, *(
98c0: 66 6c 6f 61 74 2a 29 28 4c 49 53 54 29 2e 66 61 float*)(LIST).fa
98d0: 70 74 72 20 3d 20 28 66 6c 6f 61 74 29 28 56 41 ptr = (float)(VA
98e0: 4c 29 2c 09 5c 0a 20 20 20 20 20 20 28 4c 49 53 L),.\. (LIS
98f0: 54 29 2e 66 61 70 74 72 2b 2b 2c 09 09 09 09 09 T).faptr++,.....
9900: 09 09 5c 0a 20 20 20 20 20 20 30 29 09 09 09 09 ..\. 0)....
9910: 09 09 09 09 5c 0a 20 20 20 3a 20 28 28 4c 49 53 ....\. : ((LIS
9920: 54 29 2e 61 70 74 72 20 3e 3d 20 5f 5f 61 76 5f T).aptr >= __av_
9930: 65 70 74 72 28 4c 49 53 54 29 09 09 09 09 09 5c eptr(LIST).....\
9940: 0a 20 20 20 20 20 20 3f 20 2d 31 20 3a 20 28 28 . ? -1 : ((
9950: 2a 28 66 6c 6f 61 74 2a 29 28 4c 49 53 54 29 2e *(float*)(LIST).
9960: 61 70 74 72 20 3d 20 28 66 6c 6f 61 74 29 28 56 aptr = (float)(V
9970: 41 4c 29 29 2c 09 09 09 5c 0a 09 20 20 20 20 20 AL)),...\..
9980: 20 28 4c 49 53 54 29 2e 61 70 74 72 2b 2b 2c 09 (LIST).aptr++,.
9990: 09 09 09 09 09 5c 0a 09 20 20 20 20 20 20 30 29 .....\.. 0)
99a0: 29 29 0a 0a 23 64 65 66 69 6e 65 20 61 76 5f 64 ))..#define av_d
99b0: 6f 75 62 6c 65 28 4c 49 53 54 2c 56 41 4c 29 09 ouble(LIST,VAL).
99c0: 09 09 09 09 09 5c 0a 20 20 28 28 4c 49 53 54 29 .....\. ((LIST)
99d0: 2e 66 61 70 74 72 20 3c 20 26 28 4c 49 53 54 29 .faptr < &(LIST)
99e0: 2e 66 61 72 67 73 5b 38 5d 09 09 09 09 09 5c 0a .fargs[8].....\.
99f0: 20 20 20 3f 20 28 2a 28 4c 49 53 54 29 2e 66 61 ? (*(LIST).fa
9a00: 70 74 72 20 3d 20 28 64 6f 75 62 6c 65 29 28 56 ptr = (double)(V
9a10: 41 4c 29 2c 09 09 09 09 09 5c 0a 20 20 20 20 20 AL),.....\.
9a20: 20 28 4c 49 53 54 29 2e 66 61 70 74 72 2b 2b 2c (LIST).faptr++,
9a30: 09 09 09 09 09 09 09 5c 0a 20 20 20 20 20 20 30 .......\. 0
9a40: 29 09 09 09 09 09 09 09 09 5c 0a 20 20 20 3a 20 )........\. :
9a50: 28 28 4c 49 53 54 29 2e 61 70 74 72 20 3e 3d 20 ((LIST).aptr >=
9a60: 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29 09 __av_eptr(LIST).
9a70: 09 09 09 09 5c 0a 20 20 20 20 20 20 3f 20 2d 31 ....\. ? -1
9a80: 20 3a 20 28 28 2a 28 64 6f 75 62 6c 65 2a 29 28 : ((*(double*)(
9a90: 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 28 64 6f LIST).aptr = (do
9aa0: 75 62 6c 65 29 28 56 41 4c 29 29 2c 09 09 09 5c uble)(VAL)),...\
9ab0: 0a 09 20 20 20 20 20 20 28 4c 49 53 54 29 2e 61 .. (LIST).a
9ac0: 70 74 72 2b 2b 2c 09 09 09 09 09 09 5c 0a 09 20 ptr++,......\..
9ad0: 20 20 20 20 20 30 29 29 29 0a 0a 23 65 6e 64 69 0)))..#endi
9ae0: 66 0a 0a 2f 2a 0a 20 2a 20 73 74 72 75 63 74 75 f../*. * structu
9af0: 72 65 20 61 72 67 75 6d 65 6e 74 20 74 79 70 65 re argument type
9b00: 73 0a 20 2a 2f 0a 0a 23 64 65 66 69 6e 65 20 61 s. */..#define a
9b10: 76 5f 73 74 72 75 63 74 28 4c 49 53 54 2c 54 59 v_struct(LIST,TY
9b20: 50 45 2c 56 41 4c 29 09 09 09 09 09 5c 0a 20 20 PE,VAL).....\.
9b30: 5f 5f 61 76 5f 73 74 72 75 63 74 28 4c 49 53 54 __av_struct(LIST
9b40: 2c 54 59 50 45 2c 73 69 7a 65 6f 66 28 54 59 50 ,TYPE,sizeof(TYP
9b50: 45 29 2c 5f 5f 41 56 5f 61 6c 69 67 6e 6f 66 28 E),__AV_alignof(
9b60: 54 59 50 45 29 2c 5f 5f 61 76 5f 73 74 72 75 63 TYPE),__av_struc
9b70: 74 5f 61 73 73 69 67 6e 2c 56 41 4c 29 0a 23 64 t_assign,VAL).#d
9b80: 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 72 75 63 efine __av_struc
9b90: 74 5f 61 73 73 69 67 6e 28 54 59 50 45 2c 54 59 t_assign(TYPE,TY
9ba0: 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 PE_SIZE,TYPE_ALI
9bb0: 47 4e 2c 50 4c 41 43 45 2c 56 41 4c 29 09 09 5c GN,PLACE,VAL)..\
9bc0: 0a 20 20 2a 28 54 59 50 45 2a 29 28 50 4c 41 43 . *(TYPE*)(PLAC
9bd0: 45 29 20 3d 20 28 56 41 4c 29 0a 2f 2a 20 5f 61 E) = (VAL)./* _a
9be0: 76 5f 73 74 72 75 63 74 28 29 20 69 73 20 6c 69 v_struct() is li
9bf0: 6b 65 20 61 76 5f 73 74 72 75 63 74 28 29 2c 20 ke av_struct(),
9c00: 65 78 63 65 70 74 20 74 68 61 74 20 79 6f 75 20 except that you
9c10: 70 61 73 73 20 74 68 65 20 74 79 70 65 27 73 20 pass the type's
9c20: 73 69 7a 65 20 61 6e 64 20 61 6c 69 67 6e 6d 65 size and alignme
9c30: 6e 74 0a 20 2a 20 61 6e 64 20 74 68 65 20 76 61 nt. * and the va
9c40: 6c 75 65 27 73 20 61 64 64 72 65 73 73 20 69 6e lue's address in
9c50: 73 74 65 61 64 20 6f 66 20 74 68 65 20 74 79 70 stead of the typ
9c60: 65 20 61 6e 64 20 74 68 65 20 76 61 6c 75 65 20 e and the value
9c70: 74 68 65 6d 73 65 6c 76 65 73 2e 0a 20 2a 2f 0a themselves.. */.
9c80: 23 64 65 66 69 6e 65 20 5f 61 76 5f 73 74 72 75 #define _av_stru
9c90: 63 74 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a ct(LIST,TYPE_SIZ
9ca0: 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 56 41 4c E,TYPE_ALIGN,VAL
9cb0: 5f 41 44 44 52 29 09 09 09 5c 0a 20 20 5f 5f 61 _ADDR)...\. __a
9cc0: 76 5f 73 74 72 75 63 74 28 4c 49 53 54 2c 75 6e v_struct(LIST,un
9cd0: 6b 6e 6f 77 6e 2c 54 59 50 45 5f 53 49 5a 45 2c known,TYPE_SIZE,
9ce0: 54 59 50 45 5f 41 4c 49 47 4e 2c 5f 5f 61 76 5f TYPE_ALIGN,__av_
9cf0: 73 74 72 75 63 74 5f 63 6f 70 79 2c 56 41 4c 5f struct_copy,VAL_
9d00: 41 44 44 52 29 0a 23 64 65 66 69 6e 65 20 5f 5f ADDR).#define __
9d10: 61 76 5f 73 74 72 75 63 74 5f 63 6f 70 79 28 54 av_struct_copy(T
9d20: 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 YPE,TYPE_SIZE,TY
9d30: 50 45 5f 41 4c 49 47 4e 2c 50 4c 41 43 45 2c 56 PE_ALIGN,PLACE,V
9d40: 41 4c 5f 41 44 44 52 29 09 5c 0a 20 20 5f 5f 73 AL_ADDR).\. __s
9d50: 74 72 75 63 74 63 70 79 28 50 4c 41 43 45 2c 56 tructcpy(PLACE,V
9d60: 41 4c 5f 41 44 44 52 2c 54 59 50 45 5f 53 49 5a AL_ADDR,TYPE_SIZ
9d70: 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29 0a 2f 2a E,TYPE_ALIGN)./*
9d80: 20 53 74 72 75 63 74 75 72 65 20 61 72 67 75 6d Structure argum
9d90: 65 6e 74 20 61 6c 69 67 6e 6d 65 6e 74 2e 20 2a ent alignment. *
9da0: 2f 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f /.#if defined(__
9db0: 69 33 38 36 5f 5f 29 20 26 26 20 64 65 66 69 6e i386__) && defin
9dc0: 65 64 28 5f 4d 53 43 5f 56 45 52 29 0a 2f 2a 20 ed(_MSC_VER)./*
9dd0: 49 6e 20 4d 53 56 43 2c 20 64 6f 75 62 6c 65 73 In MSVC, doubles
9de0: 20 69 6e 73 69 64 65 20 73 74 72 75 63 74 75 72 inside structur
9df0: 65 73 20 68 61 76 65 20 61 6c 69 67 6e 6d 65 6e es have alignmen
9e00: 74 20 38 2c 20 69 2e 65 2e 0a 20 2a 20 5f 5f 41 t 8, i.e.. * __A
9e10: 56 5f 61 6c 69 67 6e 6f 66 28 64 6f 75 62 6c 65 V_alignof(double
9e20: 29 20 3d 20 38 2c 20 62 75 74 20 64 6f 75 62 6c ) = 8, but doubl
9e30: 65 73 20 28 61 6e 64 20 61 6c 73 6f 20 73 74 72 es (and also str
9e40: 75 63 74 75 72 65 73 20 63 6f 6e 74 61 69 6e 69 uctures containi
9e50: 6e 67 0a 20 2a 20 64 6f 75 62 6c 65 73 29 20 61 ng. * doubles) a
9e60: 72 65 20 70 61 73 73 65 64 20 6f 6e 20 74 68 65 re passed on the
9e70: 20 73 74 61 63 6b 20 77 69 74 68 20 61 6c 69 67 stack with alig
9e80: 6e 6d 65 6e 74 20 34 2e 20 4c 6f 6f 6b 73 20 72 nment 4. Looks r
9e90: 65 61 6c 6c 79 20 77 65 69 72 64 2e 0a 20 2a 2f eally weird.. */
9ea0: 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 .#define __av_st
9eb0: 72 75 63 74 5f 61 6c 69 67 6e 6d 65 6e 74 28 54 ruct_alignment(T
9ec0: 59 50 45 5f 41 4c 49 47 4e 29 20 20 5c 0a 20 20 YPE_ALIGN) \.
9ed0: 28 28 54 59 50 45 5f 41 4c 49 47 4e 29 20 3c 3d ((TYPE_ALIGN) <=
9ee0: 20 34 20 3f 20 28 54 59 50 45 5f 41 4c 49 47 4e 4 ? (TYPE_ALIGN
9ef0: 29 20 3a 20 34 29 0a 23 65 6c 73 65 0a 23 64 65 ) : 4).#else.#de
9f00: 66 69 6e 65 20 5f 5f 61 76 5f 73 74 72 75 63 74 fine __av_struct
9f10: 5f 61 6c 69 67 6e 6d 65 6e 74 28 54 59 50 45 5f _alignment(TYPE_
9f20: 41 4c 49 47 4e 29 20 20 5c 0a 20 20 28 54 59 50 ALIGN) \. (TYP
9f30: 45 5f 41 4c 49 47 4e 29 0a 23 65 6e 64 69 66 0a E_ALIGN).#endif.
9f40: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 69 33 #if defined(__i3
9f50: 38 36 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 86__) || defined
9f60: 28 5f 5f 6d 69 70 73 5f 5f 29 20 7c 7c 20 64 65 (__mips__) || de
9f70: 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f fined(__mipsn32_
9f80: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f _) || defined(__
9f90: 6d 69 70 73 36 34 5f 5f 29 20 7c 7c 20 64 65 66 mips64__) || def
9fa0: 69 6e 65 64 28 5f 5f 61 6c 70 68 61 5f 5f 29 20 ined(__alpha__)
9fb0: 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f 72 73 || (defined(__rs
9fc0: 36 30 30 30 5f 5f 29 20 26 26 20 28 64 65 66 69 6000__) && (defi
9fd0: 6e 65 64 28 5f 41 49 58 29 20 7c 7c 20 28 64 65 ned(_AIX) || (de
9fe0: 66 69 6e 65 64 28 5f 5f 4d 41 43 48 5f 5f 29 20 fined(__MACH__)
9ff0: 26 26 20 64 65 66 69 6e 65 64 28 5f 5f 41 50 50 && defined(__APP
a000: 4c 45 5f 5f 29 29 29 29 20 7c 7c 20 64 65 66 69 LE__)))) || defi
a010: 6e 65 64 28 5f 5f 6d 38 38 6b 5f 5f 29 20 7c 7c ned(__m88k__) ||
a020: 20 64 65 66 69 6e 65 64 28 5f 5f 69 61 36 34 5f defined(__ia64_
a030: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f _) || defined(__
a040: 73 33 39 30 5f 5f 29 0a 2f 2a 20 53 74 72 75 63 s390__)./* Struc
a050: 74 75 72 65 73 20 61 72 65 20 70 61 73 73 65 64 tures are passed
a060: 20 61 73 20 66 75 6c 6c 79 20 61 6c 69 67 6e 65 as fully aligne
a070: 64 20 73 74 72 75 63 74 75 72 65 73 20 6f 6e 20 d structures on
a080: 74 68 65 20 61 72 67 20 73 74 61 63 6b 2e 0a 20 the arg stack..
a090: 2a 20 57 65 20 61 6c 69 67 6e 20 74 68 65 20 61 * We align the a
a0a0: 70 74 72 2c 20 73 74 6f 72 65 20 74 68 65 20 73 ptr, store the s
a0b0: 74 72 75 63 74 75 72 65 2c 20 74 68 65 6e 20 66 tructure, then f
a0c0: 69 6c 6c 20 74 6f 20 77 6f 72 64 20 61 6c 69 67 ill to word alig
a0d0: 6e 6d 65 6e 74 2e 0a 20 2a 20 53 69 6e 67 6c 65 nment.. * Single
a0e0: 2d 73 6d 61 6c 6c 2d 69 6e 74 65 67 65 72 20 73 -small-integer s
a0f0: 74 72 75 63 74 75 72 65 73 20 61 72 65 20 4e 4f tructures are NO
a100: 54 20 70 72 6f 6d 6f 74 65 64 20 74 6f 20 69 6e T promoted to in
a110: 74 65 67 65 72 73 20 61 6e 64 20 68 61 76 65 0a tegers and have.
a120: 20 2a 20 64 69 66 66 65 72 65 6e 74 20 61 6c 69 * different ali
a130: 67 6e 6d 65 6e 74 2e 0a 20 2a 2f 0a 2f 2a 20 6c gnment.. */./* l
a140: 69 74 74 6c 65 20 65 6e 64 69 61 6e 20 2d 3e 20 ittle endian ->
a150: 73 6d 61 6c 6c 20 73 74 72 75 63 74 75 72 65 73 small structures
a160: 20 3c 20 31 20 77 6f 72 64 20 61 72 65 20 61 64 < 1 word are ad
a170: 6a 75 73 74 65 64 20 74 6f 20 74 68 65 20 6c 65 justed to the le
a180: 66 74 20 2a 2f 0a 23 69 66 20 64 65 66 69 6e 65 ft */.#if define
a190: 64 28 5f 5f 69 33 38 36 5f 5f 29 20 7c 7c 20 64 d(__i386__) || d
a1a0: 65 66 69 6e 65 64 28 5f 5f 61 6c 70 68 61 5f 5f efined(__alpha__
a1b0: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 78 ) || defined(__x
a1c0: 38 36 5f 36 34 5f 5f 29 0a 23 64 65 66 69 6e 65 86_64__).#define
a1d0: 20 5f 5f 61 76 5f 73 74 72 75 63 74 28 4c 49 53 __av_struct(LIS
a1e0: 54 2c 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 T,TYPE,TYPE_SIZE
a1f0: 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49 ,TYPE_ALIGN,ASSI
a200: 47 4e 2c 56 41 4c 29 09 09 5c 0a 20 20 28 28 28 GN,VAL)..\. (((
a210: 4c 49 53 54 29 2e 61 70 74 72 20 3d 09 09 09 09 LIST).aptr =....
a220: 09 09 09 5c 0a 20 20 20 20 28 5f 5f 61 76 77 6f ...\. (__avwo
a230: 72 64 2a 29 28 28 28 5f 5f 61 76 77 6f 72 64 29 rd*)(((__avword)
a240: 28 4c 49 53 54 29 2e 61 70 74 72 2b 28 54 59 50 (LIST).aptr+(TYP
a250: 45 5f 53 49 5a 45 29 2b 5f 5f 61 76 5f 73 74 72 E_SIZE)+__av_str
a260: 75 63 74 5f 61 6c 69 67 6e 6d 65 6e 74 28 54 59 uct_alignment(TY
a270: 50 45 5f 41 4c 49 47 4e 29 2d 31 29 20 26 20 2d PE_ALIGN)-1) & -
a280: 28 6c 6f 6e 67 29 5f 5f 61 76 5f 73 74 72 75 63 (long)__av_struc
a290: 74 5f 61 6c 69 67 6e 6d 65 6e 74 28 54 59 50 45 t_alignment(TYPE
a2a0: 5f 41 4c 49 47 4e 29 29 29 5c 0a 20 20 20 3e 20 _ALIGN)))\. >
a2b0: 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29 09 __av_eptr(LIST).
a2c0: 09 09 09 09 09 09 5c 0a 20 20 20 3f 20 2d 31 20 ......\. ? -1
a2d0: 3a 20 28 41 53 53 49 47 4e 28 54 59 50 45 2c 54 : (ASSIGN(TYPE,T
a2e0: 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c YPE_SIZE,TYPE_AL
a2f0: 49 47 4e 2c 28 76 6f 69 64 2a 29 28 28 5f 5f 61 IGN,(void*)((__a
a300: 76 77 6f 72 64 29 28 4c 49 53 54 29 2e 61 70 74 vword)(LIST).apt
a310: 72 2d 28 54 59 50 45 5f 53 49 5a 45 29 29 2c 56 r-(TYPE_SIZE)),V
a320: 41 4c 29 2c 5c 0a 09 20 20 20 28 4c 49 53 54 29 AL),\.. (LIST)
a330: 2e 61 70 74 72 20 3d 20 28 5f 5f 61 76 77 6f 72 .aptr = (__avwor
a340: 64 2a 29 28 28 28 5f 5f 61 76 77 6f 72 64 29 28 d*)(((__avword)(
a350: 4c 49 53 54 29 2e 61 70 74 72 2b 73 69 7a 65 6f LIST).aptr+sizeo
a360: 66 28 5f 5f 61 76 77 6f 72 64 29 2d 31 29 20 26 f(__avword)-1) &
a370: 20 2d 28 6c 6f 6e 67 29 73 69 7a 65 6f 66 28 5f -(long)sizeof(_
a380: 5f 61 76 77 6f 72 64 29 29 2c 5c 0a 09 20 20 20 _avword)),\..
a390: 30 29 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 0)).#endif.#if d
a3a0: 65 66 69 6e 65 64 28 5f 5f 69 61 36 34 5f 5f 29 efined(__ia64__)
a3b0: 0a 2f 2a 20 54 79 70 65 73 20 6c 61 72 67 65 72 ./* Types larger
a3c0: 20 74 68 61 6e 20 61 20 77 6f 72 64 20 68 61 76 than a word hav
a3d0: 65 20 32 2d 77 6f 72 64 20 61 6c 69 67 6e 6d 65 e 2-word alignme
a3e0: 6e 74 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f nt. */.#define _
a3f0: 5f 61 76 5f 73 74 72 75 63 74 28 4c 49 53 54 2c _av_struct(LIST,
a400: 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 TYPE,TYPE_SIZE,T
a410: 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e YPE_ALIGN,ASSIGN
a420: 2c 56 41 4c 29 09 09 5c 0a 20 20 28 28 4c 49 53 ,VAL)..\. ((LIS
a430: 54 29 2e 61 70 74 72 20 3d 20 28 5f 5f 61 76 77 T).aptr = (__avw
a440: 6f 72 64 2a 29 28 28 28 5f 5f 61 76 77 6f 72 64 ord*)(((__avword
a450: 29 28 4c 49 53 54 29 2e 61 70 74 72 2b 28 54 59 )(LIST).aptr+(TY
a460: 50 45 5f 53 49 5a 45 29 2b 5f 5f 61 76 5f 73 74 PE_SIZE)+__av_st
a470: 72 75 63 74 5f 61 6c 69 67 6e 6d 65 6e 74 28 54 ruct_alignment(T
a480: 59 50 45 5f 41 4c 49 47 4e 29 2d 31 29 20 26 20 YPE_ALIGN)-1) &
a490: 2d 28 6c 6f 6e 67 29 5f 5f 61 76 5f 73 74 72 75 -(long)__av_stru
a4a0: 63 74 5f 61 6c 69 67 6e 6d 65 6e 74 28 54 59 50 ct_alignment(TYP
a4b0: 45 5f 41 4c 49 47 4e 29 29 2c 20 5c 0a 20 20 20 E_ALIGN)), \.
a4c0: 28 28 54 59 50 45 5f 53 49 5a 45 29 20 3e 20 73 ((TYPE_SIZE) > s
a4d0: 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 20 izeof(__avword)
a4e0: 26 26 20 28 28 28 4c 49 53 54 29 2e 61 70 74 72 && (((LIST).aptr
a4f0: 20 2d 20 26 28 4c 49 53 54 29 2e 61 72 67 73 5b - &(LIST).args[
a500: 30 5d 29 20 26 20 31 29 20 3f 20 2b 2b 28 4c 49 0]) & 1) ? ++(LI
a510: 53 54 29 2e 61 70 74 72 20 3a 20 30 29 2c 20 5c ST).aptr : 0), \
a520: 0a 20 20 20 28 28 4c 49 53 54 29 2e 61 70 74 72 . ((LIST).aptr
a530: 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 > __av_eptr(LIS
a540: 54 29 09 09 09 09 09 5c 0a 20 20 20 20 3f 20 2d T).....\. ? -
a550: 31 20 3a 20 28 41 53 53 49 47 4e 28 54 59 50 45 1 : (ASSIGN(TYPE
a560: 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f ,TYPE_SIZE,TYPE_
a570: 41 4c 49 47 4e 2c 28 76 6f 69 64 2a 29 28 28 5f ALIGN,(void*)((_
a580: 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e 61 _avword)(LIST).a
a590: 70 74 72 2d 28 54 59 50 45 5f 53 49 5a 45 29 29 ptr-(TYPE_SIZE))
a5a0: 2c 56 41 4c 29 2c 5c 0a 09 20 20 20 20 28 4c 49 ,VAL),\.. (LI
a5b0: 53 54 29 2e 61 70 74 72 20 3d 20 28 5f 5f 61 76 ST).aptr = (__av
a5c0: 77 6f 72 64 2a 29 28 28 28 5f 5f 61 76 77 6f 72 word*)(((__avwor
a5d0: 64 29 28 4c 49 53 54 29 2e 61 70 74 72 2b 73 69 d)(LIST).aptr+si
a5e0: 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 2d 31 zeof(__avword)-1
a5f0: 29 20 26 20 2d 28 6c 6f 6e 67 29 73 69 7a 65 6f ) & -(long)sizeo
a600: 66 28 5f 5f 61 76 77 6f 72 64 29 29 2c 5c 0a 09 f(__avword)),\..
a610: 20 20 20 20 30 29 29 29 0a 23 65 6e 64 69 66 0a 0))).#endif.
a620: 2f 2a 20 73 6d 61 6c 6c 20 73 74 72 75 63 74 75 /* small structu
a630: 72 65 73 20 3c 20 31 20 77 6f 72 64 20 61 72 65 res < 1 word are
a640: 20 61 64 6a 75 73 74 65 64 20 64 65 70 65 6e 64 adjusted depend
a650: 69 6e 67 20 6f 6e 20 63 6f 6d 70 69 6c 65 72 20 ing on compiler
a660: 2a 2f 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f */.#if defined(_
a670: 5f 6d 69 70 73 5f 5f 29 20 26 26 20 21 64 65 66 _mips__) && !def
a680: 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f ined(__mipsn32__
a690: 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 ).#define __av_s
a6a0: 74 72 75 63 74 5f 6c 65 66 74 61 64 6a 75 73 74 truct_leftadjust
a6b0: 65 64 28 4c 49 53 54 2c 54 59 50 45 2c 54 59 50 ed(LIST,TYPE,TYP
a6c0: 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 E_SIZE,TYPE_ALIG
a6d0: 4e 2c 41 53 53 49 47 4e 2c 56 41 4c 29 20 5c 0a N,ASSIGN,VAL) \.
a6e0: 20 20 28 28 28 4c 49 53 54 29 2e 61 70 74 72 20 (((LIST).aptr
a6f0: 3d 09 09 09 09 09 09 09 5c 0a 20 20 20 20 28 5f =.......\. (_
a700: 5f 61 76 77 6f 72 64 2a 29 28 28 28 5f 5f 61 76 _avword*)(((__av
a710: 77 6f 72 64 29 28 4c 49 53 54 29 2e 61 70 74 72 word)(LIST).aptr
a720: 2b 28 54 59 50 45 5f 53 49 5a 45 29 2b 28 54 59 +(TYPE_SIZE)+(TY
a730: 50 45 5f 41 4c 49 47 4e 29 2d 31 29 20 26 20 2d PE_ALIGN)-1) & -
a740: 28 6c 6f 6e 67 29 28 54 59 50 45 5f 41 4c 49 47 (long)(TYPE_ALIG
a750: 4e 29 29 29 5c 0a 20 20 20 3e 20 5f 5f 61 76 5f N)))\. > __av_
a760: 65 70 74 72 28 4c 49 53 54 29 09 09 09 09 09 09 eptr(LIST)......
a770: 09 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 28 2b 2b .\. ? -1 : (++
a780: 28 4c 49 53 54 29 2e 61 6e 75 6d 2c 09 09 09 09 (LIST).anum,....
a790: 09 09 5c 0a 09 20 20 20 41 53 53 49 47 4e 28 54 ..\.. ASSIGN(T
a7a0: 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 YPE,TYPE_SIZE,TY
a7b0: 50 45 5f 41 4c 49 47 4e 2c 28 76 6f 69 64 2a 29 PE_ALIGN,(void*)
a7c0: 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 ((__avword)(LIST
a7d0: 29 2e 61 70 74 72 2d 28 54 59 50 45 5f 53 49 5a ).aptr-(TYPE_SIZ
a7e0: 45 29 29 2c 56 41 4c 29 2c 5c 0a 09 20 20 20 28 E)),VAL),\.. (
a7f0: 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 28 5f 5f LIST).aptr = (__
a800: 61 76 77 6f 72 64 2a 29 28 28 28 5f 5f 61 76 77 avword*)(((__avw
a810: 6f 72 64 29 28 4c 49 53 54 29 2e 61 70 74 72 2b ord)(LIST).aptr+
a820: 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 sizeof(__avword)
a830: 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 73 69 7a -1) & -(long)siz
a840: 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 29 2c 5c eof(__avword)),\
a850: 0a 09 20 20 20 30 29 29 0a 23 64 65 66 69 6e 65 .. 0)).#define
a860: 20 5f 5f 61 76 5f 73 74 72 75 63 74 5f 72 69 67 __av_struct_rig
a870: 68 74 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c htadjusted(LIST,
a880: 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 TYPE,TYPE_SIZE,T
a890: 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e YPE_ALIGN,ASSIGN
a8a0: 2c 56 41 4c 29 20 5c 0a 20 20 28 28 28 4c 49 53 ,VAL) \. (((LIS
a8b0: 54 29 2e 61 70 74 72 20 3d 09 09 09 09 09 09 09 T).aptr =.......
a8c0: 5c 0a 20 20 20 20 28 5f 5f 61 76 77 6f 72 64 2a \. (__avword*
a8d0: 29 28 28 28 28 28 5f 5f 61 76 77 6f 72 64 29 28 )(((((__avword)(
a8e0: 4c 49 53 54 29 2e 61 70 74 72 2b 28 54 59 50 45 LIST).aptr+(TYPE
a8f0: 5f 53 49 5a 45 29 2b 28 54 59 50 45 5f 41 4c 49 _SIZE)+(TYPE_ALI
a900: 47 4e 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 GN)-1) & -(long)
a910: 28 54 59 50 45 5f 41 4c 49 47 4e 29 29 5c 0a 09 (TYPE_ALIGN))\..
a920: 09 20 2b 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f . +sizeof(__avwo
a930: 72 64 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 rd)-1) & -(long)
a940: 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 sizeof(__avword)
a950: 29 29 09 5c 0a 20 20 20 3e 20 5f 5f 61 76 5f 65 )).\. > __av_e
a960: 70 74 72 28 4c 49 53 54 29 09 09 09 09 09 09 09 ptr(LIST).......
a970: 5c 0a 20 20 20 3f 20 2d 31 20 3a 20 28 2b 2b 28 \. ? -1 : (++(
a980: 4c 49 53 54 29 2e 61 6e 75 6d 2c 09 09 09 09 09 LIST).anum,.....
a990: 09 5c 0a 09 20 20 20 41 53 53 49 47 4e 28 54 59 .\.. ASSIGN(TY
a9a0: 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 PE,TYPE_SIZE,TYP
a9b0: 45 5f 41 4c 49 47 4e 2c 28 76 6f 69 64 2a 29 28 E_ALIGN,(void*)(
a9c0: 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29 (__avword)(LIST)
a9d0: 2e 61 70 74 72 2d 28 54 59 50 45 5f 53 49 5a 45 .aptr-(TYPE_SIZE
a9e0: 29 29 2c 56 41 4c 29 2c 5c 0a 09 20 20 20 30 29 )),VAL),\.. 0)
a9f0: 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 ).#define __av_s
aa00: 74 72 75 63 74 28 4c 49 53 54 2c 54 59 50 45 2c truct(LIST,TYPE,
aa10: 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 TYPE_SIZE,TYPE_A
aa20: 4c 49 47 4e 2c 41 53 53 49 47 4e 2c 56 41 4c 29 LIGN,ASSIGN,VAL)
aa30: 09 09 5c 0a 20 20 28 28 4c 49 53 54 29 2e 66 6c ..\. ((LIST).fl
aa40: 61 67 73 20 26 20 5f 5f 41 56 5f 53 47 49 43 43 ags & __AV_SGICC
aa50: 5f 53 54 52 55 43 54 5f 41 52 47 53 09 09 09 09 _STRUCT_ARGS....
aa60: 5c 0a 20 20 20 3f 20 2f 2a 20 53 47 49 20 4d 49 \. ? /* SGI MI
aa70: 50 53 20 63 63 20 70 61 73 73 65 73 20 73 6d 61 PS cc passes sma
aa80: 6c 6c 20 73 74 72 75 63 74 75 72 65 73 20 6c 65 ll structures le
aa90: 66 74 2d 61 64 6a 75 73 74 65 64 2c 20 61 6c 74 ft-adjusted, alt
aaa0: 68 6f 75 67 68 20 62 69 67 2d 65 6e 64 69 61 6e hough big-endian
aab0: 21 20 2a 2f 5c 0a 20 20 20 20 20 5f 5f 61 76 5f ! */\. __av_
aac0: 73 74 72 75 63 74 5f 6c 65 66 74 61 64 6a 75 73 struct_leftadjus
aad0: 74 65 64 28 4c 49 53 54 2c 54 59 50 45 2c 54 59 ted(LIST,TYPE,TY
aae0: 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 PE_SIZE,TYPE_ALI
aaf0: 47 4e 2c 41 53 53 49 47 4e 2c 56 41 4c 29 20 5c GN,ASSIGN,VAL) \
ab00: 0a 20 20 20 3a 20 2f 2a 20 53 47 49 20 4d 49 50 . : /* SGI MIP
ab10: 53 20 67 63 63 20 70 61 73 73 65 73 20 73 6d 61 S gcc passes sma
ab20: 6c 6c 20 73 74 72 75 63 74 75 72 65 73 20 77 69 ll structures wi
ab30: 74 68 69 6e 20 74 68 65 20 66 69 72 73 74 20 66 thin the first f
ab40: 6f 75 72 20 77 6f 72 64 73 20 6c 65 66 74 2d 09 our words left-.
ab50: 20 20 5c 0a 20 20 20 20 20 20 2a 20 61 64 6a 75 \. * adju
ab60: 73 74 65 64 2c 20 66 6f 72 20 63 6f 6d 70 61 74 sted, for compat
ab70: 69 62 69 6c 69 74 79 20 77 69 74 68 20 63 63 2e ibility with cc.
ab80: 20 42 75 74 20 73 74 72 75 63 74 75 72 65 73 20 But structures
ab90: 69 6e 20 6d 65 6d 6f 72 79 20 61 72 65 20 70 61 in memory are pa
aba0: 73 73 65 64 20 20 5c 0a 20 20 20 20 20 20 2a 20 ssed \. *
abb0: 72 69 67 68 74 2d 61 64 6a 75 73 74 65 64 21 21 right-adjusted!!
abc0: 20 53 65 65 20 67 63 63 2d 32 2e 36 2e 33 2f 63 See gcc-2.6.3/c
abd0: 6f 6e 66 69 67 2f 6d 69 70 73 2f 6d 69 70 73 2e onfig/mips/mips.
abe0: 63 3a 66 75 6e 63 74 69 6f 6e 5f 61 72 67 28 29 c:function_arg()
abf0: 2e 09 20 20 5c 0a 20 20 20 20 20 20 2a 2f 09 09 .. \. */..
ac00: 09 09 09 09 09 09 09 20 20 5c 0a 20 20 20 20 20 ....... \.
ac10: 28 28 4c 49 53 54 29 2e 61 70 74 72 20 3c 20 26 ((LIST).aptr < &
ac20: 28 4c 49 53 54 29 2e 61 72 67 73 5b 34 5d 09 09 (LIST).args[4]..
ac30: 09 09 09 09 5c 0a 20 20 20 20 20 20 3f 20 5f 5f ....\. ? __
ac40: 61 76 5f 73 74 72 75 63 74 5f 6c 65 66 74 61 64 av_struct_leftad
ac50: 6a 75 73 74 65 64 28 4c 49 53 54 2c 54 59 50 45 justed(LIST,TYPE
ac60: 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f ,TYPE_SIZE,TYPE_
ac70: 41 4c 49 47 4e 2c 41 53 53 49 47 4e 2c 56 41 4c ALIGN,ASSIGN,VAL
ac80: 29 09 5c 0a 20 20 20 20 20 20 3a 20 5f 5f 61 76 ).\. : __av
ac90: 5f 73 74 72 75 63 74 5f 72 69 67 68 74 61 64 6a _struct_rightadj
aca0: 75 73 74 65 64 28 4c 49 53 54 2c 54 59 50 45 2c usted(LIST,TYPE,
acb0: 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 TYPE_SIZE,TYPE_A
acc0: 4c 49 47 4e 2c 41 53 53 49 47 4e 2c 56 41 4c 29 LIGN,ASSIGN,VAL)
acd0: 29 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 )).#endif.#if de
ace0: 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f fined(__mipsn32_
acf0: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f _) || defined(__
ad00: 6d 69 70 73 36 34 5f 5f 29 0a 2f 2a 20 57 68 65 mips64__)./* Whe
ad10: 6e 20 61 20 73 74 72 75 63 74 75 72 65 20 69 73 n a structure is
ad20: 20 70 61 73 73 65 64 20 28 70 61 72 74 69 61 6c passed (partial
ad30: 6c 79 29 20 69 6e 20 72 65 67 69 73 74 65 72 73 ly) in registers
ad40: 2c 20 69 74 20 69 73 20 70 61 73 73 65 64 20 69 , it is passed i
ad50: 6e 20 74 68 65 0a 20 2a 20 69 6e 74 65 67 65 72 n the. * integer
ad60: 20 72 65 67 69 73 74 65 72 73 2c 20 65 78 63 65 registers, exce
ad70: 70 74 20 74 68 61 74 20 64 6f 75 62 6c 65 73 20 pt that doubles
ad80: 77 69 74 68 69 6e 20 74 68 65 20 73 74 72 75 63 within the struc
ad90: 74 75 72 65 20 61 72 65 20 70 61 73 73 65 64 20 ture are passed
ada0: 69 6e 0a 20 2a 20 74 68 65 20 66 6c 6f 61 74 69 in. * the floati
adb0: 6e 67 20 70 6f 69 6e 74 20 72 65 67 69 73 74 65 ng point registe
adc0: 72 73 2e 20 49 6e 73 74 65 61 64 20 6f 66 20 64 rs. Instead of d
add0: 69 73 74 69 6e 67 75 69 73 68 69 6e 67 20 74 68 istinguishing th
ade0: 65 73 65 20 63 61 73 65 73 2c 20 77 65 0a 20 2a ese cases, we. *
adf0: 20 61 6c 77 61 79 73 20 70 61 73 73 20 74 68 65 always pass the
ae00: 20 73 74 72 75 63 74 75 72 65 20 69 6e 20 62 6f structure in bo
ae10: 74 68 20 74 68 65 20 69 6e 74 65 67 65 72 20 61 th the integer a
ae20: 6e 64 20 74 68 65 20 66 6c 6f 61 74 69 6e 67 20 nd the floating
ae30: 70 6f 69 6e 74 0a 20 2a 20 72 65 67 69 73 74 65 point. * registe
ae40: 72 73 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 rs.. */.#define
ae50: 5f 5f 61 76 5f 73 74 72 75 63 74 5f 6c 65 66 74 __av_struct_left
ae60: 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c 54 59 adjusted(LIST,TY
ae70: 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 PE,TYPE_SIZE,TYP
ae80: 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e 2c 56 E_ALIGN,ASSIGN,V
ae90: 41 4c 29 20 5c 0a 20 20 28 28 28 4c 49 53 54 29 AL) \. (((LIST)
aea0: 2e 61 70 74 72 20 3d 09 09 09 09 09 09 09 5c 0a .aptr =.......\.
aeb0: 20 20 20 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28 (__avword*)(
aec0: 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 ((__avword)(LIST
aed0: 29 2e 61 70 74 72 2b 28 54 59 50 45 5f 53 49 5a ).aptr+(TYPE_SIZ
aee0: 45 29 2b 28 54 59 50 45 5f 41 4c 49 47 4e 29 2d E)+(TYPE_ALIGN)-
aef0: 31 29 20 26 20 2d 28 6c 6f 6e 67 29 28 54 59 50 1) & -(long)(TYP
af00: 45 5f 41 4c 49 47 4e 29 29 29 5c 0a 20 20 20 3e E_ALIGN)))\. >
af10: 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29 __av_eptr(LIST)
af20: 09 09 09 09 09 09 09 5c 0a 20 20 20 3f 20 2d 31 .......\. ? -1
af30: 20 3a 20 28 41 53 53 49 47 4e 28 54 59 50 45 2c : (ASSIGN(TYPE,
af40: 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 TYPE_SIZE,TYPE_A
af50: 4c 49 47 4e 2c 28 76 6f 69 64 2a 29 28 28 5f 5f LIGN,(void*)((__
af60: 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e 61 70 avword)(LIST).ap
af70: 74 72 2d 28 54 59 50 45 5f 53 49 5a 45 29 29 2c tr-(TYPE_SIZE)),
af80: 56 41 4c 29 2c 5c 0a 09 20 20 20 28 4c 49 53 54 VAL),\.. (LIST
af90: 29 2e 61 70 74 72 20 3d 20 28 5f 5f 61 76 77 6f ).aptr = (__avwo
afa0: 72 64 2a 29 28 28 28 5f 5f 61 76 77 6f 72 64 29 rd*)(((__avword)
afb0: 28 4c 49 53 54 29 2e 61 70 74 72 2b 73 69 7a 65 (LIST).aptr+size
afc0: 6f 66 28 5f 5f 61 76 77 6f 72 64 29 2d 31 29 20 of(__avword)-1)
afd0: 26 20 2d 28 6c 6f 6e 67 29 73 69 7a 65 6f 66 28 & -(long)sizeof(
afe0: 5f 5f 61 76 77 6f 72 64 29 29 2c 5c 0a 09 20 20 __avword)),\..
aff0: 20 28 28 4c 49 53 54 29 2e 61 6e 75 6d 20 3c 20 ((LIST).anum <
b000: 38 20 26 26 20 28 28 4c 49 53 54 29 2e 64 61 72 8 && ((LIST).dar
b010: 67 5f 6d 61 73 6b 20 7c 3d 20 28 2d 31 20 3c 3c g_mask |= (-1 <<
b020: 20 28 4c 49 53 54 29 2e 61 6e 75 6d 29 29 29 2c (LIST).anum))),
b030: 20 5c 0a 09 20 20 20 28 4c 49 53 54 29 2e 61 6e \.. (LIST).an
b040: 75 6d 20 2b 3d 20 28 28 28 28 28 54 59 50 45 5f um += (((((TYPE_
b050: 53 49 5a 45 29 2b 28 54 59 50 45 5f 41 4c 49 47 SIZE)+(TYPE_ALIG
b060: 4e 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 28 N)-1) & -(long)(
b070: 54 59 50 45 5f 41 4c 49 47 4e 29 29 20 2b 20 73 TYPE_ALIGN)) + s
b080: 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 2d izeof(__avword)-
b090: 31 29 20 26 20 2d 28 6c 6f 6e 67 29 73 69 7a 65 1) & -(long)size
b0a0: 6f 66 28 5f 5f 61 76 77 6f 72 64 29 29 2f 73 69 of(__avword))/si
b0b0: 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 2c 5c zeof(__avword),\
b0c0: 0a 09 20 20 20 28 4c 49 53 54 29 2e 64 61 72 67 .. (LIST).darg
b0d0: 5f 6d 61 73 6b 20 26 3d 20 28 31 20 3c 3c 20 28 _mask &= (1 << (
b0e0: 28 4c 49 53 54 29 2e 61 6e 75 6d 20 3c 20 38 20 (LIST).anum < 8
b0f0: 3f 20 28 4c 49 53 54 29 2e 61 6e 75 6d 20 3a 20 ? (LIST).anum :
b100: 38 29 29 20 2d 20 31 2c 20 5c 0a 09 20 20 20 30 8)) - 1, \.. 0
b110: 29 29 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f )).#define __av_
b120: 73 74 72 75 63 74 5f 72 69 67 68 74 61 64 6a 75 struct_rightadju
b130: 73 74 65 64 28 4c 49 53 54 2c 54 59 50 45 2c 54 sted(LIST,TYPE,T
b140: 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c YPE_SIZE,TYPE_AL
b150: 49 47 4e 2c 41 53 53 49 47 4e 2c 56 41 4c 29 20 IGN,ASSIGN,VAL)
b160: 5c 0a 20 20 28 28 28 4c 49 53 54 29 2e 61 70 74 \. (((LIST).apt
b170: 72 20 3d 09 09 09 09 09 09 09 5c 0a 20 20 20 20 r =.......\.
b180: 28 5f 5f 61 76 77 6f 72 64 2a 29 28 28 28 28 28 (__avword*)(((((
b190: 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e __avword)(LIST).
b1a0: 61 70 74 72 2b 28 54 59 50 45 5f 53 49 5a 45 29 aptr+(TYPE_SIZE)
b1b0: 2b 28 54 59 50 45 5f 41 4c 49 47 4e 29 2d 31 29 +(TYPE_ALIGN)-1)
b1c0: 20 26 20 2d 28 6c 6f 6e 67 29 28 54 59 50 45 5f & -(long)(TYPE_
b1d0: 41 4c 49 47 4e 29 29 5c 0a 09 09 20 2b 73 69 7a ALIGN))\... +siz
b1e0: 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 2d 31 29 eof(__avword)-1)
b1f0: 20 26 20 2d 28 6c 6f 6e 67 29 73 69 7a 65 6f 66 & -(long)sizeof
b200: 28 5f 5f 61 76 77 6f 72 64 29 29 29 09 5c 0a 20 (__avword))).\.
b210: 20 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 > __av_eptr(LI
b220: 53 54 29 09 09 09 09 09 09 09 5c 0a 20 20 20 3f ST).......\. ?
b230: 20 2d 31 20 3a 20 28 41 53 53 49 47 4e 28 54 59 -1 : (ASSIGN(TY
b240: 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 PE,TYPE_SIZE,TYP
b250: 45 5f 41 4c 49 47 4e 2c 28 76 6f 69 64 2a 29 28 E_ALIGN,(void*)(
b260: 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29 (__avword)(LIST)
b270: 2e 61 70 74 72 2d 28 54 59 50 45 5f 53 49 5a 45 .aptr-(TYPE_SIZE
b280: 29 29 2c 56 41 4c 29 2c 5c 0a 09 20 20 20 28 28 )),VAL),\.. ((
b290: 4c 49 53 54 29 2e 61 6e 75 6d 20 3c 20 38 20 26 LIST).anum < 8 &
b2a0: 26 20 28 28 4c 49 53 54 29 2e 64 61 72 67 5f 6d & ((LIST).darg_m
b2b0: 61 73 6b 20 7c 3d 20 28 2d 31 20 3c 3c 20 28 4c ask |= (-1 << (L
b2c0: 49 53 54 29 2e 61 6e 75 6d 29 29 29 2c 20 5c 0a IST).anum))), \.
b2d0: 09 20 20 20 28 4c 49 53 54 29 2e 61 6e 75 6d 20 . (LIST).anum
b2e0: 2b 3d 20 28 28 28 28 28 54 59 50 45 5f 53 49 5a += (((((TYPE_SIZ
b2f0: 45 29 2b 28 54 59 50 45 5f 41 4c 49 47 4e 29 2d E)+(TYPE_ALIGN)-
b300: 31 29 20 26 20 2d 28 6c 6f 6e 67 29 28 54 59 50 1) & -(long)(TYP
b310: 45 5f 41 4c 49 47 4e 29 29 20 2b 20 73 69 7a 65 E_ALIGN)) + size
b320: 6f 66 28 5f 5f 61 76 77 6f 72 64 29 2d 31 29 20 of(__avword)-1)
b330: 26 20 2d 28 6c 6f 6e 67 29 73 69 7a 65 6f 66 28 & -(long)sizeof(
b340: 5f 5f 61 76 77 6f 72 64 29 29 2f 73 69 7a 65 6f __avword))/sizeo
b350: 66 28 5f 5f 61 76 77 6f 72 64 29 2c 5c 0a 09 20 f(__avword),\..
b360: 20 20 28 4c 49 53 54 29 2e 64 61 72 67 5f 6d 61 (LIST).darg_ma
b370: 73 6b 20 26 3d 20 28 31 20 3c 3c 20 28 28 4c 49 sk &= (1 << ((LI
b380: 53 54 29 2e 61 6e 75 6d 20 3c 20 38 20 3f 20 28 ST).anum < 8 ? (
b390: 4c 49 53 54 29 2e 61 6e 75 6d 20 3a 20 38 29 29 LIST).anum : 8))
b3a0: 20 2d 20 31 2c 20 5c 0a 09 20 20 20 30 29 29 0a - 1, \.. 0)).
b3b0: 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 72 #define __av_str
b3c0: 75 63 74 28 4c 49 53 54 2c 54 59 50 45 2c 54 59 uct(LIST,TYPE,TY
b3d0: 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 PE_SIZE,TYPE_ALI
b3e0: 47 4e 2c 41 53 53 49 47 4e 2c 56 41 4c 29 09 09 GN,ASSIGN,VAL)..
b3f0: 5c 0a 20 20 28 28 4c 49 53 54 29 2e 66 6c 61 67 \. ((LIST).flag
b400: 73 20 26 20 5f 5f 41 56 5f 53 47 49 43 43 5f 53 s & __AV_SGICC_S
b410: 54 52 55 43 54 5f 41 52 47 53 09 09 09 09 5c 0a TRUCT_ARGS....\.
b420: 20 20 20 3f 20 2f 2a 20 53 47 49 20 4d 49 50 53 ? /* SGI MIPS
b430: 20 63 63 20 70 61 73 73 65 73 20 73 6d 61 6c 6c cc passes small
b440: 20 73 74 72 75 63 74 75 72 65 73 20 6c 65 66 74 structures left
b450: 2d 61 64 6a 75 73 74 65 64 2c 20 61 6c 74 68 6f -adjusted, altho
b460: 75 67 68 20 62 69 67 2d 65 6e 64 69 61 6e 21 20 ugh big-endian!
b470: 2a 2f 5c 0a 20 20 20 20 20 5f 5f 61 76 5f 73 74 */\. __av_st
b480: 72 75 63 74 5f 6c 65 66 74 61 64 6a 75 73 74 65 ruct_leftadjuste
b490: 64 28 4c 49 53 54 2c 54 59 50 45 2c 54 59 50 45 d(LIST,TYPE,TYPE
b4a0: 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e _SIZE,TYPE_ALIGN
b4b0: 2c 41 53 53 49 47 4e 2c 56 41 4c 29 20 5c 0a 20 ,ASSIGN,VAL) \.
b4c0: 20 20 3a 20 2f 2a 20 53 47 49 20 4d 49 50 53 20 : /* SGI MIPS
b4d0: 67 63 63 20 70 61 73 73 65 73 20 73 6d 61 6c 6c gcc passes small
b4e0: 20 73 74 72 75 63 74 75 72 65 73 20 72 69 67 68 structures righ
b4f0: 74 2d 61 64 6a 75 73 74 65 64 2e 20 2a 2f 09 09 t-adjusted. */..
b500: 5c 0a 20 20 20 20 20 5f 5f 61 76 5f 73 74 72 75 \. __av_stru
b510: 63 74 5f 72 69 67 68 74 61 64 6a 75 73 74 65 64 ct_rightadjusted
b520: 28 4c 49 53 54 2c 54 59 50 45 2c 54 59 50 45 5f (LIST,TYPE,TYPE_
b530: 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c SIZE,TYPE_ALIGN,
b540: 41 53 53 49 47 4e 2c 56 41 4c 29 29 0a 23 65 6e ASSIGN,VAL)).#en
b550: 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 dif.#if defined(
b560: 5f 5f 72 73 36 30 30 30 5f 5f 29 0a 23 64 65 66 __rs6000__).#def
b570: 69 6e 65 20 5f 5f 61 76 5f 73 74 72 75 63 74 5f ine __av_struct_
b580: 6c 65 66 74 61 64 6a 75 73 74 65 64 28 4c 49 53 leftadjusted(LIS
b590: 54 2c 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 T,TYPE,TYPE_SIZE
b5a0: 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49 ,TYPE_ALIGN,ASSI
b5b0: 47 4e 2c 56 41 4c 29 5c 0a 20 20 28 28 28 4c 49 GN,VAL)\. (((LI
b5c0: 53 54 29 2e 61 70 74 72 20 3d 09 09 09 09 09 09 ST).aptr =......
b5d0: 09 5c 0a 20 20 20 20 28 5f 5f 61 76 77 6f 72 64 .\. (__avword
b5e0: 2a 29 28 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c *)(((__avword)(L
b5f0: 49 53 54 29 2e 61 70 74 72 2b 28 54 59 50 45 5f IST).aptr+(TYPE_
b600: 53 49 5a 45 29 2b 28 54 59 50 45 5f 41 4c 49 47 SIZE)+(TYPE_ALIG
b610: 4e 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 28 N)-1) & -(long)(
b620: 54 59 50 45 5f 41 4c 49 47 4e 29 29 29 5c 0a 20 TYPE_ALIGN)))\.
b630: 20 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 > __av_eptr(LI
b640: 53 54 29 09 09 09 09 09 09 09 5c 0a 20 20 20 3f ST).......\. ?
b650: 20 2d 31 20 3a 20 28 41 53 53 49 47 4e 28 54 59 -1 : (ASSIGN(TY
b660: 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 PE,TYPE_SIZE,TYP
b670: 45 5f 41 4c 49 47 4e 2c 28 76 6f 69 64 2a 29 28 E_ALIGN,(void*)(
b680: 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29 (__avword)(LIST)
b690: 2e 61 70 74 72 2d 28 54 59 50 45 5f 53 49 5a 45 .aptr-(TYPE_SIZE
b6a0: 29 29 2c 56 41 4c 29 2c 5c 0a 09 20 20 20 28 4c )),VAL),\.. (L
b6b0: 49 53 54 29 2e 61 70 74 72 20 3d 20 28 5f 5f 61 IST).aptr = (__a
b6c0: 76 77 6f 72 64 2a 29 28 28 28 5f 5f 61 76 77 6f vword*)(((__avwo
b6d0: 72 64 29 28 4c 49 53 54 29 2e 61 70 74 72 2b 73 rd)(LIST).aptr+s
b6e0: 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 2d izeof(__avword)-
b6f0: 31 29 20 26 20 2d 28 6c 6f 6e 67 29 73 69 7a 65 1) & -(long)size
b700: 6f 66 28 5f 5f 61 76 77 6f 72 64 29 29 2c 5c 0a of(__avword)),\.
b710: 09 20 20 20 30 29 29 0a 23 64 65 66 69 6e 65 20 . 0)).#define
b720: 5f 5f 61 76 5f 73 74 72 75 63 74 5f 72 69 67 68 __av_struct_righ
b730: 74 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c 54 tadjusted(LIST,T
b740: 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 YPE,TYPE_SIZE,TY
b750: 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e 2c PE_ALIGN,ASSIGN,
b760: 56 41 4c 29 5c 0a 20 20 28 28 28 4c 49 53 54 29 VAL)\. (((LIST)
b770: 2e 61 70 74 72 20 3d 09 09 09 09 09 09 09 5c 0a .aptr =.......\.
b780: 20 20 20 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28 (__avword*)(
b790: 28 28 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 ((((__avword)(LI
b7a0: 53 54 29 2e 61 70 74 72 2b 28 54 59 50 45 5f 53 ST).aptr+(TYPE_S
b7b0: 49 5a 45 29 2b 28 54 59 50 45 5f 41 4c 49 47 4e IZE)+(TYPE_ALIGN
b7c0: 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 28 54 )-1) & -(long)(T
b7d0: 59 50 45 5f 41 4c 49 47 4e 29 29 5c 0a 09 09 20 YPE_ALIGN))\...
b7e0: 2b 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 +sizeof(__avword
b7f0: 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 73 69 )-1) & -(long)si
b800: 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 29 29 zeof(__avword)))
b810: 09 5c 0a 20 20 20 3e 20 5f 5f 61 76 5f 65 70 74 .\. > __av_ept
b820: 72 28 4c 49 53 54 29 09 09 09 09 09 09 09 5c 0a r(LIST).......\.
b830: 20 20 20 3f 20 2d 31 20 3a 20 28 41 53 53 49 47 ? -1 : (ASSIG
b840: 4e 28 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 N(TYPE,TYPE_SIZE
b850: 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 28 76 6f 69 ,TYPE_ALIGN,(voi
b860: 64 2a 29 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c d*)((__avword)(L
b870: 49 53 54 29 2e 61 70 74 72 2d 28 54 59 50 45 5f IST).aptr-(TYPE_
b880: 53 49 5a 45 29 29 2c 56 41 4c 29 2c 5c 0a 09 20 SIZE)),VAL),\..
b890: 20 20 30 29 29 0a 23 64 65 66 69 6e 65 20 5f 5f 0)).#define __
b8a0: 61 76 5f 73 74 72 75 63 74 28 4c 49 53 54 2c 54 av_struct(LIST,T
b8b0: 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 YPE,TYPE_SIZE,TY
b8c0: 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e 2c PE_ALIGN,ASSIGN,
b8d0: 56 41 4c 29 09 09 5c 0a 20 20 28 28 4c 49 53 54 VAL)..\. ((LIST
b8e0: 29 2e 66 6c 61 67 73 20 26 20 5f 5f 41 56 5f 41 ).flags & __AV_A
b8f0: 49 58 43 43 5f 53 54 52 55 43 54 5f 41 52 47 53 IXCC_STRUCT_ARGS
b900: 09 09 09 09 5c 0a 20 20 20 3f 20 2f 2a 20 41 49 ....\. ? /* AI
b910: 58 20 63 63 20 61 6e 64 20 78 6c 63 20 70 61 73 X cc and xlc pas
b920: 73 20 73 6d 61 6c 6c 20 73 74 72 75 63 74 75 72 s small structur
b930: 65 73 20 6c 65 66 74 2d 61 64 6a 75 73 74 65 64 es left-adjusted
b940: 2c 20 61 6c 74 68 6f 75 67 68 20 62 69 67 2d 65 , although big-e
b950: 6e 64 69 61 6e 21 20 2a 2f 5c 0a 20 20 20 20 20 ndian! */\.
b960: 5f 5f 61 76 5f 73 74 72 75 63 74 5f 6c 65 66 74 __av_struct_left
b970: 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c 54 59 adjusted(LIST,TY
b980: 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 PE,TYPE_SIZE,TYP
b990: 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e 2c 56 E_ALIGN,ASSIGN,V
b9a0: 41 4c 29 20 5c 0a 20 20 20 3a 20 2f 2a 20 67 63 AL) \. : /* gc
b9b0: 63 20 70 61 73 73 65 73 20 73 6d 61 6c 6c 20 73 c passes small s
b9c0: 74 72 75 63 74 75 72 65 73 20 72 69 67 68 74 2d tructures right-
b9d0: 61 64 6a 75 73 74 65 64 2e 20 2a 2f 09 09 09 5c adjusted. */...\
b9e0: 0a 20 20 20 20 20 5f 5f 61 76 5f 73 74 72 75 63 . __av_struc
b9f0: 74 5f 72 69 67 68 74 61 64 6a 75 73 74 65 64 28 t_rightadjusted(
ba00: 4c 49 53 54 2c 54 59 50 45 2c 54 59 50 45 5f 53 LIST,TYPE,TYPE_S
ba10: 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 41 IZE,TYPE_ALIGN,A
ba20: 53 53 49 47 4e 2c 56 41 4c 29 29 0a 23 65 6e 64 SSIGN,VAL)).#end
ba30: 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f if.#if defined(_
ba40: 5f 73 33 39 30 5f 5f 29 0a 23 64 65 66 69 6e 65 _s390__).#define
ba50: 20 5f 5f 61 76 5f 73 74 72 75 63 74 5f 72 69 67 __av_struct_rig
ba60: 68 74 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c htadjusted(LIST,
ba70: 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 TYPE,TYPE_SIZE,T
ba80: 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e YPE_ALIGN,ASSIGN
ba90: 2c 56 41 4c 29 5c 0a 20 20 28 28 28 4c 49 53 54 ,VAL)\. (((LIST
baa0: 29 2e 61 70 74 72 20 3d 09 09 09 09 09 09 09 5c ).aptr =.......\
bab0: 0a 20 20 20 20 28 5f 5f 61 76 77 6f 72 64 2a 29 . (__avword*)
bac0: 28 28 28 28 28 5f 5f 61 76 77 6f 72 64 29 28 4c (((((__avword)(L
bad0: 49 53 54 29 2e 61 70 74 72 2b 28 54 59 50 45 5f IST).aptr+(TYPE_
bae0: 53 49 5a 45 29 2b 28 54 59 50 45 5f 41 4c 49 47 SIZE)+(TYPE_ALIG
baf0: 4e 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 28 N)-1) & -(long)(
bb00: 54 59 50 45 5f 41 4c 49 47 4e 29 29 5c 0a 09 09 TYPE_ALIGN))\...
bb10: 20 2b 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 +sizeof(__avwor
bb20: 64 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 73 d)-1) & -(long)s
bb30: 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 29 izeof(__avword))
bb40: 29 09 5c 0a 20 20 20 3e 20 5f 5f 61 76 5f 65 70 ).\. > __av_ep
bb50: 74 72 28 4c 49 53 54 29 09 09 09 09 09 09 09 5c tr(LIST).......\
bb60: 0a 20 20 20 3f 20 2d 31 20 3a 20 28 41 53 53 49 . ? -1 : (ASSI
bb70: 47 4e 28 54 59 50 45 2c 54 59 50 45 5f 53 49 5a GN(TYPE,TYPE_SIZ
bb80: 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 28 76 6f E,TYPE_ALIGN,(vo
bb90: 69 64 2a 29 28 28 5f 5f 61 76 77 6f 72 64 29 28 id*)((__avword)(
bba0: 4c 49 53 54 29 2e 61 70 74 72 2d 28 54 59 50 45 LIST).aptr-(TYPE
bbb0: 5f 53 49 5a 45 29 29 2c 56 41 4c 29 2c 5c 0a 09 _SIZE)),VAL),\..
bbc0: 20 20 20 30 29 29 0a 23 64 65 66 69 6e 65 20 5f 0)).#define _
bbd0: 5f 61 76 5f 73 74 72 75 63 74 28 4c 49 53 54 2c _av_struct(LIST,
bbe0: 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 TYPE,TYPE_SIZE,T
bbf0: 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49 47 4e YPE_ALIGN,ASSIGN
bc00: 2c 56 41 4c 29 09 09 5c 0a 28 28 54 59 50 45 5f ,VAL)..\.((TYPE_
bc10: 53 49 5a 45 29 20 21 3d 20 31 20 26 26 20 28 54 SIZE) != 1 && (T
bc20: 59 50 45 5f 53 49 5a 45 29 20 21 3d 20 32 20 26 YPE_SIZE) != 2 &
bc30: 26 20 28 54 59 50 45 5f 53 49 5a 45 29 20 21 3d & (TYPE_SIZE) !=
bc40: 20 34 20 26 26 20 28 54 59 50 45 5f 53 49 5a 45 4 && (TYPE_SIZE
bc50: 29 20 21 3d 20 38 20 5c 0a 20 3f 20 28 2b 2b 28 ) != 8 \. ? (++(
bc60: 4c 49 53 54 29 2e 61 70 74 72 09 09 09 09 09 09 LIST).aptr......
bc70: 09 5c 0a 20 20 20 20 3e 20 28 28 4c 49 53 54 29 .\. > ((LIST)
bc80: 2e 65 70 74 72 20 3d 20 28 5f 5f 61 76 77 6f 72 .eptr = (__avwor
bc90: 64 2a 29 28 28 6c 6f 6e 67 29 28 4c 49 53 54 29 d*)((long)(LIST)
bca0: 2e 65 70 74 72 20 2d 20 28 28 28 54 59 50 45 5f .eptr - (((TYPE_
bcb0: 53 49 5a 45 29 2b 37 29 26 2d 38 29 29 29 5c 0a SIZE)+7)&-8)))\.
bcc0: 20 20 20 20 3f 20 2d 31 20 3a 09 09 09 09 09 09 ? -1 :......
bcd0: 09 09 5c 0a 20 20 20 20 28 41 53 53 49 47 4e 28 ..\. (ASSIGN(
bce0: 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 TYPE,TYPE_SIZE,T
bcf0: 59 50 45 5f 41 4c 49 47 4e 2c 28 76 6f 69 64 2a YPE_ALIGN,(void*
bd00: 29 28 4c 49 53 54 29 2e 65 70 74 72 2c 56 41 4c )(LIST).eptr,VAL
bd10: 29 2c 09 09 5c 0a 20 20 20 20 20 28 4c 49 53 54 ),..\. (LIST
bd20: 29 2e 61 70 74 72 5b 2d 31 5d 20 3d 20 28 5f 5f ).aptr[-1] = (__
bd30: 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e 65 70 avword)(LIST).ep
bd40: 74 72 2c 09 09 09 09 5c 0a 20 20 20 20 20 30 29 tr,....\. 0)
bd50: 29 09 09 09 09 09 09 09 09 5c 0a 20 3a 20 28 28 )........\. : ((
bd60: 28 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 38 (TYPE_SIZE) == 8
bd70: 20 26 26 20 28 4c 49 53 54 29 2e 61 70 74 72 20 && (LIST).aptr
bd80: 2d 20 28 4c 49 53 54 29 2e 61 72 67 73 20 2d 20 - (LIST).args -
bd90: 28 4c 49 53 54 29 2e 66 61 72 67 77 6f 72 64 73 (LIST).fargwords
bda0: 20 3d 3d 20 34 20 3f 20 2b 2b 28 4c 49 53 54 29 == 4 ? ++(LIST)
bdb0: 2e 61 70 74 72 2c 30 20 3a 20 30 29 2c 20 5c 0a .aptr,0 : 0), \.
bdc0: 20 20 20 20 5f 5f 61 76 5f 73 74 72 75 63 74 5f __av_struct_
bdd0: 72 69 67 68 74 61 64 6a 75 73 74 65 64 28 4c 49 rightadjusted(LI
bde0: 53 54 2c 54 59 50 45 2c 54 59 50 45 5f 53 49 5a ST,TYPE,TYPE_SIZ
bdf0: 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 E,TYPE_ALIGN,ASS
be00: 49 47 4e 2c 56 41 4c 29 29 29 0a 23 65 6e 64 69 IGN,VAL))).#endi
be10: 66 0a 2f 2a 20 62 69 67 20 65 6e 64 69 61 6e 20 f./* big endian
be20: 2d 3e 20 73 6d 61 6c 6c 20 73 74 72 75 63 74 75 -> small structu
be30: 72 65 73 20 3c 20 31 20 77 6f 72 64 20 61 72 65 res < 1 word are
be40: 20 61 64 6a 75 73 74 65 64 20 74 6f 20 74 68 65 adjusted to the
be50: 20 72 69 67 68 74 20 2a 2f 0a 23 69 66 20 64 65 right */.#if de
be60: 66 69 6e 65 64 28 5f 5f 6d 38 38 6b 5f 5f 29 0a fined(__m88k__).
be70: 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 72 #define __av_str
be80: 75 63 74 28 4c 49 53 54 2c 54 59 50 45 2c 54 59 uct(LIST,TYPE,TY
be90: 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 PE_SIZE,TYPE_ALI
bea0: 47 4e 2c 41 53 53 49 47 4e 2c 56 41 4c 29 09 09 GN,ASSIGN,VAL)..
beb0: 5c 0a 20 20 28 28 28 4c 49 53 54 29 2e 61 70 74 \. (((LIST).apt
bec0: 72 20 3d 09 09 09 09 09 09 09 5c 0a 20 20 20 20 r =.......\.
bed0: 28 5f 5f 61 76 77 6f 72 64 2a 29 28 28 28 28 28 (__avword*)(((((
bee0: 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e __avword)(LIST).
bef0: 61 70 74 72 2b 28 54 59 50 45 5f 53 49 5a 45 29 aptr+(TYPE_SIZE)
bf00: 2b 28 54 59 50 45 5f 41 4c 49 47 4e 29 2d 31 29 +(TYPE_ALIGN)-1)
bf10: 20 26 20 2d 28 6c 6f 6e 67 29 28 54 59 50 45 5f & -(long)(TYPE_
bf20: 41 4c 49 47 4e 29 29 5c 0a 09 09 20 2b 73 69 7a ALIGN))\... +siz
bf30: 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 2d 31 29 eof(__avword)-1)
bf40: 20 26 20 2d 28 6c 6f 6e 67 29 73 69 7a 65 6f 66 & -(long)sizeof
bf50: 28 5f 5f 61 76 77 6f 72 64 29 29 29 09 5c 0a 20 (__avword))).\.
bf60: 20 20 3e 20 5f 5f 61 76 5f 65 70 74 72 28 4c 49 > __av_eptr(LI
bf70: 53 54 29 09 09 09 09 09 09 09 5c 0a 20 20 20 3f ST).......\. ?
bf80: 20 2d 31 20 3a 20 28 41 53 53 49 47 4e 28 54 59 -1 : (ASSIGN(TY
bf90: 50 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 PE,TYPE_SIZE,TYP
bfa0: 45 5f 41 4c 49 47 4e 2c 28 76 6f 69 64 2a 29 28 E_ALIGN,(void*)(
bfb0: 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29 (__avword)(LIST)
bfc0: 2e 61 70 74 72 2d 28 54 59 50 45 5f 53 49 5a 45 .aptr-(TYPE_SIZE
bfd0: 29 29 2c 56 41 4c 29 2c 5c 0a 09 20 20 20 30 29 )),VAL),\.. 0)
bfe0: 29 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69 66 0a ).#endif.#endif.
bff0: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 36 #if defined(__m6
c000: 38 6b 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 8k__) || defined
c010: 28 5f 5f 61 72 6d 5f 5f 29 20 7c 7c 20 64 65 66 (__arm__) || def
c020: 69 6e 65 64 28 5f 5f 63 6f 6e 76 65 78 5f 5f 29 ined(__convex__)
c030: 0a 2f 2a 20 53 74 72 75 63 74 75 72 65 73 20 61 ./* Structures a
c040: 72 65 20 70 61 73 73 65 64 20 61 73 20 65 6d 62 re passed as emb
c050: 65 64 64 65 64 20 63 6f 70 69 65 73 20 6f 6e 20 edded copies on
c060: 74 68 65 20 61 72 67 20 73 74 61 63 6b 2e 0a 20 the arg stack..
c070: 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f */.#define __av_
c080: 73 74 72 75 63 74 28 4c 49 53 54 2c 54 59 50 45 struct(LIST,TYPE
c090: 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f ,TYPE_SIZE,TYPE_
c0a0: 41 4c 49 47 4e 2c 41 53 53 49 47 4e 2c 56 41 4c ALIGN,ASSIGN,VAL
c0b0: 29 09 09 5c 0a 20 20 28 28 28 4c 49 53 54 29 2e )..\. (((LIST).
c0c0: 61 70 74 72 20 3d 20 28 5f 5f 61 76 77 6f 72 64 aptr = (__avword
c0d0: 2a 29 28 28 28 6c 6f 6e 67 29 28 4c 49 53 54 29 *)(((long)(LIST)
c0e0: 2e 61 70 74 72 2b 28 54 59 50 45 5f 53 49 5a 45 .aptr+(TYPE_SIZE
c0f0: 29 2b 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 )+sizeof(__avwor
c100: 64 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 73 d)-1) & -(long)s
c110: 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 29 izeof(__avword))
c120: 29 20 5c 0a 20 20 20 20 3e 20 5f 5f 61 76 5f 65 ) \. > __av_e
c130: 70 74 72 28 4c 49 53 54 29 09 09 09 09 09 09 09 ptr(LIST).......
c140: 5c 0a 20 20 20 20 3f 20 2d 31 20 3a 20 28 41 53 \. ? -1 : (AS
c150: 53 49 47 4e 28 54 59 50 45 2c 54 59 50 45 5f 53 SIGN(TYPE,TYPE_S
c160: 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 28 IZE,TYPE_ALIGN,(
c170: 76 6f 69 64 2a 29 28 28 5f 5f 61 76 77 6f 72 64 void*)((__avword
c180: 29 28 4c 49 53 54 29 2e 61 70 74 72 2d 28 54 59 )(LIST).aptr-(TY
c190: 50 45 5f 53 49 5a 45 29 29 2c 56 41 4c 29 2c 5c PE_SIZE)),VAL),\
c1a0: 0a 09 20 20 20 20 30 29 29 0a 23 65 6e 64 69 66 .. 0)).#endif
c1b0: 0a 23 69 66 20 28 64 65 66 69 6e 65 64 28 5f 5f .#if (defined(__
c1c0: 73 70 61 72 63 5f 5f 29 20 26 26 20 21 64 65 66 sparc__) && !def
c1d0: 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f ined(__sparc64__
c1e0: 29 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f )) || (defined(_
c1f0: 5f 72 73 36 30 30 30 5f 5f 29 20 26 26 20 21 28 _rs6000__) && !(
c200: 64 65 66 69 6e 65 64 28 5f 41 49 58 29 20 7c 7c defined(_AIX) ||
c210: 20 28 64 65 66 69 6e 65 64 28 5f 5f 4d 41 43 48 (defined(__MACH
c220: 5f 5f 29 20 26 26 20 64 65 66 69 6e 65 64 28 5f __) && defined(_
c230: 5f 41 50 50 4c 45 5f 5f 29 29 29 29 0a 2f 2a 20 _APPLE__))))./*
c240: 53 74 72 75 63 74 75 72 65 73 20 61 72 65 20 70 Structures are p
c250: 61 73 73 65 64 20 61 73 20 70 6f 69 6e 74 65 72 assed as pointer
c260: 73 20 74 6f 20 63 61 6c 6c 65 72 2d 6d 61 64 65 s to caller-made
c270: 20 6c 6f 63 61 6c 20 63 6f 70 69 65 73 2e 20 57 local copies. W
c280: 65 0a 20 2a 20 67 72 61 62 20 73 70 61 63 65 20 e. * grab space
c290: 66 6f 72 20 74 68 65 20 63 6f 70 69 65 73 20 66 for the copies f
c2a0: 72 6f 6d 20 74 68 65 20 65 6e 64 20 6f 66 20 74 rom the end of t
c2b0: 68 65 20 61 72 67 75 6d 65 6e 74 20 6c 69 73 74 he argument list
c2c0: 20 73 70 61 63 65 0a 20 2a 20 61 6e 64 20 61 6c space. * and al
c2d0: 77 61 79 73 20 75 73 65 20 6d 61 78 69 6d 61 6c ways use maximal
c2e0: 20 28 64 6f 75 62 6c 65 29 20 61 6c 69 67 6e 6d (double) alignm
c2f0: 65 6e 74 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 ent.. */.#define
c300: 20 5f 5f 61 76 5f 73 74 72 75 63 74 28 4c 49 53 __av_struct(LIS
c310: 54 2c 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 T,TYPE,TYPE_SIZE
c320: 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49 ,TYPE_ALIGN,ASSI
c330: 47 4e 2c 56 41 4c 29 09 09 5c 0a 20 20 20 28 2b GN,VAL)..\. (+
c340: 2b 28 4c 49 53 54 29 2e 61 70 74 72 09 09 09 09 +(LIST).aptr....
c350: 09 09 09 5c 0a 20 20 20 20 3e 20 28 28 4c 49 53 ...\. > ((LIS
c360: 54 29 2e 65 70 74 72 20 3d 20 28 5f 5f 61 76 77 T).eptr = (__avw
c370: 6f 72 64 2a 29 28 28 6c 6f 6e 67 29 28 4c 49 53 ord*)((long)(LIS
c380: 54 29 2e 65 70 74 72 20 2d 20 28 28 28 54 59 50 T).eptr - (((TYP
c390: 45 5f 53 49 5a 45 29 2b 37 29 26 2d 38 29 29 29 E_SIZE)+7)&-8)))
c3a0: 5c 0a 20 20 20 20 3f 20 2d 31 20 3a 09 09 09 09 \. ? -1 :....
c3b0: 09 09 09 09 5c 0a 20 20 20 20 28 41 53 53 49 47 ....\. (ASSIG
c3c0: 4e 28 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 N(TYPE,TYPE_SIZE
c3d0: 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 28 76 6f 69 ,TYPE_ALIGN,(voi
c3e0: 64 2a 29 28 4c 49 53 54 29 2e 65 70 74 72 2c 56 d*)(LIST).eptr,V
c3f0: 41 4c 29 2c 09 09 5c 0a 20 20 20 20 20 28 4c 49 AL),..\. (LI
c400: 53 54 29 2e 61 70 74 72 5b 2d 31 5d 20 3d 20 28 ST).aptr[-1] = (
c410: 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e __avword)(LIST).
c420: 65 70 74 72 2c 09 09 09 09 5c 0a 20 20 20 20 20 eptr,....\.
c430: 30 29 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 0)).#endif.#if d
c440: 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 efined(__sparc64
c450: 5f 5f 29 0a 2f 2a 20 53 74 72 75 63 74 75 72 65 __)./* Structure
c460: 73 20 3c 3d 20 31 36 20 62 79 74 65 73 20 61 72 s <= 16 bytes ar
c470: 65 20 70 61 73 73 65 64 20 61 73 20 65 6d 62 65 e passed as embe
c480: 64 64 65 64 20 63 6f 70 69 65 73 20 6f 6e 20 74 dded copies on t
c490: 68 65 20 61 72 67 20 73 74 61 63 6b 2c 0a 20 2a he arg stack,. *
c4a0: 20 6c 65 66 74 2d 61 64 6a 75 73 74 65 64 20 28 left-adjusted (
c4b0: 61 6c 74 68 6f 75 67 68 20 62 69 67 2d 65 6e 64 although big-end
c4c0: 69 61 6e 21 29 2e 0a 20 2a 20 57 68 65 6e 20 61 ian!).. * When a
c4d0: 20 73 74 72 75 63 74 75 72 65 20 69 73 20 70 61 structure is pa
c4e0: 73 73 65 64 20 28 70 61 72 74 69 61 6c 6c 79 29 ssed (partially)
c4f0: 20 69 6e 20 72 65 67 69 73 74 65 72 73 2c 20 69 in registers, i
c500: 74 20 69 73 20 70 61 73 73 65 64 20 69 6e 20 74 t is passed in t
c510: 68 65 0a 20 2a 20 69 6e 74 65 67 65 72 20 72 65 he. * integer re
c520: 67 69 73 74 65 72 73 2c 20 65 78 63 65 70 74 20 gisters, except
c530: 74 68 61 74 20 66 6c 6f 61 74 73 20 61 6e 64 20 that floats and
c540: 64 6f 75 62 6c 65 73 20 77 69 74 68 69 6e 20 74 doubles within t
c550: 68 65 20 73 74 72 75 63 74 75 72 65 0a 20 2a 20 he structure. *
c560: 61 72 65 20 70 61 73 73 65 64 20 69 6e 20 74 68 are passed in th
c570: 65 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 e floating point
c580: 20 72 65 67 69 73 74 65 72 73 2e 20 49 6e 73 74 registers. Inst
c590: 65 61 64 20 6f 66 20 64 69 73 74 69 6e 67 75 69 ead of distingui
c5a0: 73 68 69 6e 67 0a 20 2a 20 74 68 65 73 65 20 63 shing. * these c
c5b0: 61 73 65 73 2c 20 77 65 20 61 6c 77 61 79 73 20 ases, we always
c5c0: 70 61 73 73 20 74 68 65 20 73 74 72 75 63 74 75 pass the structu
c5d0: 72 65 20 69 6e 20 62 6f 74 68 20 74 68 65 20 69 re in both the i
c5e0: 6e 74 65 67 65 72 20 61 6e 64 20 74 68 65 0a 20 nteger and the.
c5f0: 2a 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 * floating point
c600: 20 72 65 67 69 73 74 65 72 73 2e 0a 20 2a 20 42 registers.. * B
c610: 69 67 20 73 74 72 75 63 74 75 72 65 73 20 61 72 ig structures ar
c620: 65 20 70 61 73 73 65 64 20 61 73 20 70 6f 69 6e e passed as poin
c630: 74 65 72 73 20 74 6f 20 63 61 6c 6c 65 72 2d 6d ters to caller-m
c640: 61 64 65 20 6c 6f 63 61 6c 20 63 6f 70 69 65 73 ade local copies
c650: 2e 0a 20 2a 20 46 49 58 4d 45 3a 20 53 68 6f 75 .. * FIXME: Shou
c660: 6c 64 6e 27 74 20 28 4c 49 53 54 29 2e 61 6e 75 ldn't (LIST).anu
c670: 6d 20 62 65 20 69 6e 63 72 65 6d 65 6e 74 65 64 m be incremented
c680: 20 69 6e 20 73 79 6e 63 20 77 69 74 68 20 28 4c in sync with (L
c690: 49 53 54 29 2e 61 70 74 72 20 3f 0a 20 2a 2f 0a IST).aptr ?. */.
c6a0: 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 74 72 #define __av_str
c6b0: 75 63 74 28 4c 49 53 54 2c 54 59 50 45 2c 54 59 uct(LIST,TYPE,TY
c6c0: 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 PE_SIZE,TYPE_ALI
c6d0: 47 4e 2c 41 53 53 49 47 4e 2c 56 41 4c 29 09 09 GN,ASSIGN,VAL)..
c6e0: 5c 0a 20 20 28 28 54 59 50 45 5f 53 49 5a 45 29 \. ((TYPE_SIZE)
c6f0: 20 3e 20 31 36 09 09 09 09 09 09 09 5c 0a 20 20 > 16.......\.
c700: 20 3f 20 28 2b 2b 28 4c 49 53 54 29 2e 61 70 74 ? (++(LIST).apt
c710: 72 09 09 09 09 09 09 09 5c 0a 20 20 20 20 20 20 r.......\.
c720: 3e 20 28 28 4c 49 53 54 29 2e 65 70 74 72 20 3d > ((LIST).eptr =
c730: 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28 28 6c 6f (__avword*)((lo
c740: 6e 67 29 28 4c 49 53 54 29 2e 65 70 74 72 20 2d ng)(LIST).eptr -
c750: 20 28 28 28 54 59 50 45 5f 53 49 5a 45 29 2b 37 (((TYPE_SIZE)+7
c760: 29 26 2d 38 29 29 29 5c 0a 20 20 20 20 20 20 3f )&-8)))\. ?
c770: 20 2d 31 20 3a 09 09 09 09 09 09 09 09 5c 0a 20 -1 :........\.
c780: 20 20 20 20 20 28 41 53 53 49 47 4e 28 54 59 50 (ASSIGN(TYP
c790: 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 E,TYPE_SIZE,TYPE
c7a0: 5f 41 4c 49 47 4e 2c 28 76 6f 69 64 2a 29 28 4c _ALIGN,(void*)(L
c7b0: 49 53 54 29 2e 65 70 74 72 2c 56 41 4c 29 2c 09 IST).eptr,VAL),.
c7c0: 5c 0a 20 20 20 20 20 20 20 28 4c 49 53 54 29 2e \. (LIST).
c7d0: 61 70 74 72 5b 2d 31 5d 20 3d 20 28 5f 5f 61 76 aptr[-1] = (__av
c7e0: 77 6f 72 64 29 28 4c 49 53 54 29 2e 65 70 74 72 word)(LIST).eptr
c7f0: 2c 09 09 09 09 5c 0a 20 20 20 20 20 20 20 30 29 ,....\. 0)
c800: 29 09 09 09 09 09 09 09 09 5c 0a 20 20 20 3a 20 )........\. :
c810: 28 28 28 4c 49 53 54 29 2e 61 70 74 72 20 3d 09 (((LIST).aptr =.
c820: 09 09 09 09 09 09 5c 0a 20 20 20 20 20 20 20 28 ......\. (
c830: 5f 5f 61 76 77 6f 72 64 2a 29 28 28 28 5f 5f 61 __avword*)(((__a
c840: 76 77 6f 72 64 29 28 4c 49 53 54 29 2e 61 70 74 vword)(LIST).apt
c850: 72 2b 28 54 59 50 45 5f 53 49 5a 45 29 2b 28 54 r+(TYPE_SIZE)+(T
c860: 59 50 45 5f 41 4c 49 47 4e 29 2d 31 29 20 26 20 YPE_ALIGN)-1) &
c870: 2d 28 6c 6f 6e 67 29 28 54 59 50 45 5f 41 4c 49 -(long)(TYPE_ALI
c880: 47 4e 29 29 29 5c 0a 20 20 20 20 20 20 3e 20 5f GN)))\. > _
c890: 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29 09 09 _av_eptr(LIST)..
c8a0: 09 09 09 09 09 5c 0a 20 20 20 20 20 20 3f 20 2d .....\. ? -
c8b0: 31 20 3a 20 28 41 53 53 49 47 4e 28 54 59 50 45 1 : (ASSIGN(TYPE
c8c0: 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f ,TYPE_SIZE,TYPE_
c8d0: 41 4c 49 47 4e 2c 28 76 6f 69 64 2a 29 28 28 5f ALIGN,(void*)((_
c8e0: 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e 61 _avword)(LIST).a
c8f0: 70 74 72 2d 28 54 59 50 45 5f 53 49 5a 45 29 29 ptr-(TYPE_SIZE))
c900: 2c 56 41 4c 29 2c 5c 0a 09 20 20 20 20 20 20 28 ,VAL),\.. (
c910: 4c 49 53 54 29 2e 61 70 74 72 20 3d 20 28 5f 5f LIST).aptr = (__
c920: 61 76 77 6f 72 64 2a 29 28 28 28 5f 5f 61 76 77 avword*)(((__avw
c930: 6f 72 64 29 28 4c 49 53 54 29 2e 61 70 74 72 2b ord)(LIST).aptr+
c940: 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 sizeof(__avword)
c950: 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 73 69 7a -1) & -(long)siz
c960: 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 29 2c 5c eof(__avword)),\
c970: 0a 09 20 20 20 20 20 20 28 28 4c 49 53 54 29 2e .. ((LIST).
c980: 61 6e 75 6d 20 3c 20 31 36 09 09 09 09 09 09 5c anum < 16......\
c990: 0a 09 09 26 26 20 28 28 4c 49 53 54 29 2e 66 61 ...&& ((LIST).fa
c9a0: 72 67 5f 6d 61 73 6b 20 7c 3d 20 28 2d 31 20 3c rg_mask |= (-1 <
c9b0: 3c 20 28 4c 49 53 54 29 2e 61 6e 75 6d 29 2c 09 < (LIST).anum),.
c9c0: 09 5c 0a 09 09 20 20 20 20 28 4c 49 53 54 29 2e .\... (LIST).
c9d0: 64 61 72 67 5f 6d 61 73 6b 20 7c 3d 20 28 2d 31 darg_mask |= (-1
c9e0: 20 3c 3c 20 28 4c 49 53 54 29 2e 61 6e 75 6d 29 << (LIST).anum)
c9f0: 29 29 2c 09 09 5c 0a 09 20 20 20 20 20 20 28 4c )),..\.. (L
ca00: 49 53 54 29 2e 61 6e 75 6d 20 2b 3d 20 28 28 28 IST).anum += (((
ca10: 28 28 54 59 50 45 5f 53 49 5a 45 29 2b 28 54 59 ((TYPE_SIZE)+(TY
ca20: 50 45 5f 41 4c 49 47 4e 29 2d 31 29 20 26 20 2d PE_ALIGN)-1) & -
ca30: 28 6c 6f 6e 67 29 28 54 59 50 45 5f 41 4c 49 47 (long)(TYPE_ALIG
ca40: 4e 29 29 20 2b 20 73 69 7a 65 6f 66 28 5f 5f 61 N)) + sizeof(__a
ca50: 76 77 6f 72 64 29 2d 31 29 20 26 20 2d 28 6c 6f vword)-1) & -(lo
ca60: 6e 67 29 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f ng)sizeof(__avwo
ca70: 72 64 29 29 2f 73 69 7a 65 6f 66 28 5f 5f 61 76 rd))/sizeof(__av
ca80: 77 6f 72 64 29 2c 5c 0a 09 20 20 20 20 20 20 28 word),\.. (
ca90: 4c 49 53 54 29 2e 66 61 72 67 5f 6d 61 73 6b 20 LIST).farg_mask
caa0: 26 3d 20 28 31 20 3c 3c 20 28 28 4c 49 53 54 29 &= (1 << ((LIST)
cab0: 2e 61 6e 75 6d 20 3c 20 31 36 20 3f 20 28 4c 49 .anum < 16 ? (LI
cac0: 53 54 29 2e 61 6e 75 6d 20 3a 20 31 36 29 29 20 ST).anum : 16))
cad0: 2d 20 31 2c 20 5c 0a 09 20 20 20 20 20 20 28 4c - 1, \.. (L
cae0: 49 53 54 29 2e 64 61 72 67 5f 6d 61 73 6b 20 26 IST).darg_mask &
caf0: 3d 20 28 31 20 3c 3c 20 28 28 4c 49 53 54 29 2e = (1 << ((LIST).
cb00: 61 6e 75 6d 20 3c 20 31 36 20 3f 20 28 4c 49 53 anum < 16 ? (LIS
cb10: 54 29 2e 61 6e 75 6d 20 3a 20 31 36 29 29 20 2d T).anum : 16)) -
cb20: 20 31 2c 20 5c 0a 09 20 20 20 20 20 20 30 29 29 1, \.. 0))
cb30: 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 ).#endif.#if def
cb40: 69 6e 65 64 28 5f 5f 68 70 70 61 5f 5f 29 0a 2f ined(__hppa__)./
cb50: 2a 20 53 74 72 75 63 74 75 72 65 73 20 3c 3d 20 * Structures <=
cb60: 38 20 62 79 74 65 73 20 61 72 65 20 70 61 73 73 8 bytes are pass
cb70: 65 64 20 61 73 20 65 6d 62 65 64 64 65 64 20 63 ed as embedded c
cb80: 6f 70 69 65 73 20 6f 6e 20 74 68 65 20 61 72 67 opies on the arg
cb90: 20 73 74 61 63 6b 2e 0a 20 2a 20 42 69 67 20 73 stack.. * Big s
cba0: 74 72 75 63 74 75 72 65 73 20 61 72 65 20 70 61 tructures are pa
cbb0: 73 73 65 64 20 61 73 20 70 6f 69 6e 74 65 72 73 ssed as pointers
cbc0: 20 74 6f 20 63 61 6c 6c 65 72 2d 6d 61 64 65 20 to caller-made
cbd0: 6c 6f 63 61 6c 20 63 6f 70 69 65 73 2e 0a 20 2a local copies.. *
cbe0: 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 73 /.#define __av_s
cbf0: 74 72 75 63 74 28 4c 49 53 54 2c 54 59 50 45 2c truct(LIST,TYPE,
cc00: 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 TYPE_SIZE,TYPE_A
cc10: 4c 49 47 4e 2c 41 53 53 49 47 4e 2c 56 41 4c 29 LIGN,ASSIGN,VAL)
cc20: 09 09 09 5c 0a 20 20 28 28 54 59 50 45 5f 53 49 ...\. ((TYPE_SI
cc30: 5a 45 29 20 3e 20 38 09 09 09 09 09 09 09 09 5c ZE) > 8........\
cc40: 0a 20 20 20 3f 20 28 2d 2d 28 4c 49 53 54 29 2e . ? (--(LIST).
cc50: 61 70 74 72 09 09 09 09 09 09 09 09 5c 0a 20 20 aptr........\.
cc60: 20 20 20 20 3c 20 28 28 4c 49 53 54 29 2e 65 70 < ((LIST).ep
cc70: 74 72 20 3d 20 28 5f 5f 61 76 77 6f 72 64 2a 29 tr = (__avword*)
cc80: 28 28 6c 6f 6e 67 29 28 4c 49 53 54 29 2e 65 70 ((long)(LIST).ep
cc90: 74 72 20 2b 20 28 28 28 54 59 50 45 5f 53 49 5a tr + (((TYPE_SIZ
cca0: 45 29 20 2b 20 37 29 20 26 20 2d 38 29 29 29 20 E) + 7) & -8)))
ccb0: 5c 0a 20 20 20 20 20 20 3f 20 2d 31 09 09 09 09 \. ? -1....
ccc0: 09 09 09 09 09 5c 0a 20 20 20 20 20 20 3a 20 28 .....\. : (
ccd0: 41 53 53 49 47 4e 28 54 59 50 45 2c 54 59 50 45 ASSIGN(TYPE,TYPE
cce0: 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e _SIZE,TYPE_ALIGN
ccf0: 2c 28 76 6f 69 64 2a 29 28 28 6c 6f 6e 67 29 28 ,(void*)((long)(
cd00: 4c 49 53 54 29 2e 65 70 74 72 20 2d 20 28 28 28 LIST).eptr - (((
cd10: 54 59 50 45 5f 53 49 5a 45 29 20 2b 20 37 29 20 TYPE_SIZE) + 7)
cd20: 26 20 2d 38 29 29 2c 20 56 41 4c 29 2c 20 5c 0a & -8)), VAL), \.
cd30: 09 20 2a 28 4c 49 53 54 29 2e 61 70 74 72 20 3d . *(LIST).aptr =
cd40: 20 28 5f 5f 61 76 77 6f 72 64 29 28 28 6c 6f 6e (__avword)((lon
cd50: 67 29 28 4c 49 53 54 29 2e 65 70 74 72 20 2d 20 g)(LIST).eptr -
cd60: 28 28 28 54 59 50 45 5f 53 49 5a 45 29 20 2b 20 (((TYPE_SIZE) +
cd70: 37 29 20 26 20 2d 38 29 29 2c 20 5c 0a 09 20 30 7) & -8)), \.. 0
cd80: 29 29 09 09 09 09 09 09 09 09 09 5c 0a 20 20 20 )).........\.
cd90: 3a 20 28 28 54 59 50 45 5f 53 49 5a 45 29 20 3e : ((TYPE_SIZE) >
cda0: 20 34 09 09 09 09 09 09 09 09 5c 0a 20 20 20 20 4........\.
cdb0: 20 20 3f 20 28 28 28 4c 49 53 54 29 2e 61 70 74 ? (((LIST).apt
cdc0: 72 20 3d 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28 r = (__avword*)(
cdd0: 28 28 28 6c 6f 6e 67 29 28 4c 49 53 54 29 2e 61 (((long)(LIST).a
cde0: 70 74 72 20 26 20 2d 38 29 20 2d 20 28 6c 6f 6e ptr & -8) - (lon
cdf0: 67 29 28 54 59 50 45 5f 53 49 5a 45 29 29 20 26 g)(TYPE_SIZE)) &
ce00: 20 2d 38 29 29 20 5c 0a 09 20 20 3c 20 26 28 4c -8)) \.. < &(L
ce10: 49 53 54 29 2e 61 72 67 73 5b 30 5d 09 09 09 09 IST).args[0]....
ce20: 09 09 09 5c 0a 09 20 20 3f 20 2d 31 20 3a 20 28 ...\.. ? -1 : (
ce30: 41 53 53 49 47 4e 28 54 59 50 45 2c 54 59 50 45 ASSIGN(TYPE,TYPE
ce40: 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e _SIZE,TYPE_ALIGN
ce50: 2c 28 76 6f 69 64 2a 29 28 4c 49 53 54 29 2e 61 ,(void*)(LIST).a
ce60: 70 74 72 2c 56 41 4c 29 2c 20 30 29 29 09 5c 0a ptr,VAL), 0)).\.
ce70: 20 20 20 20 20 20 3a 20 2f 2a 20 46 49 58 4d 45 : /* FIXME
ce80: 3a 20 67 63 63 2d 32 2e 36 2e 33 20 70 61 73 73 : gcc-2.6.3 pass
ce90: 65 73 20 73 74 72 75 63 74 75 72 65 73 20 3c 3d es structures <=
cea0: 20 34 20 62 79 74 65 73 20 69 6e 20 6d 65 6d 6f 4 bytes in memo
ceb0: 72 79 20 6c 65 66 74 2d 61 64 6a 75 73 74 65 64 ry left-adjusted
cec0: 21 20 3f 3f 20 2a 2f 5c 0a 20 20 20 20 20 20 20 ! ?? */\.
ced0: 20 28 28 28 4c 49 53 54 29 2e 61 70 74 72 20 3d (((LIST).aptr =
cee0: 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28 28 28 6c (__avword*)(((l
cef0: 6f 6e 67 29 28 4c 49 53 54 29 2e 61 70 74 72 20 ong)(LIST).aptr
cf00: 26 20 2d 34 29 20 2d 20 28 6c 6f 6e 67 29 28 54 & -4) - (long)(T
cf10: 59 50 45 5f 53 49 5a 45 29 29 29 20 5c 0a 09 20 YPE_SIZE))) \..
cf20: 20 3c 20 26 28 4c 49 53 54 29 2e 61 72 67 73 5b < &(LIST).args[
cf30: 30 5d 09 09 09 09 09 09 09 5c 0a 09 20 20 3f 20 0].......\.. ?
cf40: 2d 31 20 3a 20 28 41 53 53 49 47 4e 28 54 59 50 -1 : (ASSIGN(TYP
cf50: 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 E,TYPE_SIZE,TYPE
cf60: 5f 41 4c 49 47 4e 2c 28 76 6f 69 64 2a 29 28 4c _ALIGN,(void*)(L
cf70: 49 53 54 29 2e 61 70 74 72 2c 56 41 4c 29 2c 09 IST).aptr,VAL),.
cf80: 5c 0a 09 09 20 20 28 4c 49 53 54 29 2e 61 70 74 \... (LIST).apt
cf90: 72 20 3d 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28 r = (__avword*)(
cfa0: 28 6c 6f 6e 67 29 28 4c 49 53 54 29 2e 61 70 74 (long)(LIST).apt
cfb0: 72 20 26 20 2d 34 29 2c 09 09 5c 0a 09 09 20 20 r & -4),..\...
cfc0: 30 29 29 29 29 0a 23 65 6e 64 69 66 0a 23 69 66 0)))).#endif.#if
cfd0: 20 64 65 66 69 6e 65 64 28 5f 5f 78 38 36 5f 36 defined(__x86_6
cfe0: 34 5f 5f 29 0a 2f 2a 20 53 74 72 75 63 74 75 72 4__)./* Structur
cff0: 65 73 20 3c 3d 20 31 36 20 62 79 74 65 73 20 63 es <= 16 bytes c
d000: 61 6e 20 62 65 20 70 61 73 73 65 64 20 69 6e 20 an be passed in
d010: 69 6e 74 65 67 65 72 20 6f 72 20 66 6c 6f 61 74 integer or float
d020: 69 6e 67 2d 70 6f 69 6e 74 20 72 65 67 69 73 74 ing-point regist
d030: 65 72 73 0a 20 20 20 69 66 20 74 68 65 72 65 20 ers. if there
d040: 69 73 20 65 6e 6f 75 67 68 20 72 6f 6f 6d 20 66 is enough room f
d050: 6f 72 20 74 68 65 20 77 68 6f 6c 65 20 6e 75 6d or the whole num
d060: 62 65 72 20 6f 66 20 77 6f 72 64 73 20 6e 65 65 ber of words nee
d070: 64 65 64 20 62 79 20 74 68 65 20 73 74 72 75 63 ded by the struc
d080: 74 75 72 65 0a 20 20 20 69 6e 20 74 68 65 20 63 ture. in the c
d090: 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 69 61 72 orresponding iar
d0a0: 67 73 2f 66 61 72 67 73 20 62 6c 6f 63 6b 2e 20 gs/fargs block.
d0b0: 57 65 20 63 61 6e 27 74 20 64 69 73 74 69 6e 67 We can't disting
d0c0: 75 69 73 68 20 74 68 65 20 74 77 6f 20 63 61 73 uish the two cas
d0d0: 65 73 0a 20 20 20 61 6e 64 20 73 75 70 70 6f 72 es. and suppor
d0e0: 74 20 6f 6e 6c 79 20 70 61 73 73 69 6e 67 20 69 t only passing i
d0f0: 6e 20 69 6e 74 65 67 65 72 20 72 65 67 69 73 74 n integer regist
d100: 65 72 73 2e 20 4f 74 68 65 72 20 73 74 72 75 63 ers. Other struc
d110: 74 75 72 65 73 20 61 72 65 20 70 61 73 73 65 64 tures are passed
d120: 0a 20 20 20 6f 6e 20 74 68 65 20 61 72 67 20 73 . on the arg s
d130: 74 61 63 6b 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 tack. */.#define
d140: 20 5f 5f 61 76 5f 73 74 72 75 63 74 28 4c 49 53 __av_struct(LIS
d150: 54 2c 54 59 50 45 2c 54 59 50 45 5f 53 49 5a 45 T,TYPE,TYPE_SIZE
d160: 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 41 53 53 49 ,TYPE_ALIGN,ASSI
d170: 47 4e 2c 56 41 4c 29 09 09 09 5c 0a 20 20 28 28 GN,VAL)...\. ((
d180: 4c 49 53 54 29 2e 69 61 70 74 72 20 2b 20 28 28 LIST).iaptr + ((
d190: 54 59 50 45 5f 53 49 5a 45 29 20 2b 20 73 69 7a TYPE_SIZE) + siz
d1a0: 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 2d 31 29 eof(__avword)-1)
d1b0: 20 2f 20 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f / sizeof(__avwo
d1c0: 72 64 29 20 3c 3d 20 26 28 4c 49 53 54 29 2e 69 rd) <= &(LIST).i
d1d0: 61 72 67 73 5b 36 5d 20 5c 0a 20 20 20 3f 20 28 args[6] \. ? (
d1e0: 41 53 53 49 47 4e 28 54 59 50 45 2c 54 59 50 45 ASSIGN(TYPE,TYPE
d1f0: 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e _SIZE,TYPE_ALIGN
d200: 2c 28 76 6f 69 64 2a 29 28 4c 49 53 54 29 2e 69 ,(void*)(LIST).i
d210: 61 70 74 72 2c 56 41 4c 29 2c 09 09 5c 0a 20 20 aptr,VAL),..\.
d220: 20 20 20 20 28 4c 49 53 54 29 2e 69 61 70 74 72 (LIST).iaptr
d230: 20 2b 3d 20 28 28 54 59 50 45 5f 53 49 5a 45 29 += ((TYPE_SIZE)
d240: 20 2b 20 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f + sizeof(__avwo
d250: 72 64 29 2d 31 29 20 2f 20 73 69 7a 65 6f 66 28 rd)-1) / sizeof(
d260: 5f 5f 61 76 77 6f 72 64 29 2c 09 5c 0a 20 20 20 __avword),.\.
d270: 20 20 20 30 29 09 09 09 09 09 09 09 09 09 5c 0a 0).........\.
d280: 20 20 20 3a 20 28 28 4c 49 53 54 29 2e 61 70 74 : ((LIST).apt
d290: 72 20 3d 20 28 5f 5f 61 76 77 6f 72 64 2a 29 28 r = (__avword*)(
d2a0: 28 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29 (__avword)(LIST)
d2b0: 2e 61 70 74 72 20 2b 20 28 28 28 54 59 50 45 5f .aptr + (((TYPE_
d2c0: 53 49 5a 45 29 2b 5f 5f 61 76 5f 73 74 72 75 63 SIZE)+__av_struc
d2d0: 74 5f 61 6c 69 67 6e 6d 65 6e 74 28 54 59 50 45 t_alignment(TYPE
d2e0: 5f 41 4c 49 47 4e 29 2d 31 29 20 26 20 2d 28 6c _ALIGN)-1) & -(l
d2f0: 6f 6e 67 29 5f 5f 61 76 5f 73 74 72 75 63 74 5f ong)__av_struct_
d300: 61 6c 69 67 6e 6d 65 6e 74 28 54 59 50 45 5f 41 alignment(TYPE_A
d310: 4c 49 47 4e 29 29 29 2c 20 5c 0a 20 20 20 20 20 LIGN))), \.
d320: 20 28 28 4c 49 53 54 29 2e 61 70 74 72 20 3e 20 ((LIST).aptr >
d330: 5f 5f 61 76 5f 65 70 74 72 28 4c 49 53 54 29 09 __av_eptr(LIST).
d340: 09 09 09 09 09 5c 0a 20 20 20 20 20 20 20 3f 20 .....\. ?
d350: 2d 31 20 3a 20 28 41 53 53 49 47 4e 28 54 59 50 -1 : (ASSIGN(TYP
d360: 45 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 E,TYPE_SIZE,TYPE
d370: 5f 41 4c 49 47 4e 2c 28 76 6f 69 64 2a 29 28 28 _ALIGN,(void*)((
d380: 5f 5f 61 76 77 6f 72 64 29 28 4c 49 53 54 29 2e __avword)(LIST).
d390: 61 70 74 72 20 2d 20 28 28 28 54 59 50 45 5f 53 aptr - (((TYPE_S
d3a0: 49 5a 45 29 2b 5f 5f 61 76 5f 73 74 72 75 63 74 IZE)+__av_struct
d3b0: 5f 61 6c 69 67 6e 6d 65 6e 74 28 54 59 50 45 5f _alignment(TYPE_
d3c0: 41 4c 49 47 4e 29 2d 31 29 20 26 20 2d 28 6c 6f ALIGN)-1) & -(lo
d3d0: 6e 67 29 5f 5f 61 76 5f 73 74 72 75 63 74 5f 61 ng)__av_struct_a
d3e0: 6c 69 67 6e 6d 65 6e 74 28 54 59 50 45 5f 41 4c lignment(TYPE_AL
d3f0: 49 47 4e 29 29 29 2c 56 41 4c 29 2c 5c 0a 09 20 IGN))),VAL),\..
d400: 20 20 20 20 20 20 30 29 29 29 29 0a 23 65 6e 64 0)))).#end
d410: 69 66 0a 0a 2f 2a 0a 20 2a 20 63 61 6c 6c 69 6e if../*. * callin
d420: 67 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 0a 20 g the function.
d430: 2a 2f 0a 0a 23 64 65 66 69 6e 65 20 61 76 5f 63 */..#define av_c
d440: 61 6c 6c 28 4c 49 53 54 29 20 5f 5f 62 75 69 6c all(LIST) __buil
d450: 74 69 6e 5f 61 76 63 61 6c 6c 28 26 28 4c 49 53 tin_avcall(&(LIS
d460: 54 29 29 0a 0a 2f 2a 20 44 65 74 65 72 6d 69 6e T))../* Determin
d470: 65 20 77 68 65 74 68 65 72 20 61 20 73 74 72 75 e whether a stru
d480: 63 74 20 74 79 70 65 20 69 73 20 77 6f 72 64 2d ct type is word-
d490: 73 70 6c 69 74 74 61 62 6c 65 2c 20 69 2e 65 2e splittable, i.e.
d4a0: 20 77 68 65 74 68 65 72 20 65 61 63 68 20 6f 66 whether each of
d4b0: 0a 20 2a 20 69 74 73 20 63 6f 6d 70 6f 6e 65 6e . * its componen
d4c0: 74 73 20 66 69 74 20 69 6e 74 6f 20 61 20 72 65 ts fit into a re
d4d0: 67 69 73 74 65 72 2e 0a 20 2a 20 54 68 65 20 65 gister.. * The e
d4e0: 6e 74 69 72 65 20 63 6f 6d 70 75 74 61 74 69 6f ntire computatio
d4f0: 6e 20 69 73 20 64 6f 6e 65 20 61 74 20 63 6f 6d n is done at com
d500: 70 69 6c 65 20 74 69 6d 65 2e 0a 20 2a 2f 0a 23 pile time.. */.#
d510: 64 65 66 69 6e 65 20 61 76 5f 77 6f 72 64 5f 73 define av_word_s
d520: 70 6c 69 74 74 61 62 6c 65 5f 31 28 73 6c 6f 74 plittable_1(slot
d530: 31 29 20 20 5c 0a 20 20 28 5f 5f 61 76 5f 6f 66 1) \. (__av_of
d540: 66 73 65 74 31 28 73 6c 6f 74 31 29 2f 73 69 7a fset1(slot1)/siz
d550: 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 20 3d 3d eof(__avword) ==
d560: 20 28 5f 5f 61 76 5f 6f 66 66 73 65 74 31 28 73 (__av_offset1(s
d570: 6c 6f 74 31 29 2b 73 69 7a 65 6f 66 28 73 6c 6f lot1)+sizeof(slo
d580: 74 31 29 2d 31 29 2f 73 69 7a 65 6f 66 28 5f 5f t1)-1)/sizeof(__
d590: 61 76 77 6f 72 64 29 29 0a 23 64 65 66 69 6e 65 avword)).#define
d5a0: 20 61 76 5f 77 6f 72 64 5f 73 70 6c 69 74 74 61 av_word_splitta
d5b0: 62 6c 65 5f 32 28 73 6c 6f 74 31 2c 73 6c 6f 74 ble_2(slot1,slot
d5c0: 32 29 20 20 5c 0a 20 20 28 28 5f 5f 61 76 5f 6f 2) \. ((__av_o
d5d0: 66 66 73 65 74 31 28 73 6c 6f 74 31 29 2f 73 69 ffset1(slot1)/si
d5e0: 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 20 3d zeof(__avword) =
d5f0: 3d 20 28 5f 5f 61 76 5f 6f 66 66 73 65 74 31 28 = (__av_offset1(
d600: 73 6c 6f 74 31 29 2b 73 69 7a 65 6f 66 28 73 6c slot1)+sizeof(sl
d610: 6f 74 31 29 2d 31 29 2f 73 69 7a 65 6f 66 28 5f ot1)-1)/sizeof(_
d620: 5f 61 76 77 6f 72 64 29 29 20 5c 0a 20 20 20 26 _avword)) \. &
d630: 26 20 28 5f 5f 61 76 5f 6f 66 66 73 65 74 32 28 & (__av_offset2(
d640: 73 6c 6f 74 31 2c 73 6c 6f 74 32 29 2f 73 69 7a slot1,slot2)/siz
d650: 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 20 3d 3d eof(__avword) ==
d660: 20 28 5f 5f 61 76 5f 6f 66 66 73 65 74 32 28 73 (__av_offset2(s
d670: 6c 6f 74 31 2c 73 6c 6f 74 32 29 2b 73 69 7a 65 lot1,slot2)+size
d680: 6f 66 28 73 6c 6f 74 32 29 2d 31 29 2f 73 69 7a of(slot2)-1)/siz
d690: 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 29 20 5c eof(__avword)) \
d6a0: 0a 20 20 29 0a 23 64 65 66 69 6e 65 20 61 76 5f . ).#define av_
d6b0: 77 6f 72 64 5f 73 70 6c 69 74 74 61 62 6c 65 5f word_splittable_
d6c0: 33 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 2c 73 6c 3(slot1,slot2,sl
d6d0: 6f 74 33 29 20 20 5c 0a 20 20 28 28 5f 5f 61 76 ot3) \. ((__av
d6e0: 5f 6f 66 66 73 65 74 31 28 73 6c 6f 74 31 29 2f _offset1(slot1)/
d6f0: 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 sizeof(__avword)
d700: 20 3d 3d 20 28 5f 5f 61 76 5f 6f 66 66 73 65 74 == (__av_offset
d710: 31 28 73 6c 6f 74 31 29 2b 73 69 7a 65 6f 66 28 1(slot1)+sizeof(
d720: 73 6c 6f 74 31 29 2d 31 29 2f 73 69 7a 65 6f 66 slot1)-1)/sizeof
d730: 28 5f 5f 61 76 77 6f 72 64 29 29 20 5c 0a 20 20 (__avword)) \.
d740: 20 26 26 20 28 5f 5f 61 76 5f 6f 66 66 73 65 74 && (__av_offset
d750: 32 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 29 2f 73 2(slot1,slot2)/s
d760: 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 20 izeof(__avword)
d770: 3d 3d 20 28 5f 5f 61 76 5f 6f 66 66 73 65 74 32 == (__av_offset2
d780: 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 29 2b 73 69 (slot1,slot2)+si
d790: 7a 65 6f 66 28 73 6c 6f 74 32 29 2d 31 29 2f 73 zeof(slot2)-1)/s
d7a0: 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 29 izeof(__avword))
d7b0: 20 5c 0a 20 20 20 26 26 20 28 5f 5f 61 76 5f 6f \. && (__av_o
d7c0: 66 66 73 65 74 33 28 73 6c 6f 74 31 2c 73 6c 6f ffset3(slot1,slo
d7d0: 74 32 2c 73 6c 6f 74 33 29 2f 73 69 7a 65 6f 66 t2,slot3)/sizeof
d7e0: 28 5f 5f 61 76 77 6f 72 64 29 20 3d 3d 20 28 5f (__avword) == (_
d7f0: 5f 61 76 5f 6f 66 66 73 65 74 33 28 73 6c 6f 74 _av_offset3(slot
d800: 31 2c 73 6c 6f 74 32 2c 73 6c 6f 74 33 29 2b 73 1,slot2,slot3)+s
d810: 69 7a 65 6f 66 28 73 6c 6f 74 33 29 2d 31 29 2f izeof(slot3)-1)/
d820: 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 72 64 29 sizeof(__avword)
d830: 29 20 5c 0a 20 20 29 0a 23 64 65 66 69 6e 65 20 ) \. ).#define
d840: 61 76 5f 77 6f 72 64 5f 73 70 6c 69 74 74 61 62 av_word_splittab
d850: 6c 65 5f 34 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 le_4(slot1,slot2
d860: 2c 73 6c 6f 74 33 2c 73 6c 6f 74 34 29 20 20 5c ,slot3,slot4) \
d870: 0a 20 20 28 28 5f 5f 61 76 5f 6f 66 66 73 65 74 . ((__av_offset
d880: 31 28 73 6c 6f 74 31 29 2f 73 69 7a 65 6f 66 28 1(slot1)/sizeof(
d890: 5f 5f 61 76 77 6f 72 64 29 20 3d 3d 20 28 5f 5f __avword) == (__
d8a0: 61 76 5f 6f 66 66 73 65 74 31 28 73 6c 6f 74 31 av_offset1(slot1
d8b0: 29 2b 73 69 7a 65 6f 66 28 73 6c 6f 74 31 29 2d )+sizeof(slot1)-
d8c0: 31 29 2f 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 1)/sizeof(__avwo
d8d0: 72 64 29 29 20 5c 0a 20 20 20 26 26 20 28 5f 5f rd)) \. && (__
d8e0: 61 76 5f 6f 66 66 73 65 74 32 28 73 6c 6f 74 31 av_offset2(slot1
d8f0: 2c 73 6c 6f 74 32 29 2f 73 69 7a 65 6f 66 28 5f ,slot2)/sizeof(_
d900: 5f 61 76 77 6f 72 64 29 20 3d 3d 20 28 5f 5f 61 _avword) == (__a
d910: 76 5f 6f 66 66 73 65 74 32 28 73 6c 6f 74 31 2c v_offset2(slot1,
d920: 73 6c 6f 74 32 29 2b 73 69 7a 65 6f 66 28 73 6c slot2)+sizeof(sl
d930: 6f 74 32 29 2d 31 29 2f 73 69 7a 65 6f 66 28 5f ot2)-1)/sizeof(_
d940: 5f 61 76 77 6f 72 64 29 29 20 5c 0a 20 20 20 26 _avword)) \. &
d950: 26 20 28 5f 5f 61 76 5f 6f 66 66 73 65 74 33 28 & (__av_offset3(
d960: 73 6c 6f 74 31 2c 73 6c 6f 74 32 2c 73 6c 6f 74 slot1,slot2,slot
d970: 33 29 2f 73 69 7a 65 6f 66 28 5f 5f 61 76 77 6f 3)/sizeof(__avwo
d980: 72 64 29 20 3d 3d 20 28 5f 5f 61 76 5f 6f 66 66 rd) == (__av_off
d990: 73 65 74 33 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 set3(slot1,slot2
d9a0: 2c 73 6c 6f 74 33 29 2b 73 69 7a 65 6f 66 28 73 ,slot3)+sizeof(s
d9b0: 6c 6f 74 33 29 2d 31 29 2f 73 69 7a 65 6f 66 28 lot3)-1)/sizeof(
d9c0: 5f 5f 61 76 77 6f 72 64 29 29 20 5c 0a 20 20 20 __avword)) \.
d9d0: 26 26 20 28 5f 5f 61 76 5f 6f 66 66 73 65 74 34 && (__av_offset4
d9e0: 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 2c 73 6c 6f (slot1,slot2,slo
d9f0: 74 33 2c 73 6c 6f 74 34 29 2f 73 69 7a 65 6f 66 t3,slot4)/sizeof
da00: 28 5f 5f 61 76 77 6f 72 64 29 20 3d 3d 20 28 5f (__avword) == (_
da10: 5f 61 76 5f 6f 66 66 73 65 74 34 28 73 6c 6f 74 _av_offset4(slot
da20: 31 2c 73 6c 6f 74 32 2c 73 6c 6f 74 33 2c 73 6c 1,slot2,slot3,sl
da30: 6f 74 34 29 2b 73 69 7a 65 6f 66 28 73 6c 6f 74 ot4)+sizeof(slot
da40: 34 29 2d 31 29 2f 73 69 7a 65 6f 66 28 5f 5f 61 4)-1)/sizeof(__a
da50: 76 77 6f 72 64 29 29 20 5c 0a 20 20 29 0a 23 64 vword)) \. ).#d
da60: 65 66 69 6e 65 20 5f 5f 61 76 5f 6f 66 66 73 65 efine __av_offse
da70: 74 31 28 73 6c 6f 74 31 29 20 20 5c 0a 20 20 30 t1(slot1) \. 0
da80: 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 6f 66 .#define __av_of
da90: 66 73 65 74 32 28 73 6c 6f 74 31 2c 73 6c 6f 74 fset2(slot1,slot
daa0: 32 29 20 20 5c 0a 20 20 28 28 5f 5f 61 76 5f 6f 2) \. ((__av_o
dab0: 66 66 73 65 74 31 28 73 6c 6f 74 31 29 2b 73 69 ffset1(slot1)+si
dac0: 7a 65 6f 66 28 73 6c 6f 74 31 29 2b 5f 5f 41 56 zeof(slot1)+__AV
dad0: 5f 61 6c 69 67 6e 6f 66 28 73 6c 6f 74 32 29 2d _alignof(slot2)-
dae0: 31 29 20 26 20 2d 28 6c 6f 6e 67 29 5f 5f 41 56 1) & -(long)__AV
daf0: 5f 61 6c 69 67 6e 6f 66 28 73 6c 6f 74 32 29 29 _alignof(slot2))
db00: 0a 23 64 65 66 69 6e 65 20 5f 5f 61 76 5f 6f 66 .#define __av_of
db10: 66 73 65 74 33 28 73 6c 6f 74 31 2c 73 6c 6f 74 fset3(slot1,slot
db20: 32 2c 73 6c 6f 74 33 29 20 20 5c 0a 20 20 28 28 2,slot3) \. ((
db30: 5f 5f 61 76 5f 6f 66 66 73 65 74 32 28 73 6c 6f __av_offset2(slo
db40: 74 31 2c 73 6c 6f 74 32 29 2b 73 69 7a 65 6f 66 t1,slot2)+sizeof
db50: 28 73 6c 6f 74 32 29 2b 5f 5f 41 56 5f 61 6c 69 (slot2)+__AV_ali
db60: 67 6e 6f 66 28 73 6c 6f 74 33 29 2d 31 29 20 26 gnof(slot3)-1) &
db70: 20 2d 28 6c 6f 6e 67 29 5f 5f 41 56 5f 61 6c 69 -(long)__AV_ali
db80: 67 6e 6f 66 28 73 6c 6f 74 33 29 29 0a 23 64 65 gnof(slot3)).#de
db90: 66 69 6e 65 20 5f 5f 61 76 5f 6f 66 66 73 65 74 fine __av_offset
dba0: 34 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 2c 73 6c 4(slot1,slot2,sl
dbb0: 6f 74 33 2c 73 6c 6f 74 34 29 20 20 5c 0a 20 20 ot3,slot4) \.
dbc0: 28 28 5f 5f 61 76 5f 6f 66 66 73 65 74 33 28 73 ((__av_offset3(s
dbd0: 6c 6f 74 31 2c 73 6c 6f 74 32 2c 73 6c 6f 74 33 lot1,slot2,slot3
dbe0: 29 2b 73 69 7a 65 6f 66 28 73 6c 6f 74 33 29 2b )+sizeof(slot3)+
dbf0: 5f 5f 41 56 5f 61 6c 69 67 6e 6f 66 28 73 6c 6f __AV_alignof(slo
dc00: 74 34 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 t4)-1) & -(long)
dc10: 5f 5f 41 56 5f 61 6c 69 67 6e 6f 66 28 73 6c 6f __AV_alignof(slo
dc20: 74 34 29 29 0a 0a 2f 2a 0a 20 2a 20 4d 69 73 63 t4))../*. * Misc
dc30: 65 6c 6c 61 6e 65 6f 75 73 20 64 65 63 6c 61 72 ellaneous declar
dc40: 61 74 69 6f 6e 73 2e 0a 20 2a 2f 0a 0a 23 69 66 ations.. */..#if
dc50: 20 64 65 66 69 6e 65 64 28 5f 5f 53 54 44 43 5f defined(__STDC_
dc60: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f _) || defined(__
dc70: 47 4e 55 43 5f 5f 29 20 7c 7c 20 64 65 66 69 6e GNUC__) || defin
dc80: 65 64 28 5f 5f 63 70 6c 75 73 70 6c 75 73 29 0a ed(__cplusplus).
dc90: 65 78 74 65 72 6e 20 69 6e 74 20 5f 5f 62 75 69 extern int __bui
dca0: 6c 74 69 6e 5f 61 76 63 61 6c 6c 20 28 61 76 5f ltin_avcall (av_
dcb0: 61 6c 69 73 74 2a 20 6c 29 3b 0a 65 78 74 65 72 alist* l);.exter
dcc0: 6e 20 76 6f 69 64 20 5f 5f 73 74 72 75 63 74 63 n void __structc
dcd0: 70 79 20 28 76 6f 69 64 2a 20 64 65 73 74 2c 20 py (void* dest,
dce0: 76 6f 69 64 2a 20 73 72 63 2c 20 75 6e 73 69 67 void* src, unsig
dcf0: 6e 65 64 20 6c 6f 6e 67 20 73 69 7a 65 2c 20 75 ned long size, u
dd00: 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 61 6c 69 nsigned long ali
dd10: 67 6e 6d 65 6e 74 29 3b 0a 23 65 6c 73 65 0a 65 gnment);.#else.e
dd20: 78 74 65 72 6e 20 69 6e 74 20 5f 5f 62 75 69 6c xtern int __buil
dd30: 74 69 6e 5f 61 76 63 61 6c 6c 20 28 29 3b 0a 65 tin_avcall ();.e
dd40: 78 74 65 72 6e 20 76 6f 69 64 20 5f 5f 73 74 72 xtern void __str
dd50: 75 63 74 63 70 79 20 28 29 3b 0a 23 65 6e 64 69 uctcpy ();.#endi
dd60: 66 0a 0a 23 65 6e 64 69 66 20 2f 2a 5f 61 76 63 f..#endif /*_avc
dd70: 61 6c 6c 5f 68 20 2a 2f 0a all_h */.