Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
0002 /*
0003  * uctx.h: Sparc64 {set,get}context() register state layouts.
0004  *
0005  * Copyright (C) 1997 David S. Miller (davem@caip.rutgers.edu)
0006  */
0007 
0008 #ifndef __SPARC64_UCTX_H
0009 #define __SPARC64_UCTX_H
0010 
0011 #define MC_TSTATE   0
0012 #define MC_PC       1
0013 #define MC_NPC      2
0014 #define MC_Y        3
0015 #define MC_G1       4
0016 #define MC_G2       5
0017 #define MC_G3       6
0018 #define MC_G4       7
0019 #define MC_G5       8
0020 #define MC_G6       9
0021 #define MC_G7       10
0022 #define MC_O0       11
0023 #define MC_O1       12
0024 #define MC_O2       13
0025 #define MC_O3       14
0026 #define MC_O4       15
0027 #define MC_O5       16
0028 #define MC_O6       17
0029 #define MC_O7       18
0030 #define MC_NGREG    19
0031 
0032 typedef unsigned long mc_greg_t;
0033 typedef mc_greg_t mc_gregset_t[MC_NGREG];
0034 
0035 #define MC_MAXFPQ   16
0036 struct mc_fq {
0037     unsigned long   *mcfq_addr;
0038     unsigned int    mcfq_insn;
0039 };
0040 
0041 struct mc_fpu {
0042     union {
0043         unsigned int    sregs[32];
0044         unsigned long   dregs[32];
0045         long double qregs[16];
0046     } mcfpu_fregs;
0047     unsigned long   mcfpu_fsr;
0048     unsigned long   mcfpu_fprs;
0049     unsigned long   mcfpu_gsr;
0050     struct mc_fq    *mcfpu_fq;
0051     unsigned char   mcfpu_qcnt;
0052     unsigned char   mcfpu_qentsz;
0053     unsigned char   mcfpu_enab;
0054 };
0055 typedef struct mc_fpu mc_fpu_t;
0056 
0057 typedef struct {
0058     mc_gregset_t    mc_gregs;
0059     mc_greg_t   mc_fp;
0060     mc_greg_t   mc_i7;
0061     mc_fpu_t    mc_fpregs;
0062 } mcontext_t;
0063 
0064 struct ucontext {
0065     struct ucontext     *uc_link;
0066     unsigned long       uc_flags;
0067     sigset_t        uc_sigmask;
0068     mcontext_t      uc_mcontext;
0069 };
0070 typedef struct ucontext ucontext_t;
0071 
0072 #endif /* __SPARC64_UCTX_H */