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