diff options
author | rms <rms@138bc75d-0d04-0410-961f-82ee72b054a4> | 1992-01-30 20:37:09 +0000 |
---|---|---|
committer | rms <rms@138bc75d-0d04-0410-961f-82ee72b054a4> | 1992-01-30 20:37:09 +0000 |
commit | 91a8b2ec7fb6d48647034acf20534011a5927ec5 (patch) | |
tree | 578fa8508cd6c30b1f9ef459015ca4e9385bd718 /gcc/ginclude | |
parent | 11cbc2fd4683e1a926d06d8c4bfdfe3bd95bab11 (diff) | |
download | gcc-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.h | 8 | ||||
-rw-r--r-- | gcc/ginclude/va-mips.h | 16 |
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 */ |