1*a9fa9459Szrj /* H8300/h8500 ELF support for BFD.
2*a9fa9459Szrj    Copyright (C) 2001-2016 Free Software Foundation, Inc.
3*a9fa9459Szrj 
4*a9fa9459Szrj    This file is part of BFD, the Binary File Descriptor library.
5*a9fa9459Szrj 
6*a9fa9459Szrj    This program is free software; you can redistribute it and/or modify
7*a9fa9459Szrj    it under the terms of the GNU General Public License as published by
8*a9fa9459Szrj    the Free Software Foundation; either version 3 of the License, or
9*a9fa9459Szrj    (at your option) any later version.
10*a9fa9459Szrj 
11*a9fa9459Szrj    This program is distributed in the hope that it will be useful,
12*a9fa9459Szrj    but WITHOUT ANY WARRANTY; without even the implied warranty of
13*a9fa9459Szrj    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14*a9fa9459Szrj    GNU General Public License for more details.
15*a9fa9459Szrj 
16*a9fa9459Szrj    You should have received a copy of the GNU General Public License
17*a9fa9459Szrj    along with this program; if not, write to the Free Software Foundation,
18*a9fa9459Szrj    Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
19*a9fa9459Szrj 
20*a9fa9459Szrj #ifndef _ELF_H8_H
21*a9fa9459Szrj #define _ELF_H8_H
22*a9fa9459Szrj 
23*a9fa9459Szrj #include "elf/reloc-macros.h"
24*a9fa9459Szrj 
25*a9fa9459Szrj /* Relocations.  */
26*a9fa9459Szrj /* Relocations 59..64 are GNU extensions.  */
27*a9fa9459Szrj START_RELOC_NUMBERS (elf_h8_reloc_type)
28*a9fa9459Szrj   RELOC_NUMBER (R_H8_NONE, 0)
29*a9fa9459Szrj   RELOC_NUMBER (R_H8_DIR32, 1)
30*a9fa9459Szrj   RELOC_NUMBER (R_H8_DIR32_28, 2)
31*a9fa9459Szrj   RELOC_NUMBER (R_H8_DIR32_24, 3)
32*a9fa9459Szrj   RELOC_NUMBER (R_H8_DIR32_16, 4)
33*a9fa9459Szrj   RELOC_NUMBER (R_H8_DIR32U, 6)
34*a9fa9459Szrj   RELOC_NUMBER (R_H8_DIR32U_28, 7)
35*a9fa9459Szrj   RELOC_NUMBER (R_H8_DIR32U_24, 8)
36*a9fa9459Szrj   RELOC_NUMBER (R_H8_DIR32U_20, 9)
37*a9fa9459Szrj   RELOC_NUMBER (R_H8_DIR32U_16, 10)
38*a9fa9459Szrj   RELOC_NUMBER (R_H8_DIR24, 11)
39*a9fa9459Szrj   RELOC_NUMBER (R_H8_DIR24_20, 12)
40*a9fa9459Szrj   RELOC_NUMBER (R_H8_DIR24_16, 13)
41*a9fa9459Szrj   RELOC_NUMBER (R_H8_DIR24U, 14)
42*a9fa9459Szrj   RELOC_NUMBER (R_H8_DIR24U_20, 15)
43*a9fa9459Szrj   RELOC_NUMBER (R_H8_DIR24U_16, 16)
44*a9fa9459Szrj   RELOC_NUMBER (R_H8_DIR16, 17)
45*a9fa9459Szrj   RELOC_NUMBER (R_H8_DIR16U, 18)
46*a9fa9459Szrj   RELOC_NUMBER (R_H8_DIR16S_32, 19)
47*a9fa9459Szrj   RELOC_NUMBER (R_H8_DIR16S_28, 20)
48*a9fa9459Szrj   RELOC_NUMBER (R_H8_DIR16S_24, 21)
49*a9fa9459Szrj   RELOC_NUMBER (R_H8_DIR16S_20, 22)
50*a9fa9459Szrj   RELOC_NUMBER (R_H8_DIR16S, 23)
51*a9fa9459Szrj   RELOC_NUMBER (R_H8_DIR8, 24)
52*a9fa9459Szrj   RELOC_NUMBER (R_H8_DIR8U, 25)
53*a9fa9459Szrj   RELOC_NUMBER (R_H8_DIR8Z_32, 26)
54*a9fa9459Szrj   RELOC_NUMBER (R_H8_DIR8Z_28, 27)
55*a9fa9459Szrj   RELOC_NUMBER (R_H8_DIR8Z_24, 28)
56*a9fa9459Szrj   RELOC_NUMBER (R_H8_DIR8Z_20, 29)
57*a9fa9459Szrj   RELOC_NUMBER (R_H8_DIR8Z_16, 30)
58*a9fa9459Szrj   RELOC_NUMBER (R_H8_PCREL16, 31)
59*a9fa9459Szrj   RELOC_NUMBER (R_H8_PCREL8, 32)
60*a9fa9459Szrj   RELOC_NUMBER (R_H8_BPOS, 33)
61*a9fa9459Szrj   FAKE_RELOC (R_H8_FIRST_INVALID_DIR_RELOC, 34)
62*a9fa9459Szrj   FAKE_RELOC (R_H8_LAST_INVALID_DIR_RELOC, 58)
63*a9fa9459Szrj   RELOC_NUMBER (R_H8_DIR16A8, 59)
64*a9fa9459Szrj   RELOC_NUMBER (R_H8_DIR16R8, 60)
65*a9fa9459Szrj   RELOC_NUMBER (R_H8_DIR24A8, 61)
66*a9fa9459Szrj   RELOC_NUMBER (R_H8_DIR24R8, 62)
67*a9fa9459Szrj   RELOC_NUMBER (R_H8_DIR32A16, 63)
68*a9fa9459Szrj   RELOC_NUMBER (R_H8_DISP32A16, 64)
69*a9fa9459Szrj   RELOC_NUMBER (R_H8_ABS32, 65)
70*a9fa9459Szrj   RELOC_NUMBER (R_H8_ABS32A16, 127)
71*a9fa9459Szrj   RELOC_NUMBER (R_H8_SYM, 128)
72*a9fa9459Szrj   RELOC_NUMBER (R_H8_OPneg, 129)
73*a9fa9459Szrj   RELOC_NUMBER (R_H8_OPadd, 130)
74*a9fa9459Szrj   RELOC_NUMBER (R_H8_OPsub, 131)
75*a9fa9459Szrj   RELOC_NUMBER (R_H8_OPmul, 132)
76*a9fa9459Szrj   RELOC_NUMBER (R_H8_OPdiv, 133)
77*a9fa9459Szrj   RELOC_NUMBER (R_H8_OPshla, 134)
78*a9fa9459Szrj   RELOC_NUMBER (R_H8_OPshra, 135)
79*a9fa9459Szrj   RELOC_NUMBER (R_H8_OPsctsize, 136)
80*a9fa9459Szrj   RELOC_NUMBER (R_H8_OPhword, 137)
81*a9fa9459Szrj   RELOC_NUMBER (R_H8_OPlword, 138)
82*a9fa9459Szrj   RELOC_NUMBER (R_H8_OPhigh, 139)
83*a9fa9459Szrj   RELOC_NUMBER (R_H8_OPlow, 140)
84*a9fa9459Szrj   RELOC_NUMBER (R_H8_OPscttop, 141)
85*a9fa9459Szrj END_RELOC_NUMBERS (R_H8_max)
86*a9fa9459Szrj 
87*a9fa9459Szrj /* Machine variant if we know it.  This field was invented at Cygnus,
88*a9fa9459Szrj    but it is hoped that other vendors will adopt it.  If some standard
89*a9fa9459Szrj    is developed, this code should be changed to follow it. */
90*a9fa9459Szrj 
91*a9fa9459Szrj #define EF_H8_MACH		0x00FF0000
92*a9fa9459Szrj 
93*a9fa9459Szrj #define E_H8_MACH_H8300		0x00800000
94*a9fa9459Szrj #define E_H8_MACH_H8300H	0x00810000
95*a9fa9459Szrj #define E_H8_MACH_H8300S	0x00820000
96*a9fa9459Szrj #define E_H8_MACH_H8300HN	0x00830000
97*a9fa9459Szrj #define E_H8_MACH_H8300SN	0x00840000
98*a9fa9459Szrj #define E_H8_MACH_H8300SX	0x00850000
99*a9fa9459Szrj #define E_H8_MACH_H8300SXN	0x00860000
100*a9fa9459Szrj 
101*a9fa9459Szrj #endif
102