1 #ifndef __STDARG 2 #define __STDARG 3 4 typedef unsigned long long va_list; 5 6 /* stdarg - little-endian 64-bit */ 7 #define va_start(list, start) list =\ 8 (sizeof(start) < 4?\ 9 (unsigned long long)((long*)&(start)+1):\ 10 (unsigned long long)(&(start)+1)) 11 #define va_end(list)\ 12 USED(list) 13 #define va_arg(list, mode)\ 14 ((sizeof(mode) == 1)?\ 15 ((list += 4), (mode*)list)[-4]:\ 16 (sizeof(mode) == 2)?\ 17 ((list += 4), (mode*)list)[-2]:\ 18 (sizeof(mode) == 4)?\ 19 ((list += 4), (mode*)list)[-1]:\ 20 ((list += sizeof(mode)+7), (list &= ~7), (mode*)list)[-1]) 21 22 #endif /* __STDARG */ 23