1f7cc78ecSespie /* tc-fr30.h -- Header file for tc-fr30.c.
2*d2201f2fSdrahn    Copyright 1998, 1999, 2000, 2001, 2002, 2003
3*d2201f2fSdrahn    Free Software Foundation, Inc.
4f7cc78ecSespie 
5f7cc78ecSespie    This file is part of GAS, the GNU Assembler.
6f7cc78ecSespie 
7f7cc78ecSespie    GAS is free software; you can redistribute it and/or modify
8f7cc78ecSespie    it under the terms of the GNU General Public License as published by
9f7cc78ecSespie    the Free Software Foundation; either version 2, or (at your option)
10f7cc78ecSespie    any later version.
11f7cc78ecSespie 
12f7cc78ecSespie    GAS is distributed in the hope that it will be useful,
13f7cc78ecSespie    but WITHOUT ANY WARRANTY; without even the implied warranty of
14f7cc78ecSespie    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15f7cc78ecSespie    GNU General Public License for more details.
16f7cc78ecSespie 
17f7cc78ecSespie    You should have received a copy of the GNU General Public License
18f7cc78ecSespie    along with GAS; see the file COPYING.  If not, write to
19f7cc78ecSespie    the Free Software Foundation, 59 Temple Place - Suite 330,
20f7cc78ecSespie    Boston, MA 02111-1307, USA.  */
21f7cc78ecSespie 
22f7cc78ecSespie #define TC_FR30
23f7cc78ecSespie 
24f7cc78ecSespie #ifndef BFD_ASSEMBLER
25f7cc78ecSespie /* leading space so will compile with cc */
26f7cc78ecSespie  #error FR30 support requires BFD_ASSEMBLER
27f7cc78ecSespie #endif
28f7cc78ecSespie 
29f7cc78ecSespie #define LISTING_HEADER "FR30 GAS "
30f7cc78ecSespie 
31f7cc78ecSespie /* The target BFD architecture.  */
32f7cc78ecSespie #define TARGET_ARCH bfd_arch_fr30
33f7cc78ecSespie 
34f7cc78ecSespie #define TARGET_FORMAT "elf32-fr30"
35f7cc78ecSespie 
36f7cc78ecSespie #define TARGET_BYTES_BIG_ENDIAN 1
37f7cc78ecSespie 
38f7cc78ecSespie /* Permit temporary numeric labels.  */
39f7cc78ecSespie #define LOCAL_LABELS_FB 1
40f7cc78ecSespie 
41f7cc78ecSespie #define DIFF_EXPR_OK		/* .-foo gets turned into PC relative relocs */
42f7cc78ecSespie 
43f7cc78ecSespie /* We don't need to handle .word strangely.  */
44f7cc78ecSespie #define WORKING_DOT_WORD
45f7cc78ecSespie 
46*d2201f2fSdrahn /* Values passed to md_apply_fix3 don't include the symbol value.  */
47*d2201f2fSdrahn #define MD_APPLY_SYM_VALUE(FIX) 0
48*d2201f2fSdrahn 
49f7cc78ecSespie #define md_apply_fix3 gas_cgen_md_apply_fix3
50f7cc78ecSespie 
51*d2201f2fSdrahn #define tc_fix_adjustable(FIX) fr30_fix_adjustable (FIX)
52*d2201f2fSdrahn struct fix;
53*d2201f2fSdrahn extern bfd_boolean fr30_fix_adjustable PARAMS ((struct fix *));
54f7cc78ecSespie 
55f7cc78ecSespie #define tc_gen_reloc gas_cgen_tc_gen_reloc
56f7cc78ecSespie 
57f7cc78ecSespie /* Call md_pcrel_from_section(), not md_pcrel_from().  */
58*d2201f2fSdrahn #define MD_PCREL_FROM_SECTION(FIX, SEC) md_pcrel_from_section (FIX, SEC)
59f7cc78ecSespie extern long md_pcrel_from_section PARAMS ((struct fix *, segT));
60f7cc78ecSespie 
61f7cc78ecSespie /* For 8 vs 16 vs 32 bit branch selection.  */
62f7cc78ecSespie #define TC_GENERIC_RELAX_TABLE md_relax_table
63f7cc78ecSespie extern const struct relax_type md_relax_table[];
64f7cc78ecSespie 
65f7cc78ecSespie /* We need a special version of the TC_START_LABEL macro so that we
66f7cc78ecSespie    allow the LDI:8, LDI:20, LDI:32 and delay slot instructions to be
67f7cc78ecSespie    parsed as such.  Note - in a HORRIBLE HACK, we make use of the
68f7cc78ecSespie    knowledge that this marco is only ever evaluated in one place
69f7cc78ecSespie    (read_a_source_file in read.c) where we can access the local
70f7cc78ecSespie    variable 's' - the start of the symbol that was terminated by
71f7cc78ecSespie    'character'.  Also we need to be able to change the contents of
72f7cc78ecSespie    the local variable 'c' which is passed to this macro as 'character'.  */
73f7cc78ecSespie #define TC_START_LABEL(character, i_l_p)			\
74f7cc78ecSespie   ((character) != ':' ? 0 : (character = fr30_is_colon_insn (s)) ? 0 : ((character = ':'), 1))
75f7cc78ecSespie extern char fr30_is_colon_insn PARAMS ((char *));
76