diff options
author | Roland McGrath <roland@gnu.org> | 1995-08-31 17:33:01 +0000 |
---|---|---|
committer | Roland McGrath <roland@gnu.org> | 1995-08-31 17:33:01 +0000 |
commit | e3726b056b3b1cfde7019e29d5d3c50ce70e08e9 (patch) | |
tree | 97695fe42ef6e492efc0d3b728218746d4ccae7e /sysdeps/i386/setjmp.c | |
parent | a993273c0d4d1907028adee7a2ae012826fd316c (diff) | |
download | glibc-e3726b056b3b1cfde7019e29d5d3c50ce70e08e9.zip glibc-e3726b056b3b1cfde7019e29d5d3c50ce70e08e9.tar.gz glibc-e3726b056b3b1cfde7019e29d5d3c50ce70e08e9.tar.bz2 |
Rewrote i386 setjmp in assembly.
Thu Aug 31 13:23:35 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
* sysdeps/unix/i386/brk.S [PIC]: Set __curbrk through the GOT.
Rewrote i386 setjmp code in assembly, so as to avoid fighting
with the compiler for the register values.
* sysdeps/i386/setjmp.S, sysdeps/i386/__longjmp.S: New files.
* sysdeps/i386/setjmp.c, sysdeps/i386/__longjmp.c: Files removed.
* sysdeps/i386/jmp_buf.h [! _ASM] (__jmp_buf): Define as array of ints.
[__USE_MISC || _ASM] (JB_*): New macros, for indices therein.
(_JMPBUF_UNWINDS): Use JB_SP.
Diffstat (limited to 'sysdeps/i386/setjmp.c')
-rw-r--r-- | sysdeps/i386/setjmp.c | 55 |
1 files changed, 0 insertions, 55 deletions
diff --git a/sysdeps/i386/setjmp.c b/sysdeps/i386/setjmp.c deleted file mode 100644 index fb8fc98..0000000 --- a/sysdeps/i386/setjmp.c +++ /dev/null @@ -1,55 +0,0 @@ -/* 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 -modify it under the terms of the GNU Library General Public License as -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. - -The GNU C Library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Library General Public License for more details. - -You should have received a copy of the GNU Library General Public -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. */ - -/* Put these global register declarations first, because we get an error if - they come after any function definition, including inlines which might - be in some header. */ - -#define REGS \ - REG (bx);\ - REG (si);\ - REG (di) - -#define REG(xx) register long int xx asm (#xx) -REGS; -#undef REG - -#include <errno.h> -#include <setjmp.h> - -/* Save the current program position in ENV and return 0. */ -int -__sigsetjmp (jmp_buf env, int savemask) -{ - /* Save the general registers. */ -#define REG(xx) env[0].__jmpbuf[0].__##xx = xx - REGS; -#undef REG - - /* Save the return PC. */ - env[0].__jmpbuf[0].__pc = ((void **) &env)[-1]; - - /* Save caller's FP, not our own. */ - env[0].__jmpbuf[0].__bp = ((void **) &env)[-2]; - - /* Save caller's SP, not our own. */ - env[0].__jmpbuf[0].__sp = (void *) &env; - - /* Save the signal mask if requested. */ - return __sigjmp_save (env, savemask); -} |