]> git.proxmox.com Git - mirror_edk2.git/blame - StdLib/Include/Ipf/machine/_regset.h
SourceLevelDebugPkg: Removing ipf from edk2.
[mirror_edk2.git] / StdLib / Include / Ipf / machine / _regset.h
CommitLineData
2aa62f2b 1/* $NetBSD: _regset.h,v 1.1 2006/04/07 14:21:18 cherry Exp $ */\r
2\r
3/*-\r
4 * Copyright (c) 2002, 2003 Marcel Moolenaar\r
5 * All rights reserved.\r
6 *\r
7 * Redistribution and use in source and binary forms, with or without\r
8 * modification, are permitted provided that the following conditions\r
9 * are met:\r
10 *\r
11 * 1. Redistributions of source code must retain the above copyright\r
12 * notice, this list of conditions and the following disclaimer.\r
13 * 2. Redistributions in binary form must reproduce the above copyright\r
14 * notice, this list of conditions and the following disclaimer in the\r
15 * documentation and/or other materials provided with the distribution.\r
16 *\r
17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR\r
18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\r
19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\r
20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,\r
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\r
22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\r
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\r
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\r
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
27 *\r
28 * $FreeBSD$\r
29 */\r
30\r
31#ifndef _MACHINE_REGSET_H_\r
32#define _MACHINE_REGSET_H_\r
33\r
34/*\r
35 * Create register sets, based on the runtime specification. This allows\r
36 * us to better reuse code and to copy sets around more efficiently.\r
37 * Contexts are defined in terms of these sets. These include trapframe,\r
38 * sigframe, pcb, mcontext, reg and fpreg. Other candidates are unwind\r
39 * and coredump related contexts.\r
40 *\r
41 * Notes:\r
42 * o Constant registers (r0, f0 and f1) are not accounted for,\r
43 * o The stacked registers (r32-r127) are not accounted for,\r
44 * o Predicates are not split across sets.\r
45 */\r
46\r
47/* A single FP register. */\r
48union _ia64_fpreg {\r
49 unsigned char fpr_bits[16];\r
50 long double fpr_flt;\r
51};\r
52\r
53/*\r
54 * Special registers.\r
55 */\r
56struct _special {\r
57 unsigned long sp;\r
58 unsigned long unat; /* NaT before spilling */\r
59 unsigned long rp;\r
60 unsigned long pr;\r
61 unsigned long pfs;\r
62 unsigned long bspstore;\r
63 unsigned long rnat;\r
64 unsigned long __spare;\r
65 /* Userland context and syscalls */\r
66 unsigned long tp;\r
67 unsigned long rsc;\r
68 unsigned long fpsr;\r
69 unsigned long psr;\r
70 /* ASYNC: Interrupt specific */\r
71 unsigned long gp;\r
72 unsigned long ndirty;\r
73 unsigned long cfm;\r
74 unsigned long iip;\r
75 unsigned long ifa;\r
76 unsigned long isr;\r
77};\r
78\r
79struct _high_fp {\r
80 union _ia64_fpreg fr32;\r
81 union _ia64_fpreg fr33;\r
82 union _ia64_fpreg fr34;\r
83 union _ia64_fpreg fr35;\r
84 union _ia64_fpreg fr36;\r
85 union _ia64_fpreg fr37;\r
86 union _ia64_fpreg fr38;\r
87 union _ia64_fpreg fr39;\r
88 union _ia64_fpreg fr40;\r
89 union _ia64_fpreg fr41;\r
90 union _ia64_fpreg fr42;\r
91 union _ia64_fpreg fr43;\r
92 union _ia64_fpreg fr44;\r
93 union _ia64_fpreg fr45;\r
94 union _ia64_fpreg fr46;\r
95 union _ia64_fpreg fr47;\r
96 union _ia64_fpreg fr48;\r
97 union _ia64_fpreg fr49;\r
98 union _ia64_fpreg fr50;\r
99 union _ia64_fpreg fr51;\r
100 union _ia64_fpreg fr52;\r
101 union _ia64_fpreg fr53;\r
102 union _ia64_fpreg fr54;\r
103 union _ia64_fpreg fr55;\r
104 union _ia64_fpreg fr56;\r
105 union _ia64_fpreg fr57;\r
106 union _ia64_fpreg fr58;\r
107 union _ia64_fpreg fr59;\r
108 union _ia64_fpreg fr60;\r
109 union _ia64_fpreg fr61;\r
110 union _ia64_fpreg fr62;\r
111 union _ia64_fpreg fr63;\r
112 union _ia64_fpreg fr64;\r
113 union _ia64_fpreg fr65;\r
114 union _ia64_fpreg fr66;\r
115 union _ia64_fpreg fr67;\r
116 union _ia64_fpreg fr68;\r
117 union _ia64_fpreg fr69;\r
118 union _ia64_fpreg fr70;\r
119 union _ia64_fpreg fr71;\r
120 union _ia64_fpreg fr72;\r
121 union _ia64_fpreg fr73;\r
122 union _ia64_fpreg fr74;\r
123 union _ia64_fpreg fr75;\r
124 union _ia64_fpreg fr76;\r
125 union _ia64_fpreg fr77;\r
126 union _ia64_fpreg fr78;\r
127 union _ia64_fpreg fr79;\r
128 union _ia64_fpreg fr80;\r
129 union _ia64_fpreg fr81;\r
130 union _ia64_fpreg fr82;\r
131 union _ia64_fpreg fr83;\r
132 union _ia64_fpreg fr84;\r
133 union _ia64_fpreg fr85;\r
134 union _ia64_fpreg fr86;\r
135 union _ia64_fpreg fr87;\r
136 union _ia64_fpreg fr88;\r
137 union _ia64_fpreg fr89;\r
138 union _ia64_fpreg fr90;\r
139 union _ia64_fpreg fr91;\r
140 union _ia64_fpreg fr92;\r
141 union _ia64_fpreg fr93;\r
142 union _ia64_fpreg fr94;\r
143 union _ia64_fpreg fr95;\r
144 union _ia64_fpreg fr96;\r
145 union _ia64_fpreg fr97;\r
146 union _ia64_fpreg fr98;\r
147 union _ia64_fpreg fr99;\r
148 union _ia64_fpreg fr100;\r
149 union _ia64_fpreg fr101;\r
150 union _ia64_fpreg fr102;\r
151 union _ia64_fpreg fr103;\r
152 union _ia64_fpreg fr104;\r
153 union _ia64_fpreg fr105;\r
154 union _ia64_fpreg fr106;\r
155 union _ia64_fpreg fr107;\r
156 union _ia64_fpreg fr108;\r
157 union _ia64_fpreg fr109;\r
158 union _ia64_fpreg fr110;\r
159 union _ia64_fpreg fr111;\r
160 union _ia64_fpreg fr112;\r
161 union _ia64_fpreg fr113;\r
162 union _ia64_fpreg fr114;\r
163 union _ia64_fpreg fr115;\r
164 union _ia64_fpreg fr116;\r
165 union _ia64_fpreg fr117;\r
166 union _ia64_fpreg fr118;\r
167 union _ia64_fpreg fr119;\r
168 union _ia64_fpreg fr120;\r
169 union _ia64_fpreg fr121;\r
170 union _ia64_fpreg fr122;\r
171 union _ia64_fpreg fr123;\r
172 union _ia64_fpreg fr124;\r
173 union _ia64_fpreg fr125;\r
174 union _ia64_fpreg fr126;\r
175 union _ia64_fpreg fr127;\r
176};\r
177\r
178/*\r
179 * Preserved registers.\r
180 */\r
181struct _callee_saved {\r
182 unsigned long unat; /* NaT after spilling. */\r
183 unsigned long gr4;\r
184 unsigned long gr5;\r
185 unsigned long gr6;\r
186 unsigned long gr7;\r
187 unsigned long br1;\r
188 unsigned long br2;\r
189 unsigned long br3;\r
190 unsigned long br4;\r
191 unsigned long br5;\r
192 unsigned long lc;\r
193 unsigned long __spare;\r
194};\r
195\r
196struct _callee_saved_fp {\r
197 union _ia64_fpreg fr2;\r
198 union _ia64_fpreg fr3;\r
199 union _ia64_fpreg fr4;\r
200 union _ia64_fpreg fr5;\r
201 union _ia64_fpreg fr16;\r
202 union _ia64_fpreg fr17;\r
203 union _ia64_fpreg fr18;\r
204 union _ia64_fpreg fr19;\r
205 union _ia64_fpreg fr20;\r
206 union _ia64_fpreg fr21;\r
207 union _ia64_fpreg fr22;\r
208 union _ia64_fpreg fr23;\r
209 union _ia64_fpreg fr24;\r
210 union _ia64_fpreg fr25;\r
211 union _ia64_fpreg fr26;\r
212 union _ia64_fpreg fr27;\r
213 union _ia64_fpreg fr28;\r
214 union _ia64_fpreg fr29;\r
215 union _ia64_fpreg fr30;\r
216 union _ia64_fpreg fr31;\r
217};\r
218\r
219/*\r
220 * Scratch registers.\r
221 */\r
222struct _caller_saved {\r
223 unsigned long unat; /* NaT after spilling. */\r
224 unsigned long gr2;\r
225 unsigned long gr3;\r
226 unsigned long gr8;\r
227 unsigned long gr9;\r
228 unsigned long gr10;\r
229 unsigned long gr11;\r
230 unsigned long gr14;\r
231 unsigned long gr15;\r
232 unsigned long gr16;\r
233 unsigned long gr17;\r
234 unsigned long gr18;\r
235 unsigned long gr19;\r
236 unsigned long gr20;\r
237 unsigned long gr21;\r
238 unsigned long gr22;\r
239 unsigned long gr23;\r
240 unsigned long gr24;\r
241 unsigned long gr25;\r
242 unsigned long gr26;\r
243 unsigned long gr27;\r
244 unsigned long gr28;\r
245 unsigned long gr29;\r
246 unsigned long gr30;\r
247 unsigned long gr31;\r
248 unsigned long br6;\r
249 unsigned long br7;\r
250 unsigned long ccv;\r
251 unsigned long csd;\r
252 unsigned long ssd;\r
253};\r
254\r
255struct _caller_saved_fp {\r
256 union _ia64_fpreg fr6;\r
257 union _ia64_fpreg fr7;\r
258 union _ia64_fpreg fr8;\r
259 union _ia64_fpreg fr9;\r
260 union _ia64_fpreg fr10;\r
261 union _ia64_fpreg fr11;\r
262 union _ia64_fpreg fr12;\r
263 union _ia64_fpreg fr13;\r
264 union _ia64_fpreg fr14;\r
265 union _ia64_fpreg fr15;\r
266};\r
267\r
268#ifdef _KERNEL\r
269void restore_callee_saved(const struct _callee_saved *);\r
270void restore_callee_saved_fp(const struct _callee_saved_fp *);\r
271void restore_high_fp(const struct _high_fp *);\r
272void save_callee_saved(struct _callee_saved *);\r
273void save_callee_saved_fp(struct _callee_saved_fp *);\r
274void save_high_fp(struct _high_fp *);\r
275#endif\r
276\r
277#endif /* _MACHINE_REGSET_H_ */\r