linux_sysvec.c (5a6a4fb284b1a9c4b4105fd6ab8143356f3ef3f7) linux_sysvec.c (ba279bcd6d75aa236bcb9ccf11aeb6f51a2f8514)
1/*-
2 * Copyright (c) 2004 Tim J. Robbins
3 * Copyright (c) 2003 Peter Wemm
4 * Copyright (c) 2002 Doug Rabson
5 * Copyright (c) 1998-1999 Andrew Gallatin
6 * Copyright (c) 1994-1996 Søren Schmidt
7 * All rights reserved.
8 * Copyright (c) 2013, 2021 Dmitry Chagin <dchagin@FreeBSD.org>

--- 672 unchanged lines hidden (view full) ---

681 /* Translate the signal. */
682 sig = bsd_to_linux_signal(sig);
683
684 /* Build the argument list for the signal handler. */
685 regs->tf_rdi = sig; /* arg 1 in %rdi */
686 regs->tf_rax = 0;
687 regs->tf_rsi = (register_t)&sfp->sf_si; /* arg 2 in %rsi */
688 regs->tf_rdx = (register_t)&sfp->sf_sc; /* arg 3 in %rdx */
1/*-
2 * Copyright (c) 2004 Tim J. Robbins
3 * Copyright (c) 2003 Peter Wemm
4 * Copyright (c) 2002 Doug Rabson
5 * Copyright (c) 1998-1999 Andrew Gallatin
6 * Copyright (c) 1994-1996 Søren Schmidt
7 * All rights reserved.
8 * Copyright (c) 2013, 2021 Dmitry Chagin <dchagin@FreeBSD.org>

--- 672 unchanged lines hidden (view full) ---

681 /* Translate the signal. */
682 sig = bsd_to_linux_signal(sig);
683
684 /* Build the argument list for the signal handler. */
685 regs->tf_rdi = sig; /* arg 1 in %rdi */
686 regs->tf_rax = 0;
687 regs->tf_rsi = (register_t)&sfp->sf_si; /* arg 2 in %rsi */
688 regs->tf_rdx = (register_t)&sfp->sf_sc; /* arg 3 in %rdx */
689 regs->tf_rcx = (register_t)catcher;
689
690 /* Fill in POSIX parts. */
691 siginfo_to_lsiginfo(&ksi->ksi_info, &sf.sf_si, sig);
690
691 /* Fill in POSIX parts. */
692 siginfo_to_lsiginfo(&ksi->ksi_info, &sf.sf_si, sig);
692 sf.sf_handler = catcher;
693
694 mtx_unlock(&psp->ps_mtx);
695 PROC_UNLOCK(p);
696
697 /* Copy the sigframe out to the user's stack. */
698 if (copyout(&sf, sfp, sizeof(*sfp)) != 0) {
699 uprintf("pid %d comm %s has trashed its stack, killing\n",
700 p->p_pid, p->p_comm);

--- 377 unchanged lines hidden ---
693
694 mtx_unlock(&psp->ps_mtx);
695 PROC_UNLOCK(p);
696
697 /* Copy the sigframe out to the user's stack. */
698 if (copyout(&sf, sfp, sizeof(*sfp)) != 0) {
699 uprintf("pid %d comm %s has trashed its stack, killing\n",
700 p->p_pid, p->p_comm);

--- 377 unchanged lines hidden ---