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