diff options
author | Doug Evans <dje@gnu.org> | 1995-03-23 02:42:02 +0000 |
---|---|---|
committer | Doug Evans <dje@gnu.org> | 1995-03-23 02:42:02 +0000 |
commit | 70e1449a371d0fb04a3fc9bbab9f2ace14839310 (patch) | |
tree | b13c14a4733a1cf7864317aeab1c43a1dd94e2c6 /gcc | |
parent | b41ac904b701d7e535bdfd763f2f8f43a46b3910 (diff) | |
download | gcc-70e1449a371d0fb04a3fc9bbab9f2ace14839310.zip gcc-70e1449a371d0fb04a3fc9bbab9f2ace14839310.tar.gz gcc-70e1449a371d0fb04a3fc9bbab9f2ace14839310.tar.bz2 |
va-i960.h (varargs va_start): Save g14 explicitly.
* ginclude/va-i960.h (varargs va_start): Save g14 explicitly.
Account for arguments preceding va_alist.
From-SVN: r9227
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ginclude/va-i960.h | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/ginclude/va-i960.h b/gcc/ginclude/va-i960.h index e896900..a30d5f5 100644 --- a/gcc/ginclude/va-i960.h +++ b/gcc/ginclude/va-i960.h @@ -48,7 +48,10 @@ __extension__ \ #define va_alist __builtin_va_alist #define va_dcl char *__builtin_va_alist; __va_ellipsis -#define va_start(AP) ((AP)[1] = 0, *(AP) = (unsigned) &va_alist) +#define va_start(AP) \ +__extension__ \ +({ __asm__ ("st g14,%0" : "=m" (*(AP))); \ + (AP)[1] = (__builtin_args_info (0) + __builtin_args_info (1)) * 4; }) #endif /* We cast to void * and then to TYPE * because this avoids |