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