(root)/
binutils-2.41/
gas/
config/
tc-tic54x.h
       1  /* tc-tic54x.h -- Header file for tc-tic54x.c
       2     Copyright (C) 1999-2023 Free Software Foundation, Inc.
       3     Contributed by Timothy Wall (twall@alum.mit.edu)
       4  
       5     This file is part of GAS, the GNU Assembler.
       6  
       7     GAS is free software; you can redistribute it and/or modify
       8     it under the terms of the GNU General Public License as published by
       9     the Free Software Foundation; either version 3, or (at your option)
      10     any later version.
      11  
      12     GAS is distributed in the hope that it will be useful,
      13     but WITHOUT ANY WARRANTY; without even the implied warranty of
      14     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      15     GNU General Public License for more details.
      16  
      17     You should have received a copy of the GNU General Public License
      18     along with GAS; see the file COPYING.  If not, write to the Free
      19     Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
      20     02110-1301, USA.  */
      21  
      22  #ifndef _TC_TIC54X_H_
      23  #define _TC_TIC54X_H_
      24  
      25  /* select the proper coff format (see obj-coff.h) */
      26  #define TC_TIC54X
      27  
      28  #define TARGET_BYTES_BIG_ENDIAN	0
      29  #define OCTETS_PER_BYTE_POWER 1
      30  
      31  #define TARGET_ARCH		bfd_arch_tic54x
      32  
      33  #define WORKING_DOT_WORD        1
      34  
      35  #define MAX_OPERANDS 4
      36  #define PARALLEL_SEPARATOR '|'
      37  #define LABELS_WITHOUT_COLONS 1
      38  #undef LOCAL_LABELS_FB
      39  
      40  /* accept 0FFFFh, 1010b, etc.  */
      41  #define NUMBERS_WITH_SUFFIX 1
      42  /* $ is section program counter */
      43  #define DOLLAR_DOT 1
      44  /* accept parallel lines like
      45         add #1,a  ||  ld #1, b
      46         (may also be split across lines)
      47  */
      48  #define DOUBLEBAR_PARALLEL 1
      49  /* affects preprocessor */
      50  #define KEEP_WHITE_AROUND_COLON 1
      51  
      52  struct bit_info
      53  {
      54    segT seg;
      55  #define TYPE_SPACE 0
      56  #define TYPE_BES   1
      57  #define TYPE_FIELD 2
      58    int type;
      59    symbolS *sym;
      60    valueT value;
      61    char *where;
      62    int offset;
      63  };
      64  
      65  /* We sometimes need to keep track of bit offsets within words */
      66  #define TC_FRAG_TYPE int
      67  #define TC_FRAG_INIT(FRAGP, MAX_BYTES) do {(FRAGP)->tc_frag_data = 0;}while (0)
      68  
      69  /* Tell GAS whether the given token is indeed a code label.
      70     Note - we make of the knowledge that this macro will be called from
      71     read.c:read_a_source_file()  in that we also pass the local variable
      72     line_start.  */
      73  #define TC_START_LABEL_WITHOUT_COLON(NUL_CHAR, NEXT_CHAR) \
      74    tic54x_start_label (line_start, NUL_CHAR, NEXT_CHAR)
      75  extern int tic54x_start_label (char *, int, int);
      76  
      77  /* custom handling for relocations in cons expressions */
      78  #define TC_CONS_FIX_NEW(FRAG, OFF, LEN, EXP, RELOC)	\
      79    tic54x_cons_fix_new (FRAG, OFF, LEN, EXP, RELOC)
      80  extern void tic54x_cons_fix_new (fragS *, int, int, expressionS *,
      81  				 bfd_reloc_code_real_type);
      82  
      83  /* Define md_number_to_chars as the appropriate standard big endian or
      84     little endian function.  Mostly littleendian, but longwords and floats are
      85     stored MS word first.
      86  */
      87  
      88  #define md_number_to_chars tic54x_number_to_chars
      89  extern void tic54x_number_to_chars (char *, valueT, int);
      90  #define tc_adjust_symtab() tic54x_adjust_symtab()
      91  extern void tic54x_adjust_symtab (void);
      92  #define tc_unrecognized_line(ch) tic54x_unrecognized_line(ch)
      93  extern int tic54x_unrecognized_line (int ch);
      94  #define md_parse_name(s,e,m,c) tic54x_parse_name(s,e)
      95  extern int tic54x_parse_name (char *name, expressionS *e);
      96  #define md_undefined_symbol(s) tic54x_undefined_symbol(s)
      97  extern symbolS *tic54x_undefined_symbol (char *name);
      98  #define md_macro_start() tic54x_macro_start()
      99  extern void tic54x_macro_start (void);
     100  #define md_macro_end() tic54x_macro_end()
     101  extern void tic54x_macro_end (void);
     102  #define md_macro_info(args) tic54x_macro_info(args)
     103  struct macro_struct;
     104  extern void tic54x_macro_info (const struct macro_struct *);
     105  #define tc_frob_label(sym) tic54x_define_label (sym)
     106  extern void tic54x_define_label (symbolS *);
     107  
     108  #define md_start_line_hook() tic54x_start_line_hook()
     109  extern void tic54x_start_line_hook (void);
     110  
     111  #define md_estimate_size_before_relax(f,s) \
     112  tic54x_estimate_size_before_relax(f,s)
     113  extern int tic54x_estimate_size_before_relax(fragS *, segT);
     114  
     115  #define md_relax_frag(seg, f,s) tic54x_relax_frag(f,s)
     116  extern int tic54x_relax_frag(fragS *, long);
     117  
     118  #define md_convert_frag(b,s,f)	tic54x_convert_frag(b,s,f)
     119  extern void tic54x_convert_frag(bfd *, segT, fragS *);
     120  
     121  /* Other things we don't support...  */
     122  
     123  /* Define away the call to md_operand in the expression parsing code.
     124     This is called whenever the expression parser can't parse the input
     125     and gives the assembler backend a chance to deal with it instead.  */
     126  
     127  #define md_operand(X)
     128  
     129  /* spruce up the listing output */
     130  #define LISTING_WORD_SIZE 2
     131  
     132  extern void tic54x_global (int);
     133  
     134  extern void tic54x_md_end (void);
     135  #define md_end tic54x_md_end
     136  
     137  #endif