1 /*
2  * This file is subject to the terms and conditions of the GNU General Public
3  * License.  See the file "COPYING" in the main directory of this archive
4  * for more details.
5  *
6  * Copyright (C) 1996, 1997, 1999 by Ralf Baechle
7  * Copyright (C) 1999 Silicon Graphics, Inc.
8  */
9 #ifndef _UAPI_ASM_SIGCONTEXT_H
10 #define _UAPI_ASM_SIGCONTEXT_H
11 
12 #include <linux/types.h>
13 #include <asm/sgidefs.h>
14 
15 /* Bits which may be set in sc_used_math */
16 #define USEDMATH_FP	(1 << 0)
17 #define USEDMATH_MSA	(1 << 1)
18 
19 #if _MIPS_SIM == _MIPS_SIM_ABI32
20 
21 /*
22  * Keep this struct definition in sync with the sigcontext fragment
23  * in arch/mips/tools/offset.c
24  */
25 struct sigcontext {
26 	unsigned int		sc_regmask;	/* Unused */
27 	unsigned int		sc_status;	/* Unused */
28 	unsigned long long	sc_pc;
29 	unsigned long long	sc_regs[32];
30 	unsigned long long	sc_fpregs[32];
31 	unsigned int		sc_acx;		/* Was sc_ownedfp */
32 	unsigned int		sc_fpc_csr;
33 	unsigned int		sc_fpc_eir;	/* Unused */
34 	unsigned int		sc_used_math;
35 	unsigned int		sc_dsp;		/* dsp status, was sc_ssflags */
36 	unsigned long long	sc_mdhi;
37 	unsigned long long	sc_mdlo;
38 	unsigned long		sc_hi1;		/* Was sc_cause */
39 	unsigned long		sc_lo1;		/* Was sc_badvaddr */
40 	unsigned long		sc_hi2;		/* Was sc_sigset[4] */
41 	unsigned long		sc_lo2;
42 	unsigned long		sc_hi3;
43 	unsigned long		sc_lo3;
44 	unsigned long long	sc_msaregs[32];	/* Most significant 64 bits */
45 	unsigned long		sc_msa_csr;
46 };
47 
48 #endif /* _MIPS_SIM == _MIPS_SIM_ABI32 */
49 
50 #if _MIPS_SIM == _MIPS_SIM_ABI64 || _MIPS_SIM == _MIPS_SIM_NABI32
51 
52 #include <linux/posix_types.h>
53 /*
54  * Keep this struct definition in sync with the sigcontext fragment
55  * in arch/mips/tools/offset.c
56  *
57  * Warning: this structure illdefined with sc_badvaddr being just an unsigned
58  * int so it was changed to unsigned long in 2.6.0-test1.  This may break
59  * binary compatibility - no prisoners.
60  * DSP ASE in 2.6.12-rc4.  Turn sc_mdhi and sc_mdlo into an array of four
61  * entries, add sc_dsp and sc_reserved for padding.  No prisoners.
62  */
63 struct sigcontext {
64 	__u64	sc_regs[32];
65 	__u64	sc_fpregs[32];
66 	__u64	sc_mdhi;
67 	__u64	sc_hi1;
68 	__u64	sc_hi2;
69 	__u64	sc_hi3;
70 	__u64	sc_mdlo;
71 	__u64	sc_lo1;
72 	__u64	sc_lo2;
73 	__u64	sc_lo3;
74 	__u64	sc_pc;
75 	__u32	sc_fpc_csr;
76 	__u32	sc_used_math;
77 	__u32	sc_dsp;
78 	__u32	sc_reserved;
79 	__u64	sc_msaregs[32];
80 	__u32	sc_msa_csr;
81 };
82 
83 
84 #endif /* _MIPS_SIM == _MIPS_SIM_ABI64 || _MIPS_SIM == _MIPS_SIM_NABI32 */
85 
86 #endif /* _UAPI_ASM_SIGCONTEXT_H */
87