xref: /openbsd/gnu/usr.bin/binutils/gas/config/tc-frv.h (revision d2201f2f)
1*d2201f2fSdrahn /* tc-frv.h -- Header file for tc-frv.c.
2*d2201f2fSdrahn    Copyright 2002 Free Software Foundation, Inc.
3*d2201f2fSdrahn 
4*d2201f2fSdrahn    This file is part of GAS, the GNU Assembler.
5*d2201f2fSdrahn 
6*d2201f2fSdrahn    GAS is free software; you can redistribute it and/or modify
7*d2201f2fSdrahn    it under the terms of the GNU General Public License as published by
8*d2201f2fSdrahn    the Free Software Foundation; either version 2, or (at your option)
9*d2201f2fSdrahn    any later version.
10*d2201f2fSdrahn 
11*d2201f2fSdrahn    GAS is distributed in the hope that it will be useful,
12*d2201f2fSdrahn    but WITHOUT ANY WARRANTY; without even the implied warranty of
13*d2201f2fSdrahn    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14*d2201f2fSdrahn    GNU General Public License for more details.
15*d2201f2fSdrahn 
16*d2201f2fSdrahn    You should have received a copy of the GNU General Public License
17*d2201f2fSdrahn    along with GAS; see the file COPYING.  If not, write to
18*d2201f2fSdrahn    the Free Software Foundation, 59 Temple Place - Suite 330,
19*d2201f2fSdrahn    Boston, MA 02111-1307, USA. */
20*d2201f2fSdrahn 
21*d2201f2fSdrahn #define TC_FRV
22*d2201f2fSdrahn 
23*d2201f2fSdrahn #ifndef BFD_ASSEMBLER
24*d2201f2fSdrahn /* leading space so will compile with cc */
25*d2201f2fSdrahn  #error FRV support requires BFD_ASSEMBLER
26*d2201f2fSdrahn #endif
27*d2201f2fSdrahn 
28*d2201f2fSdrahn #define LISTING_HEADER "FRV GAS "
29*d2201f2fSdrahn 
30*d2201f2fSdrahn /* The target BFD architecture.  */
31*d2201f2fSdrahn #define TARGET_ARCH bfd_arch_frv
32*d2201f2fSdrahn 
33*d2201f2fSdrahn #define TARGET_FORMAT "elf32-frv"
34*d2201f2fSdrahn 
35*d2201f2fSdrahn #define TARGET_BYTES_BIG_ENDIAN 1
36*d2201f2fSdrahn 
37*d2201f2fSdrahn /* Permit temporary numeric labels.  */
38*d2201f2fSdrahn #define LOCAL_LABELS_FB 1
39*d2201f2fSdrahn 
40*d2201f2fSdrahn #define DIFF_EXPR_OK		/* .-foo gets turned into PC relative relocs */
41*d2201f2fSdrahn 
42*d2201f2fSdrahn /* We don't need to handle .word strangely.  */
43*d2201f2fSdrahn #define WORKING_DOT_WORD
44*d2201f2fSdrahn 
45*d2201f2fSdrahn /* Values passed to md_apply_fix3 don't include the symbol value.  */
46*d2201f2fSdrahn #define MD_APPLY_SYM_VALUE(FIX) 0
47*d2201f2fSdrahn 
48*d2201f2fSdrahn #define md_apply_fix3 gas_cgen_md_apply_fix3
49*d2201f2fSdrahn 
50*d2201f2fSdrahn extern void frv_tomcat_workaround PARAMS ((void));
51*d2201f2fSdrahn #define md_cleanup frv_tomcat_workaround
52*d2201f2fSdrahn 
53*d2201f2fSdrahn #define md_number_to_chars frv_md_number_to_chars
54*d2201f2fSdrahn 
55*d2201f2fSdrahn extern long frv_relax_frag PARAMS ((fragS *, long));
56*d2201f2fSdrahn #define md_relax_frag(segment, fragP, stretch) frv_relax_frag(fragP, stretch)
57*d2201f2fSdrahn 
58*d2201f2fSdrahn #define tc_fix_adjustable(FIX) frv_fix_adjustable (FIX)
59*d2201f2fSdrahn struct fix;
60*d2201f2fSdrahn extern bfd_boolean frv_fix_adjustable PARAMS ((struct fix *));
61*d2201f2fSdrahn 
62*d2201f2fSdrahn /* When relaxing, we need to emit various relocs we otherwise wouldn't.  */
63*d2201f2fSdrahn #define TC_FORCE_RELOCATION(fix) frv_force_relocation (fix)
64*d2201f2fSdrahn extern int frv_force_relocation PARAMS ((struct fix *));
65*d2201f2fSdrahn 
66*d2201f2fSdrahn #undef GAS_CGEN_MAX_FIXUPS
67*d2201f2fSdrahn #define GAS_CGEN_MAX_FIXUPS 1
68*d2201f2fSdrahn 
69*d2201f2fSdrahn void frv_frob_label PARAMS ((symbolS *));
70*d2201f2fSdrahn #define tc_frob_label(sym) frv_frob_label(sym)
71*d2201f2fSdrahn 
72*d2201f2fSdrahn #define tc_gen_reloc gas_cgen_tc_gen_reloc
73*d2201f2fSdrahn 
74*d2201f2fSdrahn #define md_cgen_record_fixup_exp frv_cgen_record_fixup_exp
75*d2201f2fSdrahn 
76*d2201f2fSdrahn /* Call md_pcrel_from_section(), not md_pcrel_from().  */
77*d2201f2fSdrahn #define MD_PCREL_FROM_SECTION(FIX, SEC) md_pcrel_from_section (FIX, SEC)
78*d2201f2fSdrahn extern long md_pcrel_from_section PARAMS ((struct fix *, segT));
79*d2201f2fSdrahn 
80*d2201f2fSdrahn /* After all of the symbols have been adjusted, go over the file looking
81*d2201f2fSdrahn    for any relocations that pic won't support.  */
82*d2201f2fSdrahn #define tc_frob_file() frv_frob_file ()
83*d2201f2fSdrahn extern void frv_frob_file	PARAMS ((void));
84