Applied patch #2762516
[fw/sdcc] / device / include / stdarg.h
index c535af3295ca1101a92feb9f0ec826caccb217b4..db0b889ca0dc65497a93b7afaea5567f876a4aa9 100644 (file)
@@ -1,27 +1,33 @@
 /*-----------------------------------------------------------------------------------*/
-/* stdarg.h - ANSI macros for variable parameter list                               */
+/* stdarg.h - ANSI macros for variable parameter list                                */
 /*-----------------------------------------------------------------------------------*/
 
 #ifndef __SDC51_STDARG_H
 #define __SDC51_STDARG_H 1
 
-#if defined(SDCC_STACK_TENBIT)
+#if defined(__z80) || defined(__gbz80) || defined(__hc08)
 
-typedef        unsigned char _xdata * va_list ;
-#define va_arg(marker,type)   *((type _xdata * )(marker -= sizeof(type)))
-#define        va_start(marker,first)  { marker = (va_list) ((char _xdata * )&first) ; }
+typedef unsigned char * va_list;
+#define va_start(marker, last)  { marker = (va_list)&last + sizeof(last); }
+#define va_arg(marker, type)    *((type *)((marker += sizeof(type)) - sizeof(type)))
+
+#elif defined(__ds390) || defined(__ds400)
+
+typedef unsigned char * va_list;
+#define va_start(marker, first) { marker = (va_list)&first; }
+#define va_arg(marker, type)    *((type *)(marker -= sizeof(type)))
 
 #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) ; }
+typedef unsigned char __pdata * va_list;
+#define va_start(marker, first) { marker = (va_list)&first; }
+#define va_arg(marker, type)    *((type __pdata *)(marker -= sizeof(type)))
 
 #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_start(marker, first) { marker = (va_list)&first; }
+#define va_arg(marker, type)    *((type __data * )(marker -= sizeof(type)))
 
 #endif