From 14245eb70e2158738f3d8ec4f92d8a42db795de9 Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Wed, 25 Nov 1992 03:33:01 +0000 Subject: [PATCH] entered into RCS --- sysdeps/alpha/Implies | 2 ++ sysdeps/alpha/bytesex.h | 3 +++ sysdeps/alpha/setjmp_aux.c | 23 +++++++++++++++++++---- 3 files changed, 24 insertions(+), 4 deletions(-) create mode 100644 sysdeps/alpha/Implies create mode 100644 sysdeps/alpha/bytesex.h diff --git a/sysdeps/alpha/Implies b/sysdeps/alpha/Implies new file mode 100644 index 0000000000..93234096f0 --- /dev/null +++ b/sysdeps/alpha/Implies @@ -0,0 +1,2 @@ +# Alpha uses IEEE 754 floating point. +ieee754 diff --git a/sysdeps/alpha/bytesex.h b/sysdeps/alpha/bytesex.h new file mode 100644 index 0000000000..e873d2123c --- /dev/null +++ b/sysdeps/alpha/bytesex.h @@ -0,0 +1,3 @@ +/* Alpha is little-endian. */ + +#define __BYTE_ORDER __LITTLE_ENDIAN diff --git a/sysdeps/alpha/setjmp_aux.c b/sysdeps/alpha/setjmp_aux.c index e23939072f..9a67a6b799 100644 --- a/sysdeps/alpha/setjmp_aux.c +++ b/sysdeps/alpha/setjmp_aux.c @@ -16,7 +16,9 @@ License along with the GNU C Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#include +/*#include */ +#include "jmp_buf.h" +#define jmp_buf __jmp_buf #ifndef __GNUC__ #error This file uses GNU C extensions; you must compile with GCC. @@ -36,7 +38,7 @@ register double /* Save the current program position in ENV and return 0. */ int -__setjmp (jmp_buf env) +__setjmp_aux (jmp_buf env, long int *sp, long int *fp) { /* Save the integer registers. */ env[0].__9 = r9; @@ -46,13 +48,26 @@ __setjmp (jmp_buf env) env[0].__13 = r13; env[0].__14 = r14; +#if 1 /* XXX */ + /* Save the floating point registers. */ + env[0].__f2 = f2; + env[0].__f3 = f3; + env[0].__f4 = f4; + env[0].__f5 = f5; + env[0].__f6 = f6; + env[0].__f7 = f7; + env[0].__f8 = f8; + env[0].__f9 = f9; +#endif + /* Save the return address of our caller, where longjmp will jump to. */ env[0].__pc = retpc; - /* We lose if the compiler uses the FP in __setjmp. XXX */ + /* Save the FP and SP of our caller. The __setjmp entry point + simply puts these in the argument register for us to fetch. */ env[0].__fp = fp; - env[0].__sp = sp; + /* Return to the original caller of __setjmp. */ return 0; }