linux/arch/m68k/include/asm/signal.h
<<
>>
Prefs
   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
  14typedef unsigned long old_sigset_t;             /* at least 32 bits */
  15
  16typedef 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
  27static 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
  35static 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
  43static 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
  49static 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