1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2 #ifndef __SPARC_SIGNAL_H 3 #define __SPARC_SIGNAL_H 4 5 #include <asm/sigcontext.h> 6 7 8 9 /* On the Sparc the signal handlers get passed a 'sub-signal' code 10 * for certain signal types, which we document here. 11 */ 12 #define SIGHUP 1 13 #define SIGINT 2 14 #define SIGQUIT 3 15 #define SIGILL 4 16 #define SUBSIG_STACK 0 17 #define SUBSIG_ILLINST 2 18 #define SUBSIG_PRIVINST 3 19 #define SUBSIG_BADTRAP(t) (0x80 + (t)) 20 21 #define SIGTRAP 5 22 #define SIGABRT 6 23 #define SIGIOT 6 24 25 #define SIGEMT 7 26 #define SUBSIG_TAG 10 27 28 #define SIGFPE 8 29 #define SUBSIG_FPDISABLED 0x400 30 #define SUBSIG_FPERROR 0x404 31 #define SUBSIG_FPINTOVFL 0x001 32 #define SUBSIG_FPSTSIG 0x002 33 #define SUBSIG_IDIVZERO 0x014 34 #define SUBSIG_FPINEXACT 0x0c4 35 #define SUBSIG_FPDIVZERO 0x0c8 36 #define SUBSIG_FPUNFLOW 0x0cc 37 #define SUBSIG_FPOPERROR 0x0d0 38 #define SUBSIG_FPOVFLOW 0x0d4 39 40 #define SIGKILL 9 41 #define SIGBUS 10 42 #define SUBSIG_BUSTIMEOUT 1 43 #define SUBSIG_ALIGNMENT 2 44 #define SUBSIG_MISCERROR 5 45 46 #define SIGSEGV 11 47 #define SUBSIG_NOMAPPING 3 48 #define SUBSIG_PROTECTION 4 49 #define SUBSIG_SEGERROR 5 50 51 #define SIGSYS 12 52 53 #define SIGPIPE 13 54 #define SIGALRM 14 55 #define SIGTERM 15 56 #define SIGURG 16 57 58 /* SunOS values which deviate from the Linux/i386 ones */ 59 #define SIGSTOP 17 60 #define SIGTSTP 18 61 #define SIGCONT 19 62 #define SIGCHLD 20 63 #define SIGTTIN 21 64 #define SIGTTOU 22 65 #define SIGIO 23 66 #define SIGPOLL SIGIO /* SysV name for SIGIO */ 67 #define SIGXCPU 24 68 #define SIGXFSZ 25 69 #define SIGVTALRM 26 70 #define SIGPROF 27 71 #define SIGWINCH 28 72 #define SIGLOST 29 73 #define SIGPWR SIGLOST 74 #define SIGUSR1 30 75 #define SIGUSR2 31 76 77 /* Most things should be clean enough to redefine this at will, if care 78 is taken to make libc match. */ 79 80 #define __OLD_NSIG 32 81 #define __NEW_NSIG 64 82 #ifdef __arch64__ 83 #define _NSIG_BPW 64 84 #else 85 #define _NSIG_BPW 32 86 #endif 87 #define _NSIG_WORDS (__NEW_NSIG / _NSIG_BPW) 88 89 #define SIGRTMIN 32 90 #define SIGRTMAX __NEW_NSIG 91 92 #if defined(__KERNEL__) || defined(__WANT_POSIX1B_SIGNALS__) 93 #define _NSIG __NEW_NSIG 94 #define __new_sigset_t sigset_t 95 #define __new_sigaction sigaction 96 #define __new_sigaction32 sigaction32 97 #define __old_sigset_t old_sigset_t 98 #define __old_sigaction old_sigaction 99 #define __old_sigaction32 old_sigaction32 100 #else 101 #define _NSIG __OLD_NSIG 102 #define NSIG _NSIG 103 #define __old_sigset_t sigset_t 104 #define __old_sigaction sigaction 105 #define __old_sigaction32 sigaction32 106 #endif 107 108 #ifndef __ASSEMBLY__ 109 110 typedef unsigned long __old_sigset_t; /* at least 32 bits */ 111 112 typedef struct { 113 unsigned long sig[_NSIG_WORDS]; 114 } __new_sigset_t; 115 116 /* A SunOS sigstack */ 117 struct sigstack { 118 /* XXX 32-bit pointers pinhead XXX */ 119 char *the_stack; 120 int cur_status; 121 }; 122 123 /* Sigvec flags */ 124 #define _SV_SSTACK 1u /* This signal handler should use sig-stack */ 125 #define _SV_INTR 2u /* Sig return should not restart system call */ 126 #define _SV_RESET 4u /* Set handler to SIG_DFL upon taken signal */ 127 #define _SV_IGNCHILD 8u /* Do not send SIGCHLD */ 128 129 /* 130 * sa_flags values: SA_STACK is not currently supported, but will allow the 131 * usage of signal stacks by using the (now obsolete) sa_restorer field in 132 * the sigaction structure as a stack pointer. This is now possible due to 133 * the changes in signal handling. LBT 010493. 134 * SA_RESTART flag to get restarting signals (which were the default long ago) 135 */ 136 #define SA_NOCLDSTOP _SV_IGNCHILD 137 #define SA_STACK _SV_SSTACK 138 #define SA_ONSTACK _SV_SSTACK 139 #define SA_RESTART _SV_INTR 140 #define SA_RESETHAND _SV_RESET 141 #define SA_NODEFER 0x20u 142 #define SA_NOCLDWAIT 0x100u 143 #define SA_SIGINFO 0x200u 144 145 #define SIG_BLOCK 0x01 /* for blocking signals */ 146 #define SIG_UNBLOCK 0x02 /* for unblocking signals */ 147 #define SIG_SETMASK 0x04 /* for setting the signal mask */ 148 149 #define MINSIGSTKSZ 4096 150 #define SIGSTKSZ 16384 151 152 153 #include <asm-generic/signal-defs.h> 154 155 struct __new_sigaction { 156 __sighandler_t sa_handler; 157 unsigned long sa_flags; 158 __sigrestore_t sa_restorer; /* not used by Linux/SPARC yet */ 159 __new_sigset_t sa_mask; 160 }; 161 162 struct __old_sigaction { 163 __sighandler_t sa_handler; 164 __old_sigset_t sa_mask; 165 unsigned long sa_flags; 166 void (*sa_restorer)(void); /* not used by Linux/SPARC yet */ 167 }; 168 169 typedef struct sigaltstack { 170 void *ss_sp; 171 int ss_flags; 172 size_t ss_size; 173 } stack_t; 174 175 176 #endif /* !(__ASSEMBLY__) */ 177 178 #endif /* __SPARC_SIGNAL_H */