Merge tag 'locking-urgent-2020-12-27' of git://git.kernel.org/pub/scm/linux/kernel...
[linux/fpc-iii.git] / arch / m68k / include / asm / signal.h
blob8af85c38d37718968ee3f02efb7e01dc4422c474
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef _M68K_SIGNAL_H
3 #define _M68K_SIGNAL_H
5 #include <uapi/asm/signal.h>
7 /* Most things should be clean enough to redefine this at will, if care
8 is taken to make libc match. */
10 #define _NSIG 64
11 #define _NSIG_BPW 32
12 #define _NSIG_WORDS (_NSIG / _NSIG_BPW)
14 typedef unsigned long old_sigset_t; /* at least 32 bits */
16 typedef struct {
17 unsigned long sig[_NSIG_WORDS];
18 } sigset_t;
20 #define __ARCH_HAS_SA_RESTORER
22 #include <asm/sigcontext.h>
24 #ifndef CONFIG_CPU_HAS_NO_BITFIELDS
25 #define __HAVE_ARCH_SIG_BITOPS
27 static inline void sigaddset(sigset_t *set, int _sig)
29 asm ("bfset %0{%1,#1}"
30 : "+o" (*set)
31 : "id" ((_sig - 1) ^ 31)
32 : "cc");
35 static inline void sigdelset(sigset_t *set, int _sig)
37 asm ("bfclr %0{%1,#1}"
38 : "+o" (*set)
39 : "id" ((_sig - 1) ^ 31)
40 : "cc");
43 static inline int __const_sigismember(sigset_t *set, int _sig)
45 unsigned long sig = _sig - 1;
46 return 1 & (set->sig[sig / _NSIG_BPW] >> (sig % _NSIG_BPW));
49 static inline int __gen_sigismember(sigset_t *set, int _sig)
51 int ret;
52 asm ("bfextu %1{%2,#1},%0"
53 : "=d" (ret)
54 : "o" (*set), "id" ((_sig-1) ^ 31)
55 : "cc");
56 return ret;
59 #define sigismember(set,sig) \
60 (__builtin_constant_p(sig) ? \
61 __const_sigismember(set,sig) : \
62 __gen_sigismember(set,sig))
64 #endif /* !CONFIG_CPU_HAS_NO_BITFIELDS */
66 #endif /* _M68K_SIGNAL_H */