diff options
Diffstat (limited to 'include/asm-sparc/svr4.h')
-rw-r--r-- | include/asm-sparc/svr4.h | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/include/asm-sparc/svr4.h b/include/asm-sparc/svr4.h new file mode 100644 index 000000000000..da1f1c980e2d --- /dev/null +++ b/include/asm-sparc/svr4.h | |||
@@ -0,0 +1,119 @@ | |||
1 | /* Solaris/SPARC constants and definitions -- | ||
2 | * (C) 1996 Miguel de Icaza | ||
3 | * | ||
4 | * This file is not meant to be included by user level applications | ||
5 | * but the solaris syscall emulator | ||
6 | */ | ||
7 | |||
8 | #ifndef _SPARC_SVR4_H | ||
9 | #define _SPARC_SVR4_H | ||
10 | |||
11 | /* Signals as used by svr4 */ | ||
12 | typedef struct { /* signal set type */ | ||
13 | ulong sigbits[4]; | ||
14 | } svr4_sigset_t; | ||
15 | |||
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; | ||
29 | |||
30 | /* Context definition */ | ||
31 | |||
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 | ||
39 | }; | ||
40 | |||
41 | /* sizeof (regs) / sizeof (greg_t), defined in the ABI */ | ||
42 | #define SVR4_NREGS 19 | ||
43 | #define SVR4_MAXWIN 31 | ||
44 | |||
45 | typedef struct { | ||
46 | uint rwin_lo[8]; | ||
47 | uint rwin_in[8]; | ||
48 | } svr4_rwindow_t; | ||
49 | |||
50 | typedef struct { | ||
51 | int count; | ||
52 | int __user *winptr [SVR4_MAXWIN]; /* pointer to the windows */ | ||
53 | svr4_rwindow_t win[SVR4_MAXWIN]; /* the windows */ | ||
54 | } svr4_gwindows_t; | ||
55 | |||
56 | typedef int svr4_gregset_t[SVR4_NREGS]; | ||
57 | |||
58 | typedef struct { | ||
59 | double fpu_regs[32]; | ||
60 | void *fp_q; | ||
61 | unsigned fp_fsr; | ||
62 | u_char fp_nqel; | ||
63 | u_char fp_nqsize; | ||
64 | u_char inuse; /* if fpu is in use */ | ||
65 | } svr4_fregset_t; | ||
66 | |||
67 | typedef struct { | ||
68 | uint id; /* if this holds "xrs" string => ptr is valid */ | ||
69 | caddr_t ptr; | ||
70 | } svr4_xrs_t; | ||
71 | |||
72 | /* Machine dependent context */ | ||
73 | typedef struct { | ||
74 | svr4_gregset_t greg; /* registers 0..19 (see top) */ | ||
75 | svr4_gwindows_t __user *gwin; /* may point to register windows */ | ||
76 | svr4_fregset_t freg; /* floating point registers */ | ||
77 | svr4_xrs_t xrs; /* mhm? */ | ||
78 | long pad[19]; | ||
79 | } svr4_mcontext_t; | ||
80 | |||
81 | /* flags for stack_t.flags */ | ||
82 | enum svr4_stack_flags { | ||
83 | SVR4_SS_ONSTACK, | ||
84 | SVR4_SS_DISABLE, | ||
85 | }; | ||
86 | |||
87 | /* signal stack exection place, unsupported */ | ||
88 | typedef struct svr4_stack_t { | ||
89 | char __user *sp; | ||
90 | int size; | ||
91 | int flags; | ||
92 | } svr4_stack_t; | ||
93 | |||
94 | /* Context used by getcontext and setcontext */ | ||
95 | typedef struct svr4_ucontext_t { | ||
96 | u_long flags; /* context flags, indicate what is loaded */ | ||
97 | struct svr4_ucontext *link; | ||
98 | svr4_sigset_t sigmask; | ||
99 | svr4_stack_t stack; | ||
100 | svr4_mcontext_t mcontext; | ||
101 | long pad[23]; | ||
102 | } svr4_ucontext_t; | ||
103 | |||
104 | /* windows hold the windows as they were at signal time, | ||
105 | * ucontext->mcontext holds a pointer to them. | ||
106 | * addresses for uc and si are passed as parameters to svr4 signal | ||
107 | * handler | ||
108 | */ | ||
109 | |||
110 | /* This is the signal frame that is passed to the signal handler */ | ||
111 | typedef struct { | ||
112 | svr4_gwindows_t gw; /* windows */ | ||
113 | svr4_ucontext_t uc; /* machine context */ | ||
114 | svr4_siginfo_t si; /* siginfo */ | ||
115 | } svr4_signal_frame_t; | ||
116 | |||
117 | #define SVR4_SF_ALIGNED (((sizeof (svr4_signal_frame_t) + 7) & (~7))) | ||
118 | |||
119 | #endif /* include control */ | ||