about summary refs log tree commit diff
path: root/sysdeps/alpha/setjmp.S
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2004-12-22 20:10:10 +0000
committerUlrich Drepper <drepper@redhat.com>2004-12-22 20:10:10 +0000
commita334319f6530564d22e775935d9c91663623a1b4 (patch)
treeb5877475619e4c938e98757d518bb1e9cbead751 /sysdeps/alpha/setjmp.S
parent0ecb606cb6cf65de1d9fc8a919bceb4be476c602 (diff)
downloadglibc-a334319f6530564d22e775935d9c91663623a1b4.tar.gz
glibc-a334319f6530564d22e775935d9c91663623a1b4.tar.xz
glibc-a334319f6530564d22e775935d9c91663623a1b4.zip
(CFLAGS-tst-align.c): Add -mpreferred-stack-boundary=4.
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)