comparison cos/include/stdarg.h @ 11:607898120eb1

Work on error in stdarg
author windel
date Sun, 13 Nov 2011 23:24:10 +0100
parents 92ace1ca50a8
children
comparison
equal deleted inserted replaced
10:2feec49e6d0a 11:607898120eb1
22 #ifndef __stdarg_h 22 #ifndef __stdarg_h
23 #define __stdarg_h 23 #define __stdarg_h
24 24
25 typedef char *va_list; 25 typedef char *va_list;
26 26
27 // In a 64 bits kernel we are using 64 bits pointers:
28 #define STACKITEM long
29
27 /* Amount of space required in an argument list for an arg of type TYPE. 30 /* Amount of space required in an argument list for an arg of type TYPE.
28 TYPE may alternatively be an expression whose type is used. */ 31 TYPE may alternatively be an expression whose type is used. */
29 32
30 #define __va_rounded_size(TYPE) \ 33 #define __va_rounded_size(TYPE) \
31 (((sizeof (TYPE) + sizeof (int) - 1) / sizeof (int)) * sizeof (int)) 34 (((sizeof (TYPE) + sizeof (STACKITEM) - 1) / sizeof (STACKITEM)) * sizeof (STACKITEM))
32 35
33 #define va_start(AP, LASTARG) \ 36 #define va_start(AP, LASTARG) \
34 (AP = ((char *) &(LASTARG) + __va_rounded_size(LASTARG))) 37 (AP = ((char *) &(LASTARG) + __va_rounded_size(LASTARG)))
35 38
36 extern void va_end (va_list);
37 #define va_end(AP) /* Nothing */ 39 #define va_end(AP) /* Nothing */
38 40
39 #define va_arg(AP, TYPE) (AP += __va_rounded_size (TYPE), \ 41 #define va_arg(AP, TYPE) (AP += __va_rounded_size (TYPE), \
40 *((TYPE *) (AP - __va_rounded_size (TYPE)))) 42 *((TYPE *) (AP - __va_rounded_size (TYPE))))
41 43