Artifact
64d94bfcceacdafbc4dd377561f5aea951d389cf:
0000: 2f 2a 20 76 61 63 61 6c 6c 20 66 75 6e 63 74 69 /* vacall functi
0010: 6f 6e 20 66 6f 72 20 69 61 36 34 20 43 50 55 20 on for ia64 CPU
0020: 2a 2f 0a 0a 2f 2a 0a 20 2a 20 43 6f 70 79 72 69 */../*. * Copyri
0030: 67 68 74 20 31 39 39 35 2d 32 30 30 34 20 42 72 ght 1995-2004 Br
0040: 75 6e 6f 20 48 61 69 62 6c 65 2c 20 3c 62 72 75 uno Haible, <bru
0050: 6e 6f 40 63 6c 69 73 70 2e 6f 72 67 3e 0a 20 2a no@clisp.org>. *
0060: 0a 20 2a 20 54 68 69 73 20 69 73 20 66 72 65 65 . * This is free
0070: 20 73 6f 66 74 77 61 72 65 20 64 69 73 74 72 69 software distri
0080: 62 75 74 65 64 20 75 6e 64 65 72 20 74 68 65 20 buted under the
0090: 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c GNU General Publ
00a0: 69 63 20 4c 69 63 65 6e 63 65 0a 20 2a 20 64 65 ic Licence. * de
00b0: 73 63 72 69 62 65 64 20 69 6e 20 74 68 65 20 66 scribed in the f
00c0: 69 6c 65 20 43 4f 50 59 49 4e 47 2e 20 43 6f 6e ile COPYING. Con
00d0: 74 61 63 74 20 74 68 65 20 61 75 74 68 6f 72 20 tact the author
00e0: 69 66 20 79 6f 75 20 64 6f 6e 27 74 20 68 61 76 if you don't hav
00f0: 65 20 74 68 69 73 0a 20 2a 20 6f 72 20 63 61 6e e this. * or can
0100: 27 74 20 6c 69 76 65 20 77 69 74 68 20 69 74 2e 't live with it.
0110: 20 54 68 65 72 65 20 69 73 20 41 42 53 4f 4c 55 There is ABSOLU
0120: 54 45 4c 59 20 4e 4f 20 57 41 52 52 41 4e 54 59 TELY NO WARRANTY
0130: 2c 20 65 78 70 6c 69 63 69 74 20 6f 72 20 69 6d , explicit or im
0140: 70 6c 69 65 64 2c 0a 20 2a 20 6f 6e 20 74 68 69 plied,. * on thi
0150: 73 20 73 6f 66 74 77 61 72 65 2e 0a 20 2a 2f 0a s software.. */.
0160: 0a 23 69 66 6e 64 65 66 20 52 45 45 4e 54 52 41 .#ifndef REENTRA
0170: 4e 54 0a 23 69 6e 63 6c 75 64 65 20 22 76 61 63 NT.#include "vac
0180: 61 6c 6c 2e 68 2e 69 6e 22 0a 23 65 6c 73 65 20 all.h.in".#else
0190: 2f 2a 20 52 45 45 4e 54 52 41 4e 54 20 2a 2f 0a /* REENTRANT */.
01a0: 23 69 6e 63 6c 75 64 65 20 22 76 61 63 61 6c 6c #include "vacall
01b0: 5f 72 2e 68 2e 69 6e 22 0a 23 65 6e 64 69 66 0a _r.h.in".#endif.
01c0: 0a 23 69 66 64 65 66 20 52 45 45 4e 54 52 41 4e .#ifdef REENTRAN
01d0: 54 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61 63 61 T.#define __vaca
01e0: 6c 6c 20 5f 5f 76 61 63 61 6c 6c 5f 72 0a 72 65 ll __vacall_r.re
01f0: 67 69 73 74 65 72 20 73 74 72 75 63 74 20 7b 20 gister struct {
0200: 76 6f 69 64 20 28 2a 76 61 63 61 6c 6c 5f 66 75 void (*vacall_fu
0210: 6e 63 74 69 6f 6e 29 20 28 76 6f 69 64 2a 2c 76 nction) (void*,v
0220: 61 5f 61 6c 69 73 74 29 3b 20 76 6f 69 64 2a 20 a_alist); void*
0230: 61 72 67 3b 20 7d 0a 20 20 20 20 20 20 20 20 20 arg; }.
0240: 2a 09 09 65 6e 76 09 5f 5f 61 73 6d 5f 5f 28 22 *..env.__asm__("
0250: 72 31 35 22 29 3b 0a 23 65 6e 64 69 66 0a 72 65 r15");.#endif.re
0260: 67 69 73 74 65 72 20 64 6f 75 62 6c 65 09 09 66 gister double..f
0270: 61 72 67 31 09 5f 5f 61 73 6d 5f 5f 28 22 66 38 arg1.__asm__("f8
0280: 22 29 3b 0a 72 65 67 69 73 74 65 72 20 64 6f 75 ");.register dou
0290: 62 6c 65 09 09 66 61 72 67 32 09 5f 5f 61 73 6d ble..farg2.__asm
02a0: 5f 5f 28 22 66 39 22 29 3b 0a 72 65 67 69 73 74 __("f9");.regist
02b0: 65 72 20 64 6f 75 62 6c 65 09 09 66 61 72 67 33 er double..farg3
02c0: 09 5f 5f 61 73 6d 5f 5f 28 22 66 31 30 22 29 3b .__asm__("f10");
02d0: 0a 72 65 67 69 73 74 65 72 20 64 6f 75 62 6c 65 .register double
02e0: 09 09 66 61 72 67 34 09 5f 5f 61 73 6d 5f 5f 28 ..farg4.__asm__(
02f0: 22 66 31 31 22 29 3b 0a 72 65 67 69 73 74 65 72 "f11");.register
0300: 20 64 6f 75 62 6c 65 09 09 66 61 72 67 35 09 5f double..farg5._
0310: 5f 61 73 6d 5f 5f 28 22 66 31 32 22 29 3b 0a 72 _asm__("f12");.r
0320: 65 67 69 73 74 65 72 20 64 6f 75 62 6c 65 09 09 egister double..
0330: 66 61 72 67 36 09 5f 5f 61 73 6d 5f 5f 28 22 66 farg6.__asm__("f
0340: 31 33 22 29 3b 0a 72 65 67 69 73 74 65 72 20 64 13");.register d
0350: 6f 75 62 6c 65 09 09 66 61 72 67 37 09 5f 5f 61 ouble..farg7.__a
0360: 73 6d 5f 5f 28 22 66 31 34 22 29 3b 0a 72 65 67 sm__("f14");.reg
0370: 69 73 74 65 72 20 64 6f 75 62 6c 65 09 09 66 61 ister double..fa
0380: 72 67 38 09 5f 5f 61 73 6d 5f 5f 28 22 66 31 35 rg8.__asm__("f15
0390: 22 29 3b 0a 72 65 67 69 73 74 65 72 20 5f 5f 76 ");.register __v
03a0: 61 77 6f 72 64 2a 09 73 72 65 74 09 5f 5f 61 73 aword*.sret.__as
03b0: 6d 5f 5f 28 22 72 38 22 29 3b 0a 72 65 67 69 73 m__("r8");.regis
03c0: 74 65 72 20 5f 5f 76 61 77 6f 72 64 09 69 72 65 ter __vaword.ire
03d0: 74 09 5f 5f 61 73 6d 5f 5f 28 22 72 38 22 29 3b t.__asm__("r8");
03e0: 0a 72 65 67 69 73 74 65 72 20 5f 5f 76 61 77 6f .register __vawo
03f0: 72 64 09 69 72 65 74 32 09 5f 5f 61 73 6d 5f 5f rd.iret2.__asm__
0400: 28 22 72 39 22 29 3b 0a 72 65 67 69 73 74 65 72 ("r9");.register
0410: 20 5f 5f 76 61 77 6f 72 64 09 69 72 65 74 33 09 __vaword.iret3.
0420: 5f 5f 61 73 6d 5f 5f 28 22 72 31 30 22 29 3b 0a __asm__("r10");.
0430: 72 65 67 69 73 74 65 72 20 5f 5f 76 61 77 6f 72 register __vawor
0440: 64 09 69 72 65 74 34 09 5f 5f 61 73 6d 5f 5f 28 d.iret4.__asm__(
0450: 22 72 31 31 22 29 3b 0a 72 65 67 69 73 74 65 72 "r11");.register
0460: 20 66 6c 6f 61 74 09 09 66 72 65 74 09 5f 5f 61 float..fret.__a
0470: 73 6d 5f 5f 28 22 66 38 22 29 3b 0a 72 65 67 69 sm__("f8");.regi
0480: 73 74 65 72 20 64 6f 75 62 6c 65 09 09 64 72 65 ster double..dre
0490: 74 09 5f 5f 61 73 6d 5f 5f 28 22 66 38 22 29 3b t.__asm__("f8");
04a0: 0a 0a 76 6f 69 64 20 2f 2a 20 74 68 65 20 72 65 ..void /* the re
04b0: 74 75 72 6e 20 74 79 70 65 20 69 73 20 76 61 72 turn type is var
04c0: 69 61 62 6c 65 2c 20 6e 6f 74 20 76 6f 69 64 21 iable, not void!
04d0: 20 2a 2f 0a 5f 5f 76 61 63 61 6c 6c 20 28 5f 5f */.__vacall (__
04e0: 76 61 77 6f 72 64 20 77 6f 72 64 31 2c 20 5f 5f vaword word1, __
04f0: 76 61 77 6f 72 64 20 77 6f 72 64 32 2c 20 5f 5f vaword word2, __
0500: 76 61 77 6f 72 64 20 77 6f 72 64 33 2c 20 5f 5f vaword word3, __
0510: 76 61 77 6f 72 64 20 77 6f 72 64 34 2c 0a 20 20 vaword word4,.
0520: 20 20 20 20 20 20 20 20 5f 5f 76 61 77 6f 72 64 __vaword
0530: 20 77 6f 72 64 35 2c 20 5f 5f 76 61 77 6f 72 64 word5, __vaword
0540: 20 77 6f 72 64 36 2c 20 5f 5f 76 61 77 6f 72 64 word6, __vaword
0550: 20 77 6f 72 64 37 2c 20 5f 5f 76 61 77 6f 72 64 word7, __vaword
0560: 20 77 6f 72 64 38 2c 0a 20 20 20 20 20 20 20 20 word8,.
0570: 20 20 5f 5f 76 61 77 6f 72 64 20 66 69 72 73 74 __vaword first
0580: 77 6f 72 64 29 0a 7b 0a 20 20 2f 2a 20 54 68 65 word).{. /* The
0590: 20 64 65 66 61 75 6c 74 20 73 63 72 61 74 63 68 default scratch
05a0: 20 61 72 65 61 20 72 69 67 68 74 20 62 65 6c 6f area right belo
05b0: 77 20 66 69 72 73 74 77 6f 72 64 20 69 73 20 6f w firstword is o
05c0: 6e 6c 79 20 32 20 77 6f 72 64 73 2c 20 62 75 74 nly 2 words, but
05d0: 0a 20 20 20 20 20 77 65 20 6e 65 65 64 20 38 20 . we need 8
05e0: 77 6f 72 64 73 2e 20 2a 2f 0a 20 20 5f 5f 76 61 words. */. __va
05f0: 77 6f 72 64 20 72 6f 6f 6d 5b 36 5d 3b 20 2f 2a word room[6]; /*
0600: 20 46 52 41 47 49 4c 45 21 20 2a 2f 0a 20 20 5f FRAGILE! */. _
0610: 5f 76 61 5f 61 6c 69 73 74 20 6c 69 73 74 3b 0a _va_alist list;.
0620: 20 20 2f 2a 20 4d 6f 76 65 20 74 68 65 20 61 72 /* Move the ar
0630: 67 75 6d 65 6e 74 73 20 70 61 73 73 65 64 20 69 guments passed i
0640: 6e 20 72 65 67 69 73 74 65 72 73 20 74 6f 20 74 n registers to t
0650: 68 65 69 72 20 73 74 61 63 6b 20 6c 6f 63 61 74 heir stack locat
0660: 69 6f 6e 73 2e 20 2a 2f 0a 20 20 28 26 66 69 72 ions. */. (&fir
0670: 73 74 77 6f 72 64 29 5b 2d 38 5d 20 3d 20 77 6f stword)[-8] = wo
0680: 72 64 31 3b 0a 20 20 28 26 66 69 72 73 74 77 6f rd1;. (&firstwo
0690: 72 64 29 5b 2d 37 5d 20 3d 20 77 6f 72 64 32 3b rd)[-7] = word2;
06a0: 0a 20 20 28 26 66 69 72 73 74 77 6f 72 64 29 5b . (&firstword)[
06b0: 2d 36 5d 20 3d 20 77 6f 72 64 33 3b 0a 20 20 28 -6] = word3;. (
06c0: 26 66 69 72 73 74 77 6f 72 64 29 5b 2d 35 5d 20 &firstword)[-5]
06d0: 3d 20 77 6f 72 64 34 3b 0a 20 20 28 26 66 69 72 = word4;. (&fir
06e0: 73 74 77 6f 72 64 29 5b 2d 34 5d 20 3d 20 77 6f stword)[-4] = wo
06f0: 72 64 35 3b 0a 20 20 28 26 66 69 72 73 74 77 6f rd5;. (&firstwo
0700: 72 64 29 5b 2d 33 5d 20 3d 20 77 6f 72 64 36 3b rd)[-3] = word6;
0710: 0a 20 20 28 26 66 69 72 73 74 77 6f 72 64 29 5b . (&firstword)[
0720: 2d 32 5d 20 3d 20 77 6f 72 64 37 3b 0a 20 20 28 -2] = word7;. (
0730: 26 66 69 72 73 74 77 6f 72 64 29 5b 2d 31 5d 20 &firstword)[-1]
0740: 3d 20 77 6f 72 64 38 3b 0a 20 20 6c 69 73 74 2e = word8;. list.
0750: 66 61 72 67 5b 30 5d 20 3d 20 66 61 72 67 31 3b farg[0] = farg1;
0760: 0a 20 20 6c 69 73 74 2e 66 61 72 67 5b 31 5d 20 . list.farg[1]
0770: 3d 20 66 61 72 67 32 3b 0a 20 20 6c 69 73 74 2e = farg2;. list.
0780: 66 61 72 67 5b 32 5d 20 3d 20 66 61 72 67 33 3b farg[2] = farg3;
0790: 0a 20 20 6c 69 73 74 2e 66 61 72 67 5b 33 5d 20 . list.farg[3]
07a0: 3d 20 66 61 72 67 34 3b 0a 20 20 6c 69 73 74 2e = farg4;. list.
07b0: 66 61 72 67 5b 34 5d 20 3d 20 66 61 72 67 35 3b farg[4] = farg5;
07c0: 0a 20 20 6c 69 73 74 2e 66 61 72 67 5b 35 5d 20 . list.farg[5]
07d0: 3d 20 66 61 72 67 36 3b 0a 20 20 6c 69 73 74 2e = farg6;. list.
07e0: 66 61 72 67 5b 36 5d 20 3d 20 66 61 72 67 37 3b farg[6] = farg7;
07f0: 0a 20 20 6c 69 73 74 2e 66 61 72 67 5b 37 5d 20 . list.farg[7]
0800: 3d 20 66 61 72 67 38 3b 0a 20 20 2f 2a 20 50 72 = farg8;. /* Pr
0810: 65 70 61 72 65 20 74 68 65 20 76 61 5f 61 6c 69 epare the va_ali
0820: 73 74 2e 20 2a 2f 0a 20 20 6c 69 73 74 2e 66 6c st. */. list.fl
0830: 61 67 73 20 3d 20 30 3b 0a 20 20 6c 69 73 74 2e ags = 0;. list.
0840: 61 70 74 72 20 3d 20 28 6c 6f 6e 67 29 28 26 66 aptr = (long)(&f
0850: 69 72 73 74 77 6f 72 64 20 2d 20 38 29 3b 0a 20 irstword - 8);.
0860: 20 6c 69 73 74 2e 73 61 70 74 72 20 3d 20 26 66 list.saptr = &f
0870: 69 72 73 74 77 6f 72 64 20 2d 20 38 3b 0a 20 20 irstword - 8;.
0880: 6c 69 73 74 2e 6d 65 6d 66 61 72 67 70 74 72 20 list.memfargptr
0890: 3d 20 26 6c 69 73 74 2e 66 61 72 67 5b 30 5d 3b = &list.farg[0];
08a0: 0a 20 20 6c 69 73 74 2e 72 61 64 64 72 20 3d 20 . list.raddr =
08b0: 28 76 6f 69 64 2a 29 30 3b 0a 20 20 6c 69 73 74 (void*)0;. list
08c0: 2e 72 74 79 70 65 20 3d 20 5f 5f 56 41 76 6f 69 .rtype = __VAvoi
08d0: 64 3b 0a 20 20 6c 69 73 74 2e 73 74 72 75 63 74 d;. list.struct
08e0: 72 61 64 64 72 20 3d 20 73 72 65 74 3b 0a 20 20 raddr = sret;.
08f0: 2f 2a 20 43 61 6c 6c 20 76 61 63 61 6c 6c 5f 66 /* Call vacall_f
0900: 75 6e 63 74 69 6f 6e 2e 20 54 68 65 20 6d 61 63 unction. The mac
0910: 72 6f 73 20 64 6f 20 61 6c 6c 20 74 68 65 20 72 ros do all the r
0920: 65 73 74 2e 20 2a 2f 0a 23 69 66 6e 64 65 66 20 est. */.#ifndef
0930: 52 45 45 4e 54 52 41 4e 54 0a 20 20 28 2a 76 61 REENTRANT. (*va
0940: 63 61 6c 6c 5f 66 75 6e 63 74 69 6f 6e 29 20 28 call_function) (
0950: 26 6c 69 73 74 29 3b 0a 23 65 6c 73 65 20 2f 2a &list);.#else /*
0960: 20 52 45 45 4e 54 52 41 4e 54 20 2a 2f 0a 20 20 REENTRANT */.
0970: 28 2a 65 6e 76 2d 3e 76 61 63 61 6c 6c 5f 66 75 (*env->vacall_fu
0980: 6e 63 74 69 6f 6e 29 20 28 65 6e 76 2d 3e 61 72 nction) (env->ar
0990: 67 2c 26 6c 69 73 74 29 3b 0a 23 65 6e 64 69 66 g,&list);.#endif
09a0: 0a 20 20 2f 2a 20 50 75 74 20 72 65 74 75 72 6e . /* Put return
09b0: 20 76 61 6c 75 65 20 69 6e 74 6f 20 70 72 6f 70 value into prop
09c0: 65 72 20 72 65 67 69 73 74 65 72 2e 20 2a 2f 0a er register. */.
09d0: 20 20 69 66 20 28 6c 69 73 74 2e 72 74 79 70 65 if (list.rtype
09e0: 20 3d 3d 20 5f 5f 56 41 76 6f 69 64 29 20 7b 0a == __VAvoid) {.
09f0: 20 20 7d 20 65 6c 73 65 0a 20 20 69 66 20 28 6c } else. if (l
0a00: 69 73 74 2e 72 74 79 70 65 20 3d 3d 20 5f 5f 56 ist.rtype == __V
0a10: 41 63 68 61 72 29 20 7b 0a 20 20 20 20 69 72 65 Achar) {. ire
0a20: 74 20 3d 20 6c 69 73 74 2e 74 6d 70 2e 5f 63 68 t = list.tmp._ch
0a30: 61 72 3b 0a 20 20 7d 20 65 6c 73 65 0a 20 20 69 ar;. } else. i
0a40: 66 20 28 6c 69 73 74 2e 72 74 79 70 65 20 3d 3d f (list.rtype ==
0a50: 20 5f 5f 56 41 73 63 68 61 72 29 20 7b 0a 20 20 __VAschar) {.
0a60: 20 20 69 72 65 74 20 3d 20 6c 69 73 74 2e 74 6d iret = list.tm
0a70: 70 2e 5f 73 63 68 61 72 3b 0a 20 20 7d 20 65 6c p._schar;. } el
0a80: 73 65 0a 20 20 69 66 20 28 6c 69 73 74 2e 72 74 se. if (list.rt
0a90: 79 70 65 20 3d 3d 20 5f 5f 56 41 75 63 68 61 72 ype == __VAuchar
0aa0: 29 20 7b 0a 20 20 20 20 69 72 65 74 20 3d 20 6c ) {. iret = l
0ab0: 69 73 74 2e 74 6d 70 2e 5f 75 63 68 61 72 3b 0a ist.tmp._uchar;.
0ac0: 20 20 7d 20 65 6c 73 65 0a 20 20 69 66 20 28 6c } else. if (l
0ad0: 69 73 74 2e 72 74 79 70 65 20 3d 3d 20 5f 5f 56 ist.rtype == __V
0ae0: 41 73 68 6f 72 74 29 20 7b 0a 20 20 20 20 69 72 Ashort) {. ir
0af0: 65 74 20 3d 20 6c 69 73 74 2e 74 6d 70 2e 5f 73 et = list.tmp._s
0b00: 68 6f 72 74 3b 0a 20 20 7d 20 65 6c 73 65 0a 20 hort;. } else.
0b10: 20 69 66 20 28 6c 69 73 74 2e 72 74 79 70 65 20 if (list.rtype
0b20: 3d 3d 20 5f 5f 56 41 75 73 68 6f 72 74 29 20 7b == __VAushort) {
0b30: 0a 20 20 20 20 69 72 65 74 20 3d 20 6c 69 73 74 . iret = list
0b40: 2e 74 6d 70 2e 5f 75 73 68 6f 72 74 3b 0a 20 20 .tmp._ushort;.
0b50: 7d 20 65 6c 73 65 0a 20 20 69 66 20 28 6c 69 73 } else. if (lis
0b60: 74 2e 72 74 79 70 65 20 3d 3d 20 5f 5f 56 41 69 t.rtype == __VAi
0b70: 6e 74 29 20 7b 0a 20 20 20 20 69 72 65 74 20 3d nt) {. iret =
0b80: 20 6c 69 73 74 2e 74 6d 70 2e 5f 69 6e 74 3b 0a list.tmp._int;.
0b90: 20 20 7d 20 65 6c 73 65 0a 20 20 69 66 20 28 6c } else. if (l
0ba0: 69 73 74 2e 72 74 79 70 65 20 3d 3d 20 5f 5f 56 ist.rtype == __V
0bb0: 41 75 69 6e 74 29 20 7b 0a 20 20 20 20 69 72 65 Auint) {. ire
0bc0: 74 20 3d 20 6c 69 73 74 2e 74 6d 70 2e 5f 75 69 t = list.tmp._ui
0bd0: 6e 74 3b 0a 20 20 7d 20 65 6c 73 65 0a 20 20 69 nt;. } else. i
0be0: 66 20 28 6c 69 73 74 2e 72 74 79 70 65 20 3d 3d f (list.rtype ==
0bf0: 20 5f 5f 56 41 6c 6f 6e 67 29 20 7b 0a 20 20 20 __VAlong) {.
0c00: 20 69 72 65 74 20 3d 20 6c 69 73 74 2e 74 6d 70 iret = list.tmp
0c10: 2e 5f 6c 6f 6e 67 3b 0a 20 20 7d 20 65 6c 73 65 ._long;. } else
0c20: 0a 20 20 69 66 20 28 6c 69 73 74 2e 72 74 79 70 . if (list.rtyp
0c30: 65 20 3d 3d 20 5f 5f 56 41 75 6c 6f 6e 67 29 20 e == __VAulong)
0c40: 7b 0a 20 20 20 20 69 72 65 74 20 3d 20 6c 69 73 {. iret = lis
0c50: 74 2e 74 6d 70 2e 5f 75 6c 6f 6e 67 3b 0a 20 20 t.tmp._ulong;.
0c60: 7d 20 65 6c 73 65 0a 20 20 69 66 20 28 6c 69 73 } else. if (lis
0c70: 74 2e 72 74 79 70 65 20 3d 3d 20 5f 5f 56 41 6c t.rtype == __VAl
0c80: 6f 6e 67 6c 6f 6e 67 29 20 7b 0a 20 20 20 20 69 onglong) {. i
0c90: 72 65 74 20 3d 20 6c 69 73 74 2e 74 6d 70 2e 5f ret = list.tmp._
0ca0: 6c 6f 6e 67 3b 0a 20 20 7d 20 65 6c 73 65 0a 20 long;. } else.
0cb0: 20 69 66 20 28 6c 69 73 74 2e 72 74 79 70 65 20 if (list.rtype
0cc0: 3d 3d 20 5f 5f 56 41 75 6c 6f 6e 67 6c 6f 6e 67 == __VAulonglong
0cd0: 29 20 7b 0a 20 20 20 20 69 72 65 74 20 3d 20 6c ) {. iret = l
0ce0: 69 73 74 2e 74 6d 70 2e 5f 75 6c 6f 6e 67 3b 0a ist.tmp._ulong;.
0cf0: 20 20 7d 20 65 6c 73 65 0a 20 20 69 66 20 28 6c } else. if (l
0d00: 69 73 74 2e 72 74 79 70 65 20 3d 3d 20 5f 5f 56 ist.rtype == __V
0d10: 41 66 6c 6f 61 74 29 20 7b 0a 20 20 20 20 66 72 Afloat) {. fr
0d20: 65 74 20 3d 20 6c 69 73 74 2e 74 6d 70 2e 5f 66 et = list.tmp._f
0d30: 6c 6f 61 74 3b 0a 20 20 7d 20 65 6c 73 65 0a 20 loat;. } else.
0d40: 20 69 66 20 28 6c 69 73 74 2e 72 74 79 70 65 20 if (list.rtype
0d50: 3d 3d 20 5f 5f 56 41 64 6f 75 62 6c 65 29 20 7b == __VAdouble) {
0d60: 0a 20 20 20 20 64 72 65 74 20 3d 20 6c 69 73 74 . dret = list
0d70: 2e 74 6d 70 2e 5f 64 6f 75 62 6c 65 3b 0a 20 20 .tmp._double;.
0d80: 7d 20 65 6c 73 65 0a 20 20 69 66 20 28 6c 69 73 } else. if (lis
0d90: 74 2e 72 74 79 70 65 20 3d 3d 20 5f 5f 56 41 76 t.rtype == __VAv
0da0: 6f 69 64 70 29 20 7b 0a 20 20 20 20 69 72 65 74 oidp) {. iret
0db0: 20 3d 20 28 6c 6f 6e 67 29 6c 69 73 74 2e 74 6d = (long)list.tm
0dc0: 70 2e 5f 70 74 72 3b 0a 20 20 7d 20 65 6c 73 65 p._ptr;. } else
0dd0: 0a 20 20 69 66 20 28 6c 69 73 74 2e 72 74 79 70 . if (list.rtyp
0de0: 65 20 3d 3d 20 5f 5f 56 41 73 74 72 75 63 74 29 e == __VAstruct)
0df0: 20 7b 0a 20 20 20 20 69 66 20 28 6c 69 73 74 2e {. if (list.
0e00: 66 6c 61 67 73 20 26 20 5f 5f 56 41 5f 50 43 43 flags & __VA_PCC
0e10: 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 29 20 _STRUCT_RETURN)
0e20: 7b 0a 20 20 20 20 20 20 2f 2a 20 70 63 63 20 73 {. /* pcc s
0e30: 74 72 75 63 74 20 72 65 74 75 72 6e 20 63 6f 6e truct return con
0e40: 76 65 6e 74 69 6f 6e 20 2a 2f 0a 20 20 20 20 20 vention */.
0e50: 20 69 72 65 74 20 3d 20 28 6c 6f 6e 67 29 20 6c iret = (long) l
0e60: 69 73 74 2e 72 61 64 64 72 3b 0a 20 20 20 20 7d ist.raddr;. }
0e70: 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 2f 2a else {. /*
0e80: 20 6e 6f 72 6d 61 6c 20 73 74 72 75 63 74 20 72 normal struct r
0e90: 65 74 75 72 6e 20 63 6f 6e 76 65 6e 74 69 6f 6e eturn convention
0ea0: 20 2a 2f 0a 20 20 20 20 20 20 69 66 20 28 6c 69 */. if (li
0eb0: 73 74 2e 66 6c 61 67 73 20 26 20 5f 5f 56 41 5f st.flags & __VA_
0ec0: 52 45 47 49 53 54 45 52 5f 53 54 52 55 43 54 5f REGISTER_STRUCT_
0ed0: 52 45 54 55 52 4e 29 20 7b 0a 20 20 20 20 20 20 RETURN) {.
0ee0: 20 20 2f 2a 20 52 65 74 75 72 6e 20 73 74 72 75 /* Return stru
0ef0: 63 74 73 20 6f 66 20 73 69 7a 65 20 3c 3d 20 33 cts of size <= 3
0f00: 32 20 69 6e 20 72 65 67 69 73 74 65 72 73 2e 20 2 in registers.
0f10: 2a 2f 0a 20 20 20 20 20 20 20 20 69 66 20 28 6c */. if (l
0f20: 69 73 74 2e 72 73 69 7a 65 20 3e 20 30 20 26 26 ist.rsize > 0 &&
0f30: 20 6c 69 73 74 2e 72 73 69 7a 65 20 3c 3d 20 33 list.rsize <= 3
0f40: 32 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 69 2) {. i
0f50: 72 65 74 20 3d 20 28 5f 5f 76 61 77 6f 72 64 29 ret = (__vaword)
0f60: 28 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 ((unsigned char
0f70: 2a 29 20 6c 69 73 74 2e 72 61 64 64 72 29 5b 30 *) list.raddr)[0
0f80: 5d 3b 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 ];. if
0f90: 28 6c 69 73 74 2e 72 73 69 7a 65 20 3e 3d 20 32 (list.rsize >= 2
0fa0: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 72 ). ir
0fb0: 65 74 20 7c 3d 20 28 5f 5f 76 61 77 6f 72 64 29 et |= (__vaword)
0fc0: 28 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 ((unsigned char
0fd0: 2a 29 20 6c 69 73 74 2e 72 61 64 64 72 29 5b 31 *) list.raddr)[1
0fe0: 5d 20 3c 3c 20 38 3b 0a 20 20 20 20 20 20 20 20 ] << 8;.
0ff0: 20 20 69 66 20 28 6c 69 73 74 2e 72 73 69 7a 65 if (list.rsize
1000: 20 3e 3d 20 33 29 0a 20 20 20 20 20 20 20 20 20 >= 3).
1010: 20 20 20 69 72 65 74 20 7c 3d 20 28 5f 5f 76 61 iret |= (__va
1020: 77 6f 72 64 29 28 28 75 6e 73 69 67 6e 65 64 20 word)((unsigned
1030: 63 68 61 72 20 2a 29 20 6c 69 73 74 2e 72 61 64 char *) list.rad
1040: 64 72 29 5b 32 5d 20 3c 3c 20 31 36 3b 0a 20 20 dr)[2] << 16;.
1050: 20 20 20 20 20 20 20 20 69 66 20 28 6c 69 73 74 if (list
1060: 2e 72 73 69 7a 65 20 3e 3d 20 34 29 0a 20 20 20 .rsize >= 4).
1070: 20 20 20 20 20 20 20 20 20 69 72 65 74 20 7c 3d iret |=
1080: 20 28 5f 5f 76 61 77 6f 72 64 29 28 28 75 6e 73 (__vaword)((uns
1090: 69 67 6e 65 64 20 63 68 61 72 20 2a 29 20 6c 69 igned char *) li
10a0: 73 74 2e 72 61 64 64 72 29 5b 33 5d 20 3c 3c 20 st.raddr)[3] <<
10b0: 32 34 3b 0a 20 20 20 20 20 20 20 20 20 20 69 66 24;. if
10c0: 20 28 6c 69 73 74 2e 72 73 69 7a 65 20 3e 3d 20 (list.rsize >=
10d0: 35 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 5). i
10e0: 72 65 74 20 7c 3d 20 28 5f 5f 76 61 77 6f 72 64 ret |= (__vaword
10f0: 29 28 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 )((unsigned char
1100: 20 2a 29 20 6c 69 73 74 2e 72 61 64 64 72 29 5b *) list.raddr)[
1110: 34 5d 20 3c 3c 20 33 32 3b 0a 20 20 20 20 20 20 4] << 32;.
1120: 20 20 20 20 69 66 20 28 6c 69 73 74 2e 72 73 69 if (list.rsi
1130: 7a 65 20 3e 3d 20 36 29 0a 20 20 20 20 20 20 20 ze >= 6).
1140: 20 20 20 20 20 69 72 65 74 20 7c 3d 20 28 5f 5f iret |= (__
1150: 76 61 77 6f 72 64 29 28 28 75 6e 73 69 67 6e 65 vaword)((unsigne
1160: 64 20 63 68 61 72 20 2a 29 20 6c 69 73 74 2e 72 d char *) list.r
1170: 61 64 64 72 29 5b 35 5d 20 3c 3c 20 34 30 3b 0a addr)[5] << 40;.
1180: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 69 if (li
1190: 73 74 2e 72 73 69 7a 65 20 3e 3d 20 37 29 0a 20 st.rsize >= 7).
11a0: 20 20 20 20 20 20 20 20 20 20 20 69 72 65 74 20 iret
11b0: 7c 3d 20 28 5f 5f 76 61 77 6f 72 64 29 28 28 75 |= (__vaword)((u
11c0: 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 29 20 nsigned char *)
11d0: 6c 69 73 74 2e 72 61 64 64 72 29 5b 36 5d 20 3c list.raddr)[6] <
11e0: 3c 20 34 38 3b 0a 20 20 20 20 20 20 20 20 20 20 < 48;.
11f0: 69 66 20 28 6c 69 73 74 2e 72 73 69 7a 65 20 3e if (list.rsize >
1200: 3d 20 38 29 0a 20 20 20 20 20 20 20 20 20 20 20 = 8).
1210: 20 69 72 65 74 20 7c 3d 20 28 5f 5f 76 61 77 6f iret |= (__vawo
1220: 72 64 29 28 28 75 6e 73 69 67 6e 65 64 20 63 68 rd)((unsigned ch
1230: 61 72 20 2a 29 20 6c 69 73 74 2e 72 61 64 64 72 ar *) list.raddr
1240: 29 5b 37 5d 20 3c 3c 20 35 36 3b 0a 20 20 20 20 )[7] << 56;.
1250: 20 20 20 20 20 20 69 66 20 28 6c 69 73 74 2e 72 if (list.r
1260: 73 69 7a 65 20 3e 3d 20 39 29 20 7b 0a 20 20 20 size >= 9) {.
1270: 20 20 20 20 20 20 20 20 20 69 72 65 74 32 20 3d iret2 =
1280: 20 28 5f 5f 76 61 77 6f 72 64 29 28 28 75 6e 73 (__vaword)((uns
1290: 69 67 6e 65 64 20 63 68 61 72 20 2a 29 20 6c 69 igned char *) li
12a0: 73 74 2e 72 61 64 64 72 29 5b 38 5d 3b 0a 20 20 st.raddr)[8];.
12b0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 69 if (li
12c0: 73 74 2e 72 73 69 7a 65 20 3e 3d 20 31 30 29 0a st.rsize >= 10).
12d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 72 ir
12e0: 65 74 32 20 7c 3d 20 28 5f 5f 76 61 77 6f 72 64 et2 |= (__vaword
12f0: 29 28 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 )((unsigned char
1300: 20 2a 29 20 6c 69 73 74 2e 72 61 64 64 72 29 5b *) list.raddr)[
1310: 39 5d 20 3c 3c 20 38 3b 0a 20 20 20 20 20 20 20 9] << 8;.
1320: 20 20 20 20 20 69 66 20 28 6c 69 73 74 2e 72 73 if (list.rs
1330: 69 7a 65 20 3e 3d 20 31 31 29 0a 20 20 20 20 20 ize >= 11).
1340: 20 20 20 20 20 20 20 20 20 69 72 65 74 32 20 7c iret2 |
1350: 3d 20 28 5f 5f 76 61 77 6f 72 64 29 28 28 75 6e = (__vaword)((un
1360: 73 69 67 6e 65 64 20 63 68 61 72 20 2a 29 20 6c signed char *) l
1370: 69 73 74 2e 72 61 64 64 72 29 5b 31 30 5d 20 3c ist.raddr)[10] <
1380: 3c 20 31 36 3b 0a 20 20 20 20 20 20 20 20 20 20 < 16;.
1390: 20 20 69 66 20 28 6c 69 73 74 2e 72 73 69 7a 65 if (list.rsize
13a0: 20 3e 3d 20 31 32 29 0a 20 20 20 20 20 20 20 20 >= 12).
13b0: 20 20 20 20 20 20 69 72 65 74 32 20 7c 3d 20 28 iret2 |= (
13c0: 5f 5f 76 61 77 6f 72 64 29 28 28 75 6e 73 69 67 __vaword)((unsig
13d0: 6e 65 64 20 63 68 61 72 20 2a 29 20 6c 69 73 74 ned char *) list
13e0: 2e 72 61 64 64 72 29 5b 31 31 5d 20 3c 3c 20 32 .raddr)[11] << 2
13f0: 34 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 4;. i
1400: 66 20 28 6c 69 73 74 2e 72 73 69 7a 65 20 3e 3d f (list.rsize >=
1410: 20 31 33 29 0a 20 20 20 20 20 20 20 20 20 20 20 13).
1420: 20 20 20 69 72 65 74 32 20 7c 3d 20 28 5f 5f 76 iret2 |= (__v
1430: 61 77 6f 72 64 29 28 28 75 6e 73 69 67 6e 65 64 aword)((unsigned
1440: 20 63 68 61 72 20 2a 29 20 6c 69 73 74 2e 72 61 char *) list.ra
1450: 64 64 72 29 5b 31 32 5d 20 3c 3c 20 33 32 3b 0a ddr)[12] << 32;.
1460: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 if (
1470: 6c 69 73 74 2e 72 73 69 7a 65 20 3e 3d 20 31 34 list.rsize >= 14
1480: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ).
1490: 69 72 65 74 32 20 7c 3d 20 28 5f 5f 76 61 77 6f iret2 |= (__vawo
14a0: 72 64 29 28 28 75 6e 73 69 67 6e 65 64 20 63 68 rd)((unsigned ch
14b0: 61 72 20 2a 29 20 6c 69 73 74 2e 72 61 64 64 72 ar *) list.raddr
14c0: 29 5b 31 33 5d 20 3c 3c 20 34 30 3b 0a 20 20 20 )[13] << 40;.
14d0: 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 69 73 if (lis
14e0: 74 2e 72 73 69 7a 65 20 3e 3d 20 31 35 29 0a 20 t.rsize >= 15).
14f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 72 65 ire
1500: 74 32 20 7c 3d 20 28 5f 5f 76 61 77 6f 72 64 29 t2 |= (__vaword)
1510: 28 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 ((unsigned char
1520: 2a 29 20 6c 69 73 74 2e 72 61 64 64 72 29 5b 31 *) list.raddr)[1
1530: 34 5d 20 3c 3c 20 34 38 3b 0a 20 20 20 20 20 20 4] << 48;.
1540: 20 20 20 20 20 20 69 66 20 28 6c 69 73 74 2e 72 if (list.r
1550: 73 69 7a 65 20 3e 3d 20 31 36 29 0a 20 20 20 20 size >= 16).
1560: 20 20 20 20 20 20 20 20 20 20 69 72 65 74 32 20 iret2
1570: 7c 3d 20 28 5f 5f 76 61 77 6f 72 64 29 28 28 75 |= (__vaword)((u
1580: 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 29 20 nsigned char *)
1590: 6c 69 73 74 2e 72 61 64 64 72 29 5b 31 35 5d 20 list.raddr)[15]
15a0: 3c 3c 20 35 36 3b 0a 20 20 20 20 20 20 20 20 20 << 56;.
15b0: 20 20 20 69 66 20 28 6c 69 73 74 2e 72 73 69 7a if (list.rsiz
15c0: 65 20 3e 3d 20 31 37 29 20 7b 0a 20 20 20 20 20 e >= 17) {.
15d0: 20 20 20 20 20 20 20 20 20 69 72 65 74 33 20 3d iret3 =
15e0: 20 28 5f 5f 76 61 77 6f 72 64 29 28 28 75 6e 73 (__vaword)((uns
15f0: 69 67 6e 65 64 20 63 68 61 72 20 2a 29 20 6c 69 igned char *) li
1600: 73 74 2e 72 61 64 64 72 29 5b 31 36 5d 3b 0a 20 st.raddr)[16];.
1610: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 if
1620: 28 6c 69 73 74 2e 72 73 69 7a 65 20 3e 3d 20 31 (list.rsize >= 1
1630: 38 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 8).
1640: 20 20 20 69 72 65 74 33 20 7c 3d 20 28 5f 5f 76 iret3 |= (__v
1650: 61 77 6f 72 64 29 28 28 75 6e 73 69 67 6e 65 64 aword)((unsigned
1660: 20 63 68 61 72 20 2a 29 20 6c 69 73 74 2e 72 61 char *) list.ra
1670: 64 64 72 29 5b 31 37 5d 20 3c 3c 20 38 3b 0a 20 ddr)[17] << 8;.
1680: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 if
1690: 28 6c 69 73 74 2e 72 73 69 7a 65 20 3e 3d 20 31 (list.rsize >= 1
16a0: 39 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 9).
16b0: 20 20 20 69 72 65 74 33 20 7c 3d 20 28 5f 5f 76 iret3 |= (__v
16c0: 61 77 6f 72 64 29 28 28 75 6e 73 69 67 6e 65 64 aword)((unsigned
16d0: 20 63 68 61 72 20 2a 29 20 6c 69 73 74 2e 72 61 char *) list.ra
16e0: 64 64 72 29 5b 31 38 5d 20 3c 3c 20 31 36 3b 0a ddr)[18] << 16;.
16f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 if
1700: 20 28 6c 69 73 74 2e 72 73 69 7a 65 20 3e 3d 20 (list.rsize >=
1710: 32 30 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20).
1720: 20 20 20 20 69 72 65 74 33 20 7c 3d 20 28 5f 5f iret3 |= (__
1730: 76 61 77 6f 72 64 29 28 28 75 6e 73 69 67 6e 65 vaword)((unsigne
1740: 64 20 63 68 61 72 20 2a 29 20 6c 69 73 74 2e 72 d char *) list.r
1750: 61 64 64 72 29 5b 31 39 5d 20 3c 3c 20 32 34 3b addr)[19] << 24;
1760: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 . i
1770: 66 20 28 6c 69 73 74 2e 72 73 69 7a 65 20 3e 3d f (list.rsize >=
1780: 20 32 31 29 0a 20 20 20 20 20 20 20 20 20 20 20 21).
1790: 20 20 20 20 20 69 72 65 74 33 20 7c 3d 20 28 5f iret3 |= (_
17a0: 5f 76 61 77 6f 72 64 29 28 28 75 6e 73 69 67 6e _vaword)((unsign
17b0: 65 64 20 63 68 61 72 20 2a 29 20 6c 69 73 74 2e ed char *) list.
17c0: 72 61 64 64 72 29 5b 32 30 5d 20 3c 3c 20 33 32 raddr)[20] << 32
17d0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ;.
17e0: 69 66 20 28 6c 69 73 74 2e 72 73 69 7a 65 20 3e if (list.rsize >
17f0: 3d 20 32 32 29 0a 20 20 20 20 20 20 20 20 20 20 = 22).
1800: 20 20 20 20 20 20 69 72 65 74 33 20 7c 3d 20 28 iret3 |= (
1810: 5f 5f 76 61 77 6f 72 64 29 28 28 75 6e 73 69 67 __vaword)((unsig
1820: 6e 65 64 20 63 68 61 72 20 2a 29 20 6c 69 73 74 ned char *) list
1830: 2e 72 61 64 64 72 29 5b 32 31 5d 20 3c 3c 20 34 .raddr)[21] << 4
1840: 30 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 0;.
1850: 20 69 66 20 28 6c 69 73 74 2e 72 73 69 7a 65 20 if (list.rsize
1860: 3e 3d 20 32 33 29 0a 20 20 20 20 20 20 20 20 20 >= 23).
1870: 20 20 20 20 20 20 20 69 72 65 74 33 20 7c 3d 20 iret3 |=
1880: 28 5f 5f 76 61 77 6f 72 64 29 28 28 75 6e 73 69 (__vaword)((unsi
1890: 67 6e 65 64 20 63 68 61 72 20 2a 29 20 6c 69 73 gned char *) lis
18a0: 74 2e 72 61 64 64 72 29 5b 32 32 5d 20 3c 3c 20 t.raddr)[22] <<
18b0: 34 38 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 48;.
18c0: 20 20 69 66 20 28 6c 69 73 74 2e 72 73 69 7a 65 if (list.rsize
18d0: 20 3e 3d 20 32 34 29 0a 20 20 20 20 20 20 20 20 >= 24).
18e0: 20 20 20 20 20 20 20 20 69 72 65 74 33 20 7c 3d iret3 |=
18f0: 20 28 5f 5f 76 61 77 6f 72 64 29 28 28 75 6e 73 (__vaword)((uns
1900: 69 67 6e 65 64 20 63 68 61 72 20 2a 29 20 6c 69 igned char *) li
1910: 73 74 2e 72 61 64 64 72 29 5b 32 33 5d 20 3c 3c st.raddr)[23] <<
1920: 20 35 36 3b 0a 20 20 20 20 20 20 20 20 20 20 20 56;.
1930: 20 20 20 69 66 20 28 6c 69 73 74 2e 72 73 69 7a if (list.rsiz
1940: 65 20 3e 3d 20 32 35 29 20 7b 0a 20 20 20 20 20 e >= 25) {.
1950: 20 20 20 20 20 20 20 20 20 20 20 69 72 65 74 34 iret4
1960: 20 3d 20 28 5f 5f 76 61 77 6f 72 64 29 28 28 75 = (__vaword)((u
1970: 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 29 20 nsigned char *)
1980: 6c 69 73 74 2e 72 61 64 64 72 29 5b 32 34 5d 3b list.raddr)[24];
1990: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
19a0: 20 69 66 20 28 6c 69 73 74 2e 72 73 69 7a 65 20 if (list.rsize
19b0: 3e 3d 20 32 36 29 0a 20 20 20 20 20 20 20 20 20 >= 26).
19c0: 20 20 20 20 20 20 20 20 20 69 72 65 74 34 20 7c iret4 |
19d0: 3d 20 28 5f 5f 76 61 77 6f 72 64 29 28 28 75 6e = (__vaword)((un
19e0: 73 69 67 6e 65 64 20 63 68 61 72 20 2a 29 20 6c signed char *) l
19f0: 69 73 74 2e 72 61 64 64 72 29 5b 32 35 5d 20 3c ist.raddr)[25] <
1a00: 3c 20 38 3b 0a 20 20 20 20 20 20 20 20 20 20 20 < 8;.
1a10: 20 20 20 20 20 69 66 20 28 6c 69 73 74 2e 72 73 if (list.rs
1a20: 69 7a 65 20 3e 3d 20 32 37 29 0a 20 20 20 20 20 ize >= 27).
1a30: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 72 65 ire
1a40: 74 34 20 7c 3d 20 28 5f 5f 76 61 77 6f 72 64 29 t4 |= (__vaword)
1a50: 28 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 ((unsigned char
1a60: 2a 29 20 6c 69 73 74 2e 72 61 64 64 72 29 5b 32 *) list.raddr)[2
1a70: 36 5d 20 3c 3c 20 31 36 3b 0a 20 20 20 20 20 20 6] << 16;.
1a80: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 69 if (li
1a90: 73 74 2e 72 73 69 7a 65 20 3e 3d 20 32 38 29 0a st.rsize >= 28).
1aa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1ab0: 20 20 69 72 65 74 34 20 7c 3d 20 28 5f 5f 76 61 iret4 |= (__va
1ac0: 77 6f 72 64 29 28 28 75 6e 73 69 67 6e 65 64 20 word)((unsigned
1ad0: 63 68 61 72 20 2a 29 20 6c 69 73 74 2e 72 61 64 char *) list.rad
1ae0: 64 72 29 5b 32 37 5d 20 3c 3c 20 32 34 3b 0a 20 dr)[27] << 24;.
1af0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 i
1b00: 66 20 28 6c 69 73 74 2e 72 73 69 7a 65 20 3e 3d f (list.rsize >=
1b10: 20 32 39 29 0a 20 20 20 20 20 20 20 20 20 20 20 29).
1b20: 20 20 20 20 20 20 20 69 72 65 74 34 20 7c 3d 20 iret4 |=
1b30: 28 5f 5f 76 61 77 6f 72 64 29 28 28 75 6e 73 69 (__vaword)((unsi
1b40: 67 6e 65 64 20 63 68 61 72 20 2a 29 20 6c 69 73 gned char *) lis
1b50: 74 2e 72 61 64 64 72 29 5b 32 38 5d 20 3c 3c 20 t.raddr)[28] <<
1b60: 33 32 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 32;.
1b70: 20 20 20 20 69 66 20 28 6c 69 73 74 2e 72 73 69 if (list.rsi
1b80: 7a 65 20 3e 3d 20 33 30 29 0a 20 20 20 20 20 20 ze >= 30).
1b90: 20 20 20 20 20 20 20 20 20 20 20 20 69 72 65 74 iret
1ba0: 34 20 7c 3d 20 28 5f 5f 76 61 77 6f 72 64 29 28 4 |= (__vaword)(
1bb0: 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a (unsigned char *
1bc0: 29 20 6c 69 73 74 2e 72 61 64 64 72 29 5b 32 39 ) list.raddr)[29
1bd0: 5d 20 3c 3c 20 34 30 3b 0a 20 20 20 20 20 20 20 ] << 40;.
1be0: 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 69 73 if (lis
1bf0: 74 2e 72 73 69 7a 65 20 3e 3d 20 33 31 29 0a 20 t.rsize >= 31).
1c00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1c10: 20 69 72 65 74 34 20 7c 3d 20 28 5f 5f 76 61 77 iret4 |= (__vaw
1c20: 6f 72 64 29 28 28 75 6e 73 69 67 6e 65 64 20 63 ord)((unsigned c
1c30: 68 61 72 20 2a 29 20 6c 69 73 74 2e 72 61 64 64 har *) list.radd
1c40: 72 29 5b 33 30 5d 20 3c 3c 20 34 38 3b 0a 20 20 r)[30] << 48;.
1c50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 if
1c60: 20 28 6c 69 73 74 2e 72 73 69 7a 65 20 3e 3d 20 (list.rsize >=
1c70: 33 32 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 32).
1c80: 20 20 20 20 20 20 69 72 65 74 34 20 7c 3d 20 28 iret4 |= (
1c90: 5f 5f 76 61 77 6f 72 64 29 28 28 75 6e 73 69 67 __vaword)((unsig
1ca0: 6e 65 64 20 63 68 61 72 20 2a 29 20 6c 69 73 74 ned char *) list
1cb0: 2e 72 61 64 64 72 29 5b 33 31 5d 20 3c 3c 20 35 .raddr)[31] << 5
1cc0: 36 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 6;.
1cd0: 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d }. }
1ce0: 0a 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 . }.
1cf0: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 7d 0a 20 }. }.
1d00: 20 20 20 7d 0a 20 20 7d 0a 7d 0a }. }.}.