Subversion Repositories HelenOS

Rev

Details | Last modification | View Log | RSS feed

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