root/arch/m68k/include/asm/signal.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. sigaddset
  2. sigdelset
  3. __const_sigismember
  4. __gen_sigismember

   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 */

/* [<][>][^][v][top][bottom][index][help] */