1 /* 2 * Copyright 1997 Sun Microsystems, Inc. All rights reserved. 3 * Use is subject to license terms. 4 */ 5 6 /* Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T */ 7 /* All Rights Reserved */ 8 9 /* 10 * Copyright (c) 1980 Regents of the University of California. 11 * All rights reserved. The Berkeley Software License Agreement 12 * specifies the terms and conditions for redistribution. 13 */ 14 15 #ifndef CSH_SIGNAL_H 16 #define CSH_SIGNAL_H 17 18 /* 19 * 4.3BSD signal compatibility header 20 * 21 */ 22 #define sigmask(m) (m > 32 ? 0 : (1 << ((m)-1))) 23 24 /* 25 * 4.3BSD signal vector structure used in sigvec call. 26 */ 27 struct sigvec { 28 void (*sv_handler)(); /* signal handler */ 29 int sv_mask; /* signal mask to apply */ 30 int sv_flags; /* see signal options below */ 31 }; 32 33 #define SV_ONSTACK 0x0001 /* take signal on signal stack */ 34 #define SV_INTERRUPT 0x0002 /* do not restart system on signal return */ 35 #define SV_RESETHAND 0x0004 /* reset handler to SIG_DFL when signal taken */ 36 37 #define sv_onstack sv_flags 38 39 /* 40 * Machine dependent data structure 41 */ 42 struct sigcontext { 43 int sc_onstack; /* sigstack state to restore */ 44 int sc_mask; /* signal mask to restore */ 45 #define MAXWINDOW 31 /* max usable windows in sparc */ 46 long sc_sp; /* sp to restore */ 47 long sc_pc; /* pc to retore */ 48 long sc_npc; /* next pc to restore */ 49 long sc_psr; /* psr to restore */ 50 long sc_g1; /* register that must be restored */ 51 long sc_o0; 52 long sc_wbcnt; /* number of outstanding windows */ 53 long *sc_spbuf[MAXWINDOW]; /* sp's for each wbuf */ 54 long sc_wbuf[MAXWINDOW][16]; /* outstanding window save buffer */ 55 }; 56 57 #define SI_DFLCODE 1 58 59 #define BUS_HWERR BUS_ADRERR /* misc hardware error (e.g. timeout) */ 60 #define BUS_ALIGN BUS_ADRALN /* hardware alignment error */ 61 62 #define SEGV_NOMAP SEGV_MAPERR /* no mapping at the fault address */ 63 #define SEGV_PROT SEGV_ACCERR /* access exceeded protections */ 64 65 /* 66 * The SEGV_CODE(code) will be SEGV_NOMAP, SEGV_PROT, or SEGV_OBJERR. 67 * In the SEGV_OBJERR case, doing a SEGV_ERRNO(code) gives an errno value 68 * reported by the underlying file object mapped at the fault address. 69 */ 70 71 #define SIG_NOADDR ((char *)~0) 72 73 #define SEGV_MAKE_ERR(e) (((e) << 8) | SEGV_MAPERR) 74 75 #endif /* CSH_SIGNAL_H */ 76