Blame include/elf/m68k.h

Packit bbfece
/* MC68k ELF support for BFD.
Packit bbfece
   Copyright (C) 1998-2018 Free Software Foundation, Inc.
Packit bbfece
Packit bbfece
   This file is part of BFD, the Binary File Descriptor library.
Packit bbfece
Packit bbfece
   This program is free software; you can redistribute it and/or modify
Packit bbfece
   it under the terms of the GNU General Public License as published by
Packit bbfece
   the Free Software Foundation; either version 3 of the License, or
Packit bbfece
   (at your option) any later version.
Packit bbfece
Packit bbfece
   This program is distributed in the hope that it will be useful,
Packit bbfece
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit bbfece
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit bbfece
   GNU General Public License for more details.
Packit bbfece
Packit bbfece
   You should have received a copy of the GNU General Public License
Packit bbfece
   along with this program; if not, write to the Free Software Foundation,
Packit bbfece
   Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
Packit bbfece
Packit bbfece
#ifndef _ELF_M68K_H
Packit bbfece
#define _ELF_M68K_H
Packit bbfece
Packit bbfece
#include "elf/reloc-macros.h"
Packit bbfece
Packit bbfece
/* Relocation types.  */
Packit bbfece
START_RELOC_NUMBERS (elf_m68k_reloc_type)
Packit bbfece
  RELOC_NUMBER (R_68K_NONE, 0)		/* No reloc */
Packit bbfece
  RELOC_NUMBER (R_68K_32, 1)		/* Direct 32 bit  */
Packit bbfece
  RELOC_NUMBER (R_68K_16, 2)		/* Direct 16 bit  */
Packit bbfece
  RELOC_NUMBER (R_68K_8, 3)		/* Direct 8 bit  */
Packit bbfece
  RELOC_NUMBER (R_68K_PC32, 4)		/* PC relative 32 bit */
Packit bbfece
  RELOC_NUMBER (R_68K_PC16, 5)		/* PC relative 16 bit */
Packit bbfece
  RELOC_NUMBER (R_68K_PC8, 6)		/* PC relative 8 bit */
Packit bbfece
  RELOC_NUMBER (R_68K_GOT32, 7)		/* 32 bit PC relative GOT entry */
Packit bbfece
  RELOC_NUMBER (R_68K_GOT16, 8)		/* 16 bit PC relative GOT entry */
Packit bbfece
  RELOC_NUMBER (R_68K_GOT8, 9)		/* 8 bit PC relative GOT entry */
Packit bbfece
  RELOC_NUMBER (R_68K_GOT32O, 10)	/* 32 bit GOT offset */
Packit bbfece
  RELOC_NUMBER (R_68K_GOT16O, 11)	/* 16 bit GOT offset */
Packit bbfece
  RELOC_NUMBER (R_68K_GOT8O, 12)	/* 8 bit GOT offset */
Packit bbfece
  RELOC_NUMBER (R_68K_PLT32, 13)	/* 32 bit PC relative PLT address */
Packit bbfece
  RELOC_NUMBER (R_68K_PLT16, 14)	/* 16 bit PC relative PLT address */
Packit bbfece
  RELOC_NUMBER (R_68K_PLT8, 15)		/* 8 bit PC relative PLT address */
Packit bbfece
  RELOC_NUMBER (R_68K_PLT32O, 16)	/* 32 bit PLT offset */
Packit bbfece
  RELOC_NUMBER (R_68K_PLT16O, 17)	/* 16 bit PLT offset */
Packit bbfece
  RELOC_NUMBER (R_68K_PLT8O, 18)	/* 8 bit PLT offset */
Packit bbfece
  RELOC_NUMBER (R_68K_COPY, 19)		/* Copy symbol at runtime */
Packit bbfece
  RELOC_NUMBER (R_68K_GLOB_DAT, 20)	/* Create GOT entry */
Packit bbfece
  RELOC_NUMBER (R_68K_JMP_SLOT, 21)	/* Create PLT entry */
Packit bbfece
  RELOC_NUMBER (R_68K_RELATIVE, 22)	/* Adjust by program base */
Packit bbfece
  /* These are GNU extensions to enable C++ vtable garbage collection.  */
Packit bbfece
  RELOC_NUMBER (R_68K_GNU_VTINHERIT, 23)
