Linux 2.6.21.1
[linux/fpc-iii.git] / include / asm-sparc64 / svr4.h
blobc96d5f116e1c072009d2b3354730ff618a1b17ab
1 /* Solaris/SPARC constants and definitions --
2 * (C) 1996 Miguel de Icaza
4 * This file is not meant to be included by user level applications
5 * but the solaris syscall emulator
6 */
8 #ifndef _SPARC64_SVR4_H
9 #define _SPARC64_SVR4_H
11 /* Signals as used by svr4 */
12 typedef struct { /* signal set type */
13 uint sigbits[4];
14 } svr4_sigset_t;
16 /* Values for siginfo.code */
17 #define SVR4_SINOINFO 32767
18 /* Siginfo, sucker expects bunch of information on those parameters */
19 typedef union {
20 char total_size [128];
21 struct {
22 int signo;
23 int code;
24 int error;
25 union {
26 } data;
27 } siginfo;
28 } svr4_siginfo_t;
30 /* Context definition */
32 /* Location of the user stored registers into a greg_t */
33 enum {
34 SVR4_PSR, SVR4_PC, SVR4_NPC, SVR4_Y,
35 SVR4_G1, SVR4_G2, SVR4_G3, SVR4_G4,
36 SVR4_G5, SVR4_G6, SVR4_G7, SVR4_O0,
37 SVR4_O1, SVR4_O2, SVR4_O3, SVR4_O4,
38 SVR4_O5, SVR4_O6, SVR4_O7
41 /* sizeof (regs) / sizeof (greg_t), defined in the ABI */
42 #define SVR4_NREGS 19
43 #define SVR4_MAXWIN 31
45 typedef struct {
46 u32 rwin_lo[8];
47 u32 rwin_in[8];
48 } svr4_rwindow_t;
50 typedef struct {
51 int count;
52 u32 winptr [SVR4_MAXWIN]; /* pointer to the windows */
54 svr4_rwindow_t win[SVR4_MAXWIN]; /* the windows */
55 } svr4_gwindows_t;
57 typedef int svr4_gregset_t[SVR4_NREGS];
59 typedef struct {
60 u64 fpu_regs[32];
61 u32 fp_q;
62 u32 fp_fsr;
63 u_char fp_nqel;
64 u_char fp_nqsize;
65 u_char inuse; /* if fpu is in use */
66 } svr4_fregset_t;
68 typedef struct {
69 u32 id; /* if this holds "xrs" string => ptr is valid */
70 u32 ptr;
71 } svr4_xrs_t;
73 /* Machine dependent context */
74 typedef struct {
75 svr4_gregset_t greg; /* registers 0..19 (see top) */
76 u32 gwin; /* may point to register windows */
77 svr4_fregset_t freg; /* floating point registers */
78 svr4_xrs_t xrs; /* mhm? */
79 int pad[19];
80 } svr4_mcontext_t;
82 /* flags for stack_t.flags */
83 enum svr4_stack_flags {
84 SVR4_SS_ONSTACK,
85 SVR4_SS_DISABLE,
88 /* signal stack execution place, unsupported */
89 typedef struct svr4_stack_t {
90 u32 sp;
91 int size;
92 int flags;
93 } svr4_stack_t;
95 /* Context used by getcontext and setcontext */
96 typedef struct svr4_ucontext_t {
97 u32 flags; /* context flags, indicate what is loaded */
98 u32 link;
99 svr4_sigset_t sigmask;
100 svr4_stack_t stack;
101 svr4_mcontext_t mcontext;
102 int pad[23];
103 } svr4_ucontext_t;
105 /* windows hold the windows as they were at signal time,
106 * ucontext->mcontext holds a pointer to them.
107 * addresses for uc and si are passed as parameters to svr4 signal
108 * handler
111 /* This is the signal frame that is passed to the signal handler */
112 typedef struct {
113 svr4_gwindows_t gw; /* windows */
114 svr4_ucontext_t uc; /* machine context */
115 svr4_siginfo_t si; /* siginfo */
116 } svr4_signal_frame_t;
118 #define SVR4_SF_ALIGNED (((sizeof (svr4_signal_frame_t) + 7) & (~7)))
120 #endif /* include control */