Mercurial > lcfOS
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 |