diff options
author | Andy Lutomirski <luto@kernel.org> | 2016-08-02 17:05:36 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2016-08-02 19:35:23 -0400 |
commit | 7e7814180b334dff97ef8f56c7c40c277ad4531c (patch) | |
tree | 8f2f0ce6b3aca6dcce64a46047c42df63f43a7e9 /arch/sh | |
parent | 0a11b9aae49adf1f952427ef1a1d9e793dd6ffb6 (diff) |
signal: consolidate {TS,TLF}_RESTORE_SIGMASK code
In general, there's no need for the "restore sigmask" flag to live in
ti->flags. alpha, ia64, microblaze, powerpc, sh, sparc (64-bit only),
tile, and x86 use essentially identical alternative implementations,
placing the flag in ti->status.
Replace those optimized implementations with an equally good common
implementation that stores it in a bitfield in struct task_struct and
drop the custom implementations.
Additional architectures can opt in by removing their
TIF_RESTORE_SIGMASK defines.
Link: http://lkml.kernel.org/r/8a14321d64a28e40adfddc90e18a96c086a6d6f9.1468522723.git.luto@kernel.org
Signed-off-by: Andy Lutomirski <luto@kernel.org>
Tested-by: Michael Ellerman <mpe@ellerman.id.au> [powerpc]
Cc: Richard Henderson <rth@twiddle.net>
Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
Cc: Matt Turner <mattst88@gmail.com>
Cc: Tony Luck <tony.luck@intel.com>
Cc: Fenghua Yu <fenghua.yu@intel.com>
Cc: Michal Simek <monstr@monstr.eu>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
Cc: Rich Felker <dalias@libc.org>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Chris Metcalf <cmetcalf@mellanox.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Borislav Petkov <bp@suse.de>
Cc: Brian Gerst <brgerst@gmail.com>
Cc: Dmitry Safonov <dsafonov@virtuozzo.com>
Cc: Oleg Nesterov <oleg@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch/sh')
-rw-r--r-- | arch/sh/include/asm/thread_info.h | 26 |
1 files changed, 0 insertions, 26 deletions
diff --git a/arch/sh/include/asm/thread_info.h b/arch/sh/include/asm/thread_info.h index 2afa321157be..6c65dcd470ab 100644 --- a/arch/sh/include/asm/thread_info.h +++ b/arch/sh/include/asm/thread_info.h | |||
@@ -151,19 +151,10 @@ extern void init_thread_xstate(void); | |||
151 | * ever touches our thread-synchronous status, so we don't | 151 | * ever touches our thread-synchronous status, so we don't |
152 | * have to worry about atomic accesses. | 152 | * have to worry about atomic accesses. |
153 | */ | 153 | */ |
154 | #define TS_RESTORE_SIGMASK 0x0001 /* restore signal mask in do_signal() */ | ||
155 | #define TS_USEDFPU 0x0002 /* FPU used by this task this quantum */ | 154 | #define TS_USEDFPU 0x0002 /* FPU used by this task this quantum */ |
156 | 155 | ||
157 | #ifndef __ASSEMBLY__ | 156 | #ifndef __ASSEMBLY__ |
158 | 157 | ||
159 | #define HAVE_SET_RESTORE_SIGMASK 1 | ||
160 | static inline void set_restore_sigmask(void) | ||
161 | { | ||
162 | struct thread_info *ti = current_thread_info(); | ||
163 | ti->status |= TS_RESTORE_SIGMASK; | ||
164 | WARN_ON(!test_bit(TIF_SIGPENDING, (unsigned long *)&ti->flags)); | ||
165 | } | ||
166 | |||
167 | #define TI_FLAG_FAULT_CODE_SHIFT 24 | 158 | #define TI_FLAG_FAULT_CODE_SHIFT 24 |
168 | 159 | ||
169 | /* | 160 | /* |
@@ -182,23 +173,6 @@ static inline unsigned int get_thread_fault_code(void) | |||
182 | return ti->flags >> TI_FLAG_FAULT_CODE_SHIFT; | 173 | return ti->flags >> TI_FLAG_FAULT_CODE_SHIFT; |
183 | } | 174 | } |
184 | 175 | ||
185 | static inline void clear_restore_sigmask(void) | ||
186 | { | ||
187 | current_thread_info()->status &= ~TS_RESTORE_SIGMASK; | ||
188 | } | ||
189 | static inline bool test_restore_sigmask(void) | ||
190 | { | ||
191 | return current_thread_info()->status & TS_RESTORE_SIGMASK; | ||
192 | } | ||
193 | static inline bool test_and_clear_restore_sigmask(void) | ||
194 | { | ||
195 | struct thread_info *ti = current_thread_info(); | ||
196 | if (!(ti->status & TS_RESTORE_SIGMASK)) | ||
197 | return false; | ||
198 | ti->status &= ~TS_RESTORE_SIGMASK; | ||
199 | return true; | ||
200 | } | ||
201 | |||
202 | #endif /* !__ASSEMBLY__ */ | 176 | #endif /* !__ASSEMBLY__ */ |
203 | 177 | ||
204 | #endif /* __KERNEL__ */ | 178 | #endif /* __KERNEL__ */ |