aboutsummaryrefslogtreecommitdiffstats
path: root/code/tools/lcc/include/mips/irix/stdarg.h
diff options
context:
space:
mode:
Diffstat (limited to 'code/tools/lcc/include/mips/irix/stdarg.h')
-rw-r--r--code/tools/lcc/include/mips/irix/stdarg.h22
1 files changed, 22 insertions, 0 deletions
diff --git a/code/tools/lcc/include/mips/irix/stdarg.h b/code/tools/lcc/include/mips/irix/stdarg.h
new file mode 100644
index 0000000..594db32
--- /dev/null
+++ b/code/tools/lcc/include/mips/irix/stdarg.h
@@ -0,0 +1,22 @@
+#ifndef __STDARG
+#define __STDARG
+
+#if !defined(_VA_LIST)
+#define _VA_LIST
+typedef char *__va_list;
+#endif
+typedef __va_list va_list;
+
+#define va_start(list, start) ((void)((list) = (sizeof(start)<4 ? \
+ (char *)((int *)&(start)+1) : (char *)(&(start)+1))))
+#define __va_arg(list, mode, n) \
+ (*(mode *)(&(list += ((sizeof(mode)+n)&~n))[-(int)((sizeof(mode)+n)&~n)]))
+#define _bigendian_va_arg(list, mode, n) (\
+ sizeof(mode)==1 ? *(mode *)(&(list += 4)[-1]) : \
+ sizeof(mode)==2 ? *(mode *)(&(list += 4)[-2]) : __va_arg(list, mode, n))
+#define _littleendian_va_arg(list, mode, n) __va_arg(list, mode, n)
+#define va_end(list) ((void)0)
+#define va_arg(list, mode) (sizeof(mode)==8 ? \
+ *(mode *)(&(list = (char*)(((int)list + 15)&~7U))[-8]) : \
+ _bigendian_va_arg(list, mode, 3U))
+#endif