xref: /qemu/bsd-user/i386/target_arch_signal.h (revision c504713f34fb127179496ba3e680689d38e29764)
1790baaccSWarner Losh /*
2790baaccSWarner Losh  *  i386 dependent signal definitions
3790baaccSWarner Losh  *
4790baaccSWarner Losh  *
5790baaccSWarner Losh  *  This program is free software; you can redistribute it and/or modify
6790baaccSWarner Losh  *  it under the terms of the GNU General Public License as published by
7790baaccSWarner Losh  *  the Free Software Foundation; either version 2 of the License, or
8790baaccSWarner Losh  *  (at your option) any later version.
9790baaccSWarner Losh  *
10790baaccSWarner Losh  *  This program is distributed in the hope that it will be useful,
11790baaccSWarner Losh  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12790baaccSWarner Losh  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13790baaccSWarner Losh  *  GNU General Public License for more details.
14790baaccSWarner Losh  *
15790baaccSWarner Losh  *  You should have received a copy of the GNU General Public License
16790baaccSWarner Losh  *  along with this program; if not, see <http://www.gnu.org/licenses/>.
17790baaccSWarner Losh  */
18790baaccSWarner Losh #ifndef TARGET_ARCH_SIGNAL_H
19790baaccSWarner Losh #define TARGET_ARCH_SIGNAL_H
20790baaccSWarner Losh 
21790baaccSWarner Losh #include "cpu.h"
22790baaccSWarner Losh 
23790baaccSWarner Losh /* Size of the signal trampolin code placed on the stack. */
24790baaccSWarner Losh #define TARGET_SZSIGCODE    0
25790baaccSWarner Losh 
26790baaccSWarner Losh /* compare to  x86/include/_limits.h */
27790baaccSWarner Losh #define TARGET_MINSIGSTKSZ  (512 * 4)               /* min sig stack size */
28790baaccSWarner Losh #define TARGET_SIGSTKSZ     (MINSIGSTKSZ + 32768)   /* recommended size */
29790baaccSWarner Losh 
30790baaccSWarner Losh typedef struct target_mcontext {
31790baaccSWarner Losh } target_mcontext_t;
32790baaccSWarner Losh 
33*c504713fSWarner Losh #include "target_os_ucontext.h"
34790baaccSWarner Losh 
35790baaccSWarner Losh struct target_sigframe {
36790baaccSWarner Losh     abi_ulong   sf_signum;
37790baaccSWarner Losh     abi_ulong   sf_siginfo;    /* code or pointer to sf_si */
38790baaccSWarner Losh     abi_ulong   sf_ucontext;   /* points to sf_uc */
39790baaccSWarner Losh     abi_ulong   sf_addr;       /* undocumented 4th arg */
40790baaccSWarner Losh     target_ucontext_t   sf_uc; /* = *sf_uncontext */
41790baaccSWarner Losh     target_siginfo_t    sf_si; /* = *sf_siginfo (SA_SIGINFO case)*/
42790baaccSWarner Losh     uint32_t    __spare__[2];
43790baaccSWarner Losh };
44790baaccSWarner Losh 
45790baaccSWarner Losh /*
46790baaccSWarner Losh  * Compare to i386/i386/machdep.c sendsig()
47790baaccSWarner Losh  * Assumes that target stack frame memory is locked.
48790baaccSWarner Losh  */
49790baaccSWarner Losh static inline abi_long set_sigtramp_args(CPUX86State *regs,
50790baaccSWarner Losh         int sig, struct target_sigframe *frame, abi_ulong frame_addr,
51790baaccSWarner Losh         struct target_sigaction *ka)
52790baaccSWarner Losh {
53790baaccSWarner Losh     /* XXX return -TARGET_EOPNOTSUPP; */
54790baaccSWarner Losh     return 0;
55790baaccSWarner Losh }
56790baaccSWarner Losh 
57790baaccSWarner Losh /* Compare to i386/i386/machdep.c get_mcontext() */
58790baaccSWarner Losh static inline abi_long get_mcontext(CPUX86State *regs,
59790baaccSWarner Losh         target_mcontext_t *mcp, int flags)
60790baaccSWarner Losh {
61790baaccSWarner Losh     /* XXX */
62790baaccSWarner Losh     return -TARGET_EOPNOTSUPP;
63790baaccSWarner Losh }
64790baaccSWarner Losh 
65790baaccSWarner Losh /* Compare to i386/i386/machdep.c set_mcontext() */
66790baaccSWarner Losh static inline abi_long set_mcontext(CPUX86State *regs,
67790baaccSWarner Losh         target_mcontext_t *mcp, int srflag)
68790baaccSWarner Losh {
69790baaccSWarner Losh     /* XXX */
70790baaccSWarner Losh     return -TARGET_EOPNOTSUPP;
71790baaccSWarner Losh }
72790baaccSWarner Losh 
73790baaccSWarner Losh static inline abi_long get_ucontext_sigreturn(CPUX86State *regs,
74790baaccSWarner Losh                         abi_ulong target_sf, abi_ulong *target_uc)
75790baaccSWarner Losh {
76790baaccSWarner Losh     /* XXX */
77790baaccSWarner Losh     *target_uc = 0;
78790baaccSWarner Losh     return -TARGET_EOPNOTSUPP;
79790baaccSWarner Losh }
80790baaccSWarner Losh 
81790baaccSWarner Losh #endif /* TARGET_ARCH_SIGNAL_H */
82