xref: /plan9-contrib/amd64/include/ape/stdarg.h (revision 272efad760864ee41cfe633b56aea9b4f5cf3ae7)
1*272efad7SDavid du Colombier #ifndef __STDARG
2*272efad7SDavid du Colombier #define __STDARG
3*272efad7SDavid du Colombier 
4*272efad7SDavid du Colombier typedef char *va_list;
5*272efad7SDavid du Colombier 
6*272efad7SDavid du Colombier #define va_start(list, start) list = (sizeof(start)<8 ? (char *)((long long *)&(start)+1) : \
7*272efad7SDavid du Colombier (char *)(&(start)+1))
8*272efad7SDavid du Colombier #define va_end(list)
9*272efad7SDavid du Colombier #define va_arg(list, mode)\
10*272efad7SDavid du Colombier 	((sizeof(mode) == 1)?\
11*272efad7SDavid du Colombier 		((mode*)(list += 8))[-8]:\
12*272efad7SDavid du Colombier 	(sizeof(mode) == 2)?\
13*272efad7SDavid du Colombier 		((mode*)(list += 8))[-4]:\
14*272efad7SDavid du Colombier 	(sizeof(mode) == 4)?\
15*272efad7SDavid du Colombier 		((mode*)(list += 8))[-2]:\
16*272efad7SDavid du Colombier 		((mode*)(list += sizeof(mode)))[-1])
17*272efad7SDavid du Colombier 
18*272efad7SDavid du Colombier #endif /* __STDARG */
19