131a53cd0SKonstantin Belousov /*- 2*51369649SPedro F. Giffuni * SPDX-License-Identifier: BSD-3-Clause 3*51369649SPedro F. Giffuni * 431a53cd0SKonstantin Belousov * Copyright (c) 1986, 1989, 1991, 1993 531a53cd0SKonstantin Belousov * The Regents of the University of California. All rights reserved. 631a53cd0SKonstantin Belousov * Copyright (c) 2003 Peter Wemm. 731a53cd0SKonstantin Belousov * 831a53cd0SKonstantin Belousov * Redistribution and use in source and binary forms, with or without 931a53cd0SKonstantin Belousov * modification, are permitted provided that the following conditions 1031a53cd0SKonstantin Belousov * are met: 1131a53cd0SKonstantin Belousov * 1. Redistributions of source code must retain the above copyright 1231a53cd0SKonstantin Belousov * notice, this list of conditions and the following disclaimer. 1331a53cd0SKonstantin Belousov * 2. Redistributions in binary form must reproduce the above copyright 1431a53cd0SKonstantin Belousov * notice, this list of conditions and the following disclaimer in the 1531a53cd0SKonstantin Belousov * documentation and/or other materials provided with the distribution. 16fbbd9655SWarner Losh * 3. Neither the name of the University nor the names of its contributors 1731a53cd0SKonstantin Belousov * may be used to endorse or promote products derived from this software 1831a53cd0SKonstantin Belousov * without specific prior written permission. 1931a53cd0SKonstantin Belousov * 2031a53cd0SKonstantin Belousov * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 2131a53cd0SKonstantin Belousov * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2231a53cd0SKonstantin Belousov * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2331a53cd0SKonstantin Belousov * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 2431a53cd0SKonstantin Belousov * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2531a53cd0SKonstantin Belousov * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2631a53cd0SKonstantin Belousov * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2731a53cd0SKonstantin Belousov * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2831a53cd0SKonstantin Belousov * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2931a53cd0SKonstantin Belousov * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 3031a53cd0SKonstantin Belousov * SUCH DAMAGE. 3131a53cd0SKonstantin Belousov */ 3231a53cd0SKonstantin Belousov 3331a53cd0SKonstantin Belousov #ifndef _X86_SIGNAL_H 3431a53cd0SKonstantin Belousov #define _X86_SIGNAL_H 1 3531a53cd0SKonstantin Belousov 3631a53cd0SKonstantin Belousov /* 3731a53cd0SKonstantin Belousov * Machine-dependent signal definitions 3831a53cd0SKonstantin Belousov */ 3931a53cd0SKonstantin Belousov 4031a53cd0SKonstantin Belousov #include <sys/cdefs.h> 4131a53cd0SKonstantin Belousov #include <sys/_sigset.h> 4231a53cd0SKonstantin Belousov 4331a53cd0SKonstantin Belousov #ifdef __i386__ 4431a53cd0SKonstantin Belousov typedef int sig_atomic_t; 4531a53cd0SKonstantin Belousov 4631a53cd0SKonstantin Belousov #if __BSD_VISIBLE 4731a53cd0SKonstantin Belousov struct sigcontext { 4831a53cd0SKonstantin Belousov struct __sigset sc_mask; /* signal mask to restore */ 4931a53cd0SKonstantin Belousov int sc_onstack; /* sigstack state to restore */ 5031a53cd0SKonstantin Belousov int sc_gs; /* machine state (struct trapframe) */ 5131a53cd0SKonstantin Belousov int sc_fs; 5231a53cd0SKonstantin Belousov int sc_es; 5331a53cd0SKonstantin Belousov int sc_ds; 5431a53cd0SKonstantin Belousov int sc_edi; 5531a53cd0SKonstantin Belousov int sc_esi; 5631a53cd0SKonstantin Belousov int sc_ebp; 5731a53cd0SKonstantin Belousov int sc_isp; 5831a53cd0SKonstantin Belousov int sc_ebx; 5931a53cd0SKonstantin Belousov int sc_edx; 6031a53cd0SKonstantin Belousov int sc_ecx; 6131a53cd0SKonstantin Belousov int sc_eax; 6231a53cd0SKonstantin Belousov int sc_trapno; 6331a53cd0SKonstantin Belousov int sc_err; 6431a53cd0SKonstantin Belousov int sc_eip; 6531a53cd0SKonstantin Belousov int sc_cs; 6631a53cd0SKonstantin Belousov int sc_efl; 6731a53cd0SKonstantin Belousov int sc_esp; 6831a53cd0SKonstantin Belousov int sc_ss; 6931a53cd0SKonstantin Belousov int sc_len; /* sizeof(mcontext_t) */ 7031a53cd0SKonstantin Belousov /* 7131a53cd0SKonstantin Belousov * See <machine/ucontext.h> and <machine/npx.h> for 7231a53cd0SKonstantin Belousov * the following fields. 7331a53cd0SKonstantin Belousov */ 7431a53cd0SKonstantin Belousov int sc_fpformat; 7531a53cd0SKonstantin Belousov int sc_ownedfp; 7631a53cd0SKonstantin Belousov int sc_flags; 7731a53cd0SKonstantin Belousov int sc_fpstate[128] __aligned(16); 7831a53cd0SKonstantin Belousov 7931a53cd0SKonstantin Belousov int sc_fsbase; 8031a53cd0SKonstantin Belousov int sc_gsbase; 8131a53cd0SKonstantin Belousov 8231a53cd0SKonstantin Belousov int sc_xfpustate; 8331a53cd0SKonstantin Belousov int sc_xfpustate_len; 8431a53cd0SKonstantin Belousov 8531a53cd0SKonstantin Belousov int sc_spare2[4]; 8631a53cd0SKonstantin Belousov }; 8731a53cd0SKonstantin Belousov 8831a53cd0SKonstantin Belousov #define sc_sp sc_esp 8931a53cd0SKonstantin Belousov #define sc_fp sc_ebp 9031a53cd0SKonstantin Belousov #define sc_pc sc_eip 9131a53cd0SKonstantin Belousov #define sc_ps sc_efl 9231a53cd0SKonstantin Belousov #define sc_eflags sc_efl 9331a53cd0SKonstantin Belousov 9431a53cd0SKonstantin Belousov #endif /* __BSD_VISIBLE */ 9531a53cd0SKonstantin Belousov #endif /* __i386__ */ 9631a53cd0SKonstantin Belousov 9731a53cd0SKonstantin Belousov #ifdef __amd64__ 9831a53cd0SKonstantin Belousov typedef long sig_atomic_t; 9931a53cd0SKonstantin Belousov 10031a53cd0SKonstantin Belousov #if __BSD_VISIBLE 10131a53cd0SKonstantin Belousov /* 10231a53cd0SKonstantin Belousov * Information pushed on stack when a signal is delivered. 10331a53cd0SKonstantin Belousov * This is used by the kernel to restore state following 10431a53cd0SKonstantin Belousov * execution of the signal handler. It is also made available 10531a53cd0SKonstantin Belousov * to the handler to allow it to restore state properly if 10631a53cd0SKonstantin Belousov * a non-standard exit is performed. 10731a53cd0SKonstantin Belousov * 10831a53cd0SKonstantin Belousov * The sequence of the fields/registers after sc_mask in struct 10931a53cd0SKonstantin Belousov * sigcontext must match those in mcontext_t and struct trapframe. 11031a53cd0SKonstantin Belousov */ 11131a53cd0SKonstantin Belousov struct sigcontext { 11231a53cd0SKonstantin Belousov struct __sigset sc_mask; /* signal mask to restore */ 11331a53cd0SKonstantin Belousov long sc_onstack; /* sigstack state to restore */ 11431a53cd0SKonstantin Belousov long sc_rdi; /* machine state (struct trapframe) */ 11531a53cd0SKonstantin Belousov long sc_rsi; 11631a53cd0SKonstantin Belousov long sc_rdx; 11731a53cd0SKonstantin Belousov long sc_rcx; 11831a53cd0SKonstantin Belousov long sc_r8; 11931a53cd0SKonstantin Belousov long sc_r9; 12031a53cd0SKonstantin Belousov long sc_rax; 12131a53cd0SKonstantin Belousov long sc_rbx; 12231a53cd0SKonstantin Belousov long sc_rbp; 12331a53cd0SKonstantin Belousov long sc_r10; 12431a53cd0SKonstantin Belousov long sc_r11; 12531a53cd0SKonstantin Belousov long sc_r12; 12631a53cd0SKonstantin Belousov long sc_r13; 12731a53cd0SKonstantin Belousov long sc_r14; 12831a53cd0SKonstantin Belousov long sc_r15; 12931a53cd0SKonstantin Belousov int sc_trapno; 13031a53cd0SKonstantin Belousov short sc_fs; 13131a53cd0SKonstantin Belousov short sc_gs; 13231a53cd0SKonstantin Belousov long sc_addr; 13331a53cd0SKonstantin Belousov int sc_flags; 13431a53cd0SKonstantin Belousov short sc_es; 13531a53cd0SKonstantin Belousov short sc_ds; 13631a53cd0SKonstantin Belousov long sc_err; 13731a53cd0SKonstantin Belousov long sc_rip; 13831a53cd0SKonstantin Belousov long sc_cs; 13931a53cd0SKonstantin Belousov long sc_rflags; 14031a53cd0SKonstantin Belousov long sc_rsp; 14131a53cd0SKonstantin Belousov long sc_ss; 14231a53cd0SKonstantin Belousov long sc_len; /* sizeof(mcontext_t) */ 14331a53cd0SKonstantin Belousov /* 14431a53cd0SKonstantin Belousov * See <machine/ucontext.h> and <machine/fpu.h> for the following 14531a53cd0SKonstantin Belousov * fields. 14631a53cd0SKonstantin Belousov */ 14731a53cd0SKonstantin Belousov long sc_fpformat; 14831a53cd0SKonstantin Belousov long sc_ownedfp; 14931a53cd0SKonstantin Belousov long sc_fpstate[64] __aligned(16); 15031a53cd0SKonstantin Belousov 15131a53cd0SKonstantin Belousov long sc_fsbase; 15231a53cd0SKonstantin Belousov long sc_gsbase; 15331a53cd0SKonstantin Belousov 15431a53cd0SKonstantin Belousov long sc_xfpustate; 15531a53cd0SKonstantin Belousov long sc_xfpustate_len; 15631a53cd0SKonstantin Belousov 15731a53cd0SKonstantin Belousov long sc_spare[4]; 15831a53cd0SKonstantin Belousov }; 15931a53cd0SKonstantin Belousov #endif /* __BSD_VISIBLE */ 16031a53cd0SKonstantin Belousov #endif /* __amd64__ */ 16131a53cd0SKonstantin Belousov 16231a53cd0SKonstantin Belousov #endif 163