1#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
2 || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
3
4#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
5#define MINSIGSTKSZ 2048
6#define SIGSTKSZ 8192
7#endif
8
9#ifdef _GNU_SOURCE
10#define REG_R8          0
11#define REG_R9          1
12#define REG_R10         2
13#define REG_R11         3
14#define REG_R12         4
15#define REG_R13         5
16#define REG_R14         6
17#define REG_R15         7
18#define REG_RDI         8
19#define REG_RSI         9
20#define REG_RBP         10
21#define REG_RBX         11
22#define REG_RDX         12
23#define REG_RAX         13
24#define REG_RCX         14
25#define REG_RSP         15
26#define REG_RIP         16
27#define REG_EFL         17
28#define REG_CSGSFS      18
29#define REG_ERR         19
30#define REG_TRAPNO      20
31#define REG_OLDMASK     21
32#define REG_CR2         22
33#endif
34
35#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
36typedef long long greg_t, gregset_t[23];
37typedef struct _fpstate {
38	unsigned short cwd, swd, ftw, fop;
39	unsigned long long rip, rdp;
40	unsigned mxcsr, mxcr_mask;
41	struct {
42		unsigned short significand[4], exponent, padding[3];
43	} _st[8];
44	struct {
45		unsigned element[4];
46	} _xmm[16];
47	unsigned padding[24];
48} *fpregset_t;
49struct sigcontext {
50	unsigned long long r8, r9, r10, r11, r12, r13, r14, r15;
51	unsigned long long rdi, rsi, rbp, rbx, rdx, rax, rcx, rsp, rip, eflags;
52	unsigned short cs, gs, fs, __pad0;
53	unsigned long long err, trapno, oldmask, cr2;
54	struct _fpstate *fpstate;
55	unsigned long long __reserved1[8];
56};
57typedef struct {
58	gregset_t gregs;
59	fpregset_t fpregs;
60	unsigned long long __reserved1[8];
61} mcontext_t;
62#else
63typedef struct {
64	unsigned long long __space[32];
65} mcontext_t;
66#endif
67
68struct sigaltstack {
69	void *ss_sp;
70	int ss_flags;
71	size_t ss_size;
72};
73
74typedef struct __ucontext {
75	unsigned long uc_flags;
76	struct __ucontext *uc_link;
77	stack_t uc_stack;
78	mcontext_t uc_mcontext;
79	sigset_t uc_sigmask;
80	unsigned long long __fpregs_mem[64];
81} ucontext_t;
82
83#define SA_NOCLDSTOP  1
84#define SA_NOCLDWAIT  2
85#define SA_SIGINFO    4
86#define SA_ONSTACK    0x08000000
87#define SA_RESTART    0x10000000
88#define SA_NODEFER    0x40000000
89#define SA_RESETHAND  0x80000000
90#define SA_RESTORER   0x04000000
91
92#endif
93
94#define SIGHUP    1
95#define SIGINT    2
96#define SIGQUIT   3
97#define SIGILL    4
98#define SIGTRAP   5
99#define SIGABRT   6
100#define SIGIOT    SIGABRT
101#define SIGBUS    7
102#define SIGFPE    8
103#define SIGKILL   9
104#define SIGUSR1   10
105#define SIGSEGV   11
106#define SIGUSR2   12
107#define SIGPIPE   13
108#define SIGALRM   14
109#define SIGTERM   15
110#define SIGSTKFLT 16
111#define SIGCHLD   17
112#define SIGCONT   18
113#define SIGSTOP   19
114#define SIGTSTP   20
115#define SIGTTIN   21
116#define SIGTTOU   22
117#define SIGURG    23
118#define SIGXCPU   24
119#define SIGXFSZ   25
120#define SIGVTALRM 26
121#define SIGPROF   27
122#define SIGWINCH  28
123#define SIGIO     29
124#define SIGPOLL   29
125#define SIGPWR    30
126#define SIGSYS    31
127#define SIGUNUSED SIGSYS
128
129#define _NSIG 65
130
131