[ bfd/ChangeLog ]
2002-12-30 Chris Demetriou <cgd@broadcom.com> * aoutx.h (NAME(aout,machine_type)): Add bfd_mach_mipsisa32r2 case. * archures.c (bfd_mach_mipsisa32r2): New define. * bfd-in2.h: Regenerate. * cpu-mips.c (I_mipsisa32r2): New enum value. (arch_info_struct): Add entry for I_mipsisa32r2. * elfxx-mips.c (elf_mips_isa, _bfd_elf_mips_mach) (_bfd_mips_elf_print_private_bfd_data): Handle E_MIPS_ARCH_32R2. (_bfd_mips_elf_final_write_processing): Add bfd_mach_mipsisa32r2 case. (_bfd_mips_elf_merge_private_bfd_data): Handle merging of binaries marked as using MIPS32 Release 2. [ binutils/ChangeLog ] 2002-12-30 Chris Demetriou <cgd@broadcom.com> * doc/binutils.texi (objdump): Note MIPS HWR (Hardware Register) changes in MIPS -M options. [ gas/ChangeLog ] 2002-12-30 Chris Demetriou <cgd@broadcom.com> * configure.in: Recognize mipsisa32r2, mipsisa32r2el, and CPU variants. * configure: Regenerate. * config/tc-mips.c (ISA_HAS_DROR, ISA_HAS_ROR): New defines. (macro_build): Handle "K" operand. (macro2): Use ISA_HAS_DROR and ISA_HAS_ROR in the places where CPU_HAS_DROR and CPU_HAS_ROR are currently used. (mips_ip): New variable "lastpos", and implement "+A", "+B", and "+C" operands for MIPS32 Release 2 ins/ext instructions. Implement "K" operand for MIPS32 Release 2 rdhwr instruction. (validate_mips_insn): Implement "+" as a way to extend the allowed operands, and implement "K", "+A", "+B", and "+C" operands. (OPTION_MIPS32R2): New define. (md_longopts): Add entry for OPTION_MIPS32R2. (OPTION_ELF_BASE): Adjust to accomodate OPTIONS_MIPS32R2. (md_parse_option): Handle OPTION_MIPS32R2. (s_mipsset): Reimplement handling of ".set mipsN" options and add support for ".set mips32r2". (mips_cpu_info_table): Add entry for "mips32r2" (MIPS32 Release 2). (md_show_usage): Document "-mips32r2" option. * doc/as.texinfo: Document "-mips32r2" option. * doc/c-mips.texi: Likewise. [ gas/testsuite/ChangeLog ] 2002-12-30 Chris Demetriou <cgd@broadcom.com> * gas/mips/cp0-names-mips32r2.d: New test. * gas/mips/hwr-names-mips32r2.d: New test. * gas/mips/hwr-names-numeric.d: New test. * gas/mips/hwr-names.s: New test source file. * gas/mips/mips32r2.d: New test. * gas/mips/mips32r2.s: New test source file. * gas/mips/mips32r2-ill.l: New test. * gas/mips/mips32r2-ill.s: New test source file. * gas/mips/mips.exp: Add mips32r2 architecture data array entry. Run new tests mentioned above. [ include/elf/ChangeLog ] 2002-12-30 Chris Demetriou <cgd@broadcom.com> * mips.h (E_MIPS_ARCH_32R2): New define. [ include/opcode/ChangeLog ] 2002-12-30 Chris Demetriou <cgd@broadcom.com> * mips.h: Document "+" as the start of two-character operand type names, and add new "K", "+A", "+B", and "+C" operand types. (OP_MASK_INSMSB, OP_SH_INSMSB, OP_MASK_EXTMSB) (OP_SH_EXTMSB, INSN_ISA32R2, ISA_MIPS32R2, CPU_MIPS32R2): New defines. [ opcodes/ChangeLog ] 2002-12-30 Chris Demetriou <cgd@broadcom.com> * mips-dis.c (mips_cp0_names_mips3264r2, mips_hwr_names_numeric) (mips_hwr_names_mips3264r2): New arrays. (mips_arch_choice): New "hwr_names" member. (mips_arch_choices): Adjust for structure change, and add a new entry for "mips32r2" ISA. (mips_hwr_names): New variable. (set_default_mips_dis_options): Set mips_hwr_names. (parse_mips_dis_option): New "hwr-names" option which sets mips_hwr_names, and adjust "reg-names=ARCH" to set mips_hwr_names. (print_insn_arg): Change return type to "int" and use that to indicate number of characters consumed. Add support for "+" operand extension character, "+A", "+B", "+C", and "K" operands. (print_insn_mips): Adjust for changes to print_insn_arg. (print_mips_disassembler_options): Adjust for "hwr-names" addition and "reg-names" change. * mips-opc (I33): New define (shorthand for INSN_ISA32R2). (mips_builtin_opcodes): Note that "nop" and "ssnop" are special forms of "sll". Add new MIPS32 Release 2 instructions: ehb, di, ei, ext, ins, jr.hb, jalr.hb, mfhc1, mfhc2, mthc1, mthc2, rdhwr, rdpgpr, seb, seh, synci, wrpgpr, wsbh. Note that hardware rotate instructions (ror, rorv) can be used on MIPS32 Release 2, and add the official mnemonics for them (rotr, rotrv) and the similar "rotl" mnemonic for left-rotate.
This commit is contained in:
		| @@ -1,3 +1,7 @@ | |||||||
