From 1f58923f3c7fc2cb0dc823f3cf1c55773f759318 Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Sun, 4 Dec 1994 17:53:34 +0000 Subject: [PATCH] Implement __sigsetjmp instead of __setjmp; call __sigjmp_save. --- sysdeps/m68k/setjmp.c | 18 +++++++----------- sysdeps/vax/setjmp.c | 16 +++++++--------- 2 files changed, 14 insertions(+), 20 deletions(-) diff --git a/sysdeps/m68k/setjmp.c b/sysdeps/m68k/setjmp.c index 66695b8..acb831e 100644 --- a/sysdeps/m68k/setjmp.c +++ b/sysdeps/m68k/setjmp.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1992 Free Software Foundation, Inc. +/* Copyright (C) 1991, 1992, 1994 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 @@ -16,27 +16,23 @@ 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 - -#ifndef __GNUC__ - #error This file uses GNU C extensions; you must compile with GCC. -#endif - - /* Save the current program position in ENV and return 0. */ int -DEFUN(__setjmp, (env), jmp_buf env) +__sigsetjmp (jmp_buf env, int savemask) { /* Save data registers D1 through D7. */ - asm volatile("movem%.l d1-d7, %0" : : "m" (env[0].__dregs[0])); + asm volatile ("movem%.l d1-d7, %0" : : "m" (env[0].__dregs[0])); /* Save return address in place of register A0. */ env[0].__aregs[0] = (PTR) ((PTR *) &env)[-1]; /* Save address registers A1 through A5. */ - asm volatile("movem%.l a1-a5, %0" : : "m" (env[0].__aregs[1])); + asm volatile ("movem%.l a1-a5, %0" : : "m" (env[0].__aregs[1])); + + /* Save the signal mask if requested. */ + __sigjmp_save (env, savemask); /* Save caller's FP, not our own. */ env[0].__fp = (PTR) ((PTR *) &env)[-2]; diff --git a/sysdeps/vax/setjmp.c b/sysdeps/vax/setjmp.c index 0124ae3..a3a71c1 100644 --- a/sysdeps/vax/setjmp.c +++ b/sysdeps/vax/setjmp.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1992 Free Software Foundation, Inc. +/* Copyright (C) 1991, 1992, 1994 Free Software Foundation, Inc. Derived from @(#)_setjmp.s 5.7 (Berkeley) 6/27/88, Copyright (c) 1980 Regents of the University of California. @@ -17,21 +17,19 @@ 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 -#ifndef __GNUC__ - #error This file uses GNU C extensions; you must compile with GCC. -#endif - /* Save the current program position in ENV and return 0. */ int -DEFUN(__setjmp, (env), jmp_buf env) +__sigsetjmp (jmp_buf env, int savemask) { /* Save our caller's FP and PC. */ - asm("movl 12(fp), %0" : "=g" (env[0].__fp)); - asm("movl 16(fp), %0" : "=g" (env[0].__pc)); + asm ("movl 12(fp), %0" : "=g" (env[0].__fp)); + asm ("movl 16(fp), %0" : "=g" (env[0].__pc)); + + /* Save the signal mask if requested. */ + __sigjmp_save (env, savemask); return 0; } -- 2.7.4