| 1 | /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ |
| 2 | #ifndef __MIPS_UAPI_ASM_UCONTEXT_H |
| 3 | #define __MIPS_UAPI_ASM_UCONTEXT_H |
| 4 | |
| 5 | /** |
| 6 | * struct extcontext - extended context header structure |
| 7 | * @magic:	magic value identifying the type of extended context |
| 8 | * @size:	the size in bytes of the enclosing structure |
| 9 | * |
| 10 | * Extended context structures provide context which does not fit within struct |
| 11 | * sigcontext. They are placed sequentially in memory at the end of struct |
| 12 | * ucontext and struct sigframe, with each extended context structure beginning |
| 13 | * with a header defined by this struct. The type of context represented is |
| 14 | * indicated by the magic field. Userland may check each extended context |
| 15 | * structure against magic values that it recognises. The size field allows any |
| 16 | * unrecognised context to be skipped, allowing for future expansion. The end |
| 17 | * of the extended context data is indicated by the magic value |
| 18 | * END_EXTCONTEXT_MAGIC. |
| 19 | */ |
| 20 | struct extcontext { |
| 21 | 	unsigned int		magic; |
| 22 | 	unsigned int		size; |
| 23 | }; |
| 24 | |
| 25 | /** |
| 26 | * struct msa_extcontext - MSA extended context structure |
| 27 | * @ext:	the extended context header, with magic == MSA_EXTCONTEXT_MAGIC |
| 28 | * @wr:		the most significant 64 bits of each MSA vector register |
| 29 | * @csr:	the value of the MSA control & status register |
| 30 | * |
| 31 | * If MSA context is live for a task at the time a signal is delivered to it, |
| 32 | * this structure will hold the MSA context of the task as it was prior to the |
| 33 | * signal delivery. |
| 34 | */ |
| 35 | struct msa_extcontext { |
| 36 | 	struct extcontext	ext; |
| 37 | #define MSA_EXTCONTEXT_MAGIC	0x784d5341	/* xMSA */ |
| 38 | |
| 39 | 	unsigned long long	wr[32]; |
| 40 | 	unsigned int		csr; |
| 41 | }; |
| 42 | |
| 43 | #define END_EXTCONTEXT_MAGIC	0x78454e44	/* xEND */ |
| 44 | |
| 45 | /** |
| 46 | * struct ucontext - user context structure |
| 47 | * @uc_flags: |
| 48 | * @uc_link: |
| 49 | * @uc_stack: |
| 50 | * @uc_mcontext:	holds basic processor state |
| 51 | * @uc_sigmask: |
| 52 | * @uc_extcontext:	holds extended processor state |
| 53 | */ |
| 54 | struct ucontext { |
| 55 | 	/* Historic fields matching asm-generic */ |
| 56 | 	unsigned long		uc_flags; |
| 57 | 	struct ucontext		*uc_link; |
| 58 | 	stack_t			uc_stack; |
| 59 | 	struct sigcontext	uc_mcontext; |
| 60 | 	sigset_t		uc_sigmask; |
| 61 | |
| 62 | 	/* Extended context structures may follow ucontext */ |
| 63 | 	unsigned long long	uc_extcontext[]; |
| 64 | }; |
| 65 | |
| 66 | #endif /* __MIPS_UAPI_ASM_UCONTEXT_H */ |