| #ifndef _STDARG_H |
| #define _STDARG_H |
| |
| typedef char *va_list; |
| |
| /* Amount of space required in an argument list for an arg of type TYPE. |
| TYPE may alternatively be an expression whose type is used. */ |
| |
| #define __va_rounded_size(TYPE) \ |
| (((sizeof (TYPE) + sizeof (int) - 1) / sizeof (int)) * sizeof (int)) |
| |
| #ifndef __sparc__ |
| #define va_start(AP, LASTARG) \ |
| (AP = ((char *) &(LASTARG) + __va_rounded_size (LASTARG))) |
| #else |
| #define va_start(AP, LASTARG) \ |
| (__builtin_saveregs (), \ |
| AP = ((char *) &(LASTARG) + __va_rounded_size (LASTARG))) |
| #endif |
| |
| void va_end (va_list); /* Defined in gnulib */ |
| #define va_end(AP) |
| |
| #define va_arg(AP, TYPE) \ |
| (AP += __va_rounded_size (TYPE), \ |
| *((TYPE *) (AP - __va_rounded_size (TYPE)))) |
| |
| #endif /* _STDARG_H */ |