1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2#ifndef _UAPI__SPARC_SIGNAL_H 3#define _UAPI__SPARC_SIGNAL_H 4 5#include <asm/sigcontext.h> 6#include <linux/compiler.h> 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 110typedef unsigned long __old_sigset_t; /* at least 32 bits */ 111 112typedef struct { 113 unsigned long sig[_NSIG_WORDS]; 114} __new_sigset_t; 115 116/* A SunOS sigstack */ 117struct 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#ifndef __KERNEL__ 156struct __new_sigaction { 157 __sighandler_t sa_handler; 158 unsigned long sa_flags; 159 __sigrestore_t sa_restorer; /* not used by Linux/SPARC yet */ 160 __new_sigset_t sa_mask; 161}; 162 163struct __old_sigaction { 164 __sighandler_t sa_handler; 165 __old_sigset_t sa_mask; 166 unsigned long sa_flags; 167 void (*sa_restorer)(void); /* not used by Linux/SPARC yet */ 168}; 169#endif 170 171typedef struct sigaltstack { 172 void __user *ss_sp; 173 int ss_flags; 174 size_t ss_size; 175} stack_t; 176 177 178#endif /* !(__ASSEMBLY__) */ 179 180#endif /* _UAPI__SPARC_SIGNAL_H */ 181