|
|
1.1 root 1: #ifndef __STDARG
2: #define __STDARG
3:
4: typedef char *va_list;
5:
6: #define va_start(list, start) ((void)(list = (sizeof(start)<4 ? (char *)((int *)&(start)+1) : \
7: (char *)(&(start)+1))))
8: #define va_end(list) ((void)0)
9: #define __va_arg(list, mode, n) *(mode *)(&(list += ((sizeof(mode)+n)&~n))[-(int)((sizeof(mode)+n)&~n)])
10: #define _bigendian_va_arg(list, mode, n) (\
11: sizeof(mode)==1 ? *(mode *)(&(list += 4)[-1]) : \
12: sizeof(mode)==2 ? *(mode *)(&(list += 4)[-2]) : __va_arg(list, mode, n) )
13: #define _littleendian_va_arg(list, mode, n) __va_arg(list, mode, n)
14: #define va_arg(list, mode) (sizeof(mode)==8 ? *(mode *)(&(list = (char*)(((int)list + 15)&~7U))[-8]) : \
15: _littleendian_va_arg(list, mode, 3U))
16:
17: #endif /* __STDARG */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.