1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
|
/* Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
see <http://www.gnu.org/licenses/>. */
/* Where is System V/SH ABI? */
#ifndef _SYS_UCONTEXT_H
#define _SYS_UCONTEXT_H 1
#include <features.h>
#include <signal.h>
/* We need the signal context definitions even if they are not used
included in <signal.h>. */
#include <bits/sigcontext.h>
typedef long long greg_t;
/* Number of general registers. */
#define NGREG 64
/* Container for all general registers. */
typedef greg_t gregset_t[NGREG];
#ifdef __USE_GNU
/* Number of each register is the `gregset_t' array. */
enum
{
R0 = 0,
#define R0 R0
R1 = 1,
#define R1 R1
R2 = 2,
#define R2 R2
R3 = 3,
#define R3 R3
R4 = 4,
#define R4 R4
R5 = 5,
#define R5 R5
R6 = 6,
#define R6 R6
R7 = 7,
#define R7 R7
R8 = 8,
#define R8 R8
R9 = 9,
#define R9 R9
R10 = 10,
#define R10 R10
R11 = 11,
#define R11 R11
R12 = 12,
#define R12 R12
R13 = 13,
#define R13 R13
R14 = 14,
#define R14 R14
R15 = 15,
#define R15 R15
R16 = 16,
#define R16 R16
R17 = 17,
#define R17 R17
R18 = 18,
#define R18 R18
R19 = 19,
#define R19 R19
R20 = 20,
#define R20 R20
R21 = 21,
#define R21 R21
R22 = 22,
#define R22 R22
R23 = 23,
#define R23 R23
R24 = 24,
#define R24 R24
R25 = 25,
#define R25 R25
R26 = 26,
#define R26 R26
R27 = 27,
#define R27 R27
R28 = 28,
#define R28 R28
R29 = 29,
#define R29 R29
R30 = 30,
#define R30 R30
R31 = 31,
#define R31 R31
R32 = 32,
#define R32 R32
R33 = 33,
#define R33 R33
R34 = 34,
#define R34 R34
R35 = 35,
#define R35 R35
R36 = 36,
#define R36 R36
R37 = 37,
#define R37 R37
R38 = 38,
#define R38 R38
R39 = 39,
#define R39 R39
R40 = 40,
#define R40 R40
R41 = 41,
#define R41 R41
R42 = 42,
#define R42 R42
R43 = 43,
#define R43 R43
R44 = 44,
#define R44 R44
R45 = 45,
#define R45 R45
R46 = 46,
#define R46 R46
R47 = 47,
#define R47 R47
R48 = 48,
#define R48 R48
R49 = 49,
#define R49 R49
R50 = 50,
#define R50 R50
R51 = 51,
#define R51 R51
R52 = 52,
#define R52 R52
R53 = 53,
#define R53 R53
R54 = 54,
#define R54 R54
R55 = 55,
#define R55 R55
R56 = 56,
#define R56 R56
R57 = 57,
#define R57 R57
R58 = 58,
#define R58 R58
R59 = 59,
#define R59 R59
R60 = 60,
#define R60 R60
R61 = 61,
#define R61 R61
R62 = 62,
#define R62 R62
R63 = 63,
#define R63 R63
};
#endif
typedef int freg_t;
/* Number of FPU registers. */
#define NFPREG 32
/* Structure to describe FPU registers. */
typedef freg_t fpregset_t[NFPREG];
/* Context to describe whole processor state. */
typedef struct
{
gregset_t gregs;
fpregset_t fpregs;
unsigned long long sc_tregs[8];
unsigned long long sc_pc;
unsigned long long sc_sr;
unsigned long long sc_fpscr;
} mcontext_t;
/* Userlevel context. */
typedef struct ucontext
{
unsigned long int uc_flags;
struct ucontext *uc_link;
stack_t uc_stack;
mcontext_t uc_mcontext;
__sigset_t uc_sigmask;
} ucontext_t;
#endif /* sys/ucontext.h */
|