| #ifndef __STDARG |
| #define __STDARG |
| |
| #if !defined(_VA_LIST) && !defined(__VA_LIST_DEFINED) |
| #define _VA_LIST |
| #define _VA_LIST_DEFINED |
| typedef struct { |
| char *_a0; /* pointer to first homed integer arg */ |
| int _offset; /* byte offset of next param */ |
| float _tmp; |
| } __va_list; |
| #endif |
| static float __va_arg_tmp; |
| typedef __va_list va_list; |
| |
| #define va_start(list, start) ((void)( \ |
| (list)._a0 = (__typecode(__firstarg)==1 ? \ |
| (char*)&__firstarg+48 : (char *)&__firstarg), \ |
| (list)._offset = (__typecode(start)==1 ? \ |
| (char*)&start+56 : (char *)&start+8)-(list)._a0)) |
| #define va_arg(list, mode) (*(mode *)( \ |
| (list)._offset += (int)((sizeof(mode)+7)&~7), \ |
| (__typecode(mode)==1 && sizeof(mode)==4) ? \ |
| ((list)._tmp = (float)*(double *)((list)._a0 + (list)._offset - \ |
| ((list)._offset <= 48 ? 56 : 8))), (char *)&(list)._tmp : \ |
| (__typecode(mode)==1 && (list)._offset <= 48) ? \ |
| (list)._a0 + (list)._offset - 56 : \ |
| (list)._a0 + (list)._offset - (int)((sizeof(mode)+7)&~7))) |
| #define va_end(list) ((void)0) |
| #endif |