aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDoug Evans <dje@gnu.org>1995-03-23 02:42:02 +0000
committerDoug Evans <dje@gnu.org>1995-03-23 02:42:02 +0000
commit70e1449a371d0fb04a3fc9bbab9f2ace14839310 (patch)
treeb13c14a4733a1cf7864317aeab1c43a1dd94e2c6 /gcc
parentb41ac904b701d7e535bdfd763f2f8f43a46b3910 (diff)
downloadgcc-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.h5
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