diff options
author | David Howells <dhowells@redhat.com> | 2009-06-11 08:05:14 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-06-11 12:01:26 -0400 |
commit | b7bab880c795ec620041ef0295cbbbc5a726f414 (patch) | |
tree | 253aa413356df7b444340114643c4dcdd122ffb5 /arch/frv | |
parent | aa1913c0214a53568731617c0afbbfa3f59513fb (diff) |
FRV: Implement TIF_NOTIFY_RESUME
Implement the TIF_NOTIFY_RESUME thread flag, making it call do_notify_resume()
which then clears it. This will be made use of later by tracehooks in the
new-style ptrace implementation
Also discard TIF_IRET as that's not used by FRV.
Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch/frv')
-rw-r--r-- | arch/frv/include/asm/thread_info.h | 10 | ||||
-rw-r--r-- | arch/frv/kernel/signal.c | 5 |
2 files changed, 10 insertions, 5 deletions
diff --git a/arch/frv/include/asm/thread_info.h b/arch/frv/include/asm/thread_info.h index bb53ab753ffb..e8a5ed7be021 100644 --- a/arch/frv/include/asm/thread_info.h +++ b/arch/frv/include/asm/thread_info.h | |||
@@ -109,20 +109,20 @@ register struct thread_info *__current_thread_info asm("gr15"); | |||
109 | * - other flags in MSW | 109 | * - other flags in MSW |
110 | */ | 110 | */ |
111 | #define TIF_SYSCALL_TRACE 0 /* syscall trace active */ | 111 | #define TIF_SYSCALL_TRACE 0 /* syscall trace active */ |
112 | #define TIF_SIGPENDING 1 /* signal pending */ | 112 | #define TIF_NOTIFY_RESUME 1 /* callback before returning to user */ |
113 | #define TIF_NEED_RESCHED 2 /* rescheduling necessary */ | 113 | #define TIF_SIGPENDING 2 /* signal pending */ |
114 | #define TIF_SINGLESTEP 3 /* restore singlestep on return to user mode */ | 114 | #define TIF_NEED_RESCHED 3 /* rescheduling necessary */ |
115 | #define TIF_IRET 4 /* return with iret */ | 115 | #define TIF_SINGLESTEP 4 /* restore singlestep on return to user mode */ |
116 | #define TIF_RESTORE_SIGMASK 5 /* restore signal mask in do_signal() */ | 116 | #define TIF_RESTORE_SIGMASK 5 /* restore signal mask in do_signal() */ |
117 | #define TIF_POLLING_NRFLAG 16 /* true if poll_idle() is polling TIF_NEED_RESCHED */ | 117 | #define TIF_POLLING_NRFLAG 16 /* true if poll_idle() is polling TIF_NEED_RESCHED */ |
118 | #define TIF_MEMDIE 17 /* OOM killer killed process */ | 118 | #define TIF_MEMDIE 17 /* OOM killer killed process */ |
119 | #define TIF_FREEZE 18 /* freezing for suspend */ | 119 | #define TIF_FREEZE 18 /* freezing for suspend */ |
120 | 120 | ||
121 | #define _TIF_SYSCALL_TRACE (1 << TIF_SYSCALL_TRACE) | 121 | #define _TIF_SYSCALL_TRACE (1 << TIF_SYSCALL_TRACE) |
122 | #define _TIF_NOTIFY_RESUME (1 << TIF_NOTIFY_RESUME) | ||
122 | #define _TIF_SIGPENDING (1 << TIF_SIGPENDING) | 123 | #define _TIF_SIGPENDING (1 << TIF_SIGPENDING) |
123 | #define _TIF_NEED_RESCHED (1 << TIF_NEED_RESCHED) | 124 | #define _TIF_NEED_RESCHED (1 << TIF_NEED_RESCHED) |
124 | #define _TIF_SINGLESTEP (1 << TIF_SINGLESTEP) | 125 | #define _TIF_SINGLESTEP (1 << TIF_SINGLESTEP) |
125 | #define _TIF_IRET (1 << TIF_IRET) | ||
126 | #define _TIF_RESTORE_SIGMASK (1 << TIF_RESTORE_SIGMASK) | 126 | #define _TIF_RESTORE_SIGMASK (1 << TIF_RESTORE_SIGMASK) |
127 | #define _TIF_POLLING_NRFLAG (1 << TIF_POLLING_NRFLAG) | 127 | #define _TIF_POLLING_NRFLAG (1 << TIF_POLLING_NRFLAG) |
128 | #define _TIF_FREEZE (1 << TIF_FREEZE) | 128 | #define _TIF_FREEZE (1 << TIF_FREEZE) |
diff --git a/arch/frv/kernel/signal.c b/arch/frv/kernel/signal.c index 3bdb368292a8..7ae290a161de 100644 --- a/arch/frv/kernel/signal.c +++ b/arch/frv/kernel/signal.c | |||
@@ -564,4 +564,9 @@ asmlinkage void do_notify_resume(__u32 thread_info_flags) | |||
564 | if (thread_info_flags & (_TIF_SIGPENDING | _TIF_RESTORE_SIGMASK)) | 564 | if (thread_info_flags & (_TIF_SIGPENDING | _TIF_RESTORE_SIGMASK)) |
565 | do_signal(); | 565 | do_signal(); |
566 | 566 | ||
567 | /* deal with notification on about to resume userspace execution */ | ||
568 | if (thread_info_flags & _TIF_NOTIFY_RESUME) { | ||
569 | clear_thread_flag(TIF_NOTIFY_RESUME); | ||
570 | } | ||
571 | |||
567 | } /* end do_notify_resume() */ | 572 | } /* end do_notify_resume() */ |