1  /* tc-tile.h - Macros and type defines for a TILEPro chip.
       2     Copyright (C) 2011-2023 Free Software Foundation, Inc.
       3  
       4     This file is part of GAS, the GNU Assembler.
       5  
       6     This program is free software; you can redistribute it and/or modify
       7     it under the terms of the GNU General Public License as published by
       8     the Free Software Foundation; either version 3 of the License, or
       9     (at your option) any later version.
      10  
      11     This program is distributed in the hope that it will be useful,
      12     but WITHOUT ANY WARRANTY; without even the implied warranty of
      13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      14     GNU General Public License for more details.
      15  
      16     You should have received a copy of the GNU General Public License
      17     along with this program; if not, write to the Free Software
      18     Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
      19     MA 02110-1301, USA.  */
      20  
      21  #ifndef TC_TILEPRO
      22  
      23  #include "opcode/tilepro.h"
      24  
      25  #define TC_TILEPRO
      26  
      27  #define TARGET_BYTES_BIG_ENDIAN 0
      28  
      29  #define WORKING_DOT_WORD
      30  
      31  #define TARGET_ARCH	bfd_arch_tilepro
      32  
      33  #define TARGET_FORMAT	"elf32-tilepro"
      34  
      35  
      36  #define DWARF2_LINE_MIN_INSN_LENGTH	8
      37  
      38  #define md_number_to_chars		number_to_chars_littleendian
      39  
      40  #define DIFF_EXPR_OK   /* foo-. gets turned into PC relative relocs */
      41  
      42  #define HANDLE_ALIGN(fragp) tilepro_handle_align (fragp)
      43  extern void tilepro_handle_align (struct frag *);
      44  
      45  #define MAX_MEM_FOR_RS_ALIGN_CODE (7 + 8)
      46  
      47  struct tilepro_operand;
      48  #define TC_FIX_TYPE const struct tilepro_operand *
      49  
      50  /* Initialize the TC_FIX_TYPE field.  */
      51  #define TC_INIT_FIX_DATA(FIX) \
      52    FIX->tc_fix_data = 0
      53  
      54  extern void tilepro_cons_fix_new (struct frag *, int,
      55  				  int, struct expressionS *);
      56  
      57  #define TC_CONS_FIX_NEW(FRAG, WHERE, NBYTES, EXP, RELOC)	\
      58    tilepro_cons_fix_new (FRAG, WHERE, NBYTES, EXP)
      59  
      60  extern int tilepro_parse_name (char *, expressionS *, char *);
      61  #define md_parse_name(name, e, m, nextP) tilepro_parse_name (name, e, nextP)
      62  
      63  extern int tilepro_fix_adjustable (struct fix *);
      64  #define tc_fix_adjustable(FIX)   tilepro_fix_adjustable (FIX)
      65  
      66  extern int tilepro_unrecognized_line (int);
      67  #define tc_unrecognized_line(ch) tilepro_unrecognized_line (ch)
      68  
      69  /* Values passed to md_apply_fix3 don't include the symbol value.  */
      70  #define MD_APPLY_SYM_VALUE(FIX) 0
      71  
      72  #define md_convert_frag(b,s,f) \
      73    as_fatal ("tilepro convert_frag called")
      74  #define md_estimate_size_before_relax(f,s) \
      75    (as_fatal ("tilepro estimate_size_before_relax called"),1)
      76  #define md_operand(x)
      77  
      78  #define md_section_align(seg,size)	(size)
      79  
      80  /* We want .cfi_* pseudo-ops for generating unwind info.  */
      81  #define TARGET_USE_CFIPOP 1
      82  
      83  #define tc_cfi_frame_initial_instructions \
      84    tilepro_cfi_frame_initial_instructions
      85  extern void tilepro_cfi_frame_initial_instructions (void);
      86  
      87  #define tc_regname_to_dw2regnum tc_tilepro_regname_to_dw2regnum
      88  extern int tc_tilepro_regname_to_dw2regnum (char *);
      89  
      90  #define DWARF2_DEFAULT_RETURN_COLUMN  55
      91  #define DWARF2_CIE_DATA_ALIGNMENT     (-4)
      92  
      93  #endif /* TC_TILEPRO */