linux/arch/x86/include/asm/sigframe.h
<<
>>
Prefs
   1#ifndef _ASM_X86_SIGFRAME_H
   2#define _ASM_X86_SIGFRAME_H
   3
   4#include <asm/sigcontext.h>
   5#include <asm/siginfo.h>
   6#include <asm/ucontext.h>
   7
   8#ifdef CONFIG_X86_32
   9#define sigframe_ia32           sigframe
  10#define rt_sigframe_ia32        rt_sigframe
  11#define sigcontext_ia32         sigcontext
  12#define _fpstate_ia32           _fpstate
  13#define ucontext_ia32           ucontext
  14#else /* !CONFIG_X86_32 */
  15
  16#ifdef CONFIG_IA32_EMULATION
  17#include <asm/ia32.h>
  18#endif /* CONFIG_IA32_EMULATION */
  19
  20#endif /* CONFIG_X86_32 */
  21
  22#if defined(CONFIG_X86_32) || defined(CONFIG_IA32_EMULATION)
  23struct sigframe_ia32 {
  24        u32 pretcode;
  25        int sig;
  26        struct sigcontext_ia32 sc;
  27        /*
  28         * fpstate is unused. fpstate is moved/allocated after
  29         * retcode[] below. This movement allows to have the FP state and the
  30         * future state extensions (xsave) stay together.
  31         * And at the same time retaining the unused fpstate, prevents changing
  32         * the offset of extramask[] in the sigframe and thus prevent any
  33         * legacy application accessing/modifying it.
  34         */
  35        struct _fpstate_ia32 fpstate_unused;
  36#ifdef CONFIG_IA32_EMULATION
  37        unsigned int extramask[_COMPAT_NSIG_WORDS-1];
  38#else /* !CONFIG_IA32_EMULATION */
  39        unsigned long extramask[_NSIG_WORDS-1];
  40#endif /* CONFIG_IA32_EMULATION */
  41        char retcode[8];
  42        /* fp state follows here */
  43};
  44
  45struct rt_sigframe_ia32 {
  46        u32 pretcode;
  47        int sig;
  48        u32 pinfo;
  49        u32 puc;
  50#ifdef CONFIG_IA32_EMULATION
  51        compat_siginfo_t info;
  52#else /* !CONFIG_IA32_EMULATION */
  53        struct siginfo info;
  54#endif /* CONFIG_IA32_EMULATION */
  55        struct ucontext_ia32 uc;
  56        char retcode[8];
  57        /* fp state follows here */
  58};
  59#endif /* defined(CONFIG_X86_32) || defined(CONFIG_IA32_EMULATION) */
  60
  61#ifdef CONFIG_X86_64
  62
  63struct rt_sigframe {
  64        char __user *pretcode;
  65        struct ucontext uc;
  66        struct siginfo info;
  67        /* fp state follows here */
  68};
  69
  70#ifdef CONFIG_X86_X32_ABI
  71
  72struct rt_sigframe_x32 {
  73        u64 pretcode;
  74        struct ucontext_x32 uc;
  75        compat_siginfo_t info;
  76        /* fp state follows here */
  77};
  78
  79#endif /* CONFIG_X86_X32_ABI */
  80
  81#endif /* CONFIG_X86_64 */
  82
  83#endif /* _ASM_X86_SIGFRAME_H */
  84