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