include/elf
[deliverable/binutils-gdb.git] / include / elf / m68k.h
CommitLineData
252b5132 1/* MC68k ELF support for BFD.
e4e42b45 2 Copyright 1998, 1999, 2000, 2002, 2005, 2006, 2007, 2009, 2010
aa820537 3 Free Software Foundation, Inc.
252b5132
RH
4
5 This file is part of BFD, the Binary File Descriptor library.
6
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
252b5132
RH
10 (at your option) any later version.
11
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.
16
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 Foundation,
e172dbf8 19 Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */
252b5132
RH
20
21#ifndef _ELF_M68K_H
22#define _ELF_M68K_H
23
24#include "elf/reloc-macros.h"
25
26/* Relocation types. */
27START_RELOC_NUMBERS (elf_m68k_reloc_type)
28 RELOC_NUMBER (R_68K_NONE, 0) /* No reloc */
29 RELOC_NUMBER (R_68K_32, 1) /* Direct 32 bit */
30 RELOC_NUMBER (R_68K_16, 2) /* Direct 16 bit */
31 RELOC_NUMBER (R_68K_8, 3) /* Direct 8 bit */
32 RELOC_NUMBER (R_68K_PC32, 4) /* PC relative 32 bit */
33 RELOC_NUMBER (R_68K_PC16, 5) /* PC relative 16 bit */
34 RELOC_NUMBER (R_68K_PC8, 6) /* PC relative 8 bit */
35 RELOC_NUMBER (R_68K_GOT32, 7) /* 32 bit PC relative GOT entry */
36 RELOC_NUMBER (R_68K_GOT16, 8) /* 16 bit PC relative GOT entry */
37 RELOC_NUMBER (R_68K_GOT8, 9) /* 8 bit PC relative GOT entry */
38 RELOC_NUMBER (R_68K_GOT32O, 10) /* 32 bit GOT offset */
39 RELOC_NUMBER (R_68K_GOT16O, 11) /* 16 bit GOT offset */
40 RELOC_NUMBER (R_68K_GOT8O, 12) /* 8 bit GOT offset */
41 RELOC_NUMBER (R_68K_PLT32, 13) /* 32 bit PC relative PLT address */
42 RELOC_NUMBER (R_68K_PLT16, 14) /* 16 bit PC relative PLT address */
43 RELOC_NUMBER (R_68K_PLT8, 15) /* 8 bit PC relative PLT address */
44 RELOC_NUMBER (R_68K_PLT32O, 16) /* 32 bit PLT offset */
45 RELOC_NUMBER (R_68K_PLT16O, 17) /* 16 bit PLT offset */
46 RELOC_NUMBER (R_68K_PLT8O, 18) /* 8 bit PLT offset */
47 RELOC_NUMBER (R_68K_COPY, 19) /* Copy symbol at runtime */
48 RELOC_NUMBER (R_68K_GLOB_DAT, 20) /* Create GOT entry */
49 RELOC_NUMBER (R_68K_JMP_SLOT, 21) /* Create PLT entry */
50 RELOC_NUMBER (R_68K_RELATIVE, 22) /* Adjust by program base */
51 /* These are GNU extensions to enable C++ vtable garbage collection. */
52 RELOC_NUMBER (R_68K_GNU_VTINHERIT, 23)
53 RELOC_NUMBER (R_68K_GNU_VTENTRY, 24)
cf869cce
NC
54 /* TLS static relocations. */
55 RELOC_NUMBER (R_68K_TLS_GD32, 25)
56 RELOC_NUMBER (R_68K_TLS_GD16, 26)
57 RELOC_NUMBER (R_68K_TLS_GD8, 27)
58 RELOC_NUMBER (R_68K_TLS_LDM32, 28)
59 RELOC_NUMBER (R_68K_TLS_LDM16, 29)
60 RELOC_NUMBER (R_68K_TLS_LDM8, 30)
61 RELOC_NUMBER (R_68K_TLS_LDO32, 31)
62 RELOC_NUMBER (R_68K_TLS_LDO16, 32)
63 RELOC_NUMBER (R_68K_TLS_LDO8, 33)
64 RELOC_NUMBER (R_68K_TLS_IE32, 34)
65 RELOC_NUMBER (R_68K_TLS_IE16, 35)
66 RELOC_NUMBER (R_68K_TLS_IE8, 36)
67 RELOC_NUMBER (R_68K_TLS_LE32, 37)
68 RELOC_NUMBER (R_68K_TLS_LE16, 38)
69 RELOC_NUMBER (R_68K_TLS_LE8, 39)
70 RELOC_NUMBER (R_68K_TLS_DTPMOD32, 40)
71 RELOC_NUMBER (R_68K_TLS_DTPREL32, 41)
72 RELOC_NUMBER (R_68K_TLS_TPREL32, 42)
1b452ec6 73END_RELOC_NUMBERS (R_68K_max)
252b5132 74
425c6cb0
KH
75/* We use the top 24 bits to encode information about the
76 architecture variant. */
266abb8f
NS
77#define EF_M68K_CPU32 0x00810000
78#define EF_M68K_M68000 0x01000000
79#define EF_M68K_CFV4E 0x00008000
3bdcfdf4
KH
80#define EF_M68K_FIDO 0x02000000
81#define EF_M68K_ARCH_MASK \
82 (EF_M68K_M68000 | EF_M68K_CPU32 | EF_M68K_CFV4E | EF_M68K_FIDO)
4b3aff1a 83
266abb8f 84/* We use the bottom 8 bits to encode information about the
425c6cb0
KH
85 coldfire variant. If we use any of these bits, the top 24 bits are
86 either 0 or EF_M68K_CFV4E. */
c694fd50
KH
87#define EF_M68K_CF_ISA_MASK 0x0F /* Which ISA */
88#define EF_M68K_CF_ISA_A_NODIV 0x01 /* ISA A except for div */
89#define EF_M68K_CF_ISA_A 0x02
90#define EF_M68K_CF_ISA_A_PLUS 0x03
91#define EF_M68K_CF_ISA_B_NOUSP 0x04 /* ISA_B except for USP */
92#define EF_M68K_CF_ISA_B 0x05
93#define EF_M68K_CF_ISA_C 0x06
8d100c32 94#define EF_M68K_CF_ISA_C_NODIV 0x07 /* ISA C except for div */
c694fd50
KH
95#define EF_M68K_CF_MAC_MASK 0x30
96#define EF_M68K_CF_MAC 0x10 /* MAC */
97#define EF_M68K_CF_EMAC 0x20 /* EMAC */
98#define EF_M68K_CF_EMAC_B 0x30 /* EMAC_B */
99#define EF_M68K_CF_FLOAT 0x40 /* Has float insns */
266abb8f
NS
100#define EF_M68K_CF_MASK 0xFF
101
4b3aff1a 102#endif
This page took 0.43385 seconds and 4 git commands to generate.