Przeglądaj źródła

[MIPS] Fix struct sigcontext for N32 userland

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>
Atsushi Nemoto 18 lat temu
rodzic
commit
269dd2b252
1 zmienionych plików z 16 dodań i 17 usunięć
  1. 16 17
      include/asm-mips/sigcontext.h

+ 16 - 17
include/asm-mips/sigcontext.h

@@ -42,6 +42,7 @@ struct sigcontext {
 
 
 #if _MIPS_SIM == _MIPS_SIM_ABI64 || _MIPS_SIM == _MIPS_SIM_NABI32
 #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
  * Keep this struct definition in sync with the sigcontext fragment
  * in arch/mips/tools/offset.c
  * in arch/mips/tools/offset.c
@@ -53,27 +54,25 @@ struct sigcontext {
  * entries, add sc_dsp and sc_reserved for padding.  No prisoners.
  * entries, add sc_dsp and sc_reserved for padding.  No prisoners.
  */
  */
 struct sigcontext {
 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__
 #ifdef __KERNEL__
 
 
-#include <linux/posix_types.h>
-
 struct sigcontext32 {
 struct sigcontext32 {
 	__u32		sc_regmask;	/* Unused */
 	__u32		sc_regmask;	/* Unused */
 	__u32		sc_status;	/* Unused */
 	__u32		sc_status;	/* Unused */