1*1424dfb3Schristos /* tc-fr30.h -- Header file for tc-fr30.c. 2*1424dfb3Schristos Copyright (C) 1998-2020 Free Software Foundation, Inc. 3*1424dfb3Schristos 4*1424dfb3Schristos This file is part of GAS, the GNU Assembler. 5*1424dfb3Schristos 6*1424dfb3Schristos GAS is free software; you can redistribute it and/or modify 7*1424dfb3Schristos it under the terms of the GNU General Public License as published by 8*1424dfb3Schristos the Free Software Foundation; either version 3, or (at your option) 9*1424dfb3Schristos any later version. 10*1424dfb3Schristos 11*1424dfb3Schristos GAS is distributed in the hope that it will be useful, 12*1424dfb3Schristos but WITHOUT ANY WARRANTY; without even the implied warranty of 13*1424dfb3Schristos MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14*1424dfb3Schristos GNU General Public License for more details. 15*1424dfb3Schristos 16*1424dfb3Schristos You should have received a copy of the GNU General Public License 17*1424dfb3Schristos along with GAS; see the file COPYING. If not, write to 18*1424dfb3Schristos the Free Software Foundation, 51 Franklin Street - Fifth Floor, 19*1424dfb3Schristos Boston, MA 02110-1301, USA. */ 20*1424dfb3Schristos 21*1424dfb3Schristos #define TC_FR30 22*1424dfb3Schristos 23*1424dfb3Schristos #define LISTING_HEADER "FR30 GAS " 24*1424dfb3Schristos 25*1424dfb3Schristos /* The target BFD architecture. */ 26*1424dfb3Schristos #define TARGET_ARCH bfd_arch_fr30 27*1424dfb3Schristos 28*1424dfb3Schristos #define TARGET_FORMAT "elf32-fr30" 29*1424dfb3Schristos 30*1424dfb3Schristos #define TARGET_BYTES_BIG_ENDIAN 1 31*1424dfb3Schristos 32*1424dfb3Schristos /* Permit temporary numeric labels. */ 33*1424dfb3Schristos #define LOCAL_LABELS_FB 1 34*1424dfb3Schristos 35*1424dfb3Schristos #define DIFF_EXPR_OK /* .-foo gets turned into PC relative relocs. */ 36*1424dfb3Schristos 37*1424dfb3Schristos /* We don't need to handle .word strangely. */ 38*1424dfb3Schristos #define WORKING_DOT_WORD 39*1424dfb3Schristos 40*1424dfb3Schristos /* Values passed to md_apply_fix don't include the symbol value. */ 41*1424dfb3Schristos #define MD_APPLY_SYM_VALUE(FIX) 0 42*1424dfb3Schristos 43*1424dfb3Schristos #define md_apply_fix gas_cgen_md_apply_fix 44*1424dfb3Schristos 45*1424dfb3Schristos #define tc_fix_adjustable(FIX) fr30_fix_adjustable (FIX) 46*1424dfb3Schristos struct fix; 47*1424dfb3Schristos extern bfd_boolean fr30_fix_adjustable (struct fix *); 48*1424dfb3Schristos 49*1424dfb3Schristos #define tc_gen_reloc gas_cgen_tc_gen_reloc 50*1424dfb3Schristos 51*1424dfb3Schristos /* Call md_pcrel_from_section(), not md_pcrel_from(). */ 52*1424dfb3Schristos #define MD_PCREL_FROM_SECTION(FIX, SEC) md_pcrel_from_section (FIX, SEC) 53*1424dfb3Schristos 54*1424dfb3Schristos /* For 8 vs 16 vs 32 bit branch selection. */ 55*1424dfb3Schristos #define TC_GENERIC_RELAX_TABLE md_relax_table 56*1424dfb3Schristos extern const struct relax_type md_relax_table[]; 57*1424dfb3Schristos 58*1424dfb3Schristos /* We need a special version of the TC_START_LABEL macro so that we 59*1424dfb3Schristos allow the LDI:8, LDI:20, LDI:32 and delay slot instructions to be 60*1424dfb3Schristos parsed as such. We need to be able to change the contents of the 61*1424dfb3Schristos var storing what was at the NUL delimiter. */ 62*1424dfb3Schristos #define TC_START_LABEL(STR, NUL_CHAR, NEXT_CHAR) \ 63*1424dfb3Schristos (NEXT_CHAR == ':' && !fr30_is_colon_insn (STR, &NUL_CHAR)) 64*1424dfb3Schristos extern int fr30_is_colon_insn (char *, char *); 65