summaryrefslogtreecommitdiff
path: root/sysdeps/alpha/setjmp.S
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/alpha/setjmp.S')
-rw-r--r--sysdeps/alpha/setjmp.S57
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)