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