blob: 6098fc78f018fc7a4891b7fac64baebc62bdf3eb [file] [log] [blame]
Elliott Hughes180edef2023-11-02 00:08:05 +00001/*
2 * This file is auto-generated. Modifications will be lost.
3 *
4 * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
5 * for more information.
6 */
Ben Cheng655a7c02013-10-16 16:09:24 -07007#ifndef _UAPI__ASM_SIGCONTEXT_H
8#define _UAPI__ASM_SIGCONTEXT_H
Christopher Ferris934ec942018-01-31 15:29:16 -08009#ifndef __ASSEMBLY__
Ben Cheng655a7c02013-10-16 16:09:24 -070010#include <linux/types.h>
11struct sigcontext {
Tao Baod7db5942015-01-28 10:07:51 -080012 __u64 fault_address;
13 __u64 regs[31];
14 __u64 sp;
15 __u64 pc;
Tao Baod7db5942015-01-28 10:07:51 -080016 __u64 pstate;
17 __u8 __reserved[4096] __attribute__((__aligned__(16)));
Ben Cheng655a7c02013-10-16 16:09:24 -070018};
19struct _aarch64_ctx {
Tao Baod7db5942015-01-28 10:07:51 -080020 __u32 magic;
21 __u32 size;
Ben Cheng655a7c02013-10-16 16:09:24 -070022};
23#define FPSIMD_MAGIC 0x46508001
Ben Cheng655a7c02013-10-16 16:09:24 -070024struct fpsimd_context {
Tao Baod7db5942015-01-28 10:07:51 -080025 struct _aarch64_ctx head;
26 __u32 fpsr;
27 __u32 fpcr;
Tao Baod7db5942015-01-28 10:07:51 -080028 __uint128_t vregs[32];
Ben Cheng655a7c02013-10-16 16:09:24 -070029};
Christopher Ferrisba8d4f42014-09-03 19:56:49 -070030#define ESR_MAGIC 0x45535201
31struct esr_context {
Tao Baod7db5942015-01-28 10:07:51 -080032 struct _aarch64_ctx head;
33 __u64 esr;
Christopher Ferrisba8d4f42014-09-03 19:56:49 -070034};
Christopher Ferris1308ad32017-11-14 17:32:13 -080035#define EXTRA_MAGIC 0x45585401
36struct extra_context {
37 struct _aarch64_ctx head;
38 __u64 datap;
39 __u32 size;
40 __u32 __reserved[3];
41};
Christopher Ferris934ec942018-01-31 15:29:16 -080042#define SVE_MAGIC 0x53564501
43struct sve_context {
44 struct _aarch64_ctx head;
45 __u16 vl;
Christopher Ferris80ae69d2022-08-02 16:32:21 -070046 __u16 flags;
47 __u16 __reserved[2];
48};
49#define SVE_SIG_FLAG_SM 0x1
Christopher Ferrisb7cef6d2023-05-09 19:04:15 +000050#define TPIDR2_MAGIC 0x54504902
51struct tpidr2_context {
52 struct _aarch64_ctx head;
53 __u64 tpidr2;
54};
Christopher Ferris80ae69d2022-08-02 16:32:21 -070055#define ZA_MAGIC 0x54366345
56struct za_context {
57 struct _aarch64_ctx head;
58 __u16 vl;
Christopher Ferris934ec942018-01-31 15:29:16 -080059 __u16 __reserved[3];
60};
Christopher Ferrisb7cef6d2023-05-09 19:04:15 +000061#define ZT_MAGIC 0x5a544e01
62struct zt_context {
63 struct _aarch64_ctx head;
64 __u16 nregs;
65 __u16 __reserved[3];
66};
Christopher Ferris934ec942018-01-31 15:29:16 -080067#endif
Christopher Ferrisd842e432019-03-07 10:21:59 -080068#include <asm/sve_context.h>
69#define SVE_VQ_BYTES __SVE_VQ_BYTES
70#define SVE_VQ_MIN __SVE_VQ_MIN
71#define SVE_VQ_MAX __SVE_VQ_MAX
72#define SVE_VL_MIN __SVE_VL_MIN
73#define SVE_VL_MAX __SVE_VL_MAX
74#define SVE_NUM_ZREGS __SVE_NUM_ZREGS
75#define SVE_NUM_PREGS __SVE_NUM_PREGS
76#define sve_vl_valid(vl) __sve_vl_valid(vl)
77#define sve_vq_from_vl(vl) __sve_vq_from_vl(vl)
78#define sve_vl_from_vq(vq) __sve_vl_from_vq(vq)
79#define SVE_SIG_ZREG_SIZE(vq) __SVE_ZREG_SIZE(vq)
80#define SVE_SIG_PREG_SIZE(vq) __SVE_PREG_SIZE(vq)
81#define SVE_SIG_FFR_SIZE(vq) __SVE_FFR_SIZE(vq)
82#define SVE_SIG_REGS_OFFSET ((sizeof(struct sve_context) + (__SVE_VQ_BYTES - 1)) / __SVE_VQ_BYTES * __SVE_VQ_BYTES)
83#define SVE_SIG_ZREGS_OFFSET (SVE_SIG_REGS_OFFSET + __SVE_ZREGS_OFFSET)
84#define SVE_SIG_ZREG_OFFSET(vq,n) (SVE_SIG_REGS_OFFSET + __SVE_ZREG_OFFSET(vq, n))
85#define SVE_SIG_ZREGS_SIZE(vq) __SVE_ZREGS_SIZE(vq)
86#define SVE_SIG_PREGS_OFFSET(vq) (SVE_SIG_REGS_OFFSET + __SVE_PREGS_OFFSET(vq))
87#define SVE_SIG_PREG_OFFSET(vq,n) (SVE_SIG_REGS_OFFSET + __SVE_PREG_OFFSET(vq, n))
88#define SVE_SIG_PREGS_SIZE(vq) __SVE_PREGS_SIZE(vq)
89#define SVE_SIG_FFR_OFFSET(vq) (SVE_SIG_REGS_OFFSET + __SVE_FFR_OFFSET(vq))
90#define SVE_SIG_REGS_SIZE(vq) (__SVE_FFR_OFFSET(vq) + __SVE_FFR_SIZE(vq))
Christopher Ferris934ec942018-01-31 15:29:16 -080091#define SVE_SIG_CONTEXT_SIZE(vq) (SVE_SIG_REGS_OFFSET + SVE_SIG_REGS_SIZE(vq))
Christopher Ferris80ae69d2022-08-02 16:32:21 -070092#define ZA_SIG_REGS_OFFSET ((sizeof(struct za_context) + (__SVE_VQ_BYTES - 1)) / __SVE_VQ_BYTES * __SVE_VQ_BYTES)
93#define ZA_SIG_REGS_SIZE(vq) ((vq * __SVE_VQ_BYTES) * (vq * __SVE_VQ_BYTES))
94#define ZA_SIG_ZAV_OFFSET(vq,n) (ZA_SIG_REGS_OFFSET + (SVE_SIG_ZREG_SIZE(vq) * n))
95#define ZA_SIG_CONTEXT_SIZE(vq) (ZA_SIG_REGS_OFFSET + ZA_SIG_REGS_SIZE(vq))
Christopher Ferrisb7cef6d2023-05-09 19:04:15 +000096#define ZT_SIG_REG_SIZE 512
97#define ZT_SIG_REG_BYTES (ZT_SIG_REG_SIZE / 8)
98#define ZT_SIG_REGS_OFFSET sizeof(struct zt_context)
99#define ZT_SIG_REGS_SIZE(n) (ZT_SIG_REG_BYTES * n)
100#define ZT_SIG_CONTEXT_SIZE(n) (sizeof(struct zt_context) + ZT_SIG_REGS_SIZE(n))
Nick Kralevicha67e4de2013-01-14 11:28:26 -0800101#endif