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 /* XXX 32-bit pointers pinhead XXX */ 124 char *the_stack; 125 int cur_status; 126}; 127 128/* Sigvec flags */ 129#define _SV_SSTACK 1u /* This signal handler should use sig-stack */ 130#define _SV_INTR 2u /* Sig return should not restart system call */ 131#define _SV_RESET 4u /* Set handler to SIG_DFL upon taken signal */ 132#define _SV_IGNCHILD 8u /* Do not send SIGCHLD */ 133 134/* 135 * sa_flags values: SA_STACK is not currently supported, but will allow the 136 * usage of signal stacks by using the (now obsolete) sa_restorer field in 137 * the sigaction structure as a stack pointer. This is now possible due to 138 * the changes in signal handling. LBT 010493. 139 * SA_RESTART flag to get restarting signals (which were the default long ago) 140 */ 141#define SA_NOCLDSTOP _SV_IGNCHILD 142#define SA_STACK _SV_SSTACK 143#define SA_ONSTACK _SV_SSTACK 144#define SA_RESTART _SV_INTR 145#define SA_ONESHOT _SV_RESET 146#define SA_NOMASK 0x20u 147#define SA_NOCLDWAIT 0x100u 148#define SA_SIGINFO 0x200u 149 150 151#define SIG_BLOCK 0x01 /* for blocking signals */ 152#define SIG_UNBLOCK 0x02 /* for unblocking signals */ 153#define SIG_SETMASK 0x04 /* for setting the signal mask */ 154 155/* 156 * sigaltstack controls 157 */ 158#define SS_ONSTACK 1 159#define SS_DISABLE 2 160 161#define MINSIGSTKSZ 4096 162#define SIGSTKSZ 16384 163 164#ifdef __KERNEL__ 165/* 166 * DJHR 167 * SA_STATIC_ALLOC is used for the sparc32 system to indicate that this 168 * interrupt handler's irq structure should be statically allocated 169 * by the request_irq routine. 170 * The alternative is that arch/sparc/kernel/irq.c has carnal knowledge 171 * of interrupt usage and that sucks. Also without a flag like this 172 * it may be possible for the free_irq routine to attempt to free 173 * statically allocated data.. which is NOT GOOD. 174 * 175 */ 176#define SA_STATIC_ALLOC 0x8000 177#endif 178 179#include <asm-generic/signal-defs.h> 180 181struct __new_sigaction { 182 __sighandler_t sa_handler; 183 unsigned long sa_flags; 184 __sigrestore_t sa_restorer; /* not used by Linux/SPARC yet */ 185 __new_sigset_t sa_mask; 186}; 187 188struct __old_sigaction { 189 __sighandler_t sa_handler; 190 __old_sigset_t sa_mask; 191 unsigned long sa_flags; 192 void (*sa_restorer)(void); /* not used by Linux/SPARC yet */ 193}; 194 195typedef struct sigaltstack { 196 void __user *ss_sp; 197 int ss_flags; 198 size_t ss_size; 199} stack_t; 200 201#ifdef __KERNEL__ 202 203struct k_sigaction { 204 struct __new_sigaction sa; 205 void __user *ka_restorer; 206}; 207 208#define ptrace_signal_deliver(regs, cookie) do { } while (0) 209 210#endif /* !(__KERNEL__) */ 211 212#endif /* !(__ASSEMBLY__) */ 213 214#endif /* !(__SPARC_SIGNAL_H) */ 215