aboutsummaryrefslogblamecommitdiffstats
path: root/arch/x86/kernel/sigframe.h
blob: cc673aa55ce4d8fb7eeb82e8cd21a773ca8f6213 (plain) (tree)
1
2
3
4
5

                    
                              

                             








                                                                               

                                               
                                   

  
                    
                              
                

                                     

                            
                        
                                   
  




                              
                                   
  




                                                                         
      
#ifdef CONFIG_X86_32
struct sigframe {
	char __user *pretcode;
	int sig;
	struct sigcontext sc;
	/*
	 * fpstate is unused. fpstate is moved/allocated after
	 * retcode[] below. This movement allows to have the FP state and the
	 * future state extensions (xsave) stay together.
	 * And at the same time retaining the unused fpstate, prevents changing
	 * the offset of extramask[] in the sigframe and thus prevent any
	 * legacy application accessing/modifying it.
	 */
	struct _fpstate fpstate_unused;
	unsigned long extramask[_NSIG_WORDS-1];
	char retcode[8];
	/* fp state follows here */
};

struct rt_sigframe {
	char __user *pretcode;
	int sig;
	struct siginfo __user *pinfo;
	void __user *puc;
	struct siginfo info;
	struct ucontext uc;
	char retcode[8];
	/* fp state follows here */
};
#else
struct rt_sigframe {
	char __user *pretcode;
	struct ucontext uc;
	struct siginfo info;
	/* fp state follows here */
};

int ia32_setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
		sigset_t *set, struct pt_regs *regs);
int ia32_setup_frame(int sig, struct k_sigaction *ka,
		sigset_t *set, struct pt_regs *regs);
#endif