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