xref: /plan9-contrib/riscv64/include/ape/stdarg.h (revision ce95e1b3727b9cb1c223ffbed69aff21a8ced255)
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