diff options
Diffstat (limited to 'sysdeps/alpha/setjmp.S')
-rw-r--r-- | sysdeps/alpha/setjmp.S | 57 |
1 files changed, 14 insertions, 43 deletions
diff --git a/sysdeps/alpha/setjmp.S b/sysdeps/alpha/setjmp.S index bc5da0f5bc..14a0320cd3 100644 --- a/sysdeps/alpha/setjmp.S +++ b/sysdeps/alpha/setjmp.S @@ -1,4 +1,4 @@ -/* Copyright (C) 1992,1994,1996,1997,2002,2006 Free Software Foundation, Inc. +/* Copyright (C) 1992, 1994, 1996, 1997, 2002 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -19,24 +19,20 @@ #define __ASSEMBLY__ #include <sysdep.h> -#include <jmpbuf-offsets.h> +#define _ASM +#define _SETJMP_H +#include <bits/setjmp.h> - .ent __sigsetjmp - .global __sigsetjmp + .ent __sigsetjmp + .global __sigsetjmp __sigsetjmp: - ldgp gp, 0(pv) + ldgp gp, 0(pv) $sigsetjmp_local: -#ifndef PIC -#define FRAME 16 - subq sp, FRAME, sp - .frame sp, FRAME, ra, 0 - stq ra, 0(sp) - .mask 0x04000000, -FRAME -#else -#define FRAME 0 - .frame sp, FRAME, ra, 0 -#endif + subq sp, 16, sp + .frame sp, 16, ra, 0 + stq ra, 0(sp) + .mask 0x04000000, -16 #ifdef PROF .set noat lda AT, _mcount @@ -51,27 +47,10 @@ $sigsetjmp_local: stq s3, JB_S3*8(a0) stq s4, JB_S4*8(a0) stq s5, JB_S5*8(a0) -#ifdef PTR_MANGLE - PTR_MANGLE(t1, ra, t0) - stq t1, JB_PC*8(a0) -#else stq ra, JB_PC*8(a0) -#endif -#if defined(PTR_MANGLE) && FRAME == 0 - PTR_MANGLE2(t1, sp, t0) -#else - addq sp, FRAME, t1 -# ifdef PTR_MANGLE - PTR_MANGLE2(t1, t1, t0) -# endif -#endif - stq t1, JB_SP*8(a0) -#ifdef PTR_MANGLE - PTR_MANGLE2(t1, fp, t0) - stq t1, JB_FP*8(a0) -#else + addq sp, 16, t0 stq fp, JB_FP*8(a0) -#endif + stq t0, JB_SP*8(a0) stt $f2, JB_F2*8(a0) stt $f3, JB_F3*8(a0) stt $f4, JB_F4*8(a0) @@ -81,20 +60,12 @@ $sigsetjmp_local: stt $f8, JB_F8*8(a0) stt $f9, JB_F9*8(a0) -#ifndef PIC /* Call to C to (potentially) save our signal mask. */ jsr ra, __sigjmp_save + ldq ra, 0(sp) addq sp, 16, sp ret -#elif defined NOT_IN_libc && defined IS_IN_rtld - /* In ld.so we never save the signal mask. */ - mov 0, v0 - ret -#else - /* Tailcall to save the signal mask. */ - br $31, __sigjmp_save !samegp -#endif END(__sigsetjmp) |