| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 | /* Copyright (C) 1998, 1999, 2002, 2003 Free Software Foundation, Inc.   This file is part of the GNU C Library.   The GNU C Library is free software; you can redistribute it and/or   modify it under the terms of the GNU Lesser General Public   License as published by the Free Software Foundation; either   version 2.1 of the License, or (at your option) any later version.   The GNU C Library is distributed in the hope that it will be useful,   but WITHOUT ANY WARRANTY; without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU   Lesser General Public License for more details.   You should have received a copy of the GNU Lesser General Public   License along with the GNU C Library; if not, write to the Free   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA   02111-1307 USA.  *//* System V/mips ABI compliant context switching support.  */#ifndef _SYS_UCONTEXT_H#define _SYS_UCONTEXT_H	1#include <features.h>#include <signal.h>/* Type for general register.  */#if _MIPS_SIM == _MIPS_SIM_ABI32typedef __uint32_t greg_t;#elsetypedef __uint64_t greg_t;#endif/* Number of general registers.  */#define NGREG	36/* Container for all general registers.  */typedef greg_t gregset_t[NGREG];/* Number of each register is the `gregset_t' array.  */enum{  CTX_R0 = 0,#define CTX_R0	CTX_R0  CTX_AT = 1,#define CTX_AT	CTX_AT  CTX_V0 = 2,#define CTX_V0	CTX_V0  CTX_V1 = 3,#define CTX_V1	CTX_V1  CTX_A0 = 4,#define CTX_A0	CTX_A0  CTX_A1 = 5,#define CTX_A1	CTX_A1  CTX_A2 = 6,#define CTX_A2	CTX_A2  CTX_A3 = 7,#define CTX_A3	CTX_A3  CTX_T0 = 8,#define CTX_T0	CTX_T0  CTX_T1 = 9,#define CTX_T1	CTX_T1  CTX_T2 = 10,#define CTX_T2	CTX_T2  CTX_T3 = 11,#define CTX_T3	CTX_T3  CTX_T4 = 12,#define CTX_T4	CTX_T4  CTX_T5 = 13,#define CTX_T5	CTX_T5  CTX_T6 = 14,#define CTX_T6	CTX_T6  CTX_T7 = 15,#define CTX_T7	CTX_T7  CTX_S0 = 16,#define CTX_S0	CTX_S0  CTX_S1 = 17,#define CTX_S1	CTX_S1  CTX_S2 = 18,#define CTX_S2	CTX_S2  CTX_S3 = 19,#define CTX_S3	CTX_S3  CTX_S4 = 20,#define CTX_S4	CTX_S4  CTX_S5 = 21,#define CTX_S5	CTX_S5  CTX_S6 = 22,#define CTX_S6	CTX_S6  CTX_S7 = 23,#define CTX_S7	CTX_S7  CTX_T8 = 24,#define CTX_T8	CTX_T8  CTX_T9 = 25,#define CTX_T9	CTX_T9  CTX_K0 = 26,#define CTX_K0	CTX_K0  CTX_K1 = 27,#define CTX_K1	CTX_K1  CTX_GP = 28,#define CTX_GP	CTX_GP  CTX_SP = 29,#define CTX_SP	CTX_SP  CTX_S8 = 30,#define CTX_S8	CTX_S8  CTX_RA = 31,#define CTX_RA	CTX_RA  CTX_MDLO = 32,#define CTX_MDLO	CTX_MDLO  CTX_MDHI = 33,#define CTX_MDHI	CTX_MDHI  CTX_CAUSE = 34,#define CTX_CAUSE	CTX_CAUSE  CTX_EPC = 35,#define CTX_EPC	CTX_EPC};/* Structure to describe FPU registers.  */typedef struct fpregset{  union  {#if _MIPS_SIM == _MIPS_SIM_ABI32    double fp_dregs[16];    float fp_fregs[32];    unsigned int fp_regs[32];#else    double fp_dregs[32];    /* float fp_fregs[32]; */    __uint64_t fp_regs[32];#endif  } fp_r;  unsigned int fp_csr;  unsigned int fp_pad;} fpregset_t;/* Context to describe whole processor state.  */typedef struct{  gregset_t gpregs;  fpregset_t fpregs;} mcontext_t;/* Userlevel context.  */typedef struct ucontext{#if _MIPS_SIM == _MIPS_SIM_ABI32  unsigned long int uc_flags;#else  __uint64_t uc_flags;#endif  struct ucontext *uc_link;  __sigset_t uc_sigmask;  stack_t uc_stack;  mcontext_t uc_mcontext;  int uc_filler[48];} ucontext_t;#endif /* sys/ucontext.h */
 |