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