]> git.proxmox.com Git - mirror_edk2.git/blame - StdLib/Include/Ipf/machine/elf_machdep.h
Standard Libraries for EDK II.
[mirror_edk2.git] / StdLib / Include / Ipf / machine / elf_machdep.h
CommitLineData
2aa62f2b 1/* $NetBSD */\r
2\r
3/*-\r
4 * Copyright (c) 1996-1997 John D. Polstra.\r
5 * All rights reserved.\r
6 *\r
7 * Redistribution and use in source and binary forms, with or without\r
8 * modification, are permitted provided that the following conditions\r
9 * are met:\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 * 2. Redistributions in binary form must reproduce the above copyright\r
13 * notice, this list of conditions and the following disclaimer in the\r
14 * documentation and/or other materials provided with the distribution.\r
15 *\r
16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND\r
17 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE\r
20 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
21 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
22 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
23 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\r
24 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\r
25 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\r
26 * SUCH DAMAGE.\r
27 *\r
28 * $FreeBSD: src/sys/ia64/include/elf.h,v 1.11 2003/09/25 01:10:24 peter Exp $\r
29 */\r
30\r
31\r
32#define ELF32_MACHDEP_ENDIANNESS XXX /* break compilation */\r
33#define ELF32_MACHDEP_ID_CASES \\r
34 /* no 32-bit ELF machine types supported until 32bit emu */\r
35\r
36#define ELF64_MACHDEP_ENDIANNESS ELFDATA2LSB\r
37#define ELF64_MACHDEP_ID_CASES \\r
38 case EM_IA_64: \\r
39 break;\r
40\r
41#define ELF64_MACHDEP_ID EM_IA_64 /* XXX */\r
42\r
43#define ARCH_ELFSIZE 64 /* MD native binary size */\r
44\r
45/*\r
46 * Relocation types.\r
47 */\r
48\r
49/* Name Value Field Calculation */\r
50#define R_IA64_NONE 0 /* None */\r
51#define R_IA64_IMM14 0x21 /* immediate14 S + A */\r
52#define R_IA64_IMM22 0x22 /* immediate22 S + A */\r
53#define R_IA64_IMM64 0x23 /* immediate64 S + A */\r
54#define R_IA64_DIR32MSB 0x24 /* word32 MSB S + A */\r
55#define R_IA64_DIR32LSB 0x25 /* word32 LSB S + A */\r
56#define R_IA64_DIR64MSB 0x26 /* word64 MSB S + A */\r
57#define R_IA64_DIR64LSB 0x27 /* word64 LSB S + A */\r
58#define R_IA64_GPREL22 0x2a /* immediate22 @gprel(S + A) */\r
59#define R_IA64_GPREL64I 0x2b /* immediate64 @gprel(S + A) */\r
60#define R_IA64_GPREL64MSB 0x2e /* word64 MSB @gprel(S + A) */\r
61#define R_IA64_GPREL64LSB 0x2f /* word64 LSB @gprel(S + A) */\r
62#define R_IA64_LTOFF22 0x32 /* immediate22 @ltoff(S + A) */\r
63#define R_IA64_LTOFF64I 0x33 /* immediate64 @ltoff(S + A) */\r
64#define R_IA64_PLTOFF22 0x3a /* immediate22 @pltoff(S + A) */\r
65#define R_IA64_PLTOFF64I 0x3b /* immediate64 @pltoff(S + A) */\r
66#define R_IA64_PLTOFF64MSB 0x3e /* word64 MSB @pltoff(S + A) */\r
67#define R_IA64_PLTOFF64LSB 0x3f /* word64 LSB @pltoff(S + A) */\r
68#define R_IA64_FPTR64I 0x43 /* immediate64 @fptr(S + A) */\r
69#define R_IA64_FPTR32MSB 0x44 /* word32 MSB @fptr(S + A) */\r
70#define R_IA64_FPTR32LSB 0x45 /* word32 LSB @fptr(S + A) */\r
71#define R_IA64_FPTR64MSB 0x46 /* word64 MSB @fptr(S + A) */\r
72#define R_IA64_FPTR64LSB 0x47 /* word64 LSB @fptr(S + A) */\r
73#define R_IA64_PCREL21B 0x49 /* immediate21 form1 S + A - P */\r
74#define R_IA64_PCREL21M 0x4a /* immediate21 form2 S + A - P */\r
75#define R_IA64_PCREL21F 0x4b /* immediate21 form3 S + A - P */\r
76#define R_IA64_PCREL32MSB 0x4c /* word32 MSB S + A - P */\r
77#define R_IA64_PCREL32LSB 0x4d /* word32 LSB S + A - P */\r
78#define R_IA64_PCREL64MSB 0x4e /* word64 MSB S + A - P */\r
79#define R_IA64_PCREL64LSB 0x4f /* word64 LSB S + A - P */\r
80#define R_IA64_LTOFF_FPTR22 0x52 /* immediate22 @ltoff(@fptr(S + A)) */\r
81#define R_IA64_LTOFF_FPTR64I 0x53 /* immediate64 @ltoff(@fptr(S + A)) */\r
82#define R_IA64_LTOFF_FPTR32MSB 0x54 /* word32 MSB @ltoff(@fptr(S + A)) */\r
83#define R_IA64_LTOFF_FPTR32LSB 0x55 /* word32 LSB @ltoff(@fptr(S + A)) */\r
84#define R_IA64_LTOFF_FPTR64MSB 0x56 /* word64 MSB @ltoff(@fptr(S + A)) */\r
85#define R_IA64_LTOFF_FPTR64LSB 0x57 /* word64 LSB @ltoff(@fptr(S + A)) */\r
86#define R_IA64_SEGREL32MSB 0x5c /* word32 MSB @segrel(S + A) */\r
87#define R_IA64_SEGREL32LSB 0x5d /* word32 LSB @segrel(S + A) */\r
88#define R_IA64_SEGREL64MSB 0x5e /* word64 MSB @segrel(S + A) */\r
89#define R_IA64_SEGREL64LSB 0x5f /* word64 LSB @segrel(S + A) */\r
90#define R_IA64_SECREL32MSB 0x64 /* word32 MSB @secrel(S + A) */\r
91#define R_IA64_SECREL32LSB 0x65 /* word32 LSB @secrel(S + A) */\r
92#define R_IA64_SECREL64MSB 0x66 /* word64 MSB @secrel(S + A) */\r
93#define R_IA64_SECREL64LSB 0x67 /* word64 LSB @secrel(S + A) */\r
94#define R_IA64_REL32MSB 0x6c /* word32 MSB BD + A */\r
95#define R_IA64_REL32LSB 0x6d /* word32 LSB BD + A */\r
96#define R_IA64_REL64MSB 0x6e /* word64 MSB BD + A */\r
97#define R_IA64_REL64LSB 0x6f /* word64 LSB BD + A */\r
98#define R_IA64_LTV32MSB 0x74 /* word32 MSB S + A */\r
99#define R_IA64_LTV32LSB 0x75 /* word32 LSB S + A */\r
100#define R_IA64_LTV64MSB 0x76 /* word64 MSB S + A */\r
101#define R_IA64_LTV64LSB 0x77 /* word64 LSB S + A */\r
102#define R_IA64_IPLTMSB 0x80 /* function descriptor MSB special */\r
103#define R_IA64_IPLTLSB 0x81 /* function descriptor LSB speciaal */\r
104#define R_IA64_SUB 0x85 /* immediate64 A - S */\r
105#define R_IA64_LTOFF22X 0x86 /* immediate22 special */\r
106#define R_IA64_LDXMOV 0x87 /* immediate22 special */\r
107#define R_IA64_TPREL14 0x91 /* imm14 @tprel(S + A) */\r
108#define R_IA64_TPREL22 0x92 /* imm22 @tprel(S + A) */\r
109#define R_IA64_TPREL64I 0x93 /* imm64 @tprel(S + A) */\r
110#define R_IA64_TPREL64MSB 0x96 /* word64 MSB @tprel(S + A) */\r
111#define R_IA64_TPREL64LSB 0x97 /* word64 LSB @tprel(S + A) */\r
112#define R_IA64_LTOFF_TPREL22 0x9a /* imm22 @ltoff(@tprel(S+A)) */\r
113#define R_IA64_DTPMOD64MSB 0xa6 /* word64 MSB @dtpmod(S + A) */\r
114#define R_IA64_DTPMOD64LSB 0xa7 /* word64 LSB @dtpmod(S + A) */\r
115#define R_IA64_LTOFF_DTPMOD22 0xaa /* imm22 @ltoff(@dtpmod(S+A)) */\r
116#define R_IA64_DTPREL14 0xb1 /* imm14 @dtprel(S + A) */\r
117#define R_IA64_DTPREL22 0xb2 /* imm22 @dtprel(S + A) */\r
118#define R_IA64_DTPREL64I 0xb3 /* imm64 @dtprel(S + A) */\r
119#define R_IA64_DTPREL32MSB 0xb4 /* word32 MSB @dtprel(S + A) */\r
120#define R_IA64_DTPREL32LSB 0xb5 /* word32 LSB @dtprel(S + A) */\r
121#define R_IA64_DTPREL64MSB 0xb6 /* word64 MSB @dtprel(S + A) */\r
122#define R_IA64_DTPREL64LSB 0xb7 /* word64 LSB @dtprel(S + A) */\r
123#define R_IA64_LTOFF_DTPREL22 0xba /* imm22 @ltoff(@dtprel(S+A)) */\r
124\r
125/* p_type */\r
126\r
127#define PT_IA_64_ARCHEXT 0x70000000 /* segment contains a section of type SHT_IA_64_EXT */\r
128#define PT_IA_64_UNWIND 0x70000001 /* segment contains the stack unwind tables */\r
129\r
130/* p_flags */\r
131\r
132#define PF_IA_64_NORECOV 0x80000000 /* segment contains the stack unwind tables */\r
133\r
134/* sh_type */\r
135\r
136#define SHT_IA_64_EXT 0x70000000 /* section contains product specific extension bits */\r
137#define SHT_IA_64_UNWIND 0x70000001 /* section contains unwind function table entries for stack unwinding */\r
138#define SHT_IA_64_LOPSREG 0x78000000 /* reserved for implementation-specific section types */\r
139#define SHT_IA_64_HIPSREG 0x7fffffff /* Ditto */\r
140#define SHT_IA_64_PRIORITY_INIT 0x79000000 /* section contains priority initialization record */\r
141\r
142/* sh_flags */\r
143\r
144#define SHF_IA_64_SHORT 0x10000000 /* section must be placed near gp. */\r
145#define SHF_IA_64_NORECOV 0x20000000 /* section contains code that uses speculative instructions without\r
146 * recovery code\r
147 */\r
148\r
149\r
150\r