xref: /linux/arch/sparc/include/uapi/asm/uctx.h (revision 498495dba268b20e8eadd7fe93c140c68b6cc9d2)
1*6f52b16cSGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
254579826SDavid Howells /*
354579826SDavid Howells  * uctx.h: Sparc64 {set,get}context() register state layouts.
454579826SDavid Howells  *
554579826SDavid Howells  * Copyright (C) 1997 David S. Miller (davem@caip.rutgers.edu)
654579826SDavid Howells  */
754579826SDavid Howells 
854579826SDavid Howells #ifndef __SPARC64_UCTX_H
954579826SDavid Howells #define __SPARC64_UCTX_H
1054579826SDavid Howells 
1154579826SDavid Howells #define MC_TSTATE	0
1254579826SDavid Howells #define MC_PC		1
1354579826SDavid Howells #define MC_NPC		2
1454579826SDavid Howells #define MC_Y		3
1554579826SDavid Howells #define MC_G1		4
1654579826SDavid Howells #define MC_G2		5
1754579826SDavid Howells #define MC_G3		6
1854579826SDavid Howells #define MC_G4		7
1954579826SDavid Howells #define MC_G5		8
2054579826SDavid Howells #define MC_G6		9
2154579826SDavid Howells #define MC_G7		10
2254579826SDavid Howells #define MC_O0		11
2354579826SDavid Howells #define MC_O1		12
2454579826SDavid Howells #define MC_O2		13
2554579826SDavid Howells #define MC_O3		14
2654579826SDavid Howells #define MC_O4		15
2754579826SDavid Howells #define MC_O5		16
2854579826SDavid Howells #define MC_O6		17
2954579826SDavid Howells #define MC_O7		18
3054579826SDavid Howells #define MC_NGREG	19
3154579826SDavid Howells 
3254579826SDavid Howells typedef unsigned long mc_greg_t;
3354579826SDavid Howells typedef mc_greg_t mc_gregset_t[MC_NGREG];
3454579826SDavid Howells 
3554579826SDavid Howells #define MC_MAXFPQ	16
3654579826SDavid Howells struct mc_fq {
3754579826SDavid Howells 	unsigned long	*mcfq_addr;
3854579826SDavid Howells 	unsigned int	mcfq_insn;
3954579826SDavid Howells };
4054579826SDavid Howells 
4154579826SDavid Howells struct mc_fpu {
4254579826SDavid Howells 	union {
4354579826SDavid Howells 		unsigned int	sregs[32];
4454579826SDavid Howells 		unsigned long	dregs[32];
4554579826SDavid Howells 		long double	qregs[16];
4654579826SDavid Howells 	} mcfpu_fregs;
4754579826SDavid Howells 	unsigned long	mcfpu_fsr;
4854579826SDavid Howells 	unsigned long	mcfpu_fprs;
4954579826SDavid Howells 	unsigned long	mcfpu_gsr;
5054579826SDavid Howells 	struct mc_fq	*mcfpu_fq;
5154579826SDavid Howells 	unsigned char	mcfpu_qcnt;
5254579826SDavid Howells 	unsigned char	mcfpu_qentsz;
5354579826SDavid Howells 	unsigned char	mcfpu_enab;
5454579826SDavid Howells };
5554579826SDavid Howells typedef struct mc_fpu mc_fpu_t;
5654579826SDavid Howells 
5754579826SDavid Howells typedef struct {
5854579826SDavid Howells 	mc_gregset_t	mc_gregs;
5954579826SDavid Howells 	mc_greg_t	mc_fp;
6054579826SDavid Howells 	mc_greg_t	mc_i7;
6154579826SDavid Howells 	mc_fpu_t	mc_fpregs;
6254579826SDavid Howells } mcontext_t;
6354579826SDavid Howells 
6454579826SDavid Howells struct ucontext {
6554579826SDavid Howells 	struct ucontext		*uc_link;
6654579826SDavid Howells 	unsigned long		uc_flags;
6754579826SDavid Howells 	sigset_t		uc_sigmask;
6854579826SDavid Howells 	mcontext_t		uc_mcontext;
6954579826SDavid Howells };
7054579826SDavid Howells typedef struct ucontext ucontext_t;
7154579826SDavid Howells 
7254579826SDavid Howells #endif /* __SPARC64_UCTX_H */
73