Packit bbfece
  RELOC_NUMBER (R_68K_GNU_VTENTRY, 24)
Packit bbfece
  /* TLS static relocations.  */
Packit bbfece
  RELOC_NUMBER (R_68K_TLS_GD32, 25)
Packit bbfece
  RELOC_NUMBER (R_68K_TLS_GD16, 26)
Packit bbfece
  RELOC_NUMBER (R_68K_TLS_GD8, 27)
Packit bbfece
  RELOC_NUMBER (R_68K_TLS_LDM32, 28)
Packit bbfece
  RELOC_NUMBER (R_68K_TLS_LDM16, 29)
Packit bbfece
  RELOC_NUMBER (R_68K_TLS_LDM8, 30)
Packit bbfece
  RELOC_NUMBER (R_68K_TLS_LDO32, 31)
Packit bbfece
  RELOC_NUMBER (R_68K_TLS_LDO16, 32)
Packit bbfece
  RELOC_NUMBER (R_68K_TLS_LDO8, 33)
Packit bbfece
  RELOC_NUMBER (R_68K_TLS_IE32, 34)
Packit bbfece
  RELOC_NUMBER (R_68K_TLS_IE16, 35)
Packit bbfece
  RELOC_NUMBER (R_68K_TLS_IE8, 36)
Packit bbfece
  RELOC_NUMBER (R_68K_TLS_LE32, 37)
Packit bbfece
  RELOC_NUMBER (R_68K_TLS_LE16, 38)
Packit bbfece
  RELOC_NUMBER (R_68K_TLS_LE8, 39)
Packit bbfece
  RELOC_NUMBER (R_68K_TLS_DTPMOD32, 40)
Packit bbfece
  RELOC_NUMBER (R_68K_TLS_DTPREL32, 41)
Packit bbfece
  RELOC_NUMBER (R_68K_TLS_TPREL32, 42)
Packit bbfece
END_RELOC_NUMBERS (R_68K_max)
Packit bbfece
Packit bbfece
/* We use the top 24 bits to encode information about the
Packit bbfece
   architecture variant.  */
Packit bbfece
#define EF_M68K_CPU32    0x00810000
Packit bbfece
#define EF_M68K_M68000   0x01000000
Packit bbfece
#define EF_M68K_CFV4E    0x00008000
Packit bbfece
#define EF_M68K_FIDO     0x02000000
Packit bbfece
#define EF_M68K_ARCH_MASK						\
Packit bbfece
  (EF_M68K_M68000 | EF_M68K_CPU32 | EF_M68K_CFV4E | EF_M68K_FIDO)
Packit bbfece
Packit bbfece
/* We use the bottom 8 bits to encode information about the
Packit bbfece
   coldfire variant.  If we use any of these bits, the top 24 bits are
Packit bbfece
   either 0 or EF_M68K_CFV4E.  */
Packit bbfece
#define EF_M68K_CF_ISA_MASK	0x0F  /* Which ISA */
Packit bbfece
#define EF_M68K_CF_ISA_A_NODIV	0x01  /* ISA A except for div */
Packit bbfece
#define EF_M68K_CF_ISA_A	0x02
Packit bbfece
#define EF_M68K_CF_ISA_A_PLUS	0x03
Packit bbfece
#define EF_M68K_CF_ISA_B_NOUSP	0x04  /* ISA_B except for USP */
Packit bbfece
#define EF_M68K_CF_ISA_B	0x05
Packit bbfece
#define EF_M68K_CF_ISA_C	0x06
Packit bbfece
#define EF_M68K_CF_ISA_C_NODIV	0x07  /* ISA C except for div */
Packit bbfece
#define EF_M68K_CF_MAC_MASK	0x30 
Packit bbfece
#define EF_M68K_CF_MAC		0x10  /* MAC */
Packit bbfece
#define EF_M68K_CF_EMAC		0x20  /* EMAC */
Packit bbfece
#define EF_M68K_CF_EMAC_B	0x30  /* EMAC_B */
Packit bbfece
#define EF_M68K_CF_FLOAT	0x40  /* Has float insns */
Packit bbfece
#define EF_M68K_CF_MASK		0xFF
Packit bbfece
     
Packit bbfece
#endif