summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/sys/elf_ia64.h
blob: 5aa3f3c77d459732f1d0d0453283dbb2adeb9869 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
 * or http://www.opensolaris.org/os/licensing.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
 * If applicable, add the following below this CDDL HEADER, with the
 * fields enclosed by brackets "[]" replaced with your own identifying
 * information: Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 */
/*
 * Copyright (c) 1998-1999 by Sun Microsystems, Inc.
 * All rights reserved.
 */

#ifndef _SYS_ELF_IA64_H
#define	_SYS_ELF_IA64_H

#pragma ident	"%Z%%M%	%I%	%E% SMI"

#ifdef	__cplusplus
extern "C" {
#endif

#define	EF_IA_64_MASKOS		0x0000000f	/* reserved for OS values */
#define	EF_IA_64_ABI64		0x00000010	/* object uses LP64 model */
#define	EF_IA_64_ARCH		0xff000000	/* arch. version ident */

/*
 * processor specific program headers
 */
#define	PT_IA_64_ARCHEXT	0x70000000
#define	PT_IA_64_UNWIND		0x70000001	/* stack unwind tables */

#define	PF_IA_64_NORECOV	0x80000000

#define	R_IA_64_NONE		0	/* relocation type */
#define	R_IA_64_IMM14		0x21
#define	R_IA_64_IMM22		0x22
#define	R_IA_64_IMM64		0x23
#define	R_IA_64_DIR32MSB	0x24
#define	R_IA_64_DIR32LSB	0x25
#define	R_IA_64_DIR64MSB	0x26
#define	R_IA_64_DIR64LSB	0x27
#define	R_IA_64_GPREL22		0x2a
#define	R_IA_64_GPREL64I	0x2b
#define	R_IA_64_GPREL64MSB	0x2e
#define	R_IA_64_GPREL64LSB	0x2f
#define	R_IA_64_LTOFF22		0x32
#define	R_IA_64_LTOFF64I	0x33
#define	R_IA_64_PLTOFF22	0x3a
#define	R_IA_64_PLTOFF64I	0x3b
#define	R_IA_64_PLTOFF64MSB	0x3e
#define	R_IA_64_PLTOFF64LSB	0x3f
#define	R_IA_64_FPTR64I		0x43
#define	R_IA_64_FPTR32MSB	0x44
#define	R_IA_64_FPTR32LSB	0x45
#define	R_IA_64_FPTR64MSB	0x46
#define	R_IA_64_FPTR64LSB	0x47
#define	R_IA_64_PCREL21B	0x49
#define	R_IA_64_PCREL21M	0x4a
#define	R_IA_64_PCREL21F	0x4b
#define	R_IA_64_PCREL32MSB	0x4c
#define	R_IA_64_PCREL32LSB	0x4d
#define	R_IA_64_PCREL64MSB	0x4e
#define	R_IA_64_PCREL64LSB	0x4f
#define	R_IA_64_LTOFF_FPTR22	0x52
#define	R_IA_64_LTOFF_FPTR64I	0x53
#define	R_IA_64_SEGREL32MSB	0x5c
#define	R_IA_64_SEGREL32LSB	0x5d
#define	R_IA_64_SEGREL64MSB	0x5e
#define	R_IA_64_SEGREL64LSB	0x5f
#define	R_IA_64_SECREL32MSB	0x64
#define	R_IA_64_SECREL32LSB	0x65
#define	R_IA_64_SECREL64MSB	0x66
#define	R_IA_64_SECREL64LSB	0x67
#define	R_IA_64_REL32MSB	0x6c
#define	R_IA_64_REL32LSB	0x6d
#define	R_IA_64_REL64MSB	0x6e
#define	R_IA_64_REL64LSB	0x6f
#define	R_IA_64_LTV32MSB	0x70
#define	R_IA_64_LTV32LSB	0x71
#define	R_IA_64_LTV64MSB	0x72
#define	R_IA_64_LTV64LSB	0x73
#define	R_IA_64_IPLTMSB		0x80
#define	R_IA_64_IPLTLSB		0x81
#define	R_IA_64_NUM		0x82

#define	ELF_IA_64_MAXPGSZ	0x100000	/* maximum page size */

#define	SHF_ORDERED	0x40000000
#define	SHF_EXCLUDE	0x80000000

#define	SHN_BEFORE	0xff00
#define	SHN_AFTER	0xff01

/*
 * processor specific sh_type's
 */
#define	SHT_IA_64_EXT		0x70000000
#define	SHT_IA_64_UNWIND	0x70000001

/*
 * processor specific sh_flags
 */
#define	SHF_IA_64_SHORT		0x10000000
#define	SHF_IA_64_NORECOV	0x20000000

/*
 * Processor specific DT entries
 */
#define	DT_IA_64_PLT_RESERVE	0x70000000



#ifdef	__cplusplus
}
#endif

#endif	/* _SYS_ELF_IA64_H */