diff options
author | Hans-Peter Nilsson <hp@axis.com> | 2000-07-20 17:45:28 +0000 |
---|---|---|
committer | Hans-Peter Nilsson <hp@axis.com> | 2000-07-20 17:45:28 +0000 |
commit | 3bcbcc3dcf4c2dafb2f5d7384adf5f5bf4e037f4 (patch) | |
tree | 73e2aac98fc5fe48a5d7dfaf27fcceaee01c6fa6 /gas/config/tc-cris.h | |
parent | 1b61cf923010ce608e6266ec9450d6945b6ff325 (diff) | |
download | binutils-3bcbcc3dcf4c2dafb2f5d7384adf5f5bf4e037f4.zip binutils-3bcbcc3dcf4c2dafb2f5d7384adf5f5bf4e037f4.tar.gz binutils-3bcbcc3dcf4c2dafb2f5d7384adf5f5bf4e037f4.tar.bz2 |
* configure.in: Add CRIS support.
* configure: Regenerate.
* Makefile.am: (CPU_TYPES): Add cris.
(CPU_OBJ_VALID) [aout]: Add cris.
(MULTI_CPU_TYPES): Add cris.
(MULTI_CPU_OBJ_VALID) [aout]: Add cris.
[coff]: Only i386 and mips are valid.
(TARGET_CPU_CFILES): Add config/tc-cris.c.
(TARGET_CPU_HFILES): Add config/tc-cris.h.
(MULTI_CFILES): Add config/e-crisaout.c and config/e-criself.c.
Regenerate dependencies.
* Makefile.in: Regenerate.
* aclocal.m4: Regenerate.
* as.c: Declare crisaout, criself.
* config/tc-cris.h, config/tc-cris.c: New.
* config/e-criself.c, config/e-crisaout.c: New.
* po/POTFILES.in, po/gas.pot: Regenerate.
Diffstat (limited to 'gas/config/tc-cris.h')
-rw-r--r-- | gas/config/tc-cris.h | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/gas/config/tc-cris.h b/gas/config/tc-cris.h new file mode 100644 index 0000000..85be242 --- /dev/null +++ b/gas/config/tc-cris.h @@ -0,0 +1,135 @@ +/* tc-cris.h -- Header file for tc-cris.c, the CRIS GAS port. + Copyright (C) 2000 Free Software Foundation, Inc. + + Contributed by Axis Communications AB, Lund, Sweden. + Originally written for GAS 1.38.1 by Mikael Asker. + Updated, BFDized and GNUified by Hans-Peter Nilsson. + + 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. */ + +/* See the GAS "internal" document for general documentation on this. + It is called internals.texi (internals.info when makeinfo:d), but is + not installed or makeinfo:d by "make info". */ + +/* Functions and variables that aren't declared in tc.h are declared here, + with the type/prototype that is used in the local extern-declaration of + their usage. */ + +#ifndef TC_CRIS +#define TC_CRIS + +/* Multi-target support is always on. */ +extern const char *cris_target_format PARAMS ((void)); +#define TARGET_FORMAT cris_target_format () + +#define TARGET_ARCH bfd_arch_cris + +#define TARGET_BYTES_BIG_ENDIAN 0 + +extern const char *md_shortopts; +extern struct option md_longopts[]; +extern size_t md_longopts_size; + +extern const pseudo_typeS md_pseudo_table[]; + +#define tc_comment_chars cris_comment_chars +extern const char cris_comment_chars[]; +extern const char line_comment_chars[]; +extern const char line_separator_chars[]; +extern const char EXP_CHARS[]; +extern const char FLT_CHARS[]; + +/* This should be optional, since it is ignored as an escape (assumed to + be itself) if it is not recognized. */ +#define ONLY_STANDARD_ESCAPES + +/* Note that we do not define TC_EQUAL_IN_INSN, since its current use is + in the instruction rather than the operand, and thus does not come to + use for side-effect assignments such as "and.d [r0 = r1 + 42], r3". */ +#define md_operand(x) + +#define md_number_to_chars number_to_chars_littleendian + +extern const int md_short_jump_size; +extern const int md_long_jump_size; + +/* There's no use having different functions for this; the sizes are the + same. Note that we can't #define md_short_jump_size here. */ +#define md_create_short_jump md_create_long_jump + +extern const struct relax_type md_cris_relax_table[]; +#define TC_GENERIC_RELAX_TABLE md_cris_relax_table + +#define TC_HANDLES_FX_DONE + +#define TC_FORCE_RELOCATION(fixp) md_cris_force_relocation (fixp) +extern int md_cris_force_relocation PARAMS ((struct fix *)); + +/* This is really a workaround for a bug in write.c that resolves relocs + for weak symbols - it should be postponed to the link stage or later. + */ +#define tc_fix_adjustable(X) \ + ((! (X)->fx_addsy || ! S_IS_WEAK((X)->fx_addsy)) \ + && (X)->fx_r_type != BFD_RELOC_VTABLE_INHERIT \ + && (X)->fx_r_type != BFD_RELOC_VTABLE_ENTRY) + +/* When we have fixups against constant expressions, we get a GAS-specific + section symbol at no extra charge for obscure reasons in + adjust_reloc_syms. Since ELF outputs section symbols, it gladly + outputs this "*ABS*" symbol in every object. Avoid that. */ +#define tc_frob_symbol(symp, punt) \ + do { \ + if (OUTPUT_FLAVOR == bfd_target_elf_flavour \ + && (symp) == section_symbol (absolute_section)) \ + (punt) = 1; \ + } while (0) + +#define LISTING_HEADER "GAS for CRIS" + +#if 0 +/* The testsuite does not let me define these, although they IMHO should + be preferred over the default. */ +#define LISTING_WORD_SIZE 2 +#define LISTING_LHS_WIDTH 4 +#define LISTING_LHS_WIDTH_SECOND 4 +#endif + +/* END of declaration and definitions described in the "internals" + document. */ + +/* Do this, or we will never know what hit us when the + broken-word-fixes break. Do _not_ use WARN_SIGNED_OVERFLOW_WORD, + it is only for use with WORKING_DOT_WORD and warns about most stuff. + (still in 2.9.1). */ +struct broken_word; +extern void tc_cris_check_adjusted_broken_word PARAMS ((offsetT, + struct + broken_word *)); +#define TC_CHECK_ADJUSTED_BROKEN_DOT_WORD(new_offset, brokw) \ + tc_cris_check_adjusted_broken_word ((offsetT) (new_offset), brokw) + +/* We don't want any implicit alignment, so we do nothing. */ +#define TC_IMPLICIT_LCOMM_ALIGNMENT(SIZE, P2VAR) + +#endif /* TC_CRIS */ +/* + * Local variables: + * eval: (c-set-style "gnu") + * indent-tabs-mode: t + * End: + */ |