1 /*-----------------------------------------------------------------------------------*/
2 /* stdarg.h - ANSI macros for variable parameter list */
3 /*-----------------------------------------------------------------------------------*/
5 #ifndef __SDC51_STDARG_H
6 #define __SDC51_STDARG_H 1
8 #if defined(__z80) || defined(__gbz80) || defined(__hc08)
10 typedef unsigned char * va_list;
11 #define va_start(list, last) list = (unsigned char *)&last + sizeof(last)
12 #define va_arg(list, type) *((type *)((list += sizeof(type)) - sizeof(type)))
14 #elif defined(__ds390) || defined(__ds400)
16 typedef unsigned char * va_list ;
17 #define va_arg(marker,type) *((type *)(marker -= sizeof(type)))
18 #define va_start(marker,first) { marker = &first; }
20 #elif defined(SDCC_USE_XSTACK)
22 typedef unsigned char __pdata * va_list ;
23 #define va_arg(marker,type) *((type __data *)(marker -= sizeof(type)))
24 #define va_start(marker,first) { marker = (va_list)((char __pdata *)&first); }
28 typedef unsigned char __data * va_list ;
29 #define va_arg(marker,type) *((type __data * )(marker -= sizeof(type)))
30 #define va_start(marker,first) { marker = (va_list) ((char __data * )&first); }
34 #define va_end(marker) marker = (va_list) 0;