aboutsummaryrefslogtreecommitdiff
path: root/linux/include/stdarg.h
diff options
context:
space:
mode:
Diffstat (limited to 'linux/include/stdarg.h')
-rwxr-xr-xlinux/include/stdarg.h28
1 files changed, 28 insertions, 0 deletions
diff --git a/linux/include/stdarg.h b/linux/include/stdarg.h
new file mode 100755
index 0000000..fd79ec0
--- /dev/null
+++ b/linux/include/stdarg.h
@@ -0,0 +1,28 @@
+#ifndef _STDARG_H
+#define _STDARG_H
+
+typedef char *va_list;
+
+/* Amount of space required in an argument list for an arg of type TYPE.
+ TYPE may alternatively be an expression whose type is used. */
+
+#define __va_rounded_size(TYPE) \
+ (((sizeof (TYPE) + sizeof (int) - 1) / sizeof (int)) * sizeof (int))
+
+#ifndef __sparc__
+#define va_start(AP, LASTARG) \
+ (AP = ((char *) &(LASTARG) + __va_rounded_size (LASTARG)))
+#else
+#define va_start(AP, LASTARG) \
+ (__builtin_saveregs (), \
+ AP = ((char *) &(LASTARG) + __va_rounded_size (LASTARG)))
+#endif
+
+void va_end (va_list); /* Defined in gnulib */
+#define va_end(AP)
+
+#define va_arg(AP, TYPE) \
+ (AP += __va_rounded_size (TYPE), \
+ *((TYPE *) (AP - __va_rounded_size (TYPE))))
+
+#endif /* _STDARG_H */