123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- #if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
- || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
- #if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
- #define MINSIGSTKSZ 6144
- #define SIGSTKSZ 12288
- #endif
- #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
- typedef unsigned long greg_t;
- typedef unsigned long gregset_t[34];
- typedef struct {
- __uint128_t vregs[32];
- unsigned int fpsr;
- unsigned int fpcr;
- } fpregset_t;
- typedef struct sigcontext {
- unsigned long fault_address;
- unsigned long regs[31];
- unsigned long sp, pc, pstate;
- long double __reserved[256];
- } mcontext_t;
- #define FPSIMD_MAGIC 0x46508001
- #define ESR_MAGIC 0x45535201
- #define EXTRA_MAGIC 0x45585401
- #define SVE_MAGIC 0x53564501
- struct _aarch64_ctx {
- unsigned int magic;
- unsigned int size;
- };
- struct fpsimd_context {
- struct _aarch64_ctx head;
- unsigned int fpsr;
- unsigned int fpcr;
- __uint128_t vregs[32];
- };
- struct esr_context {
- struct _aarch64_ctx head;
- unsigned long esr;
- };
- struct extra_context {
- struct _aarch64_ctx head;
- unsigned long datap;
- unsigned int size;
- unsigned int __reserved[3];
- };
- struct sve_context {
- struct _aarch64_ctx head;
- unsigned short vl;
- unsigned short __reserved[3];
- };
- #define SVE_VQ_BYTES 16
- #define SVE_VQ_MIN 1
- #define SVE_VQ_MAX 512
- #define SVE_VL_MIN (SVE_VQ_MIN * SVE_VQ_BYTES)
- #define SVE_VL_MAX (SVE_VQ_MAX * SVE_VQ_BYTES)
- #define SVE_NUM_ZREGS 32
- #define SVE_NUM_PREGS 16
- #define sve_vl_valid(vl) \
- ((vl) % SVE_VQ_BYTES == 0 && (vl) >= SVE_VL_MIN && (vl) <= SVE_VL_MAX)
- #define sve_vq_from_vl(vl) ((vl) / SVE_VQ_BYTES)
- #define sve_vl_from_vq(vq) ((vq) * SVE_VQ_BYTES)
- #define SVE_SIG_ZREG_SIZE(vq) ((unsigned)(vq) * SVE_VQ_BYTES)
- #define SVE_SIG_PREG_SIZE(vq) ((unsigned)(vq) * (SVE_VQ_BYTES / 8))
- #define SVE_SIG_FFR_SIZE(vq) SVE_SIG_PREG_SIZE(vq)
- #define SVE_SIG_REGS_OFFSET \
- ((sizeof(struct sve_context) + (SVE_VQ_BYTES - 1)) \
- / SVE_VQ_BYTES * SVE_VQ_BYTES)
- #define SVE_SIG_ZREGS_OFFSET SVE_SIG_REGS_OFFSET
- #define SVE_SIG_ZREG_OFFSET(vq, n) \
- (SVE_SIG_ZREGS_OFFSET + SVE_SIG_ZREG_SIZE(vq) * (n))
- #define SVE_SIG_ZREGS_SIZE(vq) \
- (SVE_SIG_ZREG_OFFSET(vq, SVE_NUM_ZREGS) - SVE_SIG_ZREGS_OFFSET)
- #define SVE_SIG_PREGS_OFFSET(vq) \
- (SVE_SIG_ZREGS_OFFSET + SVE_SIG_ZREGS_SIZE(vq))
- #define SVE_SIG_PREG_OFFSET(vq, n) \
- (SVE_SIG_PREGS_OFFSET(vq) + SVE_SIG_PREG_SIZE(vq) * (n))
- #define SVE_SIG_PREGS_SIZE(vq) \
- (SVE_SIG_PREG_OFFSET(vq, SVE_NUM_PREGS) - SVE_SIG_PREGS_OFFSET(vq))
- #define SVE_SIG_FFR_OFFSET(vq) \
- (SVE_SIG_PREGS_OFFSET(vq) + SVE_SIG_PREGS_SIZE(vq))
- #define SVE_SIG_REGS_SIZE(vq) \
- (SVE_SIG_FFR_OFFSET(vq) + SVE_SIG_FFR_SIZE(vq) - SVE_SIG_REGS_OFFSET)
- #define SVE_SIG_CONTEXT_SIZE(vq) (SVE_SIG_REGS_OFFSET + SVE_SIG_REGS_SIZE(vq))
- #else
- typedef struct {
- long double __regs[18+256];
- } mcontext_t;
- #endif
- struct sigaltstack {
- void *ss_sp;
- int ss_flags;
- size_t ss_size;
- };
- typedef struct __ucontext {
- unsigned long uc_flags;
- struct __ucontext *uc_link;
- stack_t uc_stack;
- sigset_t uc_sigmask;
- mcontext_t uc_mcontext;
- } ucontext_t;
- #define SA_NOCLDSTOP 1
- #define SA_NOCLDWAIT 2
- #define SA_SIGINFO 4
- #define SA_ONSTACK 0x08000000
- #define SA_RESTART 0x10000000
- #define SA_NODEFER 0x40000000
- #define SA_RESETHAND 0x80000000
- #define SA_RESTORER 0x04000000
- #endif
- #define SIGHUP 1
- #define SIGINT 2
- #define SIGQUIT 3
- #define SIGILL 4
- #define SIGTRAP 5
- #define SIGABRT 6
- #define SIGIOT SIGABRT
- #define SIGBUS 7
- #define SIGFPE 8
- #define SIGKILL 9
- #define SIGUSR1 10
- #define SIGSEGV 11
- #define SIGUSR2 12
- #define SIGPIPE 13
- #define SIGALRM 14
- #define SIGTERM 15
- #define SIGSTKFLT 16
- #define SIGCHLD 17
- #define SIGCONT 18
- #define SIGSTOP 19
- #define SIGTSTP 20
- #define SIGTTIN 21
- #define SIGTTOU 22
- #define SIGURG 23
- #define SIGXCPU 24
- #define SIGXFSZ 25
- #define SIGVTALRM 26
- #define SIGPROF 27
- #define SIGWINCH 28
- #define SIGIO 29
- #define SIGPOLL 29
- #define SIGPWR 30
- #define SIGSYS 31
- #define SIGUNUSED SIGSYS
- #define _NSIG 65
|