summaryrefslogtreecommitdiff
path: root/gcc/ginclude
diff options
context:
space:
mode:
authorrms <rms@138bc75d-0d04-0410-961f-82ee72b054a4>1992-01-30 20:37:09 +0000
committerrms <rms@138bc75d-0d04-0410-961f-82ee72b054a4>1992-01-30 20:37:09 +0000
commit91a8b2ec7fb6d48647034acf20534011a5927ec5 (patch)
tree578fa8508cd6c30b1f9ef459015ca4e9385bd718 /gcc/ginclude
parent11cbc2fd4683e1a926d06d8c4bfdfe3bd95bab11 (diff)
downloadgcc-91a8b2ec7fb6d48647034acf20534011a5927ec5.tar.gz
*** empty log message ***
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@254 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ginclude')
-rw-r--r--gcc/ginclude/stdarg.h8
-rw-r--r--gcc/ginclude/va-mips.h16
2 files changed, 21 insertions, 3 deletions
diff --git a/gcc/ginclude/stdarg.h b/gcc/ginclude/stdarg.h
index 00e714a5086..e670fe19526 100644
--- a/gcc/ginclude/stdarg.h
+++ b/gcc/ginclude/stdarg.h
@@ -12,6 +12,12 @@
#ifdef __i860__
#include "va-i860.h"
#else
+#ifdef __hp9000s800__
+#include "va-hp800.h"
+#else
+#ifdef __mips__
+#include "va-mips.h"
+#else
/* The macro _VA_LIST_ is the same thing used by this file in Ultrix. */
#ifndef _VA_LIST_
@@ -45,6 +51,8 @@ void va_end (va_list); /* Defined in libgcc.a */
(AP += __va_rounded_size (TYPE), \
*((TYPE *) (AP - __va_rounded_size (TYPE))))
+#endif /* not mips */
+#endif /* not hp9000s800 */
#endif /* not i860 */
#endif /* not m88k */
#endif /* _STDARG_H */
diff --git a/gcc/ginclude/va-mips.h b/gcc/ginclude/va-mips.h
index 24fa9baa1cb..ffa03fb2867 100644
--- a/gcc/ginclude/va-mips.h
+++ b/gcc/ginclude/va-mips.h
@@ -28,15 +28,25 @@
typedef char * __va___list;
#endif
+#define __va_rounded_size(TYPE) \
+ (((sizeof (TYPE) + sizeof (int) - 1) / sizeof (int)) * sizeof (int))
+
+#ifdef _STDARG_H
+#define va_start(AP, LASTARG) \
+ (AP = ((char *) &(LASTARG) + __va_rounded_size (LASTARG)))
+#else
#define va_start(AP) AP = (char *) &__builtin_va_alist
+#endif
+
#define va_end(AP)
#ifdef lint /* complains about constant in conditional context */
#define va_arg(list, mode) ((mode *)(list += sizeof(mode)))[-1]
#else /* !lint */
-#define va_arg(AP, mode) ((mode *)(AP = \
- (char *) (sizeof(mode) > 4 ? ((int)AP + 2*8 - 1) & -8 \
- : ((int)AP + 2*4 - 1) & -4)))[-1]
+#define va_arg(AP, mode) \
+ ((mode *)(AP = (char *) (__alignof(mode) > 4 \
+ ? ((int)AP + 2*8 - 1) & -8 \
+ : ((int)AP + 2*4 - 1) & -4)))[-1]
#endif /* lint */