1104834Sobrien/* FRV ELF support for BFD. 2218822Sdim Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc. 3104834Sobrien 4104834SobrienThis file is part of BFD, the Binary File Descriptor library. 5104834Sobrien 6104834SobrienThis program is free software; you can redistribute it and/or modify 7104834Sobrienit under the terms of the GNU General Public License as published by 8104834Sobrienthe Free Software Foundation; either version 2 of the License, or 9104834Sobrien(at your option) any later version. 10104834Sobrien 11104834SobrienThis program is distributed in the hope that it will be useful, 12104834Sobrienbut WITHOUT ANY WARRANTY; without even the implied warranty of 13104834SobrienMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14104834SobrienGNU General Public License for more details. 15104834Sobrien 16104834SobrienYou should have received a copy of the GNU General Public License 17104834Sobrienalong with this program; if not, write to the Free Software Foundation, Inc., 18218822Sdim51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ 19104834Sobrien 20104834Sobrien#ifndef _ELF_FRV_H 21104834Sobrien#define _ELF_FRV_H 22104834Sobrien 23104834Sobrien#include "elf/reloc-macros.h" 24104834Sobrien 25104834Sobrien/* Relocations. */ 26104834SobrienSTART_RELOC_NUMBERS (elf_frv_reloc_type) 27104834Sobrien RELOC_NUMBER (R_FRV_NONE, 0) 28104834Sobrien RELOC_NUMBER (R_FRV_32, 1) 29104834Sobrien RELOC_NUMBER (R_FRV_LABEL16, 2) 30104834Sobrien RELOC_NUMBER (R_FRV_LABEL24, 3) 31104834Sobrien RELOC_NUMBER (R_FRV_LO16, 4) 32104834Sobrien RELOC_NUMBER (R_FRV_HI16, 5) 33104834Sobrien RELOC_NUMBER (R_FRV_GPREL12, 6) 34104834Sobrien RELOC_NUMBER (R_FRV_GPRELU12, 7) 35104834Sobrien RELOC_NUMBER (R_FRV_GPREL32, 8) 36104834Sobrien RELOC_NUMBER (R_FRV_GPRELHI, 9) 37104834Sobrien RELOC_NUMBER (R_FRV_GPRELLO, 10) 38130561Sobrien RELOC_NUMBER (R_FRV_GOT12, 11) 39130561Sobrien RELOC_NUMBER (R_FRV_GOTHI, 12) 40130561Sobrien RELOC_NUMBER (R_FRV_GOTLO, 13) 41130561Sobrien RELOC_NUMBER (R_FRV_FUNCDESC, 14) 42130561Sobrien RELOC_NUMBER (R_FRV_FUNCDESC_GOT12, 15) 43130561Sobrien RELOC_NUMBER (R_FRV_FUNCDESC_GOTHI, 16) 44130561Sobrien RELOC_NUMBER (R_FRV_FUNCDESC_GOTLO, 17) 45130561Sobrien RELOC_NUMBER (R_FRV_FUNCDESC_VALUE, 18) 46130561Sobrien RELOC_NUMBER (R_FRV_FUNCDESC_GOTOFF12, 19) 47130561Sobrien RELOC_NUMBER (R_FRV_FUNCDESC_GOTOFFHI, 20) 48130561Sobrien RELOC_NUMBER (R_FRV_FUNCDESC_GOTOFFLO, 21) 49130561Sobrien RELOC_NUMBER (R_FRV_GOTOFF12, 22) 50130561Sobrien RELOC_NUMBER (R_FRV_GOTOFFHI, 23) 51130561Sobrien RELOC_NUMBER (R_FRV_GOTOFFLO, 24) 52218822Sdim RELOC_NUMBER (R_FRV_GETTLSOFF, 25) 53218822Sdim RELOC_NUMBER (R_FRV_TLSDESC_VALUE, 26) 54218822Sdim RELOC_NUMBER (R_FRV_GOTTLSDESC12, 27) 55218822Sdim RELOC_NUMBER (R_FRV_GOTTLSDESCHI, 28) 56218822Sdim RELOC_NUMBER (R_FRV_GOTTLSDESCLO, 29) 57218822Sdim RELOC_NUMBER (R_FRV_TLSMOFF12, 30) 58218822Sdim RELOC_NUMBER (R_FRV_TLSMOFFHI, 31) 59218822Sdim RELOC_NUMBER (R_FRV_TLSMOFFLO, 32) 60218822Sdim RELOC_NUMBER (R_FRV_GOTTLSOFF12, 33) 61218822Sdim RELOC_NUMBER (R_FRV_GOTTLSOFFHI, 34) 62218822Sdim RELOC_NUMBER (R_FRV_GOTTLSOFFLO, 35) 63218822Sdim RELOC_NUMBER (R_FRV_TLSOFF, 36) 64218822Sdim RELOC_NUMBER (R_FRV_TLSDESC_RELAX, 37) 65218822Sdim RELOC_NUMBER (R_FRV_GETTLSOFF_RELAX, 38) 66218822Sdim RELOC_NUMBER (R_FRV_TLSOFF_RELAX, 39) 67218822Sdim RELOC_NUMBER (R_FRV_TLSMOFF, 40) 68104834Sobrien RELOC_NUMBER (R_FRV_GNU_VTINHERIT, 200) 69104834Sobrien RELOC_NUMBER (R_FRV_GNU_VTENTRY, 201) 70104834SobrienEND_RELOC_NUMBERS(R_FRV_max) 71104834Sobrien 72104834Sobrien/* Processor specific flags for the ELF header e_flags field. */ 73104834Sobrien /* gpr support */ 74104834Sobrien#define EF_FRV_GPR_MASK 0x00000003 /* mask for # of gprs */ 75104834Sobrien#define EF_FRV_GPR_32 0x00000001 /* -mgpr-32 */ 76104834Sobrien#define EF_FRV_GPR_64 0x00000002 /* -mgpr-64 */ 77104834Sobrien 78104834Sobrien /* fpr support */ 79104834Sobrien#define EF_FRV_FPR_MASK 0x0000000c /* mask for # of fprs */ 80104834Sobrien#define EF_FRV_FPR_32 0x00000004 /* -mfpr-32 */ 81104834Sobrien#define EF_FRV_FPR_64 0x00000008 /* -mfpr-64 */ 82104834Sobrien#define EF_FRV_FPR_NONE 0x0000000c /* -msoft-float */ 83104834Sobrien 84104834Sobrien /* double word support */ 85104834Sobrien#define EF_FRV_DWORD_MASK 0x00000030 /* mask for dword support */ 86104834Sobrien#define EF_FRV_DWORD_YES 0x00000010 /* use double word insns */ 87104834Sobrien#define EF_FRV_DWORD_NO 0x00000020 /* don't use double word insn*/ 88104834Sobrien 89104834Sobrien#define EF_FRV_DOUBLE 0x00000040 /* -mdouble */ 90104834Sobrien#define EF_FRV_MEDIA 0x00000080 /* -mmedia */ 91104834Sobrien 92104834Sobrien#define EF_FRV_PIC 0x00000100 /* -fpic */ 93104834Sobrien#define EF_FRV_NON_PIC_RELOCS 0x00000200 /* used non pic safe relocs */ 94104834Sobrien 95104834Sobrien#define EF_FRV_MULADD 0x00000400 /* -mmuladd */ 96104834Sobrien#define EF_FRV_BIGPIC 0x00000800 /* -fPIC */ 97104834Sobrien#define EF_FRV_LIBPIC 0x00001000 /* -mlibrary-pic */ 98104834Sobrien#define EF_FRV_G0 0x00002000 /* -G 0, no small data ptr */ 99104834Sobrien#define EF_FRV_NOPACK 0x00004000 /* -mnopack */ 100130561Sobrien#define EF_FRV_FDPIC 0x00008000 /* -mfdpic */ 101104834Sobrien 102104834Sobrien#define EF_FRV_CPU_MASK 0xff000000 /* specific cpu bits */ 103104834Sobrien#define EF_FRV_CPU_GENERIC 0x00000000 /* generic FRV */ 104104834Sobrien#define EF_FRV_CPU_FR500 0x01000000 /* FRV500 */ 105104834Sobrien#define EF_FRV_CPU_FR300 0x02000000 /* FRV300 */ 106104834Sobrien#define EF_FRV_CPU_SIMPLE 0x03000000 /* SIMPLE */ 107104834Sobrien#define EF_FRV_CPU_TOMCAT 0x04000000 /* Tomcat, FR500 prototype */ 108104834Sobrien#define EF_FRV_CPU_FR400 0x05000000 /* FRV400 */ 109130561Sobrien#define EF_FRV_CPU_FR550 0x06000000 /* FRV550 */ 110218822Sdim#define EF_FRV_CPU_FR405 0x07000000 111218822Sdim#define EF_FRV_CPU_FR450 0x08000000 112104834Sobrien 113104834Sobrien /* Mask of PIC related bits */ 114130561Sobrien#define EF_FRV_PIC_FLAGS (EF_FRV_PIC | EF_FRV_LIBPIC | EF_FRV_BIGPIC \ 115130561Sobrien | EF_FRV_FDPIC) 116104834Sobrien 117104834Sobrien /* Mask of all flags */ 118104834Sobrien#define EF_FRV_ALL_FLAGS (EF_FRV_GPR_MASK | \ 119104834Sobrien EF_FRV_FPR_MASK | \ 120104834Sobrien EF_FRV_DWORD_MASK | \ 121104834Sobrien EF_FRV_DOUBLE | \ 122104834Sobrien EF_FRV_MEDIA | \ 123104834Sobrien EF_FRV_PIC_FLAGS | \ 124104834Sobrien EF_FRV_NON_PIC_RELOCS | \ 125104834Sobrien EF_FRV_MULADD | \ 126104834Sobrien EF_FRV_G0 | \ 127104834Sobrien EF_FRV_NOPACK | \ 128104834Sobrien EF_FRV_CPU_MASK) 129104834Sobrien 130104834Sobrien#endif /* _ELF_FRV_H */ 131