xref: /OK3568_Linux_fs/kernel/arch/powerpc/include/uapi/asm/ucontext.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2*4882a593Smuzhiyun #ifndef _ASM_POWERPC_UCONTEXT_H
3*4882a593Smuzhiyun #define _ASM_POWERPC_UCONTEXT_H
4*4882a593Smuzhiyun 
5*4882a593Smuzhiyun #ifdef __powerpc64__
6*4882a593Smuzhiyun #include <asm/sigcontext.h>
7*4882a593Smuzhiyun #else
8*4882a593Smuzhiyun #include <asm/elf.h>
9*4882a593Smuzhiyun #endif
10*4882a593Smuzhiyun #include <asm/signal.h>
11*4882a593Smuzhiyun 
12*4882a593Smuzhiyun #ifndef __powerpc64__
13*4882a593Smuzhiyun struct mcontext {
14*4882a593Smuzhiyun 	elf_gregset_t	mc_gregs;
15*4882a593Smuzhiyun 	elf_fpregset_t	mc_fregs;
16*4882a593Smuzhiyun 	unsigned long	mc_pad[2];
17*4882a593Smuzhiyun 	elf_vrregset_t	mc_vregs __attribute__((__aligned__(16)));
18*4882a593Smuzhiyun };
19*4882a593Smuzhiyun #endif
20*4882a593Smuzhiyun 
21*4882a593Smuzhiyun struct ucontext {
22*4882a593Smuzhiyun 	unsigned long	uc_flags;
23*4882a593Smuzhiyun 	struct ucontext __user *uc_link;
24*4882a593Smuzhiyun 	stack_t		uc_stack;
25*4882a593Smuzhiyun #ifndef __powerpc64__
26*4882a593Smuzhiyun 	int		uc_pad[7];
27*4882a593Smuzhiyun 	struct mcontext	__user *uc_regs;/* points to uc_mcontext field */
28*4882a593Smuzhiyun #endif
29*4882a593Smuzhiyun 	sigset_t	uc_sigmask;
30*4882a593Smuzhiyun 	/* glibc has 1024-bit signal masks, ours are 64-bit */
31*4882a593Smuzhiyun #ifdef __powerpc64__
32*4882a593Smuzhiyun 	sigset_t	__unused[15];	/* Allow for uc_sigmask growth */
33*4882a593Smuzhiyun 	struct sigcontext uc_mcontext;	/* last for extensibility */
34*4882a593Smuzhiyun #else
35*4882a593Smuzhiyun 	int		uc_maskext[30];
36*4882a593Smuzhiyun 	int		uc_pad2[3];
37*4882a593Smuzhiyun 	struct mcontext	uc_mcontext;
38*4882a593Smuzhiyun #endif
39*4882a593Smuzhiyun };
40*4882a593Smuzhiyun 
41*4882a593Smuzhiyun #endif /* _ASM_POWERPC_UCONTEXT_H */
42