diff options
author | Ingo Molnar <mingo@kernel.org> | 2015-09-05 09:32:32 +0200 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2015-09-08 10:03:56 +0200 |
commit | 128f8257a17a47b9a40f550cc2f36458cd8c07b0 (patch) | |
tree | f6007e14e084856d621964575b03f6a5af54fe7b /arch/x86 | |
parent | x86/headers: Clean up and better document uapi/asm/sigcontext.h (diff) | |
download | linux-128f8257a17a47b9a40f550cc2f36458cd8c07b0.tar.xz linux-128f8257a17a47b9a40f550cc2f36458cd8c07b0.zip |
x86/headers: Separate out legacy user-space structure definitions
Better separate the user-space struct sigcontext definitions
from the kernel definitions, so that we can unify the kernel
definitions with sigcontext32.h.
Acked-by: Mikko Rapeli <mikko.rapeli@iki.fi>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Brian Gerst <brgerst@gmail.com>
Cc: Denys Vlasenko <dvlasenk@redhat.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-kernel@vger.kernel.org
Link: http://lkml.kernel.org/r/1441438363-9999-5-git-send-email-mingo@kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'arch/x86')
-rw-r--r-- | arch/x86/include/uapi/asm/sigcontext.h | 119 |
1 files changed, 59 insertions, 60 deletions
diff --git a/arch/x86/include/uapi/asm/sigcontext.h b/arch/x86/include/uapi/asm/sigcontext.h index f89b2f1abe7c..40d6cbac08c6 100644 --- a/arch/x86/include/uapi/asm/sigcontext.h +++ b/arch/x86/include/uapi/asm/sigcontext.h @@ -124,36 +124,6 @@ struct _fpstate { }; }; -# ifndef __KERNEL__ -/* - * User-space might still rely on the old definition: - */ -struct sigcontext { - unsigned short gs, __gsh; - unsigned short fs, __fsh; - unsigned short es, __esh; - unsigned short ds, __dsh; - unsigned long edi; - unsigned long esi; - unsigned long ebp; - unsigned long esp; - unsigned long ebx; - unsigned long edx; - unsigned long ecx; - unsigned long eax; - unsigned long trapno; - unsigned long err; - unsigned long eip; - unsigned short cs, __csh; - unsigned long eflags; - unsigned long esp_at_signal; - unsigned short ss, __ssh; - struct _fpstate __user *fpstate; - unsigned long oldmask; - unsigned long cr2; -}; -# endif /* !__KERNEL__ */ - #else /* __x86_64__: */ /* @@ -186,10 +156,65 @@ struct _fpstate { }; }; -# ifndef __KERNEL__ +#endif /* __x86_64__ */ + +struct _header { + __u64 xfeatures; + __u64 reserved1[2]; + __u64 reserved2[5]; +}; + +struct _ymmh_state { + /* 16x YMM registers, 16 bytes each: */ + __u32 ymmh_space[64]; +}; + /* - * User-space might still rely on the old definition: + * Extended state pointed to by sigcontext::fpstate. + * + * In addition to the fpstate, information encoded in _xstate::xstate_hdr + * indicates the presence of other extended state information supported + * by the CPU and kernel: */ +struct _xstate { + struct _fpstate fpstate; + struct _header xstate_hdr; + struct _ymmh_state ymmh; + /* New processor state extensions go here: */ +}; + +/* + * The old user-space sigcontext definition, just in case user-space still + * relies on it. The kernel definition (in asm/sigcontext.h) has unified + * field names but otherwise the same layout. + */ +#ifndef __KERNEL__ +# ifdef __i386__ +struct sigcontext { + unsigned short gs, __gsh; + unsigned short fs, __fsh; + unsigned short es, __esh; + unsigned short ds, __dsh; + unsigned long edi; + unsigned long esi; + unsigned long ebp; + unsigned long esp; + unsigned long ebx; + unsigned long edx; + unsigned long ecx; + unsigned long eax; + unsigned long trapno; + unsigned long err; + unsigned long eip; + unsigned short cs, __csh; + unsigned long eflags; + unsigned long esp_at_signal; + unsigned short ss, __ssh; + struct _fpstate __user *fpstate; + unsigned long oldmask; + unsigned long cr2; +}; +# else /* __x86_64__: */ struct sigcontext { __u64 r8; __u64 r9; @@ -223,33 +248,7 @@ struct sigcontext { # endif __u64 reserved1[8]; }; -# endif /* !__KERNEL__ */ - -#endif /* __x86_64__ */ - -struct _header { - __u64 xfeatures; - __u64 reserved1[2]; - __u64 reserved2[5]; -}; - -struct _ymmh_state { - /* 16x YMM registers, 16 bytes each: */ - __u32 ymmh_space[64]; -}; - -/* - * Extended state pointed to by sigcontext::fpstate. - * - * In addition to the fpstate, information encoded in _xstate::xstate_hdr - * indicates the presence of other extended state information supported - * by the CPU and kernel: - */ -struct _xstate { - struct _fpstate fpstate; - struct _header xstate_hdr; - struct _ymmh_state ymmh; - /* New processor state extensions go here: */ -}; +# endif /* __x86_64__ */ +#endif /* !__KERNEL__ */ #endif /* _UAPI_ASM_X86_SIGCONTEXT_H */ |