1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef _M68K_SIGNAL_H 3 #define _M68K_SIGNAL_H 4 5 #include <uapi/asm/signal.h> 6 7 /* Most things should be clean enough to redefine this at will, if care 8 is taken to make libc match. */ 9 10 #define _NSIG 64 11 #define _NSIG_BPW 32 12 #define _NSIG_WORDS (_NSIG / _NSIG_BPW) 13 14 typedef unsigned long old_sigset_t; /* at least 32 bits */ 15 16 typedef struct { 17 unsigned long sig[_NSIG_WORDS]; 18 } sigset_t; 19 20 #define __ARCH_HAS_SA_RESTORER 21 22 #include <asm/sigcontext.h> 23 24 #ifndef CONFIG_CPU_HAS_NO_BITFIELDS 25 #define __HAVE_ARCH_SIG_BITOPS 26 27 static inline void sigaddset(sigset_t *set, int _sig) 28 { 29 asm ("bfset %0{%1,#1}" 30 : "+o" (*set) 31 : "id" ((_sig - 1) ^ 31) 32 : "cc"); 33 } 34 35 static inline void sigdelset(sigset_t *set, int _sig) 36 { 37 asm ("bfclr %0{%1,#1}" 38 : "+o" (*set) 39 : "id" ((_sig - 1) ^ 31) 40 : "cc"); 41 } 42 43 static inline int __const_sigismember(sigset_t *set, int _sig) 44 { 45 unsigned long sig = _sig - 1; 46 return 1 & (set->sig[sig / _NSIG_BPW] >> (sig % _NSIG_BPW)); 47 } 48 49 static inline int __gen_sigismember(sigset_t *set, int _sig) 50 { 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; 57 } 58 59 #define sigismember(set,sig) \ 60 (__builtin_constant_p(sig) ? \ 61 __const_sigismember(set,sig) : \ 62 __gen_sigismember(set,sig)) 63 64 #endif /* !CONFIG_CPU_HAS_NO_BITFIELDS */ 65 66 #endif /* _M68K_SIGNAL_H */ 67