diff options
Diffstat (limited to 'include/asm-sparc64/svr4.h')
-rw-r--r-- | include/asm-sparc64/svr4.h | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/include/asm-sparc64/svr4.h b/include/asm-sparc64/svr4.h new file mode 100644 index 000000000000..c96d5f116e1c --- /dev/null +++ b/include/asm-sparc64/svr4.h | |||
@@ -0,0 +1,120 @@ | |||
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 _SPARC64_SVR4_H | ||
9 | #define _SPARC64_SVR4_H | ||
10 | |||
11 | /* Signals as used by svr4 */ | ||
12 | typedef struct { /* signal set type */ | ||
13 | uint 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 | u32 rwin_lo[8]; | ||
47 | u32 rwin_in[8]; | ||
48 | } svr4_rwindow_t; | ||
49 | |||
50 | typedef struct { | ||
51 | int count; | ||
52 | u32 winptr [SVR4_MAXWIN]; /* pointer to the windows */ | ||
53 | |||
54 | svr4_rwindow_t win[SVR4_MAXWIN]; /* the windows */ | ||
55 | } svr4_gwindows_t; | ||
56 | |||
57 | typedef int svr4_gregset_t[SVR4_NREGS]; | ||
58 | |||
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; | ||
67 | |||
68 | typedef struct { | ||
69 | u32 id; /* if this holds "xrs" string => ptr is valid */ | ||
70 | u32 ptr; | ||
71 | } svr4_xrs_t; | ||
72 | |||
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; | ||
81 | |||
82 | /* flags for stack_t.flags */ | ||
83 | enum svr4_stack_flags { | ||
84 | SVR4_SS_ONSTACK, | ||
85 | SVR4_SS_DISABLE, | ||
86 | }; | ||
87 | |||
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; | ||
94 | |||
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; | ||
104 | |||
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 | ||
109 | */ | ||
110 | |||
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; | ||
117 | |||
118 | #define SVR4_SF_ALIGNED (((sizeof (svr4_signal_frame_t) + 7) & (~7))) | ||
119 | |||
120 | #endif /* include control */ | ||