x86/headers: Move the 'struct sigcontext' definitions into the UAPI header
authorIngo Molnar <mingo@kernel.org>
Sat, 5 Sep 2015 07:32:38 +0000 (09:32 +0200)
committerIngo Molnar <mingo@kernel.org>
Tue, 8 Sep 2015 08:03:58 +0000 (10:03 +0200)
Our goal is to eliminate the duplicate struct sigcontext_ia32
definition, so move the kernel's primary sigcontext type into
the UAPI header, defining these two variants:

struct sigcontext_32
struct sigcontext_64

... and map them to 'struct sigcontext'.

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-11-git-send-email-mingo@kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
arch/x86/include/asm/sigcontext.h
arch/x86/include/uapi/asm/sigcontext.h

index b9c2bd6402dfd989957f214e540ee788738675fc..25815f00b4ff0b2a24bcfe3d32c822ccd210ac06 100644 (file)
@@ -3,77 +3,4 @@
 
 #include <uapi/asm/sigcontext.h>
 
-#ifdef __i386__
-struct sigcontext {
-       __u16                            gs, __gsh;
-       __u16                            fs, __fsh;
-       __u16                            es, __esh;
-       __u16                            ds, __dsh;
-       __u32                            di;
-       __u32                            si;
-       __u32                            bp;
-       __u32                            sp;
-       __u32                            bx;
-       __u32                            dx;
-       __u32                            cx;
-       __u32                            ax;
-       __u32                            trapno;
-       __u32                            err;
-       __u32                            ip;
-       __u16                            cs, __csh;
-       __u32                            flags;
-       __u32                            sp_at_signal;
-       __u16                            ss, __ssh;
-
-       /*
-        * fpstate is really (struct _fpstate *) or (struct _xstate *)
-        * depending on the FP_XSTATE_MAGIC1 encoded in the SW reserved
-        * bytes of (struct _fpstate) and FP_XSTATE_MAGIC2 present at the end
-        * of extended memory layout. See comments at the definition of
-        * (struct _fpx_sw_bytes)
-        */
-       void __user                     *fpstate; /* Zero when no FPU/extended context */
-       __u32                            oldmask;
-       __u32                            cr2;
-};
-#else /* __x86_64__: */
-struct sigcontext {
-       __u64                            r8;
-       __u64                            r9;
-       __u64                            r10;
-       __u64                            r11;
-       __u64                            r12;
-       __u64                            r13;
-       __u64                            r14;
-       __u64                            r15;
-       __u64                            di;
-       __u64                            si;
-       __u64                            bp;
-       __u64                            bx;
-       __u64                            dx;
-       __u64                            ax;
-       __u64                            cx;
-       __u64                            sp;
-       __u64                            ip;
-       __u64                            flags;
-       __u16                            cs;
-       __u16                            gs;
-       __u16                            fs;
-       __u16                            __pad0;
-       __u64                            err;
-       __u64                            trapno;
-       __u64                            oldmask;
-       __u64                            cr2;
-
-       /*
-        * fpstate is really (struct _fpstate *) or (struct _xstate *)
-        * depending on the FP_XSTATE_MAGIC1 encoded in the SW reserved
-        * bytes of (struct _fpstate) and FP_XSTATE_MAGIC2 present at the end
-        * of extended memory layout. See comments at the definition of
-        * (struct _fpx_sw_bytes)
-        */
-       void __user                     *fpstate; /* Zero when no FPU/extended context */
-       __u64                            reserved1[8];
-};
-#endif /* !__x86_64__ */
 #endif /* _ASM_X86_SIGCONTEXT_H */
index ca542e37c783e061616a11e112202bc7ba5bdd9c..3591cef6d7d23ffda3267043311dc86764a1718b 100644 (file)
@@ -190,6 +190,89 @@ struct _xstate {
        /* New processor state extensions go here: */
 };
 
+struct sigcontext_32 {
+       __u16                           gs, __gsh;
+       __u16                           fs, __fsh;
+       __u16                           es, __esh;
+       __u16                           ds, __dsh;
+       __u32                           di;
+       __u32                           si;
+       __u32                           bp;
+       __u32                           sp;
+       __u32                           bx;
+       __u32                           dx;
+       __u32                           cx;
+       __u32                           ax;
+       __u32                           trapno;
+       __u32                           err;
+       __u32                           ip;
+       __u16                           cs, __csh;
+       __u32                           flags;
+       __u32                           sp_at_signal;
+       __u16                           ss, __ssh;
+
+       /*
+        * fpstate is really (struct _fpstate *) or (struct _xstate *)
+        * depending on the FP_XSTATE_MAGIC1 encoded in the SW reserved
+        * bytes of (struct _fpstate) and FP_XSTATE_MAGIC2 present at the end
+        * of extended memory layout. See comments at the definition of
+        * (struct _fpx_sw_bytes)
+        */
+       void __user                     *fpstate; /* Zero when no FPU/extended context */
+       __u32                           oldmask;
+       __u32                           cr2;
+};
+
+struct sigcontext_64 {
+       __u64                           r8;
+       __u64                           r9;
+       __u64                           r10;
+       __u64                           r11;
+       __u64                           r12;
+       __u64                           r13;
+       __u64                           r14;
+       __u64                           r15;
+       __u64                           di;
+       __u64                           si;
+       __u64                           bp;
+       __u64                           bx;
+       __u64                           dx;
+       __u64                           ax;
+       __u64                           cx;
+       __u64                           sp;
+       __u64                           ip;
+       __u64                           flags;
+       __u16                           cs;
+       __u16                           gs;
+       __u16                           fs;
+       __u16                           __pad0;
+       __u64                           err;
+       __u64                           trapno;
+       __u64                           oldmask;
+       __u64                           cr2;
+
+       /*
+        * fpstate is really (struct _fpstate *) or (struct _xstate *)
+        * depending on the FP_XSTATE_MAGIC1 encoded in the SW reserved
+        * bytes of (struct _fpstate) and FP_XSTATE_MAGIC2 present at the end
+        * of extended memory layout. See comments at the definition of
+        * (struct _fpx_sw_bytes)
+        */
+       void __user                     *fpstate; /* Zero when no FPU/extended context */
+       __u64                           reserved1[8];
+};
+
+/*
+ * Create the real 'struct sigcontext' type:
+ */
+#ifdef __KERNEL__
+# ifdef __i386__
+#  define sigcontext sigcontext_32
+# else
+#  define sigcontext sigcontext_64
+# endif
+#endif
+
 /*
  * The old user-space sigcontext definition, just in case user-space still
  * relies on it. The kernel definition (in asm/sigcontext.h) has unified
This page took 0.028476 seconds and 5 git commands to generate.