191078fcaSMarcel Moolenaar /*- 283ef78beSPedro F. Giffuni * SPDX-License-Identifier: BSD-3-Clause 383ef78beSPedro F. Giffuni * 491078fcaSMarcel Moolenaar * Copyright (c) 1999 Marcel Moolenaar 591078fcaSMarcel Moolenaar * All rights reserved. 691078fcaSMarcel Moolenaar * 791078fcaSMarcel Moolenaar * Redistribution and use in source and binary forms, with or without 891078fcaSMarcel Moolenaar * modification, are permitted provided that the following conditions 991078fcaSMarcel Moolenaar * are met: 1091078fcaSMarcel Moolenaar * 1. Redistributions of source code must retain the above copyright 1191078fcaSMarcel Moolenaar * notice, this list of conditions and the following disclaimer 1291078fcaSMarcel Moolenaar * in this position and unchanged. 1391078fcaSMarcel Moolenaar * 2. Redistributions in binary form must reproduce the above copyright 1491078fcaSMarcel Moolenaar * notice, this list of conditions and the following disclaimer in the 1591078fcaSMarcel Moolenaar * documentation and/or other materials provided with the distribution. 1691078fcaSMarcel Moolenaar * 3. The name of the author may not be used to endorse or promote products 1791078fcaSMarcel Moolenaar * derived from this software without specific prior written permission. 1891078fcaSMarcel Moolenaar * 1991078fcaSMarcel Moolenaar * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 2091078fcaSMarcel Moolenaar * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 2191078fcaSMarcel Moolenaar * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 2291078fcaSMarcel Moolenaar * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 2391078fcaSMarcel Moolenaar * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 2491078fcaSMarcel Moolenaar * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2591078fcaSMarcel Moolenaar * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2691078fcaSMarcel Moolenaar * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2791078fcaSMarcel Moolenaar * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 2891078fcaSMarcel Moolenaar * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2991078fcaSMarcel Moolenaar */ 3091078fcaSMarcel Moolenaar 3191078fcaSMarcel Moolenaar #ifndef _MACHINE_SIGFRAME_H_ 320afa439dSMarcel Moolenaar #define _MACHINE_SIGFRAME_H_ 330afa439dSMarcel Moolenaar 340afa439dSMarcel Moolenaar /* 350afa439dSMarcel Moolenaar * Signal frames, arguments passed to application signal handlers. 360afa439dSMarcel Moolenaar */ 370270d57aSDaniel Eischen #ifdef _KERNEL 3823eeeff7SPeter Wemm #ifdef COMPAT_43 3991078fcaSMarcel Moolenaar struct osigframe { 4091078fcaSMarcel Moolenaar /* 414c53edc5SMarcel Moolenaar * The first four members may be used by applications. 4291078fcaSMarcel Moolenaar */ 4391078fcaSMarcel Moolenaar 4491078fcaSMarcel Moolenaar register_t sf_signum; 4591078fcaSMarcel Moolenaar 4691078fcaSMarcel Moolenaar /* 4791078fcaSMarcel Moolenaar * Either 'int' for old-style FreeBSD handler or 'siginfo_t *' 4891078fcaSMarcel Moolenaar * pointing to sf_siginfo for SA_SIGINFO handlers. 4991078fcaSMarcel Moolenaar */ 5091078fcaSMarcel Moolenaar register_t sf_arg2; 5191078fcaSMarcel Moolenaar 5291078fcaSMarcel Moolenaar /* Points to sf_siginfo.si_sc. */ 5391078fcaSMarcel Moolenaar register_t sf_scp; 5491078fcaSMarcel Moolenaar 55ec1d9fe8SMarcel Moolenaar register_t sf_addr; 564c53edc5SMarcel Moolenaar 5791078fcaSMarcel Moolenaar /* 5891078fcaSMarcel Moolenaar * The following arguments are not constrained by the 5991078fcaSMarcel Moolenaar * function call protocol. 6091078fcaSMarcel Moolenaar * Applications are not supposed to access these members, 6191078fcaSMarcel Moolenaar * except using the pointers we provide in the first three 6291078fcaSMarcel Moolenaar * arguments. 6391078fcaSMarcel Moolenaar */ 6491078fcaSMarcel Moolenaar 6591078fcaSMarcel Moolenaar union { 6691078fcaSMarcel Moolenaar __osiginfohandler_t *sf_action; 6791078fcaSMarcel Moolenaar __sighandler_t *sf_handler; 6891078fcaSMarcel Moolenaar } sf_ahu; 6991078fcaSMarcel Moolenaar 7091078fcaSMarcel Moolenaar /* In the SA_SIGINFO case, sf_arg2 points here. */ 7191078fcaSMarcel Moolenaar osiginfo_t sf_siginfo; 7291078fcaSMarcel Moolenaar }; 730270d57aSDaniel Eischen #endif 7423eeeff7SPeter Wemm #ifdef COMPAT_FREEBSD4 7523eeeff7SPeter Wemm /* FreeBSD 4.x */ 76*efdb03e9SJohn Baldwin struct freebsd4_sigframe { 7723eeeff7SPeter Wemm register_t sf_signum; 7823eeeff7SPeter Wemm register_t sf_siginfo; /* code or pointer to sf_si */ 7923eeeff7SPeter Wemm register_t sf_ucontext; /* points to sf_uc */ 8023eeeff7SPeter Wemm register_t sf_addr; /* undocumented 4th arg */ 8123eeeff7SPeter Wemm 8223eeeff7SPeter Wemm union { 8323eeeff7SPeter Wemm __siginfohandler_t *sf_action; 8423eeeff7SPeter Wemm __sighandler_t *sf_handler; 8523eeeff7SPeter Wemm } sf_ahu; 86717e7fb2SBrooks Davis struct freebsd4_ucontext sf_uc; /* = *sf_ucontext */ 8723eeeff7SPeter Wemm siginfo_t sf_si; /* = *sf_siginfo (SA_SIGINFO case) */ 8823eeeff7SPeter Wemm }; 8923eeeff7SPeter Wemm #endif 9023eeeff7SPeter Wemm #endif 9191078fcaSMarcel Moolenaar 9231a53cd0SKonstantin Belousov #include <x86/sigframe.h> 9391078fcaSMarcel Moolenaar 940afa439dSMarcel Moolenaar #endif /* !_MACHINE_SIGFRAME_H_ */ 95