00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #ifndef _ARM32_STDARG_H_
00033 #define _ARM32_STDARG_H_
00034 #define _ABLE_CLIB_STDARG_H
00035
00036 #ifdef __GNUC__
00037 #define __GNUC_PREREQ__(x, y) \
00038 ((__GNUC__ == (x) && __GNUC_MINOR__ >= (y)) || \
00039 (__GNUC__ > (x)))
00040 #else
00041 #define __GNUC_PREREQ__(x, y) 0
00042 #endif
00043
00044 #if __GNUC_PREREQ__(2, 96)
00045 typedef __builtin_va_list va_list;
00046 #else
00047 typedef char * va_list;
00048 #endif
00049
00050 #ifdef __lint__
00051 #define __builtin_next_arg(t) ((t) ? 0 : 0)
00052 #define __builtin_stdarg_start(a, l) ((a) = ((l) ? 0 : 0))
00053 #define __builtin_va_arg(a, t) ((t)((a) ? 0 : 0))
00054 #define __builtin_va_end
00055 #define __builtin_va_copy(d, s) ((d) = (s))
00056 #endif
00057
00058 #if __GNUC_PREREQ__(2, 96)
00059 #define va_start(ap, last) __builtin_stdarg_start((ap), (last))
00060 #define va_arg __builtin_va_arg
00061 #define va_end __builtin_va_end
00062 #define __va_copy(dest, src) __builtin_va_copy((dest), (src))
00063 #else
00064 #define __va_size(type) \
00065 (((sizeof(type) + sizeof(long) - 1) / sizeof(long)) * sizeof(long))
00066
00067 #define va_start(ap, last) \
00068 ((ap) = (va_list)__builtin_next_arg(last))
00069
00070 #define va_arg(ap, type) \
00071 ((type *)(ap += sizeof(type)))[-1]
00072
00073 #define va_end(ap)
00074
00075 #define __va_copy(dest, src) ((dest) = (src))
00076
00077 #endif
00078
00079 #if !defined(_ANSI_SOURCE) && \
00080 (defined(_ISOC99_SOURCE) || (__STDC_VERSION__ - 0) >= 199901L || \
00081 defined(_NETBSD_SOURCE))
00082 #define va_copy(dest, src) __va_copy((dest), (src))
00083 #endif
00084
00085 #endif