Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
0002 #ifndef __MIPS_UAPI_ASM_UCONTEXT_H
0003 #define __MIPS_UAPI_ASM_UCONTEXT_H
0004 
0005 /**
0006  * struct extcontext - extended context header structure
0007  * @magic:  magic value identifying the type of extended context
0008  * @size:   the size in bytes of the enclosing structure
0009  *
0010  * Extended context structures provide context which does not fit within struct
0011  * sigcontext. They are placed sequentially in memory at the end of struct
0012  * ucontext and struct sigframe, with each extended context structure beginning
0013  * with a header defined by this struct. The type of context represented is
0014  * indicated by the magic field. Userland may check each extended context
0015  * structure against magic values that it recognises. The size field allows any
0016  * unrecognised context to be skipped, allowing for future expansion. The end
0017  * of the extended context data is indicated by the magic value
0018  * END_EXTCONTEXT_MAGIC.
0019  */
0020 struct extcontext {
0021     unsigned int        magic;
0022     unsigned int        size;
0023 };
0024 
0025 /**
0026  * struct msa_extcontext - MSA extended context structure
0027  * @ext:    the extended context header, with magic == MSA_EXTCONTEXT_MAGIC
0028  * @wr:     the most significant 64 bits of each MSA vector register
0029  * @csr:    the value of the MSA control & status register
0030  *
0031  * If MSA context is live for a task at the time a signal is delivered to it,
0032  * this structure will hold the MSA context of the task as it was prior to the
0033  * signal delivery.
0034  */
0035 struct msa_extcontext {
0036     struct extcontext   ext;
0037 #define MSA_EXTCONTEXT_MAGIC    0x784d5341  /* xMSA */
0038 
0039     unsigned long long  wr[32];
0040     unsigned int        csr;
0041 };
0042 
0043 #define END_EXTCONTEXT_MAGIC    0x78454e44  /* xEND */
0044 
0045 /**
0046  * struct ucontext - user context structure
0047  * @uc_flags:
0048  * @uc_link:
0049  * @uc_stack:
0050  * @uc_mcontext:    holds basic processor state
0051  * @uc_sigmask:
0052  * @uc_extcontext:  holds extended processor state
0053  */
0054 struct ucontext {
0055     /* Historic fields matching asm-generic */
0056     unsigned long       uc_flags;
0057     struct ucontext     *uc_link;
0058     stack_t         uc_stack;
0059     struct sigcontext   uc_mcontext;
0060     sigset_t        uc_sigmask;
0061 
0062     /* Extended context structures may follow ucontext */
0063     unsigned long long  uc_extcontext[];
0064 };
0065 
0066 #endif /* __MIPS_UAPI_ASM_UCONTEXT_H */