1*790baaccSWarner Losh /* 2*790baaccSWarner Losh * i386 dependent signal definitions 3*790baaccSWarner Losh * 4*790baaccSWarner Losh * 5*790baaccSWarner Losh * This program is free software; you can redistribute it and/or modify 6*790baaccSWarner Losh * it under the terms of the GNU General Public License as published by 7*790baaccSWarner Losh * the Free Software Foundation; either version 2 of the License, or 8*790baaccSWarner Losh * (at your option) any later version. 9*790baaccSWarner Losh * 10*790baaccSWarner Losh * This program is distributed in the hope that it will be useful, 11*790baaccSWarner Losh * but WITHOUT ANY WARRANTY; without even the implied warranty of 12*790baaccSWarner Losh * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13*790baaccSWarner Losh * GNU General Public License for more details. 14*790baaccSWarner Losh * 15*790baaccSWarner Losh * You should have received a copy of the GNU General Public License 16*790baaccSWarner Losh * along with this program; if not, see <http://www.gnu.org/licenses/>. 17*790baaccSWarner Losh */ 18*790baaccSWarner Losh #ifndef TARGET_ARCH_SIGNAL_H 19*790baaccSWarner Losh #define TARGET_ARCH_SIGNAL_H 20*790baaccSWarner Losh 21*790baaccSWarner Losh #include "cpu.h" 22*790baaccSWarner Losh 23*790baaccSWarner Losh /* Size of the signal trampolin code placed on the stack. */ 24*790baaccSWarner Losh #define TARGET_SZSIGCODE 0 25*790baaccSWarner Losh 26*790baaccSWarner Losh /* compare to x86/include/_limits.h */ 27*790baaccSWarner Losh #define TARGET_MINSIGSTKSZ (512 * 4) /* min sig stack size */ 28*790baaccSWarner Losh #define TARGET_SIGSTKSZ (MINSIGSTKSZ + 32768) /* recommended size */ 29*790baaccSWarner Losh 30*790baaccSWarner Losh #define TARGET_MC_GET_CLEAR_RET 0x0001 31*790baaccSWarner Losh 32*790baaccSWarner Losh struct target_sigcontext { 33*790baaccSWarner Losh /* to be added */ 34*790baaccSWarner Losh }; 35*790baaccSWarner Losh 36*790baaccSWarner Losh typedef struct target_mcontext { 37*790baaccSWarner Losh } target_mcontext_t; 38*790baaccSWarner Losh 39*790baaccSWarner Losh typedef struct target_ucontext { 40*790baaccSWarner Losh target_sigset_t uc_sigmask; 41*790baaccSWarner Losh target_mcontext_t uc_mcontext; 42*790baaccSWarner Losh abi_ulong uc_link; 43*790baaccSWarner Losh target_stack_t uc_stack; 44*790baaccSWarner Losh int32_t uc_flags; 45*790baaccSWarner Losh int32_t __spare__[4]; 46*790baaccSWarner Losh } target_ucontext_t; 47*790baaccSWarner Losh 48*790baaccSWarner Losh struct target_sigframe { 49*790baaccSWarner Losh abi_ulong sf_signum; 50*790baaccSWarner Losh abi_ulong sf_siginfo; /* code or pointer to sf_si */ 51*790baaccSWarner Losh abi_ulong sf_ucontext; /* points to sf_uc */ 52*790baaccSWarner Losh abi_ulong sf_addr; /* undocumented 4th arg */ 53*790baaccSWarner Losh target_ucontext_t sf_uc; /* = *sf_uncontext */ 54*790baaccSWarner Losh target_siginfo_t sf_si; /* = *sf_siginfo (SA_SIGINFO case)*/ 55*790baaccSWarner Losh uint32_t __spare__[2]; 56*790baaccSWarner Losh }; 57*790baaccSWarner Losh 58*790baaccSWarner Losh /* 59*790baaccSWarner Losh * Compare to i386/i386/machdep.c sendsig() 60*790baaccSWarner Losh * Assumes that target stack frame memory is locked. 61*790baaccSWarner Losh */ 62*790baaccSWarner Losh static inline abi_long set_sigtramp_args(CPUX86State *regs, 63*790baaccSWarner Losh int sig, struct target_sigframe *frame, abi_ulong frame_addr, 64*790baaccSWarner Losh struct target_sigaction *ka) 65*790baaccSWarner Losh { 66*790baaccSWarner Losh /* XXX return -TARGET_EOPNOTSUPP; */ 67*790baaccSWarner Losh return 0; 68*790baaccSWarner Losh } 69*790baaccSWarner Losh 70*790baaccSWarner Losh /* Compare to i386/i386/machdep.c get_mcontext() */ 71*790baaccSWarner Losh static inline abi_long get_mcontext(CPUX86State *regs, 72*790baaccSWarner Losh target_mcontext_t *mcp, int flags) 73*790baaccSWarner Losh { 74*790baaccSWarner Losh /* XXX */ 75*790baaccSWarner Losh return -TARGET_EOPNOTSUPP; 76*790baaccSWarner Losh } 77*790baaccSWarner Losh 78*790baaccSWarner Losh /* Compare to i386/i386/machdep.c set_mcontext() */ 79*790baaccSWarner Losh static inline abi_long set_mcontext(CPUX86State *regs, 80*790baaccSWarner Losh target_mcontext_t *mcp, int srflag) 81*790baaccSWarner Losh { 82*790baaccSWarner Losh /* XXX */ 83*790baaccSWarner Losh return -TARGET_EOPNOTSUPP; 84*790baaccSWarner Losh } 85*790baaccSWarner Losh 86*790baaccSWarner Losh static inline abi_long get_ucontext_sigreturn(CPUX86State *regs, 87*790baaccSWarner Losh abi_ulong target_sf, abi_ulong *target_uc) 88*790baaccSWarner Losh { 89*790baaccSWarner Losh /* XXX */ 90*790baaccSWarner Losh *target_uc = 0; 91*790baaccSWarner Losh return -TARGET_EOPNOTSUPP; 92*790baaccSWarner Losh } 93*790baaccSWarner Losh 94*790baaccSWarner Losh #endif /* TARGET_ARCH_SIGNAL_H */ 95