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