diff options
author | jmallett <jmallett@FreeBSD.org> | 2010-06-02 11:06:03 +0000 |
---|---|---|
committer | jmallett <jmallett@FreeBSD.org> | 2010-06-02 11:06:03 +0000 |
commit | ef36c6939e66c9aa805e7cdf4b7411d5b3565f61 (patch) | |
tree | 37acadcf4e976e87c154f5e994d5f484e3aa0770 /contrib/binutils/gas/config/tc-mips.h | |
parent | efb24ec35598841dd8e91ccedb4561427dae44a9 (diff) | |
download | FreeBSD-src-ef36c6939e66c9aa805e7cdf4b7411d5b3565f61.zip FreeBSD-src-ef36c6939e66c9aa805e7cdf4b7411d5b3565f61.tar.gz |
Add/improve mips64r2, Octeon, n32 and n64 support in the toolchain.
o) Add TARGET_ABI to the MIPS toolchain build process. This sets the default
ABI to one of o32, n32 or n64. If it is not set, o32 is assumed as that is
the current default.
o) Set the default GCC cpu type to any specified TARGET_CPUTYPE. This is
necessary to have a working "cc" if e.g. mips64 is specified, as binutils
will refuse to link objects using different ISAs in some cases.
o) Add support for n32 and n64 ABIs to binutils and GCC.
o) Add additional required libgcc2 stubs for n32 and n64.
o) Add support for the "mips64r2" architecture to GCC. Add the "octeon"
o) When static linking, wrap default libraries in --start-group and
--end-group. This is required for static linking to work on n64 with the
interdependencies between libraries there. This is what other OSes that
support n64 seem to do, as well.
o) Fix our GCC spec to define __mips64 for 64-bit targets, not __mips64__, the
former being what libgcc, etc., check and the latter seemingly being a
misspelling of a hand merge from a Linux spec.
o) When no TARGET_CPUTYPE is specified at build time, make GCC take the default
ISA from the ABI. Our old defaults were too liberal and assumed that 64-bit
ABIs should default to the MIPS64 ISA and that 32-bit ABIs should default to
the MIPS32 ISA, when we are supporting or will support some systems based on
earlier 32-bit and 64-bit ISAs, most notably MIPS-III.
o) Merge a new opcode file (and support code) from a later version of binutils
and add flags and code necessary to support Octeon-specific instructions.
This should also make merging opcodes for other modern architectures easier.
Reviewed by: imp
Diffstat (limited to 'contrib/binutils/gas/config/tc-mips.h')
-rw-r--r-- | contrib/binutils/gas/config/tc-mips.h | 22 |
1 files changed, 2 insertions, 20 deletions
diff --git a/contrib/binutils/gas/config/tc-mips.h b/contrib/binutils/gas/config/tc-mips.h index 46a7653..0621b2e 100644 --- a/contrib/binutils/gas/config/tc-mips.h +++ b/contrib/binutils/gas/config/tc-mips.h @@ -89,15 +89,6 @@ enum mips_pic_level extern enum mips_pic_level mips_pic; -struct mips_cl_insn -{ - unsigned long insn_opcode; - const struct mips_opcode *insn_mo; - /* The next two fields are used when generating mips16 code. */ - bfd_boolean use_extend; - unsigned short extend; -}; - extern int tc_get_register (int frame); #define md_after_parse_args() mips_after_parse_args() @@ -143,15 +134,6 @@ extern int mips_force_relocation (struct fix *); #define TC_FORCE_RELOCATION_SUB_SAME(FIX, SEG) \ (! SEG_NORMAL (SEG) || mips_force_relocation (FIX)) -/* We use this to turn branches to global symbols into branches to - local symbols, so that they can be simplified. */ -#define TC_VALIDATE_FIX(fixp, this_segment, skip_label) \ - do \ - if (! mips_validate_fix ((fixp), (this_segment))) \ - goto skip_label; \ - while (0) -extern int mips_validate_fix (struct fix *, asection *); - /* Register mask variables. These are set by the MIPS assembly code and used by ECOFF and possibly other object file formats. */ extern unsigned long mips_gprmask; @@ -174,8 +156,8 @@ extern void md_mips_end (void); extern void mips_pop_insert (void); #define md_pop_insert() mips_pop_insert() -extern void mips_flush_pending_output (void); -#define md_flush_pending_output mips_flush_pending_output +extern void mips_emit_delays (void); +#define md_flush_pending_output mips_emit_delays extern void mips_enable_auto_align (void); #define md_elf_section_change_hook() mips_enable_auto_align() |