1*f4f0d8a3Sfredette /* $NetBSD: signal.h,v 1.1 2002/06/05 01:04:23 fredette Exp $ */ 2*f4f0d8a3Sfredette 3*f4f0d8a3Sfredette /* $OpenBSD: signal.h,v 1.1 1998/06/23 19:45:27 mickey Exp $ */ 4*f4f0d8a3Sfredette 5*f4f0d8a3Sfredette /* 6*f4f0d8a3Sfredette * Copyright (c) 1994, The University of Utah and 7*f4f0d8a3Sfredette * the Computer Systems Laboratory at the University of Utah (CSL). 8*f4f0d8a3Sfredette * All rights reserved. 9*f4f0d8a3Sfredette * 10*f4f0d8a3Sfredette * Permission to use, copy, modify and distribute this software is hereby 11*f4f0d8a3Sfredette * granted provided that (1) source code retains these copyright, permission, 12*f4f0d8a3Sfredette * and disclaimer notices, and (2) redistributions including binaries 13*f4f0d8a3Sfredette * reproduce the notices in supporting documentation, and (3) all advertising 14*f4f0d8a3Sfredette * materials mentioning features or use of this software display the following 15*f4f0d8a3Sfredette * acknowledgement: ``This product includes software developed by the 16*f4f0d8a3Sfredette * Computer Systems Laboratory at the University of Utah.'' 17*f4f0d8a3Sfredette * 18*f4f0d8a3Sfredette * THE UNIVERSITY OF UTAH AND CSL ALLOW FREE USE OF THIS SOFTWARE IN ITS "AS 19*f4f0d8a3Sfredette * IS" CONDITION. THE UNIVERSITY OF UTAH AND CSL DISCLAIM ANY LIABILITY OF 20*f4f0d8a3Sfredette * ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. 21*f4f0d8a3Sfredette * 22*f4f0d8a3Sfredette * CSL requests users of this software to return to csl-dist@cs.utah.edu any 23*f4f0d8a3Sfredette * improvements that they make and grant CSL redistribution rights. 24*f4f0d8a3Sfredette * 25*f4f0d8a3Sfredette * Utah $Hdr: signal.h 1.3 94/12/16$ 26*f4f0d8a3Sfredette */ 27*f4f0d8a3Sfredette 28*f4f0d8a3Sfredette /* 29*f4f0d8a3Sfredette * Machine-dependent signal definitions 30*f4f0d8a3Sfredette */ 31*f4f0d8a3Sfredette 32*f4f0d8a3Sfredette typedef int sig_atomic_t; 33*f4f0d8a3Sfredette 34*f4f0d8a3Sfredette #ifndef _POSIX_SOURCE 35*f4f0d8a3Sfredette #include <machine/trap.h> /* codes for SIGILL, SIGFPE */ 36*f4f0d8a3Sfredette #endif 37*f4f0d8a3Sfredette 38*f4f0d8a3Sfredette /* 39*f4f0d8a3Sfredette * Information pushed on stack when a signal is delivered. 40*f4f0d8a3Sfredette * This is used by the kernel to restore state following 41*f4f0d8a3Sfredette * execution of the signal handler. It is also made available 42*f4f0d8a3Sfredette * to the handler to allow it to restore state properly if 43*f4f0d8a3Sfredette * a non-standard exit is performed. 44*f4f0d8a3Sfredette */ 45*f4f0d8a3Sfredette struct sigcontext { 46*f4f0d8a3Sfredette int sc_onstack; /* sigstack state to restore */ 47*f4f0d8a3Sfredette int __sc_mask13; /* signal mask to restore (old style) */ 48*f4f0d8a3Sfredette int sc_sp; /* sp to restore */ 49*f4f0d8a3Sfredette int sc_fp; /* fp to restore */ 50*f4f0d8a3Sfredette int sc_ap; /* ap to restore */ 51*f4f0d8a3Sfredette int sc_pcsqh; /* pc space queue (head) to restore */ 52*f4f0d8a3Sfredette int sc_pcoqh; /* pc offset queue (head) to restore */ 53*f4f0d8a3Sfredette int sc_pcsqt; /* pc space queue (tail) to restore */ 54*f4f0d8a3Sfredette int sc_pcoqt; /* pc offset queue (tail) to restore */ 55*f4f0d8a3Sfredette int sc_ps; /* psl to restore */ 56*f4f0d8a3Sfredette sigset_t sc_mask; /* signal mask to restore (new style) */ 57*f4f0d8a3Sfredette }; 58*f4f0d8a3Sfredette 59*f4f0d8a3Sfredette #if defined(_KERNEL) 60*f4f0d8a3Sfredette #include <hppa/frame.h> 61*f4f0d8a3Sfredette 62*f4f0d8a3Sfredette /* 63*f4f0d8a3Sfredette * Register state saved while kernel delivers a signal. 64*f4f0d8a3Sfredette */ 65*f4f0d8a3Sfredette struct sigstate { 66*f4f0d8a3Sfredette int ss_flags; /* which of the following are valid */ 67*f4f0d8a3Sfredette struct trapframe ss_frame; /* original exception frame */ 68*f4f0d8a3Sfredette }; 69*f4f0d8a3Sfredette 70*f4f0d8a3Sfredette #define SS_FPSTATE 0x01 71*f4f0d8a3Sfredette #define SS_USERREGS 0x02 72*f4f0d8a3Sfredette 73*f4f0d8a3Sfredette /* 74*f4f0d8a3Sfredette * Stack frame layout when delivering a signal. 75*f4f0d8a3Sfredette */ 76*f4f0d8a3Sfredette struct sigframe { 77*f4f0d8a3Sfredette struct sigcontext sf_sc; /* actual context */ 78*f4f0d8a3Sfredette struct sigstate sf_state; /* state of the hardware */ 79*f4f0d8a3Sfredette /* 80*f4f0d8a3Sfredette * Everything below here must match the calling convention. 81*f4f0d8a3Sfredette * Per that convention, sendsig must initialize very little; 82*f4f0d8a3Sfredette * only sf_psp, sf_clup, sf_sl, and sf_edp must be set. 83*f4f0d8a3Sfredette * Note that this layout matches the HPPA_FRAME_ macros 84*f4f0d8a3Sfredette * in frame.h. 85*f4f0d8a3Sfredette */ 86*f4f0d8a3Sfredette u_int sf_arg3; 87*f4f0d8a3Sfredette u_int sf_arg2; 88*f4f0d8a3Sfredette u_int sf_arg1; 89*f4f0d8a3Sfredette u_int sf_arg0; 90*f4f0d8a3Sfredette u_int sf_edp; 91*f4f0d8a3Sfredette u_int sf_esr4; 92*f4f0d8a3Sfredette u_int sf_erp; 93*f4f0d8a3Sfredette u_int sf_crp; 94*f4f0d8a3Sfredette u_int sf_sl; 95*f4f0d8a3Sfredette u_int sf_clup; 96*f4f0d8a3Sfredette u_int sf_ep; 97*f4f0d8a3Sfredette u_int sf_psp; 98*f4f0d8a3Sfredette }; 99*f4f0d8a3Sfredette 100*f4f0d8a3Sfredette #endif /* _KERNEL */ 101