diff options
Diffstat (limited to 'code/tools/lcc/include/alpha/osf/stdarg.h')
-rw-r--r-- | code/tools/lcc/include/alpha/osf/stdarg.h | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/code/tools/lcc/include/alpha/osf/stdarg.h b/code/tools/lcc/include/alpha/osf/stdarg.h new file mode 100644 index 0000000..a05c92b --- /dev/null +++ b/code/tools/lcc/include/alpha/osf/stdarg.h @@ -0,0 +1,28 @@ +#ifndef __STDARG +#define __STDARG + +#if !defined(_VA_LIST) +#define _VA_LIST +typedef struct { + char *_a0; /* pointer to first homed integer arg */ + int _offset; /* byte offset of next param */ + float _tmp; +} __va_list; +#endif +typedef __va_list va_list; + +#define va_start(list, start) ((void)( \ + (list)._a0 = (__typecode(__firstarg)==1 ? \ + (char*)&__firstarg+48 : (char *)&__firstarg), \ + (list)._offset = (__typecode(start)==1 ? \ + (char*)&start+56 : (char *)&start+8)-(list)._a0)) +#define va_arg(list, mode) (*(mode *)( \ + (list)._offset += (int)((sizeof(mode)+7)&~7), \ + (__typecode(mode)==1 && sizeof(mode)==4) ? \ + ((list)._tmp = (float)*(double *)((list)._a0 + (list)._offset - \ + ((list)._offset <= 48 ? 56 : 8))), (char *)&(list)._tmp : \ + (__typecode(mode)==1 && (list)._offset <= 48) ? \ + (list)._a0 + (list)._offset - 56 : \ + (list)._a0 + (list)._offset - (int)((sizeof(mode)+7)&~7))) +#define va_end(list) ((void)0) +#endif |