1139731Simp/*- 21543Srgrimes * Copyright (c) 1986, 1989, 1991, 1993 31543Srgrimes * The Regents of the University of California. All rights reserved. 4247047Skib * Copyright (c) 2003 Peter Wemm. 51543Srgrimes * 61543Srgrimes * Redistribution and use in source and binary forms, with or without 71543Srgrimes * modification, are permitted provided that the following conditions 81543Srgrimes * are met: 91543Srgrimes * 1. Redistributions of source code must retain the above copyright 101543Srgrimes * notice, this list of conditions and the following disclaimer. 111543Srgrimes * 2. Redistributions in binary form must reproduce the above copyright 121543Srgrimes * notice, this list of conditions and the following disclaimer in the 131543Srgrimes * documentation and/or other materials provided with the distribution. 141543Srgrimes * 4. Neither the name of the University nor the names of its contributors 151543Srgrimes * may be used to endorse or promote products derived from this software 161543Srgrimes * without specific prior written permission. 171543Srgrimes * 181543Srgrimes * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 191543Srgrimes * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 201543Srgrimes * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 211543Srgrimes * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 221543Srgrimes * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 231543Srgrimes * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 241543Srgrimes * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 251543Srgrimes * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 261543Srgrimes * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 271543Srgrimes * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 281543Srgrimes * SUCH DAMAGE. 291543Srgrimes * 301543Srgrimes * @(#)signal.h 8.1 (Berkeley) 6/11/93 3150477Speter * $FreeBSD: releng/10.3/sys/x86/include/signal.h 247047 2013-02-20 17:39:52Z kib $ 321543Srgrimes */ 331543Srgrimes 34247047Skib#ifndef _X86_SIGNAL_H 35247047Skib#define _X86_SIGNAL_H 1 362166Spaul 371543Srgrimes/* 381543Srgrimes * Machine-dependent signal definitions 391543Srgrimes */ 401543Srgrimes 41247047Skib#include <sys/cdefs.h> 42247047Skib#include <sys/_sigset.h> 431543Srgrimes 44105014Smike#if __BSD_VISIBLE 451543Srgrimes#include <machine/trap.h> /* codes for SIGILL, SIGFPE */ 46247047Skib#endif 471543Srgrimes 48247047Skib#ifdef __i386__ 49247047Skibtypedef int sig_atomic_t; 50247047Skib 51247047Skib#if __BSD_VISIBLE 52247047Skibstruct sigcontext { 53247047Skib struct __sigset sc_mask; /* signal mask to restore */ 54247047Skib int sc_onstack; /* sigstack state to restore */ 55247047Skib int sc_gs; /* machine state (struct trapframe) */ 56247047Skib int sc_fs; 57247047Skib int sc_es; 58247047Skib int sc_ds; 59247047Skib int sc_edi; 60247047Skib int sc_esi; 61247047Skib int sc_ebp; 62247047Skib int sc_isp; 63247047Skib int sc_ebx; 64247047Skib int sc_edx; 65247047Skib int sc_ecx; 66247047Skib int sc_eax; 67247047Skib int sc_trapno; 68247047Skib int sc_err; 69247047Skib int sc_eip; 70247047Skib int sc_cs; 71247047Skib int sc_efl; 72247047Skib int sc_esp; 73247047Skib int sc_ss; 74247047Skib int sc_len; /* sizeof(mcontext_t) */ 75247047Skib /* 76247047Skib * See <machine/ucontext.h> and <machine/npx.h> for 77247047Skib * the following fields. 78247047Skib */ 79247047Skib int sc_fpformat; 80247047Skib int sc_ownedfp; 81247047Skib int sc_flags; 82247047Skib int sc_fpstate[128] __aligned(16); 83247047Skib 84247047Skib int sc_fsbase; 85247047Skib int sc_gsbase; 86247047Skib 87247047Skib int sc_xfpustate; 88247047Skib int sc_xfpustate_len; 89247047Skib 90247047Skib int sc_spare2[4]; 91247047Skib}; 92247047Skib 93247047Skib#define sc_sp sc_esp 94247047Skib#define sc_fp sc_ebp 95247047Skib#define sc_pc sc_eip 96247047Skib#define sc_ps sc_efl 97247047Skib#define sc_eflags sc_efl 98247047Skib 99247047Skib#endif /* __BSD_VISIBLE */ 100247047Skib#endif /* __i386__ */ 101247047Skib 102247047Skib#ifdef __amd64__ 103247047Skibtypedef long sig_atomic_t; 104247047Skib 105247047Skib#if __BSD_VISIBLE 1061543Srgrimes/* 1071543Srgrimes * Information pushed on stack when a signal is delivered. 1081543Srgrimes * This is used by the kernel to restore state following 1091543Srgrimes * execution of the signal handler. It is also made available 1101543Srgrimes * to the handler to allow it to restore state properly if 1111543Srgrimes * a non-standard exit is performed. 112227399Skib * 113227399Skib * The sequence of the fields/registers after sc_mask in struct 114227399Skib * sigcontext must match those in mcontext_t and struct trapframe. 1151543Srgrimes */ 11683047Sobrienstruct sigcontext { 117105014Smike struct __sigset sc_mask; /* signal mask to restore */ 118114349Speter long sc_onstack; /* sigstack state to restore */ 119119889Speter long sc_rdi; /* machine state (struct trapframe) */ 120114349Speter long sc_rsi; 121114349Speter long sc_rdx; 122114349Speter long sc_rcx; 123119889Speter long sc_r8; 124119889Speter long sc_r9; 125114349Speter long sc_rax; 126119889Speter long sc_rbx; 127119889Speter long sc_rbp; 128119889Speter long sc_r10; 129119889Speter long sc_r11; 130119889Speter long sc_r12; 131119889Speter long sc_r13; 132119889Speter long sc_r14; 133119889Speter long sc_r15; 134190623Skib int sc_trapno; 135190623Skib short sc_fs; 136190623Skib short sc_gs; 137119889Speter long sc_addr; 138190623Skib int sc_flags; 139190623Skib short sc_es; 140190623Skib short sc_ds; 141114349Speter long sc_err; 142114349Speter long sc_rip; 143114349Speter long sc_cs; 144114349Speter long sc_rflags; 145114349Speter long sc_rsp; 146114349Speter long sc_ss; 147114349Speter long sc_len; /* sizeof(mcontext_t) */ 14853108Smarcel /* 149227399Skib * See <machine/ucontext.h> and <machine/fpu.h> for the following 150227399Skib * fields. 15153108Smarcel */ 152114349Speter long sc_fpformat; 153114349Speter long sc_ownedfp; 154119888Speter long sc_fpstate[64] __aligned(16); 155190623Skib 156190623Skib long sc_fsbase; 157190623Skib long sc_gsbase; 158190623Skib 159230765Skib long sc_xfpustate; 160230765Skib long sc_xfpustate_len; 161230765Skib 162230765Skib long sc_spare[4]; 16351942Smarcel}; 164105014Smike#endif /* __BSD_VISIBLE */ 165247047Skib#endif /* __amd64__ */ 1669343Sbde 167247047Skib#endif 168