2009-03-16 15:10:08 +03:00
# ifndef _M68K_SIGNAL_H
# define _M68K_SIGNAL_H
2012-10-09 12:47:06 +04:00
# include <uapi/asm/signal.h>
2009-03-16 15:10:08 +03:00
/* Most things should be clean enough to redefine this at will, if care
is taken to make libc match . */
# define _NSIG 64
# define _NSIG_BPW 32
# define _NSIG_WORDS (_NSIG / _NSIG_BPW)
typedef unsigned long old_sigset_t ; /* at least 32 bits */
typedef struct {
unsigned long sig [ _NSIG_WORDS ] ;
} sigset_t ;
2012-11-26 07:24:19 +04:00
# define __ARCH_HAS_SA_RESTORER
2009-03-16 15:10:08 +03:00
# include <asm/sigcontext.h>
2011-07-04 08:23:09 +04:00
# ifndef CONFIG_CPU_HAS_NO_BITFIELDS
2009-03-16 15:10:08 +03:00
# define __HAVE_ARCH_SIG_BITOPS
static inline void sigaddset ( sigset_t * set , int _sig )
{
asm ( " bfset %0{%1,#1} "
2012-11-18 01:27:04 +04:00
: " +o " ( * set )
2009-03-16 15:10:08 +03:00
: " id " ( ( _sig - 1 ) ^ 31 )
: " cc " ) ;
}
static inline void sigdelset ( sigset_t * set , int _sig )
{
asm ( " bfclr %0{%1,#1} "
2012-11-18 01:27:04 +04:00
: " +o " ( * set )
2009-03-16 15:10:08 +03:00
: " id " ( ( _sig - 1 ) ^ 31 )
: " cc " ) ;
}
static inline int __const_sigismember ( sigset_t * set , int _sig )
{
unsigned long sig = _sig - 1 ;
return 1 & ( set - > sig [ sig / _NSIG_BPW ] > > ( sig % _NSIG_BPW ) ) ;
}
static inline int __gen_sigismember ( sigset_t * set , int _sig )
{
int ret ;
asm ( " bfextu %1{%2,#1},%0 "
: " =d " ( ret )
2012-11-18 01:27:04 +04:00
: " o " ( * set ) , " id " ( ( _sig - 1 ) ^ 31 )
2009-03-16 15:10:08 +03:00
: " cc " ) ;
return ret ;
}
# define sigismember(set,sig) \
( __builtin_constant_p ( sig ) ? \
__const_sigismember ( set , sig ) : \
__gen_sigismember ( set , sig ) )
2011-07-04 08:23:09 +04:00
# endif /* !CONFIG_CPU_HAS_NO_BITFIELDS */
2009-03-16 15:10:08 +03:00
# endif /* _M68K_SIGNAL_H */