EDK2 doxygen online documents - Firmware Encoding Index 1
EDK2 doxygen online documents - Firmware Encoding Index

StdLib/Include/Ipf/machine/elf_machdep.h

Go to the documentation of this file.
00001 /*        $NetBSD */
00002 
00003 /*-
00004  * Copyright (c) 1996-1997 John D. Polstra.
00005  * All rights reserved.
00006  *
00007  * Redistribution and use in source and binary forms, with or without
00008  * modification, are permitted provided that the following conditions
00009  * are met:
00010  * 1. Redistributions of source code must retain the above copyright
00011  *    notice, this list of conditions and the following disclaimer.
00012  * 2. Redistributions in binary form must reproduce the above copyright
00013  *    notice, this list of conditions and the following disclaimer in the
00014  *    documentation and/or other materials provided with the distribution.
00015  *
00016  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
00017  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00018  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
00019  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
00020  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
00021  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
00022  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
00023  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
00024  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
00025  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
00026  * SUCH DAMAGE.
00027  *
00028  * $FreeBSD: src/sys/ia64/include/elf.h,v 1.11 2003/09/25 01:10:24 peter Exp $
00029  */
00030 
00031 
00032 #define ELF32_MACHDEP_ENDIANNESS        XXX     /* break compilation */
00033 #define ELF32_MACHDEP_ID_CASES                                          \
00034                 /* no 32-bit ELF machine types supported until 32bit emu */
00035 
00036 #define ELF64_MACHDEP_ENDIANNESS        ELFDATA2LSB
00037 #define ELF64_MACHDEP_ID_CASES                                          \
00038                 case EM_IA_64:                                          \
00039                         break;
00040 
00041 #define ELF64_MACHDEP_ID        EM_IA_64        /* XXX */
00042 
00043 #define ARCH_ELFSIZE            64      /* MD native binary size */
00044 
00045 /*
00046  * Relocation types.
00047  */
00048 
00049 /*      Name                    Value      Field        Calculation */
00050 #define R_IA64_NONE             0       /* None */
00051 #define R_IA64_IMM14            0x21    /* immediate14  S + A */
00052 #define R_IA64_IMM22            0x22    /* immediate22  S + A */
00053 #define R_IA64_IMM64            0x23    /* immediate64  S + A */
00054 #define R_IA64_DIR32MSB         0x24    /* word32 MSB   S + A */
00055 #define R_IA64_DIR32LSB         0x25    /* word32 LSB   S + A */
00056 #define R_IA64_DIR64MSB         0x26    /* word64 MSB   S + A */
00057 #define R_IA64_DIR64LSB         0x27    /* word64 LSB   S + A */
00058 #define R_IA64_GPREL22          0x2a    /* immediate22  @gprel(S + A) */
00059 #define R_IA64_GPREL64I         0x2b    /* immediate64  @gprel(S + A) */
00060 #define R_IA64_GPREL64MSB       0x2e    /* word64 MSB   @gprel(S + A) */
00061 #define R_IA64_GPREL64LSB       0x2f    /* word64 LSB   @gprel(S + A) */
00062 #define R_IA64_LTOFF22          0x32    /* immediate22  @ltoff(S + A) */
00063 #define R_IA64_LTOFF64I         0x33    /* immediate64  @ltoff(S + A) */
00064 #define R_IA64_PLTOFF22         0x3a    /* immediate22  @pltoff(S + A) */
00065 #define R_IA64_PLTOFF64I        0x3b    /* immediate64  @pltoff(S + A) */
00066 #define R_IA64_PLTOFF64MSB      0x3e    /* word64 MSB   @pltoff(S + A) */
00067 #define R_IA64_PLTOFF64LSB      0x3f    /* word64 LSB   @pltoff(S + A) */
00068 #define R_IA64_FPTR64I          0x43    /* immediate64  @fptr(S + A) */
00069 #define R_IA64_FPTR32MSB        0x44    /* word32 MSB   @fptr(S + A) */
00070 #define R_IA64_FPTR32LSB        0x45    /* word32 LSB   @fptr(S + A) */
00071 #define R_IA64_FPTR64MSB        0x46    /* word64 MSB   @fptr(S + A) */
00072 #define R_IA64_FPTR64LSB        0x47    /* word64 LSB   @fptr(S + A) */
00073 #define R_IA64_PCREL21B         0x49    /* immediate21 form1 S + A - P */
00074 #define R_IA64_PCREL21M         0x4a    /* immediate21 form2 S + A - P */
00075 #define R_IA64_PCREL21F         0x4b    /* immediate21 form3 S + A - P */
00076 #define R_IA64_PCREL32MSB       0x4c    /* word32 MSB   S + A - P */
00077 #define R_IA64_PCREL32LSB       0x4d    /* word32 LSB   S + A - P */
00078 #define R_IA64_PCREL64MSB       0x4e    /* word64 MSB   S + A - P */
00079 #define R_IA64_PCREL64LSB       0x4f    /* word64 LSB   S + A - P */
00080 #define R_IA64_LTOFF_FPTR22     0x52    /* immediate22  @ltoff(@fptr(S + A)) */
00081 #define R_IA64_LTOFF_FPTR64I    0x53    /* immediate64  @ltoff(@fptr(S + A)) */
00082 #define R_IA64_LTOFF_FPTR32MSB  0x54    /* word32 MSB   @ltoff(@fptr(S + A)) */
00083 #define R_IA64_LTOFF_FPTR32LSB  0x55    /* word32 LSB   @ltoff(@fptr(S + A)) */
00084 #define R_IA64_LTOFF_FPTR64MSB  0x56    /* word64 MSB   @ltoff(@fptr(S + A)) */
00085 #define R_IA64_LTOFF_FPTR64LSB  0x57    /* word64 LSB   @ltoff(@fptr(S + A)) */
00086 #define R_IA64_SEGREL32MSB      0x5c    /* word32 MSB   @segrel(S + A) */
00087 #define R_IA64_SEGREL32LSB      0x5d    /* word32 LSB   @segrel(S + A) */
00088 #define R_IA64_SEGREL64MSB      0x5e    /* word64 MSB   @segrel(S + A) */
00089 #define R_IA64_SEGREL64LSB      0x5f    /* word64 LSB   @segrel(S + A) */
00090 #define R_IA64_SECREL32MSB      0x64    /* word32 MSB   @secrel(S + A) */
00091 #define R_IA64_SECREL32LSB      0x65    /* word32 LSB   @secrel(S + A) */
00092 #define R_IA64_SECREL64MSB      0x66    /* word64 MSB   @secrel(S + A) */
00093 #define R_IA64_SECREL64LSB      0x67    /* word64 LSB   @secrel(S + A) */
00094 #define R_IA64_REL32MSB         0x6c    /* word32 MSB   BD + A */
00095 #define R_IA64_REL32LSB         0x6d    /* word32 LSB   BD + A */
00096 #define R_IA64_REL64MSB         0x6e    /* word64 MSB   BD + A */
00097 #define R_IA64_REL64LSB         0x6f    /* word64 LSB   BD + A */
00098 #define R_IA64_LTV32MSB         0x74    /* word32 MSB   S + A */
00099 #define R_IA64_LTV32LSB         0x75    /* word32 LSB   S + A */
00100 #define R_IA64_LTV64MSB         0x76    /* word64 MSB   S + A */
00101 #define R_IA64_LTV64LSB         0x77    /* word64 LSB   S + A */
00102 #define R_IA64_IPLTMSB          0x80    /* function descriptor MSB special */
00103 #define R_IA64_IPLTLSB          0x81    /* function descriptor LSB speciaal */
00104 #define R_IA64_SUB              0x85    /* immediate64  A - S */
00105 #define R_IA64_LTOFF22X         0x86    /* immediate22  special */
00106 #define R_IA64_LDXMOV           0x87    /* immediate22  special */
00107 #define R_IA64_TPREL14          0x91    /* imm14        @tprel(S + A) */
00108 #define R_IA64_TPREL22          0x92    /* imm22        @tprel(S + A) */
00109 #define R_IA64_TPREL64I         0x93    /* imm64        @tprel(S + A) */
00110 #define R_IA64_TPREL64MSB       0x96    /* word64 MSB   @tprel(S + A) */
00111 #define R_IA64_TPREL64LSB       0x97    /* word64 LSB   @tprel(S + A) */
00112 #define R_IA64_LTOFF_TPREL22    0x9a    /* imm22        @ltoff(@tprel(S+A)) */
00113 #define R_IA64_DTPMOD64MSB      0xa6    /* word64 MSB   @dtpmod(S + A) */
00114 #define R_IA64_DTPMOD64LSB      0xa7    /* word64 LSB   @dtpmod(S + A) */
00115 #define R_IA64_LTOFF_DTPMOD22   0xaa    /* imm22        @ltoff(@dtpmod(S+A)) */
00116 #define R_IA64_DTPREL14         0xb1    /* imm14        @dtprel(S + A) */
00117 #define R_IA64_DTPREL22         0xb2    /* imm22        @dtprel(S + A) */
00118 #define R_IA64_DTPREL64I        0xb3    /* imm64        @dtprel(S + A) */
00119 #define R_IA64_DTPREL32MSB      0xb4    /* word32 MSB   @dtprel(S + A) */
00120 #define R_IA64_DTPREL32LSB      0xb5    /* word32 LSB   @dtprel(S + A) */
00121 #define R_IA64_DTPREL64MSB      0xb6    /* word64 MSB   @dtprel(S + A) */
00122 #define R_IA64_DTPREL64LSB      0xb7    /* word64 LSB   @dtprel(S + A) */
00123 #define R_IA64_LTOFF_DTPREL22   0xba    /* imm22        @ltoff(@dtprel(S+A)) */
00124 
00125 /* p_type */
00126 
00127 #define PT_IA_64_ARCHEXT 0x70000000     /* segment contains a section of type SHT_IA_64_EXT */
00128 #define PT_IA_64_UNWIND  0x70000001     /* segment contains the stack unwind tables */
00129 
00130 /* p_flags */
00131 
00132 #define PF_IA_64_NORECOV 0x80000000     /* segment contains the stack unwind tables */
00133 
00134 /* sh_type */
00135 
00136 #define SHT_IA_64_EXT           0x70000000      /* section contains product specific extension bits */
00137 #define SHT_IA_64_UNWIND        0x70000001      /* section contains unwind function table entries for stack unwinding */
00138 #define SHT_IA_64_LOPSREG       0x78000000      /* reserved for implementation-specific section types */
00139 #define SHT_IA_64_HIPSREG       0x7fffffff      /* Ditto */
00140 #define SHT_IA_64_PRIORITY_INIT 0x79000000      /* section contains priority initialization record */
00141 
00142 /* sh_flags */
00143 
00144 #define SHF_IA_64_SHORT   0x10000000    /* section must be placed near gp. */
00145 #define SHF_IA_64_NORECOV 0x20000000    /* section contains code that uses speculative instructions without
00146                                          * recovery code
00147                                          */
00148 
00149 
00150 
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Defines