Commit | Line | Data |
---|---|---|
5f22ea7a C |
1 | /* ---------------------------------------- */ |
2 | /* VARARGS for MIPS/GNU CC */ | |
3 | /* */ | |
4 | /* */ | |
5 | /* */ | |
6 | /* */ | |
7 | /* ---------------------------------------- */ | |
8 | ||
9 | ||
10 | /* These macros implement traditional (non-ANSI) varargs | |
11 | for GNU C. */ | |
12 | ||
13 | #define va_alist __builtin_va_alist | |
14 | #define va_dcl int __builtin_va_alist; | |
15 | #ifndef _VA_LIST_ | |
16 | #define _VA_LIST_ | |
17 | #define va_list char * | |
18 | #endif | |
19 | ||
20 | #define va_start(AP) AP = (char *) &__builtin_va_alist | |
21 | #define va_end(AP) | |
22 | ||
23 | #ifdef lint /* complains about constant in conditional context */ | |
24 | #define va_arg(list, mode) ((mode *)(list += sizeof(mode)))[-1] | |
25 | ||
26 | #else /* !lint */ | |
27 | #define va_arg(AP, mode) ((mode *)(AP = \ | |
28 | (char *) (sizeof(mode) > 4 ? ((int)AP + 2*8 - 1) & -8 \ | |
29 | : ((int)AP + 2*4 - 1) & -4)))[-1] | |
30 | #endif /* lint */ |