1*d1bfdaadSmiod /* MC88k ELF support for BFD.
2*d1bfdaadSmiod    Copyright 1998, 1999, 2000 Free Software Foundation, Inc.
3*d1bfdaadSmiod 
4*d1bfdaadSmiod    This file is part of BFD, the Binary File Descriptor library.
5*d1bfdaadSmiod 
6*d1bfdaadSmiod    This program is free software; you can redistribute it and/or modify
7*d1bfdaadSmiod    it under the terms of the GNU General Public License as published by
8*d1bfdaadSmiod    the Free Software Foundation; either version 2 of the License, or
9*d1bfdaadSmiod    (at your option) any later version.
10*d1bfdaadSmiod 
11*d1bfdaadSmiod    This program is distributed in the hope that it will be useful,
12*d1bfdaadSmiod    but WITHOUT ANY WARRANTY; without even the implied warranty of
13*d1bfdaadSmiod    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14*d1bfdaadSmiod    GNU General Public License for more details.
15*d1bfdaadSmiod 
16*d1bfdaadSmiod    You should have received a copy of the GNU General Public License
17*d1bfdaadSmiod    along with this program; if not, write to the Free Software Foundation,
18*d1bfdaadSmiod    Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
19*d1bfdaadSmiod 
20*d1bfdaadSmiod #ifndef _ELF_M88K_H
21*d1bfdaadSmiod #define _ELF_M88K_H
22*d1bfdaadSmiod 
23*d1bfdaadSmiod #include "elf/reloc-macros.h"
24*d1bfdaadSmiod 
25*d1bfdaadSmiod /* Relocation types.  */
26*d1bfdaadSmiod START_RELOC_NUMBERS (elf_m88k_reloc_type)
27*d1bfdaadSmiod   RELOC_NUMBER (R_88K_NONE, 0)
28*d1bfdaadSmiod   RELOC_NUMBER (R_88K_COPY, 1)
29*d1bfdaadSmiod   RELOC_NUMBER (R_88K_GOTP_ENT, 2)
30*d1bfdaadSmiod   RELOC_NUMBER (R_88K_8, 4)
31*d1bfdaadSmiod   RELOC_NUMBER (R_88K_8S, 5)
32*d1bfdaadSmiod   RELOC_NUMBER (R_88K_16S, 7)
33*d1bfdaadSmiod   RELOC_NUMBER (R_88K_DISP16, 8)
34*d1bfdaadSmiod   RELOC_NUMBER (R_88K_DISP26, 10)
35*d1bfdaadSmiod   RELOC_NUMBER (R_88K_PLT_DISP26, 14)
36*d1bfdaadSmiod   RELOC_NUMBER (R_88K_BBASED_32, 16)
37*d1bfdaadSmiod   RELOC_NUMBER (R_88K_BBASED_32UA, 17)
38*d1bfdaadSmiod   RELOC_NUMBER (R_88K_BBASED_16H, 18)
39*d1bfdaadSmiod   RELOC_NUMBER (R_88K_BBASED_16L, 19)
40*d1bfdaadSmiod   RELOC_NUMBER (R_88K_ABDIFF_32, 24)
41*d1bfdaadSmiod   RELOC_NUMBER (R_88K_ABDIFF_32UA, 25)
42*d1bfdaadSmiod   RELOC_NUMBER (R_88K_ABDIFF_16H, 26)
43*d1bfdaadSmiod   RELOC_NUMBER (R_88K_ABDIFF_16L, 27)
44*d1bfdaadSmiod   RELOC_NUMBER (R_88K_ABDIFF_16, 28)
45*d1bfdaadSmiod   RELOC_NUMBER (R_88K_32, 32)
46*d1bfdaadSmiod   RELOC_NUMBER (R_88K_32UA, 33)
47*d1bfdaadSmiod   RELOC_NUMBER (R_88K_16H, 34)
48*d1bfdaadSmiod   RELOC_NUMBER (R_88K_16L, 35)
49*d1bfdaadSmiod   RELOC_NUMBER (R_88K_16, 36)
50*d1bfdaadSmiod   RELOC_NUMBER (R_88K_GOT_32, 40)
51*d1bfdaadSmiod   RELOC_NUMBER (R_88K_GOT_32UA, 41)
52*d1bfdaadSmiod   RELOC_NUMBER (R_88K_GOT_16H, 42)
53*d1bfdaadSmiod   RELOC_NUMBER (R_88K_GOT_16L, 43)
54*d1bfdaadSmiod   RELOC_NUMBER (R_88K_GOT_16, 44)
55*d1bfdaadSmiod   RELOC_NUMBER (R_88K_GOTP_32, 48)
56*d1bfdaadSmiod   RELOC_NUMBER (R_88K_GOTP_32UA, 49)
57*d1bfdaadSmiod   RELOC_NUMBER (R_88K_GOTP_16H, 50)
58*d1bfdaadSmiod   RELOC_NUMBER (R_88K_GOTP_16L, 51)
59*d1bfdaadSmiod   RELOC_NUMBER (R_88K_GOTP_16, 52)
60*d1bfdaadSmiod   RELOC_NUMBER (R_88K_PLT_32, 56)
61*d1bfdaadSmiod   RELOC_NUMBER (R_88K_PLT_32UA, 57)
62*d1bfdaadSmiod   RELOC_NUMBER (R_88K_PLT_16H, 58)
63*d1bfdaadSmiod   RELOC_NUMBER (R_88K_PLT_16L, 59)
64*d1bfdaadSmiod   RELOC_NUMBER (R_88K_PLT_16, 60)
65*d1bfdaadSmiod   RELOC_NUMBER (R_88K_ABREL_32, 64)
66*d1bfdaadSmiod   RELOC_NUMBER (R_88K_ABREL_32UA, 65)
67*d1bfdaadSmiod   RELOC_NUMBER (R_88K_ABREL_16H, 66)
68*d1bfdaadSmiod   RELOC_NUMBER (R_88K_ABREL_16L, 67)
69*d1bfdaadSmiod   RELOC_NUMBER (R_88K_ABREL_16, 68)
70*d1bfdaadSmiod   RELOC_NUMBER (R_88K_GOT_ABREL_32, 72)
71*d1bfdaadSmiod   RELOC_NUMBER (R_88K_GOT_ABREL_32UA, 73)
72*d1bfdaadSmiod   RELOC_NUMBER (R_88K_GOT_ABREL_16H, 74)
73*d1bfdaadSmiod   RELOC_NUMBER (R_88K_GOT_ABREL_16L, 75)
74*d1bfdaadSmiod   RELOC_NUMBER (R_88K_GOT_ABREL_16, 76)
75*d1bfdaadSmiod   RELOC_NUMBER (R_88K_GOTP_ABREL_32, 80)
76*d1bfdaadSmiod   RELOC_NUMBER (R_88K_GOTP_ABREL_32UA, 81)
77*d1bfdaadSmiod   RELOC_NUMBER (R_88K_GOTP_ABREL_16H, 82)
78*d1bfdaadSmiod   RELOC_NUMBER (R_88K_GOTP_ABREL_16L, 83)
79*d1bfdaadSmiod   RELOC_NUMBER (R_88K_GOTP_ABREL_16, 84)
80*d1bfdaadSmiod   RELOC_NUMBER (R_88K_PLT_ABREL_32, 88)
81*d1bfdaadSmiod   RELOC_NUMBER (R_88K_PLT_ABREL_32UA, 89)
82*d1bfdaadSmiod   RELOC_NUMBER (R_88K_PLT_ABREL_16H, 90)
83*d1bfdaadSmiod   RELOC_NUMBER (R_88K_PLT_ABREL_16L, 91)
84*d1bfdaadSmiod   RELOC_NUMBER (R_88K_PLT_ABREL_16, 92)
85*d1bfdaadSmiod   RELOC_NUMBER (R_88K_SREL_32, 96)
86*d1bfdaadSmiod   RELOC_NUMBER (R_88K_SREL_32UA, 97)
87*d1bfdaadSmiod   RELOC_NUMBER (R_88K_SREL_16H, 98)
88*d1bfdaadSmiod   RELOC_NUMBER (R_88K_SREL_16L, 99)
89*d1bfdaadSmiod   /* These are GNU extensions to enable C++ vtable garbage collection. */
90*d1bfdaadSmiod   RELOC_NUMBER (R_88K_GNU_VTINHERIT, 100)
91*d1bfdaadSmiod   RELOC_NUMBER (R_88K_GNU_VTENTRY, 101)
92*d1bfdaadSmiod END_RELOC_NUMBERS (R_88K_UNIMPLEMENTED)
93*d1bfdaadSmiod 
94*d1bfdaadSmiod /* Processor specific flags for the ELF header e_flags field.  */
95*d1bfdaadSmiod 
96*d1bfdaadSmiod #define	EF_NABI     0x80000000	/* not ABI compliant */
97*d1bfdaadSmiod #define EF_M88110   0x00000004	/* used 88110-specific features */
98*d1bfdaadSmiod 
99*d1bfdaadSmiod /* Processor specific dynamic tag values.  */
100*d1bfdaadSmiod 
101*d1bfdaadSmiod #define	DT_88K_ADDRBASE	0x70000001
102*d1bfdaadSmiod #define	DT_88K_PLTSTART	0x70000002
103*d1bfdaadSmiod #define	DT_88K_PLTEND	0x70000003
104*d1bfdaadSmiod #define	DT_88K_TDESC	0x70000004
105*d1bfdaadSmiod 
106*d1bfdaadSmiod #endif
107