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