Add support for MIPS R6.
bfd/ * aoutx.h (NAME (aout, machine_type)): Add mips32r6 and mips64r6. * archures.c (bfd_architecture): Likewise. * bfd-in2.h (bfd_architecture): Likewise. (bfd_reloc_code_real): Add relocs BFD_RELOC_MIPS_21_PCREL_S2, BFD_RELOC_MIPS_26_PCREL_S2, BFD_RELOC_MIPS_18_PCREL_S3 and BFD_RELOC_MIPS_19_PCREL_S2. * cpu-mips.c (arch_info_struct): Add mips32r6 and mips64r6. * elf32-mips.c: Define relocs R_MIPS_PC21_S2, R_MIPS_PC26_S2 R_MIPS_PC18_S3, R_MIPS_PC19_S2, R_MIPS_PCHI16 and R_MIPS_PCLO16. (mips_reloc_map): Add entries for BFD_RELOC_MIPS_21_PCREL_S2, BFD_RELOC_MIPS_26_PCREL_S2, BFD_RELOC_MIPS_18_PCREL_S3, BFD_RELOC_MIPS_19_PCREL_S2, BFD_RELOC_HI16_S_PCREL and BFD_RELOC_LO16_PCREL. * elf64-mips.c: Define REL, and RELA relocations R_MIPS_PC21_S2, R_MIPS_PC26_S2, R_MIPS_PC18_S3, R_MIPS_PC19_S2, R_MIPS_PCHI16 and R_MIPS_PCLO16. (mips_reloc_map): Add entries for BFD_RELOC_MIPS_21_PCREL_S2, BFD_RELOC_MIPS_26_PCREL_S2, BFD_RELOC_MIPS_18_PCREL_S3, BFD_RELOC_MIPS_19_PCREL_S2, BFD_RELOC_HI16_S_PCREL and BFD_RELOC_LO16_PCREL. * elfn32-mips.c: Likewise. * elfxx-mips.c (MIPSR6_P): New define. (mipsr6_exec_plt_entry): New array. (hi16_reloc_p): Add support for R_MIPS_PCHI16. (lo16_reloc_p): Add support for R_MIPS_PCLO16. (aligned_pcrel_reloc_p): New function. (mips_elf_relocation_needs_la25_stub): Add support for relocs: R_MIPS_PC21_S2 and R_MIPS_PC26_S2. (mips_elf_calculate_relocation): Add support for relocs: R_MIPS_PC21_S2, R_MIPS_PC26_S2, R_MIPS_PC18_S3, R_MIPS_PC19_S2, R_MIPS_PCHI16 and R_MIPS_PCLO16. (_bfd_elf_mips_mach): Add support for mips32r6 and mips64r6. (mips_elf_add_lo16_rel_addend): Add support for R_MIPS_PCHI16. (_bfd_mips_elf_check_relocs): Add support for relocs: R_MIPS_PC21_S2 and R_MIPS_PC26_S2. (_bfd_mips_elf_relocate_section): Add a check for unaligned pc relative relocs. (_bfd_mips_elf_finish_dynamic_symbol): Add support for MIPS r6 plt entry. (mips_set_isa_flags): Add support for mips32r6 and mips64r6. (_bfd_mips_elf_print_private_bfd_data): Likewise. (mips_32bit_flags_p): Add support for mips32r6. * libbfd.h (bfd_reloc_code_real_names): Add entries for BFD_RELOC_MIPS_21_PCREL_S2, BFD_RELOC_MIPS_26_PCREL_S2, BFD_RELOC_MIPS_18_PCREL_S3 and BFD_RELOC_MIPS_19_PCREL_S2. * reloc.c: Document relocs BFD_RELOC_MIPS_21_PCREL_S2, BFD_RELOC_MIPS_26_PCREL_S2, BFD_RELOC_MIPS_18_PCREL_S3 and BFD_RELOC_MIPS_19_PCREL_S2. binutils/ * readelf.c (get_machine_flags): Add support for mips32r6 and mips64r6. elfcpp/ * mips.h (E_MIPS_ARCH_32R6, E_MIPS_ARCH_64R6): New enum constants. gas/ * config/tc-mips.c (mips_nan2008): New static global. (mips_flag_nan2008): Removed. (LL_SC_FMT): New define. (COP12_FMT): Updated. (ISA_IS_R6): New define. (ISA_HAS_64BIT_REGS): Add mips64r6. (ISA_HAS_DROR): Likewise. (ISA_HAS_64BIT_FPRS): Add mips32r6 and mips64r6. (ISA_HAS_ROR): Likewise. (ISA_HAS_ODD_SINGLE_FPR): Likewise. (ISA_HAS_MXHC1): Likewise. (hilo_interlocks): Likewise. (md_longopts): Likewise. (ISA_HAS_LEGACY_NAN): New define. (options): Add OPTION_MIPS32R6 and OPTION_MIPS64R6. (mips_ase): Add field rem_rev. (mips_ases): Updated to add which ISA an ASE was removed in. (mips_isa_rev): Add support for mips32r6 and mips64r6. (mips_check_isa_supports_ase): Add support to check if an ASE has been removed in the specified MIPS ISA revision. (validate_mips_insn): Skip '-' character. (macro_build): Likewise. (mips_check_options): Prevent R6 working with fp32, mips16, micromips, or branch relaxation. (file_mips_check_options): Set R6 floating point registers to 64 bit. Also deal with the nan2008 option. (limited_pcrel_reloc_p): Add relocs: BFD_RELOC_MIPS_21_PCREL_S2, BFD_RELOC_MIPS_26_PCREL_S2, BFD_RELOC_MIPS_18_PCREL_S3, BFD_RELOC_MIPS_19_PCREL_S2, BFD_RELOC_HI16_S_PCREL and BFD_RELOC_LO16_PCREL. (operand_reg_mask): Add support for OP_SAME_RS_RT, OP_CHECK_PREV and OP_NON_ZERO_REG. (match_check_prev_operand): New static function. (match_same_rs_rt_operand): New static function. (match_non_zero_reg_operand): New static function. (match_operand): Added entries for: OP_SAME_RS_RT, OP_CHECK_PREV and OP_NON_ZERO_REG. (insns_between): Added case to deal with forbidden slots. (append_insn): Added support for relocs: BFD_RELOC_MIPS_21_PCREL_S2 and BFD_RELOC_MIPS_26_PCREL_S2. (match_insn): Add support for operands -A, -B, +' and +". Also skip '-' character. (mips_percent_op): Add entries for %pcrel_hi and %pcrel_lo. (md_parse_option): Add support for mips32r6 and mips64r6. Also update the nan option handling. (md_pcrel_from): Add cases for relocs: BFD_RELOC_MIPS_21_PCREL_S2, BFD_RELOC_MIPS_26_PCREL_S2. (mips_force_relocation): Prevent forced relaxation for MIPS r6. (md_apply_fix): Add support for relocs: BFD_RELOC_MIPS_21_PCREL_S2, BFD_RELOC_MIPS_26_PCREL_S2, BFD_RELOC_MIPS_18_PCREL_S3, BFD_RELOC_MIPS_19_PCREL_S2, BFD_RELOC_HI16_S_PCREL and BFD_RELOC_LO16_PCREL. (s_mipsset): Add support for mips32r6 and mips64r6. (s_nan): Update to support the new nan2008 framework. (tc_gen_reloc): Add relocs: BFD_RELOC_MIPS_21_PCREL_S2, BFD_RELOC_MIPS_26_PCREL_S2, BFD_RELOC_MIPS_18_PCREL_S3, BFD_RELOC_MIPS_19_PCREL_S2, BFD_RELOC_HI16_S_PCREL and BFD_RELOC_LO16_PCREL. (mips_elf_final_processing): Updated to use the mips_nan2008. (mips_cpu_info_table): Add entries for mips32r6 and mips64r6. (macro): Enable ldc2, sdc2, ll, lld, swc2, sc, scd, cache, pref macros for R6. (mips_fix_adjustable): Make PC relative R6 relocations relative to the symbol and not the section. * configure.ac: Add support for mips32r6 and mips64r6. * configure: Regenerate. * doc/c-mips.texi: Document the -mips32r6 and -mips64r6 command line options. * doc/as.texinfo: Likewise. gas/testsuite/ * gas/mips/24k-triple-stores-1.s: If testing for r6 prevent non-supported instructions from being tested. * gas/mips/24k-triple-stores-2.s: Likewise. * gas/mips/24k-triple-stores-3.s: Likewise. * gas/mips/24k-triple-stores-6.s: Likewise. * gas/mips/beq.s: Likewise. * gas/mips/eva.s: Likewise. * gas/mips/ld-zero-3.s: Likewise. * gas/mips/mips32-cp2.s: Likewise. * gas/mips/mips32.s: Likewise. * gas/mips/mips4.s: Likewise. * gas/mips/add.s: Don't test the add instructions if r6, and add padding. * gas/mips/add.d: Check for a triple dot not a nop at the end of the disassembly output. * gas/mips/micromips@add.d: Likewise. * gas/mips/mipsr6@24k-branch-delay-1.d: New file. * gas/mips/mipsr6@24k-triple-stores-1.d: New file. * gas/mips/mipsr6@24k-triple-stores-2-llsc.d: New file. * gas/mips/mipsr6@24k-triple-stores-2.d: New file. * gas/mips/mipsr6@24k-triple-stores-3.d: New file. * gas/mips/mipsr6@24k-triple-stores-6.d: New file. * gas/mips/mipsr6@add.d: New file. * gas/mips/mipsr6@attr-gnu-4-1-msingle-float.l: New file. * gas/mips/mipsr6@attr-gnu-4-1-msingle-float.s: New file. * gas/mips/mipsr6@attr-gnu-4-1-msoft-float.l: New file. * gas/mips/mipsr6@attr-gnu-4-1-msoft-float.s: New file. * gas/mips/mipsr6@attr-gnu-4-2-mdouble-float.l: New file. * gas/mips/mipsr6@attr-gnu-4-2-mdouble-float.s: New file. * gas/mips/mipsr6@beq.d: New file. * gas/mips/mipsr6@bge.d: New file. * gas/mips/mipsr6@bgeu.d: New file. * gas/mips/mipsr6@blt.d: New file. * gas/mips/mipsr6@bltu.d: New file. * gas/mips/mipsr6@branch-misc-1.d: New file. * gas/mips/mipsr6@branch-misc-2-64.d: New file. * gas/mips/mipsr6@branch-misc-2pic-64.d: New file. * gas/mips/mipsr6@branch-misc-4-64.d: New file. * gas/mips/mipsr6@cache.d: New file. * gas/mips/mipsr6@eva.d: New file. * gas/mips/mipsr6@jal-svr4pic-noreorder.d: New file. * gas/mips/mipsr6@jal-svr4pic.d: New file. * gas/mips/mipsr6@ld-zero-2.d: New file. * gas/mips/mipsr6@ld-zero-3.d: New file. * gas/mips/mipsr6@loc-swap-dis.d: New file. * gas/mips/mipsr6@mips32-cp2.d: New file. * gas/mips/mipsr6@mips32-imm.d: New file. * gas/mips/mipsr6@mips32.d: New file. * gas/mips/mipsr6@mips32r2.d: New file. * gas/mips/mipsr6@mips4-fp.d: New file. * gas/mips/mipsr6@mips4-fp.l: New file. * gas/mips/mipsr6@mips4-fp.s: New file. * gas/mips/mipsr6@mips4.d: New file. * gas/mips/mipsr6@mips5-fp.d: New file. * gas/mips/mipsr6@mips5-fp.l: New file. * gas/mips/mipsr6@mips5-fp.s: New file. * gas/mips/mipsr6@mips64.d: New file. * gas/mips/mipsr6@msa-branch.d: New file. * gas/mips/mipsr6@msa.d: New file. * gas/mips/mipsr6@pref.d: New file. * gas/mips/mipsr6@relax-swap3.d: New file. * gas/mips/r6-64-n32.d: New file. * gas/mips/r6-64-n64.d: New file. * gas/mips/r6-64-removed.l: New file. * gas/mips/r6-64-removed.s: New file. * gas/mips/r6-64.s: New file. * gas/mips/r6-attr-none-double.d: New file. * gas/mips/r6-n32.d: New file. * gas/mips/r6-n64.d: New file. * gas/mips/r6-removed.l: New file. * gas/mips/r6-removed.s: New file. * gas/mips/r6.d: New file. * gas/mips/r6.s: New file. * gas/mips/mipsr6@mips32-dsp.d: New file. * gas/mips/mipsr6@mips32-dspr2.d: New file. * gas/mips/mipsr6@mips32r2-ill.l: New file. * gas/mips/mipsr6@mips32r2-ill.s: New file. * gas/mips/cache.s: Add r6 instruction varients. * gas/mips/mips.exp: Add support for the mips32r6 and mips64r6 architectures. Also prevent non r6 supported tests from running. Finally, add in support for running the new r6 tests. (run_dump_test_arch): Add support for mipsr6 tests. (run_list_test_arch): Add support for using files of the form arch@testname.l . include/elf/ * mips.h: Add relocs: R_MIPS_PC21_S2, R_MIPS_PC26_S2, R_MIPS_PC18_S3, R_MIPS_PC19_S2, R_MIPS_PCHI16 and R_MIPS_PCLO16. (E_MIPS_ARCH_32R6): New define. (E_MIPS_ARCH_64R6): New define. include/opcode/ * mips.h (mips_operand_type): Add new entries: OP_SAME_RS_RT, OP_CHECK_PREV and OP_NON_ZERO_REG. Add descriptions for the MIPS R6 instruction arguments: -a, -b, -d, -s, -t, -u, -v, -w, -x, -y, -A, -B, +I, +O, +R, +:, +\, +", +; (mips_check_prev_operand): New struct. (INSN2_FORBIDDEN_SLOT): New define. (INSN_ISA32R6): New define. (INSN_ISA64R6): New define. (INSN_UPTO32R6): New define. (INSN_UPTO64R6): New define. (mips_isa_table): Add INSN_UPTO32R6 and INSN_UPTO64R6. (ISA_MIPS32R6): New define. (ISA_MIPS64R6): New define. (CPU_MIPS32R6): New define. (CPU_MIPS64R6): New define. (cpu_is_member): Add cases for CPU_MIPS32R6, and CPU_MIPS64R6. ld/ * ldmain.c (get_emulation): Add support for -mips32r6 and -mips64r6. opcodes/ * mips-dis.c (mips_arch_choices): Add entries for mips32r6 and mips64r6. (parse_mips_dis_option): Allow MSA and virtualization support for mips64r6. (mips_print_arg_state): Add fields dest_regno and seen_dest. (mips_seen_register): New function. (print_insn_arg): Refactored code to use mips_seen_register function. Add support for OP_SAME_RS_RT, OP_CHECK_PREV and OP_NON_ZERO_REG. Changed OP_REPEAT_DEST_REG case to print out the register rather than aborting. (print_insn_args): Add length argument. Add code to correctly calculate the instruction address for pc relative instructions. (validate_insn_args): New static function. (print_insn_mips): Prevent jalx disassembling for r6. Use validate_insn_args. (print_insn_micromips): Use validate_insn_args. all the arguments are valid. * mips-formats.h (PREV_CHECK): New define. * mips-opc.c (decode_mips_operand): Add support for -a, -b, -d, -s, -t, -u, -v, -w, -x, -y, -A, -B, +I, +O, +R, +:, +\, +", +; (RD_pc): New define. (FS): New define. (I37): New define. (I69): New define. (mips_builtin_opcodes): Add MIPS R6 instructions. Exclude recoded MIPS R6 instructions from MIPS R2 instructions.
This commit is contained in:
parent
ea79f94a7a
commit
7361da2c95
107 changed files with 8475 additions and 478 deletions
|
@ -417,7 +417,17 @@ enum mips_operand_type {
|
|||
OP_IMM_INDEX,
|
||||
|
||||
/* An index selected by a register, e.g. [$2]. */
|
||||
OP_REG_INDEX
|
||||
OP_REG_INDEX,
|
||||
|
||||
/* The operand spans two 5-bit register fields, both of which must be set to
|
||||
the source register. */
|
||||
OP_SAME_RS_RT,
|
||||
|
||||
/* Described by mips_prev_operand. */
|
||||
OP_CHECK_PREV,
|
||||
|
||||
/* A register operand that must not be zero. */
|
||||
OP_NON_ZERO_REG
|
||||
};
|
||||
|
||||
/* Enumerates the types of MIPS register. */
|
||||
|
@ -553,6 +563,18 @@ struct mips_reg_operand
|
|||
const unsigned char *reg_map;
|
||||
};
|
||||
|
||||
/* Describes an operand that which must match a condition based on the
|
||||
previous operand. */
|
||||
struct mips_check_prev_operand
|
||||
{
|
||||
struct mips_operand root;
|
||||
|
||||
bfd_boolean greater_than_ok;
|
||||
bfd_boolean less_than_ok;
|
||||
bfd_boolean equal_ok;
|
||||
bfd_boolean zero_ok;
|
||||
};
|
||||
|
||||
/* Describes an operand that encodes a pair of registers. */
|
||||
struct mips_reg_pair_operand
|
||||
{
|
||||
|
@ -927,6 +949,28 @@ struct mips_opcode
|
|||
"+*" 5-bit register vector element index at bit 16
|
||||
"+|" 8-bit mask at bit 16
|
||||
|
||||
MIPS R6:
|
||||
"+:" 11-bit mask at bit 0
|
||||
"+'" 26 bit PC relative branch target address
|
||||
"+"" 21 bit PC relative branch target address
|
||||
"+;" 5 bit same register in both OP_*_RS and OP_*_RT
|
||||
"+I" 2bit unsigned bit position at bit 6
|
||||
"+O" 3bit unsigned bit position at bit 6
|
||||
"+R" must be program counter
|
||||
"-a" (-262144 .. 262143) << 2 at bit 0
|
||||
"-b" (-131072 .. 131071) << 3 at bit 0
|
||||
"-d" Same as destination register GP
|
||||
"-s" 5 bit source register specifier (OP_*_RS) not $0
|
||||
"-t" 5 bit source register specifier (OP_*_RT) not $0
|
||||
"-u" 5 bit source register specifier (OP_*_RT) greater than OP_*_RS
|
||||
"-v" 5 bit source register specifier (OP_*_RT) not $0 not OP_*_RS
|
||||
"-w" 5 bit source register specifier (OP_*_RT) less than or equal to OP_*_RS
|
||||
"-x" 5 bit source register specifier (OP_*_RT) greater than or
|
||||
equal to OP_*_RS
|
||||
"-y" 5 bit source register specifier (OP_*_RT) not $0 less than OP_*_RS
|
||||
"-A" symbolic offset (-262144 .. 262143) << 2 at bit 0
|
||||
"-B" symbolic offset (-131072 .. 131071) << 3 at bit 0
|
||||
|
||||
Other:
|
||||
"()" parens surrounding optional value
|
||||
"," separates operands
|
||||
|
@ -934,16 +978,21 @@ struct mips_opcode
|
|||
|
||||
Characters used so far, for quick reference when adding more:
|
||||
"1234567890"
|
||||
"%[]<>(),+:'@!#$*&\~"
|
||||
"%[]<>(),+-:'@!#$*&\~"
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
||||
"abcdefghijklopqrstuvwxz"
|
||||
|
||||
Extension character sequences used so far ("+" followed by the
|
||||
following), for quick reference when adding more:
|
||||
"1234567890"
|
||||
"~!@#$%^&*|"
|
||||
"ABCEFGHJKLMNPQSTUVWXZ"
|
||||
"~!@#$%^&*|:'";"
|
||||
"ABCEFGHIJKLMNOPQRSTUVWXZ"
|
||||
"abcdefghijklmnopqrstuvwxyz"
|
||||
|
||||
Extension character sequences used so far ("-" followed by the
|
||||
following), for quick reference when adding more:
|
||||
"AB"
|
||||
"abdstuvwxy"
|
||||
*/
|
||||
|
||||
/* These are the bits which may be set in the pinfo field of an
|
||||
|
@ -1051,6 +1100,8 @@ struct mips_opcode
|
|||
#define INSN2_READ_GPR_16 0x00002000
|
||||
/* Has an "\.x?y?z?w?" suffix based on mips_vu0_channel_mask. */
|
||||
#define INSN2_VU0_CHANNEL_SUFFIX 0x00004000
|
||||
/* Instruction has a forbidden slot. */
|
||||
#define INSN2_FORBIDDEN_SLOT 0x00008000
|
||||
|
||||
/* Masks used to mark instructions to indicate which MIPS ISA level
|
||||
they were introduced in. INSN_ISA_MASK masks an enumeration that
|
||||
|
@ -1070,10 +1121,12 @@ struct mips_opcode
|
|||
#define INSN_ISA32R2 7
|
||||
#define INSN_ISA32R3 8
|
||||
#define INSN_ISA32R5 9
|
||||
#define INSN_ISA32R6 10
|
||||
#define INSN_ISA64 11
|
||||
#define INSN_ISA64R2 12
|
||||
#define INSN_ISA64R3 13
|
||||
#define INSN_ISA64R5 14
|
||||
#define INSN_ISA64R6 15
|
||||
/* Below this point the INSN_* values correspond to combinations of ISAs.
|
||||
They are only for use in the opcodes table to indicate membership of
|
||||
a combination of ISAs that cannot be expressed using the usual inclusion
|
||||
|
@ -1084,7 +1137,19 @@ struct mips_opcode
|
|||
#define INSN_ISA4_32R2 19
|
||||
#define INSN_ISA5_32R2 20
|
||||
|
||||
/* The R6 definitions shown below state that they support all previous ISAs.
|
||||
This is not actually true as some instructions are removed in R6.
|
||||
The problem is that the removed instructions in R6 come from different
|
||||
ISAs. One approach to solve this would be to describe in the membership
|
||||
field of the opcode table the different ISAs an instruction belongs to.
|
||||
This would require us to create a large amount of different ISA
|
||||
combinations which is hard to manage. A cleaner approach (which is
|
||||
implemented here) is to say that R6 is an extension of R5 and then to
|
||||
deal with the removed instructions by adding instruction exclusions
|
||||
for R6 in the opcode table. */
|
||||
|
||||
/* Bit INSN_ISA<X> - 1 of INSN_UPTO<Y> is set if ISA Y includes ISA X. */
|
||||
|
||||
#define ISAF(X) (1 << (INSN_ISA##X - 1))
|
||||
#define INSN_UPTO1 ISAF(1)
|
||||
#define INSN_UPTO2 INSN_UPTO1 | ISAF(2)
|
||||
|
@ -1096,10 +1161,12 @@ struct mips_opcode
|
|||
| ISAF(3_32R2) | ISAF(4_32R2) | ISAF(5_32R2)
|
||||
#define INSN_UPTO32R3 INSN_UPTO32R2 | ISAF(32R3)
|
||||
#define INSN_UPTO32R5 INSN_UPTO32R3 | ISAF(32R5)
|
||||
#define INSN_UPTO32R6 INSN_UPTO32R5 | ISAF(32R6)
|
||||
#define INSN_UPTO64 INSN_UPTO5 | ISAF(64) | ISAF(32)
|
||||
#define INSN_UPTO64R2 INSN_UPTO64 | ISAF(64R2) | ISAF(32R2)
|
||||
#define INSN_UPTO64R3 INSN_UPTO64R2 | ISAF(64R3) | ISAF(32R3)
|
||||
#define INSN_UPTO64R5 INSN_UPTO64R3 | ISAF(64R5) | ISAF(32R5)
|
||||
#define INSN_UPTO64R6 INSN_UPTO64R5 | ISAF(64R6) | ISAF(32R6)
|
||||
|
||||
/* The same information in table form: bit INSN_ISA<X> - 1 of index
|
||||
INSN_UPTO<Y> - 1 is set if ISA Y includes ISA X. */
|
||||
|
@ -1113,11 +1180,12 @@ static const unsigned int mips_isa_table[] = {
|
|||
INSN_UPTO32R2,
|
||||
INSN_UPTO32R3,
|
||||
INSN_UPTO32R5,
|
||||
0,
|
||||
INSN_UPTO32R6,
|
||||
INSN_UPTO64,
|
||||
INSN_UPTO64R2,
|
||||
INSN_UPTO64R3,
|
||||
INSN_UPTO64R5
|
||||
INSN_UPTO64R5,
|
||||
INSN_UPTO64R6
|
||||
};
|
||||
#undef ISAF
|
||||
|
||||
|
@ -1207,6 +1275,8 @@ static const unsigned int mips_isa_table[] = {
|
|||
#define ISA_MIPS64R3 INSN_ISA64R3
|
||||
#define ISA_MIPS64R5 INSN_ISA64R5
|
||||
|
||||
#define ISA_MIPS32R6 INSN_ISA32R6
|
||||
#define ISA_MIPS64R6 INSN_ISA64R6
|
||||
|
||||
/* CPU defines, use instead of hardcoding processor number. Keep this
|
||||
in sync with bfd/archures.c in order for machine selection to work. */
|
||||
|
@ -1239,11 +1309,13 @@ static const unsigned int mips_isa_table[] = {
|
|||
#define CPU_MIPS32R2 33
|
||||
#define CPU_MIPS32R3 34
|
||||
#define CPU_MIPS32R5 36
|
||||
#define CPU_MIPS32R6 37
|
||||
#define CPU_MIPS5 5
|
||||
#define CPU_MIPS64 64
|
||||
#define CPU_MIPS64R2 65
|
||||
#define CPU_MIPS64R3 66
|
||||
#define CPU_MIPS64R5 68
|
||||
#define CPU_MIPS64R6 69
|
||||
#define CPU_SB1 12310201 /* octal 'SB', 01. */
|
||||
#define CPU_LOONGSON_2E 3001
|
||||
#define CPU_LOONGSON_2F 3002
|
||||
|
@ -1319,6 +1391,13 @@ cpu_is_member (int cpu, unsigned int mask)
|
|||
case CPU_XLR:
|
||||
return (mask & INSN_XLR) != 0;
|
||||
|
||||
case CPU_MIPS32R6:
|
||||
return (mask & INSN_ISA_MASK) == INSN_ISA32R6;
|
||||
|
||||
case CPU_MIPS64R6:
|
||||
return ((mask & INSN_ISA_MASK) == INSN_ISA32R6)
|
||||
|| ((mask & INSN_ISA_MASK) == INSN_ISA64R6);
|
||||
|
||||
default:
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -2160,8 +2239,8 @@ extern const int bfd_mips16_num_opcodes;
|
|||
|
||||
Characters used so far, for quick reference when adding more:
|
||||
"12345678 0"
|
||||
"<>(),+.@\^|~"
|
||||
"A CDEFGHI KLMN RST V "
|
||||
"<>(),+-.@\^|~"
|
||||
"ABCDEFGHI KLMN RST V "
|
||||
"abcd f hijklmnopqrstuvw yz"
|
||||
|
||||
Extension character sequences used so far ("+" followed by the
|
||||
|
@ -2177,6 +2256,12 @@ extern const int bfd_mips16_num_opcodes;
|
|||
""
|
||||
" BCDEFGHIJ LMNOPQ U WXYZ"
|
||||
" bcdefghij lmn pq st xyz"
|
||||
|
||||
Extension character sequences used so far ("-" followed by the
|
||||
following), for quick reference when adding more:
|
||||
""
|
||||
""
|
||||
<none so far>
|
||||
*/
|
||||
|
||||
extern const struct mips_operand *decode_micromips_operand (const char *);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue