176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/*
276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * Copyright (c) 1999, 2000
376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * Intel Corporation.
476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * All rights reserved.
576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *
676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * Redistribution and use in source and binary forms, with or without
776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * modification, are permitted provided that the following conditions
876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * are met:
976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *
1076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * 1. Redistributions of source code must retain the above copyright
1176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *    notice, this list of conditions and the following disclaimer.
1276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *
1376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * 2. Redistributions in binary form must reproduce the above copyright
1476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *    notice, this list of conditions and the following disclaimer in the
1576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *    documentation and/or other materials provided with the distribution.
1676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *
1776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * 3. All advertising materials mentioning features or use of this software
1876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *    must display the following acknowledgement:
1976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *
2076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *    This product includes software developed by Intel Corporation and
2176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *    its contributors.
2276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *
2376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * 4. Neither the name of Intel Corporation or its contributors may be
2476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *    used to endorse or promote products derived from this software
2576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *    without specific prior written permission.
2676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *
2776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION AND CONTRIBUTORS ``AS IS''
2876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
2976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
3076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * ARE DISCLAIMED.  IN NO EVENT SHALL INTEL CORPORATION OR CONTRIBUTORS BE
3176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
3276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
3376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
3476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
3576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
3676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
3776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * THE POSSIBILITY OF SUCH DAMAGE.
3876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *
3976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman */
4076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
4176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
4276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#ifndef _EFICONTEXT_H_
4376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _EFICONTEXT_H_
4476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
4576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
4676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman//
4776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman//  IA-64 processor exception types
4876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman//
4976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define    EXCPT_ALT_DTLB            4
5076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define    EXCPT_DNESTED_TLB         5
5176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define    EXCPT_BREAKPOINT         11
5276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define    EXCPT_EXTERNAL_INTERRUPT	12
5376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define    EXCPT_GEN_EXCEPT         24
5476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define    EXCPT_NAT_CONSUMPTION    26
5576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define    EXCPT_DEBUG_EXCEPT       29
5676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define    EXCPT_UNALIGNED_ACCESS   30
5776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define    EXCPT_FP_FAULT           32
5876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define    EXCPT_FP_TRAP            33
5976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define    EXCPT_TAKEN_BRANCH       35
6076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define    EXCPT_SINGLE_STEP        36
6176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
6276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman//
6376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman//  IA-64 processor context definition - must be 512 byte aligned!!!
6476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman//
6576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef
6676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanstruct {
6776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman	UINT64 reserved;	// necessary to preserve alignment for the correct bits in UNAT and to insure F2 is 16 byte aligned...
6876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
6976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 r1;
7076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 r2;
7176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 r3;
7276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 r4;
7376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 r5;
7476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 r6;
7576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 r7;
7676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 r8;
7776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 r9;
7876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 r10;
7976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 r11;
8076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 r12;
8176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 r13;
8276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 r14;
8376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 r15;
8476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 r16;
8576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 r17;
8676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 r18;
8776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 r19;
8876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 r20;
8976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 r21;
9076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 r22;
9176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 r23;
9276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 r24;
9376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 r25;
9476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 r26;
9576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 r27;
9676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 r28;
9776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 r29;
9876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 r30;
9976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 r31;
10076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
10176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 f2[2];
10276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 f3[2];
10376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 f4[2];
10476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 f5[2];
10576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 f6[2];
10676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 f7[2];
10776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 f8[2];
10876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 f9[2];
10976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 f10[2];
11076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 f11[2];
11176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 f12[2];
11276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 f13[2];
11376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 f14[2];
11476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 f15[2];
11576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 f16[2];
11676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 f17[2];
11776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 f18[2];
11876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 f19[2];
11976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 f20[2];
12076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 f21[2];
12176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 f22[2];
12276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 f23[2];
12376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 f24[2];
12476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 f25[2];
12576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 f26[2];
12676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 f27[2];
12776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 f28[2];
12876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 f29[2];
12976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 f30[2];
13076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 f31[2];
13176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
13276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 pr;
13376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
13476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 b0;
13576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 b1;
13676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 b2;
13776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 b3;
13876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 b4;
13976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 b5;
14076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 b6;
14176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 b7;
14276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
14376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    // application registers
14476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 ar_rsc;
14576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 ar_bsp;
14676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 ar_bspstore;
14776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 ar_rnat;
14876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
14976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 ar_fcr;
15076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
15176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 ar_eflag;
15276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 ar_csd;
15376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 ar_ssd;
15476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 ar_cflg;
15576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 ar_fsr;
15676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 ar_fir;
15776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 ar_fdr;
15876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
15976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 ar_ccv;
16076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
16176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 ar_unat;
16276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
16376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 ar_fpsr;
16476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
16576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 ar_pfs;
16676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 ar_lc;
16776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 ar_ec;
16876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
16976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    // control registers
17076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 cr_dcr;
17176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 cr_itm;
17276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 cr_iva;
17376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 cr_pta;
17476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 cr_ipsr;
17576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 cr_isr;
17676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 cr_iip;
17776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 cr_ifa;
17876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 cr_itir;
17976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 cr_iipa;
18076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 cr_ifs;
18176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 cr_iim;
18276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 cr_iha;
18376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
18476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    // debug registers
18576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 dbr0;
18676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 dbr1;
18776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 dbr2;
18876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 dbr3;
18976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 dbr4;
19076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 dbr5;
19176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 dbr6;
19276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 dbr7;
19376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
19476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 ibr0;
19576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 ibr1;
19676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 ibr2;
19776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 ibr3;
19876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 ibr4;
19976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 ibr5;
20076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 ibr6;
20176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 ibr7;
20276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
20376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    // virtual registers
20476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64 int_nat;	// nat bits for R1-R31
20576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
20676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} SYSTEM_CONTEXT;
20776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
20876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#endif /* _EFI_CONTEXT_H_ */
209