* sim/ucsim/hc08.src/inst.cc,
[fw/sdcc] / device / include / stdarg.h
index aa2a8615a344a36d59b631350ae5d65c0e0abb3f..7f77256c337d08408ab33c795d204c13387760d5 100644 (file)
@@ -5,17 +5,29 @@
 #ifndef __SDC51_STDARG_H
 #define __SDC51_STDARG_H 1
 
-#ifdef SDCC_USE_XSTACK
+#if defined(__z80) || defined(__gbz80) || defined(__hc08)
 
-typedef        unsigned char _pdata * va_list ;
-#define va_arg(marker,type)   *((type _data * )(marker -= sizeof(type)))
-#define        va_start(marker,first)  { marker = (va_list) ((char _pdata * )&first) ; }
+typedef unsigned char * va_list;
+#define va_start(list, last)   list = (unsigned char *)&last + sizeof(last)
+#define va_arg(list, type)     *((type *)((list += sizeof(type)) - sizeof(type)))
+
+#elif defined(__ds390) || defined(__ds400)
+
+typedef        unsigned char * va_list ;
+#define va_arg(marker,type) *((type *)(marker -= sizeof(type)))
+#define        va_start(marker,first) { marker = &first; }
+
+#elif defined(SDCC_USE_XSTACK)
+
+typedef        unsigned char pdata * va_list ;
+#define va_arg(marker,type) *((type data *)(marker -= sizeof(type)))
+#define        va_start(marker,first) { marker = (va_list)((char pdata *)&first); }
 
 #else
 
-typedef        unsigned char _data *  va_list ;
-#define va_arg(marker,type)   *((type _data * )(marker -= sizeof(type)))
-#define        va_start(marker,first)  { marker = (va_list) ((char _data * )&first) ; }
+typedef        unsigned char data * va_list ;
+#define va_arg(marker,type) *((type data * )(marker -= sizeof(type)))
+#define        va_start(marker,first) { marker = (va_list) ((char data * )&first); }
 
 #endif