1/* $Id: uctx.h,v 1.1.1.1 2007/08/03 18:53:37 Exp $
2 * uctx.h: Sparc64 {set,get}context() register state layouts.
3 *
4 * Copyright (C) 1997 David S. Miller (davem@caip.rutgers.edu)
5 */
6
7#ifndef __SPARC64_UCTX_H
8#define __SPARC64_UCTX_H
9
10#define MC_TSTATE	0
11#define MC_PC		1
12#define MC_NPC		2
13#define MC_Y		3
14#define MC_G1		4
15#define MC_G2		5
16#define MC_G3		6
17#define MC_G4		7
18#define MC_G5		8
19#define MC_G6		9
20#define MC_G7		10
21#define MC_O0		11
22#define MC_O1		12
23#define MC_O2		13
24#define MC_O3		14
25#define MC_O4		15
26#define MC_O5		16
27#define MC_O6		17
28#define MC_O7		18
29#define MC_NGREG	19
30
31typedef unsigned long mc_greg_t;
32typedef mc_greg_t mc_gregset_t[MC_NGREG];
33
34#define MC_MAXFPQ	16
35struct mc_fq {
36	unsigned long	*mcfq_addr;
37	unsigned int	mcfq_insn;
38};
39
40struct mc_fpu {
41	union {
42		unsigned int	sregs[32];
43		unsigned long	dregs[32];
44		long double	qregs[16];
45	} mcfpu_fregs;
46	unsigned long	mcfpu_fsr;
47	unsigned long	mcfpu_fprs;
48	unsigned long	mcfpu_gsr;
49	struct mc_fq	*mcfpu_fq;
50	unsigned char	mcfpu_qcnt;
51	unsigned char	mcfpu_qentsz;
52	unsigned char	mcfpu_enab;
53};
54typedef struct mc_fpu mc_fpu_t;
55
56typedef struct {
57	mc_gregset_t	mc_gregs;
58	mc_greg_t	mc_fp;
59	mc_greg_t	mc_i7;
60	mc_fpu_t	mc_fpregs;
61} mcontext_t;
62
63struct ucontext {
64	struct ucontext		*uc_link;
65	unsigned long		uc_flags;
66	sigset_t		uc_sigmask;
67	mcontext_t		uc_mcontext;
68};
69typedef struct ucontext ucontext_t;
70
71#endif /* __SPARC64_UCTX_H */
72