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