1 /* Copyright (C) 1998 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
3 Contributed by Richard Henderson <rth@cygnus.com>, 1998
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public License as
7 published by the Free Software Foundation; either version 2 of the
8 License, or (at your option) any later version.
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details.
15 You should have received a copy of the GNU Library General Public
16 License along with the GNU C Library; see the file COPYING.LIB. If not,
17 write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. */
22 /* On Alpha we desparately want to avoid having to issue an imb. Ordinarily
23 the kernel would have to issue one after setting up the signal return
24 stack, but the Linux rt_sigaction syscall is prepared to accept a pointer
25 to the sigreturn syscall, instead of inlining it on the stack.
27 This just about halves signal delivery time. */
29 #ifdef __NR_rt_sigaction
31 ENTRY(__syscall_rt_sigaction)
40 /* Indicate non-standard use of our PV. */
44 ldl t0, 8(a1) # sa_flags
45 lda a4, sigreturn-__syscall_rt_sigaction(pv)
46 lda t1, rt_sigreturn-__syscall_rt_sigaction(pv)
47 and t0, 0x00000040, t0 # SA_SIGINFO
49 0: ldi v0,__NR_rt_sigaction
61 END(__syscall_rt_sigaction)
77 ldi v0,__NR_rt_sigreturn
81 ENTRY(__syscall_rt_sigaction)
86 END(__syscall_rt_sigaction)