mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-29 11:41:21 +03:00
Update.
2001-02-26 Jakub Jelinek <jakub@redhat.com> * sysdeps/generic/sigcontextinfo.h (CALL_SIGHANDLER): Define. * sysdeps/mach/hurd/i386/sigcontextinfo.h: Likewise. * sysdeps/unix/sysv/linux/alpha/sigcontextinfo.h: Likewise. * sysdeps/unix/sysv/linux/arm/sigcontextinfo.h: Likewise. * sysdeps/unix/sysv/linux/i386/sigcontextinfo.h: Likewise. * sysdeps/unix/sysv/linux/m68k/sigcontextinfo.h: Likewise. * sysdeps/unix/sysv/linux/mips/sigcontextinfo.h: Likewise. * sysdeps/unix/sysv/linux/powerpc/sigcontextinfo.h: Likewise. * sysdeps/unix/sysv/linux/s390/sigcontextinfo.h: Likewise. * sysdeps/unix/sysv/linux/sh/sigcontextinfo.h: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc32/sigcontextinfo.h: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc64/sigcontextinfo.h: Likewise.
This commit is contained in:
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 1998, 1999 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1998, 1999, 2001 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
|
||||
|
||||
@ -22,3 +22,30 @@
|
||||
#define GET_PC(ctx) ((void *) ctx.eip)
|
||||
#define GET_FRAME(ctx) ((void *) ctx.ebp)
|
||||
#define GET_STACK(ctx) ((void *) ctx.esp_at_signal)
|
||||
#define CALL_SIGHANDLER(handler, signo, ctx) \
|
||||
do { \
|
||||
int __tmp1, __tmp2, __tmp3, __tmp4; \
|
||||
__asm __volatile ("movl\t%%esp, %%edi\n\t" \
|
||||
"andl\t$-16, %%esp\n\t" \
|
||||
"subl\t%8, %%esp\n\t" \
|
||||
"movl\t%%edi, %c8-4(%%esp)\n\t" \
|
||||
"movl\t%1, 0(%%esp)\n\t" \
|
||||
"leal\t4(%%esp), %%edi\n\t" \
|
||||
"cld\n\t" \
|
||||
"rep\tmovsl\n\t" \
|
||||
"call\t*%0\n\t" \
|
||||
"cld\n\t" \
|
||||
"movl\t%9, %%ecx\n\t" \
|
||||
"subl\t%%edi, %%esi\n\t" \
|
||||
"leal\t4(%%esp,%%esi,1), %%edi\n\t" \
|
||||
"leal\t4(%%esp), %%esi\n\t" \
|
||||
"rep\tmovsl\n\t" \
|
||||
"movl\t%c8-4(%%esp), %%esp\n\t" \
|
||||
: "=a" (__tmp1), "=d" (__tmp2), "=S" (__tmp3), \
|
||||
"=c" (__tmp4) \
|
||||
: "0" (handler), "1" (signo), "2" (&ctx), \
|
||||
"3" (sizeof (struct sigcontext) / 4), \
|
||||
"n" ((sizeof (struct sigcontext) + 19) & ~15), \
|
||||
"i" (sizeof (struct sigcontext) / 4) \
|
||||
: "cc", "edi"); \
|
||||
} while (0)
|
||||
|
Reference in New Issue
Block a user