Imported Upstream version 3.0
[platform/upstream/gnu-efi.git] / inc / protocol / ia64 / eficontext.h
1 /*\r
2  * Copyright (c) 1999, 2000\r
3  * Intel Corporation.\r
4  * All rights reserved.\r
5  * \r
6  * Redistribution and use in source and binary forms, with or without\r
7  * modification, are permitted provided that the following conditions\r
8  * are met:\r
9  * \r
10  * 1. Redistributions of source code must retain the above copyright\r
11  *    notice, this list of conditions and the following disclaimer.\r
12  * \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  * 3. All advertising materials mentioning features or use of this software\r
18  *    must display the following acknowledgement:\r
19  * \r
20  *    This product includes software developed by Intel Corporation and\r
21  *    its contributors.\r
22  * \r
23  * 4. Neither the name of Intel Corporation or its contributors may be\r
24  *    used to endorse or promote products derived from this software\r
25  *    without specific prior written permission.\r
26  * \r
27  * THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION AND CONTRIBUTORS ``AS IS''\r
28  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
29  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r
30  * ARE DISCLAIMED.  IN NO EVENT SHALL INTEL CORPORATION OR CONTRIBUTORS BE\r
31  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r
32  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\r
33  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r
34  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r
35  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r
36  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\r
37  * THE POSSIBILITY OF SUCH DAMAGE.\r
38  * \r
39  */\r
40 \r
41 \r
42 #ifndef _EFICONTEXT_H_\r
43 #define _EFICONTEXT_H_\r
44 \r
45 \r
46 //\r
47 //  IA-64 processor exception types\r
48 //\r
49 #define    EXCPT_ALT_DTLB            4\r
50 #define    EXCPT_DNESTED_TLB         5\r
51 #define    EXCPT_BREAKPOINT         11\r
52 #define    EXCPT_EXTERNAL_INTERRUPT     12\r
53 #define    EXCPT_GEN_EXCEPT         24\r
54 #define    EXCPT_NAT_CONSUMPTION    26\r
55 #define    EXCPT_DEBUG_EXCEPT       29\r
56 #define    EXCPT_UNALIGNED_ACCESS   30\r
57 #define    EXCPT_FP_FAULT           32\r
58 #define    EXCPT_FP_TRAP            33\r
59 #define    EXCPT_TAKEN_BRANCH       35\r
60 #define    EXCPT_SINGLE_STEP        36\r
61 \r
62 //\r
63 //  IA-64 processor context definition - must be 512 byte aligned!!!\r
64 //\r
65 typedef\r
66 struct {\r
67         UINT64 reserved;        // necessary to preserve alignment for the correct bits in UNAT and to insure F2 is 16 byte aligned...\r
68     \r
69     UINT64 r1;\r
70     UINT64 r2;\r
71     UINT64 r3;\r
72     UINT64 r4;\r
73     UINT64 r5;\r
74     UINT64 r6;\r
75     UINT64 r7;\r
76     UINT64 r8;\r
77     UINT64 r9;\r
78     UINT64 r10;\r
79     UINT64 r11;\r
80     UINT64 r12;\r
81     UINT64 r13;\r
82     UINT64 r14;\r
83     UINT64 r15;\r
84     UINT64 r16;\r
85     UINT64 r17;\r
86     UINT64 r18;\r
87     UINT64 r19;\r
88     UINT64 r20;\r
89     UINT64 r21;\r
90     UINT64 r22;\r
91     UINT64 r23;\r
92     UINT64 r24;\r
93     UINT64 r25;\r
94     UINT64 r26;\r
95     UINT64 r27;\r
96     UINT64 r28;\r
97     UINT64 r29;\r
98     UINT64 r30;\r
99     UINT64 r31;\r
100     \r
101     UINT64 f2[2];\r
102     UINT64 f3[2];\r
103     UINT64 f4[2];\r
104     UINT64 f5[2];\r
105     UINT64 f6[2];\r
106     UINT64 f7[2];\r
107     UINT64 f8[2];\r
108     UINT64 f9[2];\r
109     UINT64 f10[2];\r
110     UINT64 f11[2];\r
111     UINT64 f12[2];\r
112     UINT64 f13[2];\r
113     UINT64 f14[2];\r
114     UINT64 f15[2];\r
115     UINT64 f16[2];\r
116     UINT64 f17[2];\r
117     UINT64 f18[2];\r
118     UINT64 f19[2];\r
119     UINT64 f20[2];\r
120     UINT64 f21[2];\r
121     UINT64 f22[2];\r
122     UINT64 f23[2];\r
123     UINT64 f24[2];\r
124     UINT64 f25[2];\r
125     UINT64 f26[2];\r
126     UINT64 f27[2];\r
127     UINT64 f28[2];\r
128     UINT64 f29[2];\r
129     UINT64 f30[2];\r
130     UINT64 f31[2];\r
131     \r
132     UINT64 pr;\r
133     \r
134     UINT64 b0;\r
135     UINT64 b1;\r
136     UINT64 b2;\r
137     UINT64 b3;\r
138     UINT64 b4;\r
139     UINT64 b5;\r
140     UINT64 b6;\r
141     UINT64 b7;\r
142     \r
143     // application registers\r
144     UINT64 ar_rsc;\r
145     UINT64 ar_bsp;\r
146     UINT64 ar_bspstore;\r
147     UINT64 ar_rnat;\r
148 \r
149     UINT64 ar_fcr;\r
150 \r
151     UINT64 ar_eflag;\r
152     UINT64 ar_csd;\r
153     UINT64 ar_ssd;\r
154     UINT64 ar_cflg;\r
155     UINT64 ar_fsr;\r
156     UINT64 ar_fir;\r
157     UINT64 ar_fdr;\r
158 \r
159     UINT64 ar_ccv;\r
160 \r
161     UINT64 ar_unat;\r
162 \r
163     UINT64 ar_fpsr;\r
164     \r
165     UINT64 ar_pfs;\r
166     UINT64 ar_lc;\r
167     UINT64 ar_ec;\r
168     \r
169     // control registers\r
170     UINT64 cr_dcr;\r
171     UINT64 cr_itm;\r
172     UINT64 cr_iva;\r
173     UINT64 cr_pta;\r
174     UINT64 cr_ipsr;\r
175     UINT64 cr_isr;\r
176     UINT64 cr_iip;\r
177     UINT64 cr_ifa;\r
178     UINT64 cr_itir;\r
179     UINT64 cr_iipa;\r
180     UINT64 cr_ifs;\r
181     UINT64 cr_iim;\r
182     UINT64 cr_iha;\r
183     \r
184     // debug registers\r
185     UINT64 dbr0;\r
186     UINT64 dbr1;\r
187     UINT64 dbr2;\r
188     UINT64 dbr3;\r
189     UINT64 dbr4;\r
190     UINT64 dbr5;\r
191     UINT64 dbr6;\r
192     UINT64 dbr7;\r
193     \r
194     UINT64 ibr0;\r
195     UINT64 ibr1;\r
196     UINT64 ibr2;\r
197     UINT64 ibr3;\r
198     UINT64 ibr4;\r
199     UINT64 ibr5;\r
200     UINT64 ibr6;\r
201     UINT64 ibr7;\r
202     \r
203     // virtual registers\r
204     UINT64 int_nat;     // nat bits for R1-R31\r
205     \r
206 } SYSTEM_CONTEXT;\r
207 \r
208 #endif /* _EFI_CONTEXT_H_ */\r