aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-frv
diff options
context:
space:
mode:
authorDavid Howells <dhowells@redhat.com>2006-01-18 20:43:59 -0500
committerLinus Torvalds <torvalds@g5.osdl.org>2006-01-18 22:20:29 -0500
commita411aee96ea7fe6fe065df65bf29ea755bcdb554 (patch)
tree3a6cfece835c6d896a035e05fbcfe34a4c691bfc /include/asm-frv
parent150256d8aadb3a337c31efa9e175cbd25bf06b06 (diff)
[PATCH] Handle TIF_RESTORE_SIGMASK for FRV
Handle TIF_RESTORE_SIGMASK as added by David Woodhouse's patch entitled: [PATCH] 2/3 Add TIF_RESTORE_SIGMASK support for arch/powerpc [PATCH] 3/3 Generic sys_rt_sigsuspend It does the following: (1) Declares TIF_RESTORE_SIGMASK for FRV. (2) Invokes it over to do_signal() when TIF_RESTORE_SIGMASK is set. (3) Makes do_signal() support TIF_RESTORE_SIGMASK, using the signal mask saved in current->saved_sigmask. (4) Discards sys_rt_sigsuspend() from the arch, using the generic one instead. (5) Makes sys_sigsuspend() save the signal mask and set TIF_RESTORE_SIGMASK rather than attempting to fudge the return registers. (6) Makes sys_sigsuspend() return -ERESTARTNOHAND rather than looping intrinsically. (7) Makes setup_frame(), setup_rt_frame() and handle_signal() return 0 or -EFAULT rather than true/false to be consistent with the rest of the kernel. Due to the fact do_signal() is then only called from one place: (8) Make do_signal() no longer have a return value is it was just being ignored; force_sig() takes care of this. (9) Discards the old sigmask argument to do_signal() as it's no longer necessary. This patch depends on the FRV signalling patches as well as the sys_rt_sigsuspend patch. Signed-off-by: David Howells <dhowells@redhat.com> Signed-off-by: David Woodhouse <dwmw2@infradead.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include/asm-frv')
-rw-r--r--include/asm-frv/thread_info.h2
-rw-r--r--include/asm-frv/unistd.h1
2 files changed, 3 insertions, 0 deletions
diff --git a/include/asm-frv/thread_info.h b/include/asm-frv/thread_info.h
index a5576e02dd1d..ea426abf01d3 100644
--- a/include/asm-frv/thread_info.h
+++ b/include/asm-frv/thread_info.h
@@ -129,6 +129,7 @@ register struct thread_info *__current_thread_info asm("gr15");
129#define TIF_NEED_RESCHED 3 /* rescheduling necessary */ 129#define TIF_NEED_RESCHED 3 /* rescheduling necessary */
130#define TIF_SINGLESTEP 4 /* restore singlestep on return to user mode */ 130#define TIF_SINGLESTEP 4 /* restore singlestep on return to user mode */
131#define TIF_IRET 5 /* return with iret */ 131#define TIF_IRET 5 /* return with iret */
132#define TIF_RESTORE_SIGMASK 6 /* restore signal mask in do_signal() */
132#define TIF_POLLING_NRFLAG 16 /* true if poll_idle() is polling TIF_NEED_RESCHED */ 133#define TIF_POLLING_NRFLAG 16 /* true if poll_idle() is polling TIF_NEED_RESCHED */
133#define TIF_MEMDIE 17 /* OOM killer killed process */ 134#define TIF_MEMDIE 17 /* OOM killer killed process */
134 135
@@ -138,6 +139,7 @@ register struct thread_info *__current_thread_info asm("gr15");
138#define _TIF_NEED_RESCHED (1 << TIF_NEED_RESCHED) 139#define _TIF_NEED_RESCHED (1 << TIF_NEED_RESCHED)
139#define _TIF_SINGLESTEP (1 << TIF_SINGLESTEP) 140#define _TIF_SINGLESTEP (1 << TIF_SINGLESTEP)
140#define _TIF_IRET (1 << TIF_IRET) 141#define _TIF_IRET (1 << TIF_IRET)
142#define _TIF_RESTORE_SIGMASK (1 << TIF_RESTORE_SIGMASK)
141#define _TIF_POLLING_NRFLAG (1 << TIF_POLLING_NRFLAG) 143#define _TIF_POLLING_NRFLAG (1 << TIF_POLLING_NRFLAG)
142 144
143#define _TIF_WORK_MASK 0x0000FFFE /* work to do on interrupt/exception return */ 145#define _TIF_WORK_MASK 0x0000FFFE /* work to do on interrupt/exception return */
diff --git a/include/asm-frv/unistd.h b/include/asm-frv/unistd.h
index cde376a7a857..4d994d2e99e3 100644
--- a/include/asm-frv/unistd.h
+++ b/include/asm-frv/unistd.h
@@ -486,6 +486,7 @@ static inline pid_t wait(int * wait_stat)
486/* #define __ARCH_WANT_SYS_SIGPENDING */ 486/* #define __ARCH_WANT_SYS_SIGPENDING */
487#define __ARCH_WANT_SYS_SIGPROCMASK 487#define __ARCH_WANT_SYS_SIGPROCMASK
488#define __ARCH_WANT_SYS_RT_SIGACTION 488#define __ARCH_WANT_SYS_RT_SIGACTION
489#define __ARCH_WANT_SYS_RT_SIGSUSPEND
489#endif 490#endif
490 491
491/* 492/*