x86-64: Use explicit sizes in sigcontext.h, prepare for x32
authorH. Peter Anvin <hpa@zytor.com>
Mon, 6 Feb 2012 21:50:20 +0000 (13:50 -0800)
committerH. Peter Anvin <hpa@zytor.com>
Mon, 20 Feb 2012 20:48:46 +0000 (12:48 -0800)
Use explicit sizes (__u64) instead of implicit sizes (unsigned long)
in the definition for sigcontext.h; this will allow this structure to
be shared between the x86-64 native ABI and the x32 ABI.

Originally-by: H. J. Lu <hjl.tools@gmail.com>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Link: http://lkml.kernel.org/n/tip-4pr1xnnksprt7t0h3w5fw4rv@git.kernel.org
arch/x86/include/asm/sigcontext.h

index 04459d2..4a08538 100644 (file)
@@ -230,34 +230,37 @@ struct sigcontext {
  * User-space might still rely on the old definition:
  */
 struct sigcontext {
-       unsigned long r8;
-       unsigned long r9;
-       unsigned long r10;
-       unsigned long r11;
-       unsigned long r12;
-       unsigned long r13;
-       unsigned long r14;
-       unsigned long r15;
-       unsigned long rdi;
-       unsigned long rsi;
-       unsigned long rbp;
-       unsigned long rbx;
-       unsigned long rdx;
-       unsigned long rax;
-       unsigned long rcx;
-       unsigned long rsp;
-       unsigned long rip;
-       unsigned long eflags;           /* RFLAGS */
-       unsigned short cs;
-       unsigned short gs;
-       unsigned short fs;
-       unsigned short __pad0;
-       unsigned long err;
-       unsigned long trapno;
-       unsigned long oldmask;
-       unsigned long cr2;
+       __u64 r8;
+       __u64 r9;
+       __u64 r10;
+       __u64 r11;
+       __u64 r12;
+       __u64 r13;
+       __u64 r14;
+       __u64 r15;
+       __u64 rdi;
+       __u64 rsi;
+       __u64 rbp;
+       __u64 rbx;
+       __u64 rdx;
+       __u64 rax;
+       __u64 rcx;
+       __u64 rsp;
+       __u64 rip;
+       __u64 eflags;           /* RFLAGS */
+       __u16 cs;
+       __u16 gs;
+       __u16 fs;
+       __u16 __pad0;
+       __u64 err;
+       __u64 trapno;
+       __u64 oldmask;
+       __u64 cr2;
        struct _fpstate __user *fpstate;        /* zero when no FPU context */
-       unsigned long reserved1[8];
+#ifndef __LP64__
+       __u32 __fpstate_pad;
+#endif
+       __u64 reserved1[8];
 };
 #endif /* !__KERNEL__ */