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