| 1 |
|
| 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
|
| 38 |
|
| 39 | unsigned long long wr[32];
|
| 40 | unsigned int csr;
|
| 41 | };
|
| 42 |
|
| 43 | #define END_EXTCONTEXT_MAGIC 0x78454e44
|
| 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 |
|
| 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 |
|
| 63 | unsigned long long uc_extcontext[];
|
| 64 | };
|
| 65 |
|
| 66 | #endif
|