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