113 lines
3.5 KiB
C
113 lines
3.5 KiB
C
/* tc-e2k.h - Macros and type defines for the E2k.
|
|
|
|
This file is part of GAS, the GNU Assembler.
|
|
|
|
GAS is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as
|
|
published by the Free Software Foundation; either version 2,
|
|
or (at your option) any later version.
|
|
|
|
GAS is distributed in the hope that it will be useful, but
|
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
the GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public
|
|
License along with GAS; see the file COPYING. If not, write
|
|
to the Free Software Foundation, 59 Temple Place - Suite 330,
|
|
Boston, MA 02111-1307, USA. */
|
|
|
|
#ifndef TC_E2K
|
|
#define TC_E2K 1
|
|
|
|
#define LEX_HASH (LEX_NAME|LEX_BEGIN_NAME) /* allow `#' inside symbol name */
|
|
|
|
extern const char *e2k_target_format (void);
|
|
#define TARGET_FORMAT e2k_target_format ()
|
|
|
|
#define TARGET_ARCH bfd_arch_e2k
|
|
|
|
extern unsigned long e2k_mach (void);
|
|
#define TARGET_MACH (e2k_mach ())
|
|
|
|
extern void e2k_elf_final_processing (void);
|
|
#define elf_tc_final_processing e2k_elf_final_processing
|
|
|
|
|
|
#define TARGET_BYTES_BIG_ENDIAN 0
|
|
#define MD_APPLY_FIX3
|
|
|
|
#define tc_fix_adjustable(X) tc_e2k_fix_adjustable(X)
|
|
extern int tc_e2k_fix_adjustable (struct fix *);
|
|
|
|
/* Values passed to md_apply_fix don't include the symbol value. */
|
|
#define MD_APPLY_SYM_VALUE(FIX) 0
|
|
|
|
|
|
#define md_convert_frag(b,s,f) \
|
|
as_fatal (_("e2k convert_frag\n"))
|
|
#define md_estimate_size_before_relax(f,s) \
|
|
(as_fatal(_("estimate_size_before_relax called")), 1)
|
|
|
|
#define md_start_line_hook() e2k_start_line_hook (input_line_pointer[-1])
|
|
#define md_cleanup() e2k_cleanup_hook ();
|
|
|
|
#define md_number_to_chars number_to_chars_littleendian
|
|
|
|
extern void e2k_start_line_hook (char);
|
|
extern void e2k_cleanup_hook (void);
|
|
|
|
extern void e2k_adjust_symtab (void);
|
|
#define tc_adjust_symtab() e2k_adjust_symtab ()
|
|
|
|
extern char *e2k_canonicalize_symbol_name (char *);
|
|
#define tc_canonicalize_symbol_name(s) e2k_canonicalize_symbol_name (s)
|
|
|
|
#define tc_init_after_args() e2k_init ()
|
|
extern void e2k_init (void);
|
|
|
|
extern int e2k_parse_name (char *, expressionS *, char *);
|
|
#define md_parse_name(name, e, m, nextP) e2k_parse_name (name, e, nextP)
|
|
|
|
extern void e2k_cons_fix_new (struct frag *, int,
|
|
int, struct expressionS *);
|
|
#define TC_CONS_FIX_NEW(FRAG, WHERE, NBYTES, EXP, RELOC) \
|
|
e2k_cons_fix_new (FRAG, WHERE, NBYTES, EXP)
|
|
|
|
|
|
/* This is probably required in order to make arithmetic on symbols coming
|
|
from different sections. Isn't it? */
|
|
#define DIFF_EXPR_OK 1
|
|
|
|
extern void e2k_end (void);
|
|
#define md_end() e2k_end ()
|
|
|
|
/* We want .cfi_* pseudo-ops for generating unwind info. */
|
|
#define TARGET_USE_CFIPOP 1
|
|
#define DWARF2_CIE_DATA_ALIGNMENT (-8)
|
|
#define DWARF2_DEFAULT_RETURN_COLUMN 0
|
|
|
|
/* This lets one ensure that `.eh_frame' is writable in PM. */
|
|
#define DWARF2_EH_FRAME_READ_ONLY e2k_dwarf2_eh_frame_read_only ()
|
|
extern int e2k_dwarf2_eh_frame_read_only (void);
|
|
|
|
|
|
#define md_register_arithmetic 0
|
|
|
|
#define tc_allow_U_suffix 0
|
|
|
|
|
|
/* Note that these are the powers of 2. */
|
|
|
|
#define EH_FRAME_ALIGNMENT \
|
|
(e2k_eh_frame_alignment () == 4 \
|
|
? 4 : (bfd_get_arch_size (stdoutput) == 64 ? 3 : 2))
|
|
|
|
extern int e2k_eh_frame_alignment (void);
|
|
|
|
|
|
#define tc_cfi_reloc_for_encoding e2k_cfi_reloc_for_encoding
|
|
extern bfd_reloc_code_real_type e2k_cfi_reloc_for_encoding (int encoding);
|
|
|
|
#endif /* TC_E2K */
|