S390: Support new vector register sections
[deliverable/binutils-gdb.git] / include / elf / v850.h
CommitLineData
252b5132 1/* V850 ELF support for BFD.
b90efa5b 2 Copyright (C) 1997-2015 Free Software Foundation, Inc.
252b5132
RH
3 Created by Michael Meissner, Cygnus Support <meissner@cygnus.com>
4
86aba9db 5 This file is part of BFD, the Binary File Descriptor library.
252b5132 6
86aba9db
NC
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
e4e42b45 9 the Free Software Foundation; either version 3 of the License, or
86aba9db 10 (at your option) any later version.
252b5132 11
86aba9db
NC
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
252b5132 16
86aba9db
NC
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
e4e42b45
NC
19 Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
20 MA 02110-1301, USA. */
252b5132
RH
21
22/* This file holds definitions specific to the MIPS ELF ABI. Note
23 that most of this is not actually implemented by BFD. */
24
25#ifndef _ELF_V850_H
26#define _ELF_V850_H
27
28/* Processor specific flags for the ELF header e_flags field. */
29
30/* Four bit V850 architecture field. */
31#define EF_V850_ARCH 0xf0000000
32
33/* v850 code. */
34#define E_V850_ARCH 0x00000000
35
36/* v850e code. */
37#define E_V850E_ARCH 0x10000000
38
8ad30312
NC
39/* v850e1 code. */
40#define E_V850E1_ARCH 0x20000000
41
1cd986c5
NC
42/* v850e2 code. */
43#define E_V850E2_ARCH 0x30000000
44
45/* v850e2v3 code. */
46#define E_V850E2V3_ARCH 0x40000000
252b5132 47
78c8d46c
NC
48/* v850e3v5 code. */
49#define E_V850E3V5_ARCH 0x60000000
50
86aba9db 51/* Flags for the st_other field. */
d4c87fc1
AM
52#define V850_OTHER_SDA 0x10 /* Symbol had SDA relocations. */
53#define V850_OTHER_ZDA 0x20 /* Symbol had ZDA relocations. */
54#define V850_OTHER_TDA 0x40 /* Symbol had TDA relocations. */
86aba9db 55#define V850_OTHER_ERROR 0x80 /* Symbol had an error reported. */
252b5132 56
86aba9db 57/* V850 relocations. */
252b5132
RH
58#include "elf/reloc-macros.h"
59
60START_RELOC_NUMBERS (v850_reloc_type)
61 RELOC_NUMBER (R_V850_NONE, 0)
62 RELOC_NUMBER (R_V850_9_PCREL, 1)
63 RELOC_NUMBER (R_V850_22_PCREL, 2)
64 RELOC_NUMBER (R_V850_HI16_S, 3)
65 RELOC_NUMBER (R_V850_HI16, 4)
66 RELOC_NUMBER (R_V850_LO16, 5)
e30ddb24 67 RELOC_NUMBER (R_V850_ABS32, 6)
252b5132
RH
68 RELOC_NUMBER (R_V850_16, 7)
69 RELOC_NUMBER (R_V850_8, 8)
70 RELOC_NUMBER( R_V850_SDA_16_16_OFFSET, 9) /* For ld.b, st.b, set1, clr1, not1, tst1, movea, movhi */
71 RELOC_NUMBER( R_V850_SDA_15_16_OFFSET, 10) /* For ld.w, ld.h, ld.hu, st.w, st.h */
72 RELOC_NUMBER( R_V850_ZDA_16_16_OFFSET, 11) /* For ld.b, st.b, set1, clr1, not1, tst1, movea, movhi */
73 RELOC_NUMBER( R_V850_ZDA_15_16_OFFSET, 12) /* For ld.w, ld.h, ld.hu, st.w, st.h */
74 RELOC_NUMBER( R_V850_TDA_6_8_OFFSET, 13) /* For sst.w, sld.w */
75 RELOC_NUMBER( R_V850_TDA_7_8_OFFSET, 14) /* For sst.h, sld.h */
76 RELOC_NUMBER( R_V850_TDA_7_7_OFFSET, 15) /* For sst.b, sld.b */
77 RELOC_NUMBER( R_V850_TDA_16_16_OFFSET, 16) /* For set1, clr1, not1, tst1, movea, movhi */
252b5132
RH
78 RELOC_NUMBER( R_V850_TDA_4_5_OFFSET, 17) /* For sld.hu */
79 RELOC_NUMBER( R_V850_TDA_4_4_OFFSET, 18) /* For sld.bu */
80 RELOC_NUMBER( R_V850_SDA_16_16_SPLIT_OFFSET, 19) /* For ld.bu */
81 RELOC_NUMBER( R_V850_ZDA_16_16_SPLIT_OFFSET, 20) /* For ld.bu */
82 RELOC_NUMBER( R_V850_CALLT_6_7_OFFSET, 21) /* For callt */
83 RELOC_NUMBER( R_V850_CALLT_16_16_OFFSET, 22) /* For callt */
252b5132
RH
84 RELOC_NUMBER (R_V850_GNU_VTINHERIT, 23)
85 RELOC_NUMBER (R_V850_GNU_VTENTRY, 24)
86aba9db
NC
86 RELOC_NUMBER (R_V850_LONGCALL, 25)
87 RELOC_NUMBER (R_V850_LONGJUMP, 26)
88 RELOC_NUMBER (R_V850_ALIGN, 27)
e30ddb24 89 RELOC_NUMBER (R_V850_REL32, 28)
1e50d24d 90 RELOC_NUMBER (R_V850_LO16_SPLIT_OFFSET, 29) /* For ld.bu */
1cd986c5
NC
91 RELOC_NUMBER (R_V850_16_PCREL, 30) /* For loop */
92 RELOC_NUMBER (R_V850_17_PCREL, 31) /* For br */
93 RELOC_NUMBER (R_V850_23, 32) /* For 23bit ld.[w,h,hu,b,bu],st.[w,h,b] */
94 RELOC_NUMBER (R_V850_32_PCREL, 33) /* For jr32, jarl32 */
95 RELOC_NUMBER (R_V850_32_ABS, 34) /* For jmp32 */
96 RELOC_NUMBER (R_V850_16_SPLIT_OFFSET, 35) /* For ld.bu */
97 RELOC_NUMBER (R_V850_16_S1, 36) /* For ld.w, ld.h st.w st.h */
98 RELOC_NUMBER (R_V850_LO16_S1, 37) /* For ld.w, ld.h st.w st.h */
99 RELOC_NUMBER (R_V850_CALLT_15_16_OFFSET, 38) /* For ld.w, ld.h, ld.hu, st.w, st.h */
100 RELOC_NUMBER (R_V850_32_GOTPCREL, 39) /* GLOBAL_OFFSET_TABLE from pc */
101 RELOC_NUMBER (R_V850_16_GOT, 40) /* GOT ENTRY from gp */
102 RELOC_NUMBER (R_V850_32_GOT, 41)
103 RELOC_NUMBER (R_V850_22_PLT, 42) /* For jr */
104 RELOC_NUMBER (R_V850_32_PLT, 43) /* For jr32 */
105 RELOC_NUMBER (R_V850_COPY, 44)
106 RELOC_NUMBER (R_V850_GLOB_DAT, 45)
107 RELOC_NUMBER (R_V850_JMP_SLOT, 46)
108 RELOC_NUMBER (R_V850_RELATIVE, 47)
109 RELOC_NUMBER (R_V850_16_GOTOFF, 48) /* From gp */
110 RELOC_NUMBER (R_V850_32_GOTOFF, 49)
111 RELOC_NUMBER (R_V850_CODE, 50)
112 RELOC_NUMBER (R_V850_DATA, 51) /* For loop */
113
1b452ec6 114END_RELOC_NUMBERS (R_V850_max)
252b5132
RH
115
116\f
117/* Processor specific section indices. These sections do not actually
118 exist. Symbols with a st_shndx field corresponding to one of these
119 values have a special meaning. */
120
121/* Small data area common symbol. */
1bce5d2c 122#define SHN_V850_SCOMMON SHN_LORESERVE
252b5132
RH
123
124/* Tiny data area common symbol. */
1bce5d2c 125#define SHN_V850_TCOMMON (SHN_LORESERVE + 1)
252b5132
RH
126
127/* Zero data area common symbol. */
1bce5d2c 128#define SHN_V850_ZCOMMON (SHN_LORESERVE + 2)
252b5132
RH
129
130\f
131/* Processor specific section types. */
132
133/* Section contains the .scommon data. */
134#define SHT_V850_SCOMMON 0x70000000
135
136/* Section contains the .scommon data. */
137#define SHT_V850_TCOMMON 0x70000001
138
139/* Section contains the .scommon data. */
140#define SHT_V850_ZCOMMON 0x70000002
141
2f89ff8d
L
142/* Processor specific section flags. */
143
144/* This section must be in the small data area (pointed to by GP). */
145#define SHF_V850_GPREL 0x10000000
146
147/* This section must be in the tiny data area (pointed to by EP). */
148#define SHF_V850_EPREL 0x20000000
149
150/* This section must be in the zero data area (pointed to by R0). */
151#define SHF_V850_R0REL 0x40000000
152
de863c74
NC
153/* Alternative versions of the above definitions, as specified by the RH850 ABI. */
154
155#define EF_RH850_ABI 0xF0000000
156
157#define EF_V800_850E3 0x00100000
158
159#define EF_RH850_FPU_DOUBLE 0x00000001 /* sizeof(double) == 8. */
160#define EF_RH850_FPU_SINGLE 0x00000002 /* sizeof(double) == 4. */
161#define EF_RH850_SIMD 0x00000004
162#define EF_RH850_CACHE 0x00000008
163#define EF_RH850_MMU 0x00000010
164#define EF_RH850_REGMODE22 0x00000020 /* Registers r15-r24 (inclusive) are not used. */
165#define EF_RH850_REGMODE32 0x00000040
166#define EF_RH850_DATA_ALIGN8 0x00000080 /* 8-byte alignment supported. */
167#define EF_RH850_GP_FIX 0x00000100 /* r4 is fixed. */
168#define EF_RH850_GP_NOFIX 0x00000200 /* r4 is callee save. */
169#define EF_RH850_EP_FIX 0x00000400 /* r30 is fixed. */
170#define EF_RH850_EP_NOFIX 0x00000800 /* r30 is callee save. */
171#define EF_RH850_TP_FIX 0x00001000 /* r5 is fixed. */
172#define EF_RH850_TP_NOFIX 0x00002000 /* r5 is callee save. */
173#define EF_RH850_REG2_RESERVE 0x00004000 /* r2 is fixed. */
174#define EF_RH850_REG2_NORESERVE 0x00008000 /* r2 is callee saved. */
175
176#define SHT_RNESAS_IOP SHT_LOUSER /* Used by Renesas linker. */
177
178#define SHF_RENESAS_ABS 0x80000000 /* Absolute section. */
179#define SHF_GHS_ABS 0x00000400 /* Use unknown. */
180
181#define STT_RENESAS_ENTRY 14 /* Set for functions called at reset time. */
182
183START_RELOC_NUMBERS (v800_reloc_type)
184
185 RELOC_NUMBER (R_V800_NONE, 0x00)
186 RELOC_NUMBER (R_V810_NONE, 0x30)
187 RELOC_NUMBER (R_V810_BYTE, 0x31)
188 RELOC_NUMBER (R_V810_HWORD, 0x32)
189 RELOC_NUMBER (R_V810_WORD, 0x33)
190 RELOC_NUMBER (R_V810_WLO, 0x34)
191 RELOC_NUMBER (R_V810_WHI, 0x35)
192 RELOC_NUMBER (R_V810_WHI1, 0x36)
193 RELOC_NUMBER (R_V810_GPBYTE, 0x37)
194 RELOC_NUMBER (R_V810_GPHWORD, 0x38)
195 RELOC_NUMBER (R_V810_GPWORD, 0x39)
196 RELOC_NUMBER (R_V810_GPWLO, 0x3a)
197 RELOC_NUMBER (R_V810_GPWHI, 0x3b)
198 RELOC_NUMBER (R_V810_GPWHI1, 0x3c)
199 RELOC_NUMBER (R_V850_HWLO, 0x3d)
200 FAKE_RELOC (R_V810_reserved1, 0x3e)
201 RELOC_NUMBER (R_V850_EP7BIT, 0x3f)
202 RELOC_NUMBER (R_V850_EPHBYTE, 0x40)
203 RELOC_NUMBER (R_V850_EPWBYTE, 0x41)
204 RELOC_NUMBER (R_V850_REGHWLO, 0x42)
205 FAKE_RELOC (R_V810_reserved2, 0x43)
206 RELOC_NUMBER (R_V850_GPHWLO, 0x44)
207 FAKE_RELOC (R_V810_reserved3, 0x45)
208 RELOC_NUMBER (R_V850_PCR22, 0x46)
209 RELOC_NUMBER (R_V850_BLO, 0x47)
210 RELOC_NUMBER (R_V850_EP4BIT, 0x48)
211 RELOC_NUMBER (R_V850_EP5BIT, 0x49)
212 RELOC_NUMBER (R_V850_REGBLO, 0x4a)
213 RELOC_NUMBER (R_V850_GPBLO, 0x4b)
214 RELOC_NUMBER (R_V810_WLO_1, 0x4c)
215 RELOC_NUMBER (R_V810_GPWLO_1, 0x4d)
216 RELOC_NUMBER (R_V850_BLO_1, 0x4e)
217 RELOC_NUMBER (R_V850_HWLO_1, 0x4f)
218 FAKE_RELOC (R_V810_reserved4, 0x50)
219 RELOC_NUMBER (R_V850_GPBLO_1, 0x51)
220 RELOC_NUMBER (R_V850_GPHWLO_1, 0x52)
221 FAKE_RELOC (R_V810_reserved5, 0x53)
222 RELOC_NUMBER (R_V850_EPBLO, 0x54)
223 RELOC_NUMBER (R_V850_EPHWLO, 0x55)
224 FAKE_RELOC (R_V810_reserved6, 0x56)
225 RELOC_NUMBER (R_V850_EPWLO_N, 0x57)
226 RELOC_NUMBER (R_V850_PC32, 0x58)
227 RELOC_NUMBER (R_V850_W23BIT, 0x59)
228 RELOC_NUMBER (R_V850_GPW23BIT, 0x5a)
229 RELOC_NUMBER (R_V850_EPW23BIT, 0x5b)
230 RELOC_NUMBER (R_V850_B23BIT, 0x5c)
231 RELOC_NUMBER (R_V850_GPB23BIT, 0x5d)
232 RELOC_NUMBER (R_V850_EPB23BIT, 0x5e)
233 RELOC_NUMBER (R_V850_PC16U, 0x5f)
234 RELOC_NUMBER (R_V850_PC17, 0x60)
235 RELOC_NUMBER (R_V850_DW8, 0x61)
236 RELOC_NUMBER (R_V850_GPDW8, 0x62)
237 RELOC_NUMBER (R_V850_EPDW8, 0x63)
238 RELOC_NUMBER (R_V850_PC9, 0x64)
239 RELOC_NUMBER (R_V810_REGBYTE, 0x65)
240 RELOC_NUMBER (R_V810_REGHWORD, 0x66)
241 RELOC_NUMBER (R_V810_REGWORD, 0x67)
242 RELOC_NUMBER (R_V810_REGWLO, 0x68)
243 RELOC_NUMBER (R_V810_REGWHI, 0x69)
244 RELOC_NUMBER (R_V810_REGWHI1, 0x6a)
245 RELOC_NUMBER (R_V850_REGW23BIT, 0x6b)
246 RELOC_NUMBER (R_V850_REGB23BIT, 0x6c)
247 RELOC_NUMBER (R_V850_REGDW8, 0x6d)
248 RELOC_NUMBER (R_V810_EPBYTE, 0x6e)
249 RELOC_NUMBER (R_V810_EPHWORD, 0x6f)
250 RELOC_NUMBER (R_V810_EPWORD, 0x70)
251 RELOC_NUMBER (R_V850_WLO23, 0x71)
252 RELOC_NUMBER (R_V850_WORD_E, 0x72)
253 RELOC_NUMBER (R_V850_REGWORD_E, 0x73)
254 RELOC_NUMBER (R_V850_WORD, 0x74)
255 RELOC_NUMBER (R_V850_GPWORD, 0x75)
256 RELOC_NUMBER (R_V850_REGWORD, 0x76)
257 RELOC_NUMBER (R_V850_EPWORD, 0x77)
258 RELOC_NUMBER (R_V810_TPBYTE, 0x78)
259 RELOC_NUMBER (R_V810_TPHWORD, 0x79)
260 RELOC_NUMBER (R_V810_TPWORD, 0x7a)
261 RELOC_NUMBER (R_V810_TPWLO, 0x7b)
262 RELOC_NUMBER (R_V810_TPWHI, 0x7c)
263 RELOC_NUMBER (R_V810_TPWHI1, 0x7d)
264 RELOC_NUMBER (R_V850_TPHWLO, 0x7e)
265 RELOC_NUMBER (R_V850_TPBLO, 0x7f)
266 RELOC_NUMBER (R_V810_TPWLO_1, 0x80)
267 RELOC_NUMBER (R_V850_TPBLO_1, 0x81)
268 RELOC_NUMBER (R_V850_TPHWLO_1, 0x82)
269 RELOC_NUMBER (R_V850_TP23BIT, 0x83)
270 RELOC_NUMBER (R_V850_TPW23BIT, 0x84)
271 RELOC_NUMBER (R_V850_TPDW8, 0x85)
272
273/* These are defined by the RH850 ABI, but not used. */
274 RELOC_NUMBER (R_V810_ABS32, 0xa0)
275 RELOC_NUMBER (R_V850_SYM, 0xe0)
276 RELOC_NUMBER (R_V850_OPadd, 0xe1)
277 RELOC_NUMBER (R_V850_OPsub, 0xe2)
278 RELOC_NUMBER (R_V850_OPsctsize, 0xe3)
279 RELOC_NUMBER (R_V850_OPscttop, 0xe4)
280
281END_RELOC_NUMBERS (R_V800_max)
282
252b5132 283#endif /* _ELF_V850_H */
This page took 0.585312 seconds and 4 git commands to generate.