]>
Commit | Line | Data |
---|---|---|
320054e8 DG |
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 6144 | |
6 | #define SIGSTKSZ 12288 | |
7 | #endif | |
8 | ||
9 | #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) | |
10 | typedef unsigned long greg_t; | |
11 | typedef unsigned long gregset_t[34]; | |
12 | ||
13 | typedef struct { | |
14 | long double vregs[32]; | |
15 | unsigned int fpsr; | |
16 | unsigned int fpcr; | |
17 | } fpregset_t; | |
18 | typedef struct sigcontext { | |
19 | unsigned long fault_address; | |
20 | unsigned long regs[31]; | |
21 | unsigned long sp, pc, pstate; | |
22 | long double __reserved[256]; | |
23 | } mcontext_t; | |
24 | ||
25 | #define FPSIMD_MAGIC 0x46508001 | |
26 | #define ESR_MAGIC 0x45535201 | |
27 | #define EXTRA_MAGIC 0x45585401 | |
28 | #define SVE_MAGIC 0x53564501 | |
29 | struct _aarch64_ctx { | |
30 | unsigned int magic; | |
31 | unsigned int size; | |
32 | }; | |
33 | struct fpsimd_context { | |
34 | struct _aarch64_ctx head; | |
35 | unsigned int fpsr; | |
36 | unsigned int fpcr; | |
37 | long double vregs[32]; | |
38 | }; | |
39 | struct esr_context { | |
40 | struct _aarch64_ctx head; | |
41 | unsigned long esr; | |
42 | }; | |
43 | struct extra_context { | |
44 | struct _aarch64_ctx head; | |
45 | unsigned long datap; | |
46 | unsigned int size; | |
47 | unsigned int __reserved[3]; | |
48 | }; | |
49 | struct sve_context { | |
50 | struct _aarch64_ctx head; | |
51 | unsigned short vl; | |
52 | unsigned short __reserved[3]; | |
53 | }; | |
54 | #define SVE_VQ_BYTES 16 | |
55 | #define SVE_VQ_MIN 1 | |
56 | #define SVE_VQ_MAX 512 | |
57 | #define SVE_VL_MIN (SVE_VQ_MIN * SVE_VQ_BYTES) | |
58 | #define SVE_VL_MAX (SVE_VQ_MAX * SVE_VQ_BYTES) | |
59 | #define SVE_NUM_ZREGS 32 | |
60 | #define SVE_NUM_PREGS 16 | |
61 | #define sve_vl_valid(vl) \ | |
62 | ((vl) % SVE_VQ_BYTES == 0 && (vl) >= SVE_VL_MIN && (vl) <= SVE_VL_MAX) | |
63 | #define sve_vq_from_vl(vl) ((vl) / SVE_VQ_BYTES) | |
64 | #define sve_vl_from_vq(vq) ((vq) * SVE_VQ_BYTES) | |
65 | #define SVE_SIG_ZREG_SIZE(vq) ((unsigned)(vq) * SVE_VQ_BYTES) | |
66 | #define SVE_SIG_PREG_SIZE(vq) ((unsigned)(vq) * (SVE_VQ_BYTES / 8)) | |
67 | #define SVE_SIG_FFR_SIZE(vq) SVE_SIG_PREG_SIZE(vq) | |
68 | #define SVE_SIG_REGS_OFFSET \ | |
69 | ((sizeof(struct sve_context) + (SVE_VQ_BYTES - 1)) \ | |
70 | / SVE_VQ_BYTES * SVE_VQ_BYTES) | |
71 | #define SVE_SIG_ZREGS_OFFSET SVE_SIG_REGS_OFFSET | |
72 | #define SVE_SIG_ZREG_OFFSET(vq, n) \ | |
73 | (SVE_SIG_ZREGS_OFFSET + SVE_SIG_ZREG_SIZE(vq) * (n)) | |
74 | #define SVE_SIG_ZREGS_SIZE(vq) \ | |
75 | (SVE_SIG_ZREG_OFFSET(vq, SVE_NUM_ZREGS) - SVE_SIG_ZREGS_OFFSET) | |
76 | #define SVE_SIG_PREGS_OFFSET(vq) \ | |
77 | (SVE_SIG_ZREGS_OFFSET + SVE_SIG_ZREGS_SIZE(vq)) | |
78 | #define SVE_SIG_PREG_OFFSET(vq, n) \ | |
79 | (SVE_SIG_PREGS_OFFSET(vq) + SVE_SIG_PREG_SIZE(vq) * (n)) | |
80 | #define SVE_SIG_PREGS_SIZE(vq) \ | |
81 | (SVE_SIG_PREG_OFFSET(vq, SVE_NUM_PREGS) - SVE_SIG_PREGS_OFFSET(vq)) | |
82 | #define SVE_SIG_FFR_OFFSET(vq) \ | |
83 | (SVE_SIG_PREGS_OFFSET(vq) + SVE_SIG_PREGS_SIZE(vq)) | |
84 | #define SVE_SIG_REGS_SIZE(vq) \ | |
85 | (SVE_SIG_FFR_OFFSET(vq) + SVE_SIG_FFR_SIZE(vq) - SVE_SIG_REGS_OFFSET) | |
86 | #define SVE_SIG_CONTEXT_SIZE(vq) (SVE_SIG_REGS_OFFSET + SVE_SIG_REGS_SIZE(vq)) | |
87 | #else | |
88 | typedef struct { | |
89 | long double __regs[18+256]; | |
90 | } mcontext_t; | |
91 | #endif | |
92 | ||
93 | struct sigaltstack { | |
94 | void *ss_sp; | |
95 | int ss_flags; | |
96 | size_t ss_size; | |
97 | }; | |
98 | ||
99 | typedef struct __ucontext { | |
100 | unsigned long uc_flags; | |
101 | struct __ucontext *uc_link; | |
102 | stack_t uc_stack; | |
103 | sigset_t uc_sigmask; | |
104 | mcontext_t uc_mcontext; | |
105 | } ucontext_t; | |
106 | ||
107 | #define SA_NOCLDSTOP 1 | |
108 | #define SA_NOCLDWAIT 2 | |
109 | #define SA_SIGINFO 4 | |
110 | #define SA_ONSTACK 0x08000000 | |
111 | #define SA_RESTART 0x10000000 | |
112 | #define SA_NODEFER 0x40000000 | |
113 | #define SA_RESETHAND 0x80000000 | |
114 | #define SA_RESTORER 0x04000000 | |
115 | ||
116 | #endif | |
117 | ||
118 | #define SIGHUP 1 | |
119 | #define SIGINT 2 | |
120 | #define SIGQUIT 3 | |
121 | #define SIGILL 4 | |
122 | #define SIGTRAP 5 | |
123 | #define SIGABRT 6 | |
124 | #define SIGIOT SIGABRT | |
125 | #define SIGBUS 7 | |
126 | #define SIGFPE 8 | |
127 | #define SIGKILL 9 | |
128 | #define SIGUSR1 10 | |
129 | #define SIGSEGV 11 | |
130 | #define SIGUSR2 12 | |
131 | #define SIGPIPE 13 | |
132 | #define SIGALRM 14 | |
133 | #define SIGTERM 15 | |
134 | #define SIGSTKFLT 16 | |
135 | #define SIGCHLD 17 | |
136 | #define SIGCONT 18 | |
137 | #define SIGSTOP 19 | |
138 | #define SIGTSTP 20 | |
139 | #define SIGTTIN 21 | |
140 | #define SIGTTOU 22 | |
141 | #define SIGURG 23 | |
142 | #define SIGXCPU 24 | |
143 | #define SIGXFSZ 25 | |
144 | #define SIGVTALRM 26 | |
145 | #define SIGPROF 27 | |
146 | #define SIGWINCH 28 | |
147 | #define SIGIO 29 | |
148 | #define SIGPOLL 29 | |
149 | #define SIGPWR 30 | |
150 | #define SIGSYS 31 | |
151 | #define SIGUNUSED SIGSYS | |
152 | ||
153 | #define _NSIG 65 |