|  | 2002-12-30  Chris Demetriou  <cgd@broadcom.com> | ||||||
|  |  | ||||||
|  | 	* mips.h (E_MIPS_ARCH_32R2): New define. | ||||||
|  |  | ||||||
| 2002-12-24    Dmitry Diky <diwil@mail.ru> | 2002-12-24    Dmitry Diky <diwil@mail.ru> | ||||||
|  |  | ||||||
| 	* common.h: Define msp430 machine numbers. | 	* common.h: Define msp430 machine numbers. | ||||||
|   | |||||||
| @@ -145,6 +145,9 @@ END_RELOC_NUMBERS (R_MIPS_maxext) | |||||||
| /* -mips64 code.  */ | /* -mips64 code.  */ | ||||||
| #define E_MIPS_ARCH_64          0x60000000 | #define E_MIPS_ARCH_64          0x60000000 | ||||||
|  |  | ||||||
|  | /* -mips32r2 code.  */ | ||||||
|  | #define E_MIPS_ARCH_32R2        0x70000000 | ||||||
|  |  | ||||||
| /* The ABI of the file.  Also see EF_MIPS_ABI2 above. */ | /* The ABI of the file.  Also see EF_MIPS_ABI2 above. */ | ||||||
| #define EF_MIPS_ABI		0x0000F000 | #define EF_MIPS_ABI		0x0000F000 | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,3 +1,11 @@ | |||||||
|  | 2002-12-30  Chris Demetriou  <cgd@broadcom.com> | ||||||
|  |  | ||||||
|  | 	* mips.h: Document "+" as the start of two-character operand | ||||||
|  | 	type names, and add new "K", "+A", "+B", and "+C" operand types. | ||||||
|  | 	(OP_MASK_INSMSB, OP_SH_INSMSB, OP_MASK_EXTMSB) | ||||||
|  | 	(OP_SH_EXTMSB, INSN_ISA32R2, ISA_MIPS32R2, CPU_MIPS32R2): New | ||||||
|  | 	defines. | ||||||
|  |  | ||||||
| 2002-12-24    Dmitry Diky <diwil@mail.ru> | 2002-12-24    Dmitry Diky <diwil@mail.ru> | ||||||
|  |  | ||||||
| 	* msp430.h: New file.  Defines msp430 opcodes. | 	* msp430.h: New file.  Defines msp430 opcodes. | ||||||
|   | |||||||
| @@ -142,6 +142,10 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  * | |||||||
| #define OP_SH_VECBYTE		22 | #define OP_SH_VECBYTE		22 | ||||||
| #define OP_MASK_VECALIGN	0x7	/* Vector byte-align (alni.ob) op.  */ | #define OP_MASK_VECALIGN	0x7	/* Vector byte-align (alni.ob) op.  */ | ||||||
| #define OP_SH_VECALIGN		21 | #define OP_SH_VECALIGN		21 | ||||||
|  | #define OP_MASK_INSMSB		0x1f	/* "ins" MSB.  */ | ||||||
|  | #define OP_SH_INSMSB		11 | ||||||
|  | #define OP_MASK_EXTMSBD		0x1f	/* "ext" MSBD.  */ | ||||||
|  | #define OP_SH_EXTMSBD		11 | ||||||
|  |  | ||||||
| #define	OP_OP_COP0		0x10 | #define	OP_OP_COP0		0x10 | ||||||
| #define	OP_OP_COP1		0x11 | #define	OP_OP_COP1		0x11 | ||||||
| @@ -228,6 +232,12 @@ struct mips_opcode | |||||||
|    "J" 19 bit wait function code (OP_*_CODE19) |    "J" 19 bit wait function code (OP_*_CODE19) | ||||||
|    "x" accept and ignore register name |    "x" accept and ignore register name | ||||||
|    "z" must be zero register |    "z" must be zero register | ||||||
|  |    "K" 5 bit Hardware Register (rdhwr instruction) (OP_*_RD) | ||||||
|  |    "+A" 5 bit ins/ext position/lsb (OP_*_SHAMT) | ||||||
|  |    "+B" 5 bit "ins" size spec (OP_*_INSMSB).  Requires that "+A" | ||||||
|  | 	occur first! | ||||||
|  |    "+C" 5 bit "ext" msbd spec (OP_*_EXTMSBD).  Requires that "+A" | ||||||
|  | 	occur first! | ||||||
|  |  | ||||||
|    Floating point instructions: |    Floating point instructions: | ||||||
|    "D" 5 bit destination register (OP_*_FD) |    "D" 5 bit destination register (OP_*_FD) | ||||||
| @@ -268,11 +278,16 @@ struct mips_opcode | |||||||
|    "()" parens surrounding optional value |    "()" parens surrounding optional value | ||||||
|    ","  separates operands |    ","  separates operands | ||||||
|    "[]" brackets around index for vector-op scalar operand specifier (vr5400) |    "[]" brackets around index for vector-op scalar operand specifier (vr5400) | ||||||
|  |    "+"  Start of extension sequence. | ||||||
|  |  | ||||||
|    Characters used so far, for quick reference when adding more: |    Characters used so far, for quick reference when adding more: | ||||||
|    "%[]<>()," |    "%[]<>(),+" | ||||||
|    "ABCDEFGHIJLMNOPQRSTUVWXYZ" |    "ABCDEFGHIJKLMNOPQRSTUVWXYZ" | ||||||
|    "abcdefhijklopqrstuvwxz" |    "abcdefhijklopqrstuvwxz" | ||||||
|  |  | ||||||
|  |    Extension character sequences used so far ("+" followed by the | ||||||
|  |    following), for quick reference when adding more: | ||||||
|  |    "ABC" | ||||||
| */ | */ | ||||||
|  |  | ||||||
| /* These are the bits which may be set in the pinfo field of an | /* These are the bits which may be set in the pinfo field of an | ||||||
| @@ -364,6 +379,7 @@ struct mips_opcode | |||||||
| #define INSN_ISA5                 0x00000100 | #define INSN_ISA5                 0x00000100 | ||||||
| #define INSN_ISA32                0x00000200 | #define INSN_ISA32                0x00000200 | ||||||
| #define INSN_ISA64                0x00000400 | #define INSN_ISA64                0x00000400 | ||||||
|  | #define INSN_ISA32R2              0x00000800 | ||||||
|  |  | ||||||
| /* Masks used for MIPS-defined ASEs.  */ | /* Masks used for MIPS-defined ASEs.  */ | ||||||
| #define INSN_ASE_MASK		  0x0000f000 | #define INSN_ASE_MASK		  0x0000f000 | ||||||
| @@ -406,9 +422,12 @@ struct mips_opcode | |||||||
| #define       ISA_MIPS3       (ISA_MIPS2 | INSN_ISA3) | #define       ISA_MIPS3       (ISA_MIPS2 | INSN_ISA3) | ||||||
| #define       ISA_MIPS4       (ISA_MIPS3 | INSN_ISA4) | #define       ISA_MIPS4       (ISA_MIPS3 | INSN_ISA4) | ||||||
| #define       ISA_MIPS5       (ISA_MIPS4 | INSN_ISA5) | #define       ISA_MIPS5       (ISA_MIPS4 | INSN_ISA5) | ||||||
|  |  | ||||||
| #define       ISA_MIPS32      (ISA_MIPS2 | INSN_ISA32) | #define       ISA_MIPS32      (ISA_MIPS2 | INSN_ISA32) | ||||||
| #define       ISA_MIPS64      (ISA_MIPS5 | INSN_ISA32 | INSN_ISA64) | #define       ISA_MIPS64      (ISA_MIPS5 | INSN_ISA32 | INSN_ISA64) | ||||||
|  |  | ||||||
|  | #define       ISA_MIPS32R2    (ISA_MIPS32 | INSN_ISA32R2) | ||||||
|  |  | ||||||
| /* CPU defines, use instead of hardcoding processor number. Keep this | /* CPU defines, use instead of hardcoding processor number. Keep this | ||||||
|    in sync with bfd/archures.c in order for machine selection to work.  */ |    in sync with bfd/archures.c in order for machine selection to work.  */ | ||||||
| #define CPU_UNKNOWN	0               /* Gas internal use.  */ | #define CPU_UNKNOWN	0               /* Gas internal use.  */ | ||||||
| @@ -432,6 +451,7 @@ struct mips_opcode | |||||||
| #define CPU_R12000	12000 | #define CPU_R12000	12000 | ||||||
| #define CPU_MIPS16	16 | #define CPU_MIPS16	16 | ||||||
| #define CPU_MIPS32	32 | #define CPU_MIPS32	32 | ||||||
|  | #define CPU_MIPS32R2	33 | ||||||
| #define CPU_MIPS5       5 | #define CPU_MIPS5       5 | ||||||
| #define CPU_MIPS64      64 | #define CPU_MIPS64      64 | ||||||
| #define CPU_SB1         12310201        /* octal 'SB', 01.  */ | #define CPU_SB1         12310201        /* octal 'SB', 01.  */ | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user