162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * uctx.h: Sparc64 {set,get}context() register state layouts. 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright (C) 1997 David S. Miller (davem@caip.rutgers.edu) 662306a36Sopenharmony_ci */ 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci#ifndef __SPARC64_UCTX_H 962306a36Sopenharmony_ci#define __SPARC64_UCTX_H 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ci#define MC_TSTATE 0 1262306a36Sopenharmony_ci#define MC_PC 1 1362306a36Sopenharmony_ci#define MC_NPC 2 1462306a36Sopenharmony_ci#define MC_Y 3 1562306a36Sopenharmony_ci#define MC_G1 4 1662306a36Sopenharmony_ci#define MC_G2 5 1762306a36Sopenharmony_ci#define MC_G3 6 1862306a36Sopenharmony_ci#define MC_G4 7 1962306a36Sopenharmony_ci#define MC_G5 8 2062306a36Sopenharmony_ci#define MC_G6 9 2162306a36Sopenharmony_ci#define MC_G7 10 2262306a36Sopenharmony_ci#define MC_O0 11 2362306a36Sopenharmony_ci#define MC_O1 12 2462306a36Sopenharmony_ci#define MC_O2 13 2562306a36Sopenharmony_ci#define MC_O3 14 2662306a36Sopenharmony_ci#define MC_O4 15 2762306a36Sopenharmony_ci#define MC_O5 16 2862306a36Sopenharmony_ci#define MC_O6 17 2962306a36Sopenharmony_ci#define MC_O7 18 3062306a36Sopenharmony_ci#define MC_NGREG 19 3162306a36Sopenharmony_ci 3262306a36Sopenharmony_citypedef unsigned long mc_greg_t; 3362306a36Sopenharmony_citypedef mc_greg_t mc_gregset_t[MC_NGREG]; 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_ci#define MC_MAXFPQ 16 3662306a36Sopenharmony_cistruct mc_fq { 3762306a36Sopenharmony_ci unsigned long *mcfq_addr; 3862306a36Sopenharmony_ci unsigned int mcfq_insn; 3962306a36Sopenharmony_ci}; 4062306a36Sopenharmony_ci 4162306a36Sopenharmony_cistruct mc_fpu { 4262306a36Sopenharmony_ci union { 4362306a36Sopenharmony_ci unsigned int sregs[32]; 4462306a36Sopenharmony_ci unsigned long dregs[32]; 4562306a36Sopenharmony_ci long double qregs[16]; 4662306a36Sopenharmony_ci } mcfpu_fregs; 4762306a36Sopenharmony_ci unsigned long mcfpu_fsr; 4862306a36Sopenharmony_ci unsigned long mcfpu_fprs; 4962306a36Sopenharmony_ci unsigned long mcfpu_gsr; 5062306a36Sopenharmony_ci struct mc_fq *mcfpu_fq; 5162306a36Sopenharmony_ci unsigned char mcfpu_qcnt; 5262306a36Sopenharmony_ci unsigned char mcfpu_qentsz; 5362306a36Sopenharmony_ci unsigned char mcfpu_enab; 5462306a36Sopenharmony_ci}; 5562306a36Sopenharmony_citypedef struct mc_fpu mc_fpu_t; 5662306a36Sopenharmony_ci 5762306a36Sopenharmony_citypedef struct { 5862306a36Sopenharmony_ci mc_gregset_t mc_gregs; 5962306a36Sopenharmony_ci mc_greg_t mc_fp; 6062306a36Sopenharmony_ci mc_greg_t mc_i7; 6162306a36Sopenharmony_ci mc_fpu_t mc_fpregs; 6262306a36Sopenharmony_ci} mcontext_t; 6362306a36Sopenharmony_ci 6462306a36Sopenharmony_cistruct ucontext { 6562306a36Sopenharmony_ci struct ucontext *uc_link; 6662306a36Sopenharmony_ci unsigned long uc_flags; 6762306a36Sopenharmony_ci sigset_t uc_sigmask; 6862306a36Sopenharmony_ci mcontext_t uc_mcontext; 6962306a36Sopenharmony_ci}; 7062306a36Sopenharmony_citypedef struct ucontext ucontext_t; 7162306a36Sopenharmony_ci 7262306a36Sopenharmony_ci#endif /* __SPARC64_UCTX_H */ 73