645682fd40
can provide the correct context to each signal handler. Fix broken sigsuspend(): don't use p_oldsigmask as a flag, use SAS_OLDMASK as we did before the linuxthreads support merge (submitted by bde). Move ps_sigstk from to p_sigacts to the main proc structure since signal stack should not be shared among threads. Move SAS_OLDMASK and SAS_ALTSTACK flags from sigacts::ps_flags to proc::p_flag. Move PS_NOCLDSTOP and PS_NOCLDWAIT flags from proc::p_flag to procsig::ps_flag. Reviewed by: marcel, jdp, bde
33 lines
716 B
ArmAsm
33 lines
716 B
ArmAsm
#include "svr4_assym.h" /* system definitions */
|
|
#include <machine/asmacros.h> /* miscellaneous asm macros */
|
|
|
|
#include <svr4/svr4_syscall.h> /* system call numbers */
|
|
|
|
/* $FreeBSD$ */
|
|
|
|
NON_GPROF_ENTRY(svr4_sigcode)
|
|
call SVR4_SIGF_HANDLER(%esp)
|
|
leal SVR4_SIGF_UC(%esp),%eax # ucp (the call may have clobbered the
|
|
# copy at SIGF_UCP(%esp))
|
|
#ifdef VM86
|
|
testl $PSL_VM,SVR4_UC_EFLAGS(%eax)
|
|
jnz 1f
|
|
#endif
|
|
movl SVR4_UC_GS(%eax),%gs
|
|
1: pushl %eax # pointer to ucontext
|
|
pushl $1 # set context
|
|
movl $_svr4_sys_context,%eax
|
|
int $0x80 # enter kernel with args on stack
|
|
0: jmp 0b
|
|
|
|
ALIGN_TEXT
|
|
svr4_esigcode:
|
|
|
|
.data
|
|
.globl _svr4_szsigcode
|
|
_svr4_szsigcode:
|
|
.long svr4_esigcode - _svr4_sigcode
|
|
|
|
.text
|
|
|