cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

signal.h (1377B)


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