[MIPS] Fix struct sigcontext for N32 userland
authorAtsushi Nemoto <anemo@mba.ocn.ne.jp>
Sat, 17 Feb 2007 15:12:57 +0000 (00:12 +0900)
committerRalf Baechle <ralf@linux-mips.org>
Tue, 20 Feb 2007 01:26:42 +0000 (01:26 +0000)
The kernel use 64-bit for sc_regs[0], and both N32/N64 userland
expects it was 64-bit.  But size of 'long' on N32 is actually 32-bit.
So this definition make some confusion.  Use __u32 and __u64 for
N32/N64 sigcontext to get rid of this confusion.

Signed-off-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
include/asm-mips/sigcontext.h

index 3c175a7e43450ceb7ee3b4a667628ef4043811c5..972947474eb7e48a733e92f8497d0d6a8213ac00 100644 (file)
@@ -42,6 +42,7 @@ struct sigcontext {
 
 #if _MIPS_SIM == _MIPS_SIM_ABI64 || _MIPS_SIM == _MIPS_SIM_NABI32
 
+#include <linux/posix_types.h>
 /*
  * Keep this struct definition in sync with the sigcontext fragment
  * in arch/mips/tools/offset.c
@@ -53,27 +54,25 @@ struct sigcontext {
  * entries, add sc_dsp and sc_reserved for padding.  No prisoners.
  */
 struct sigcontext {
-       unsigned long   sc_regs[32];
-       unsigned long   sc_fpregs[32];
-       unsigned long   sc_mdhi;
-       unsigned long   sc_hi1;
-       unsigned long   sc_hi2;
-       unsigned long   sc_hi3;
-       unsigned long   sc_mdlo;
-       unsigned long   sc_lo1;
-       unsigned long   sc_lo2;
-       unsigned long   sc_lo3;
-       unsigned long   sc_pc;
-       unsigned int    sc_fpc_csr;
-       unsigned int    sc_used_math;
-       unsigned int    sc_dsp;
-       unsigned int    sc_reserved;
+       __u64   sc_regs[32];
+       __u64   sc_fpregs[32];
+       __u64   sc_mdhi;
+       __u64   sc_hi1;
+       __u64   sc_hi2;
+       __u64   sc_hi3;
+       __u64   sc_mdlo;
+       __u64   sc_lo1;
+       __u64   sc_lo2;
+       __u64   sc_lo3;
+       __u64   sc_pc;
+       __u32   sc_fpc_csr;
+       __u32   sc_used_math;
+       __u32   sc_dsp;
+       __u32   sc_reserved;
 };
 
 #ifdef __KERNEL__
 
-#include <linux/posix_types.h>
-
 struct sigcontext32 {
        __u32           sc_regmask;     /* Unused */
        __u32           sc_status;      /* Unused */