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