binutils/ChangeLog:
* doc/binutils.texi: Document -Mvirt disassembler option. gas/ChangeLog: * config/tc-mips.c (struct mips_set_options): New ase_virt field. (mips_opts): Update for the new field. (file_ase_virt): New variable. (ISA_SUPPORTS_VIRT_ASE): New macro. (ISA_SUPPORTS_VIRT64_ASE): New macro. (MIPS_CPU_ASE_VIRT): New define. (is_opcode_valid): Handle ase_virt. (macro_build): Handle "+J". (validate_mips_insn): Likewise. (mips_ip): Likewise. (enum options): Add OPTION_VIRT and OPTION_NO_VIRT. (md_longopts): Add mvirt and mnovirt (md_parse_option): Handle OPTION_VIRT and OPTION_NO_VIRT. (mips_after_parse_args): Handle ase_virt field. (s_mipsset): Handle "virt" and "novirt". (mips_elf_final_processing): Add a comment about virt ASE might need a new flag. (md_show_usage): Print out the usage of -mvirt and mno-virt options. * doc/c-mips.texi: Document -mvirt and -mno-virt. Document ".set virt" and ".set novirt". gas/testsuite/ChangeLog: * gas/mips/mips.exp: Run virt and virt64 testcases. * gas/mips/virt.d: New file. * gas/mips/virt.s: New file. * gas/mips/virt64.d: New file. * gas/mips/virt64.s: New file. include/opcode/ChangeLog: * mips.h (OP_MASK_CODE10): Correct definition. (OP_SH_CODE10): Likewise. Add a comment that "+J" is used now for OP_*CODE10. (INSN_ASE_MASK): Update. (INSN_VIRT): New macro. (INSN_VIRT64): New macro opcodes/ChangeLog: * mips-dis.c (mips_arch_choices): Add INSN_VIRT to mips32r2 . Add INSN_VIRT and INSN_VIRT64 to mips64r2. (parse_mips_dis_option): Handle the virt option. (print_insn_args): Handle "+J". (print_mips_disassembler_options): Print out message about virt64. * mips-opc.c (IVIRT): New define. (IVIRT64): New define. (mips_builtin_opcodes): Add dmfgc0, dmtgc0, hypcall, mfgc0, mtgc0, tlbgr, tlbgwi, tlbginv, tlbginvf, tlbgwr, tlbgp VIRT instructions. Move rfe to the bottom as it conflicts with tlbgp.
This commit is contained in:
		| @@ -1,3 +1,12 @@ | ||||
| 2013-05-09  Andrew Pinski  <apinski@cavium.com> | ||||
|  | ||||
| 	* mips.h (OP_MASK_CODE10): Correct definition. | ||||
| 	(OP_SH_CODE10): Likewise. | ||||
| 	Add a comment that "+J" is used now for OP_*CODE10. | ||||
| 	(INSN_ASE_MASK): Update. | ||||
| 	(INSN_VIRT): New macro. | ||||
| 	(INSN_VIRT64): New macro | ||||
|  | ||||
| 2013-05-02  Nick Clifton  <nickc@redhat.com> | ||||
|  | ||||
| 	* msp430.h: Add patterns for MSP430X instructions. | ||||
|   | ||||
| @@ -212,6 +212,10 @@ | ||||
| #define	OP_OP_SDC2		0x3e | ||||
| #define	OP_OP_SDC3		0x3f	/* a.k.a. sd */ | ||||
|  | ||||
| /* MIPS VIRT ASE */ | ||||
| #define OP_MASK_CODE10		0x3ff | ||||
| #define OP_SH_CODE10		11 | ||||
|  | ||||
| /* Values in the 'VSEL' field.  */ | ||||
| #define MDMX_FMTSEL_IMM_QH	0x1d | ||||
| #define MDMX_FMTSEL_IMM_OB	0x1e | ||||
| @@ -255,8 +259,6 @@ | ||||
|    of the operand handling in GAS.  The fields below only exist | ||||
|    in the microMIPS encoding, so define each one to have an empty | ||||
|    range.  */ | ||||
| #define OP_MASK_CODE10		0 | ||||
| #define OP_SH_CODE10		0 | ||||
| #define OP_MASK_TRAP		0 | ||||
| #define OP_SH_TRAP		0 | ||||
| #define OP_MASK_OFFSET10	0 | ||||
| @@ -486,6 +488,9 @@ struct mips_opcode | ||||
|    "~" 12 bit offset (OP_*_OFFSET12) | ||||
|    "\" 3 bit position for aset and aclr (OP_*_3BITPOS) | ||||
|  | ||||
|    VIRT ASE usage: | ||||
|    "+J" 10-bit hypcall code (OP_*CODE10) | ||||
|  | ||||
|    UDI immediates: | ||||
|    "+1" UDI immediate bits 6-10 | ||||
|    "+2" UDI immediate bits 6-15 | ||||
| @@ -528,7 +533,7 @@ struct mips_opcode | ||||
|    Extension character sequences used so far ("+" followed by the | ||||
|    following), for quick reference when adding more: | ||||
|    "1234" | ||||
|    "ABCDEFGHIPQSTXZ" | ||||
|    "ABCDEFGHIJPQSTXZ" | ||||
|    "abcpstxz" | ||||
| */ | ||||
|  | ||||
| @@ -726,7 +731,7 @@ static const unsigned int mips_isa_table[] = | ||||
| #define INSN_OCTEON2		  0x00000100 | ||||
|  | ||||
| /* Masks used for MIPS-defined ASEs.  */ | ||||
| #define INSN_ASE_MASK		  0x3c00f010 | ||||
| #define INSN_ASE_MASK		  0x3c00f0d0 | ||||
|  | ||||
| /* DSP ASE */  | ||||
| #define INSN_DSP                  0x00001000 | ||||
| @@ -735,6 +740,10 @@ static const unsigned int mips_isa_table[] = | ||||
| /* MIPS R5900 instruction */ | ||||
| #define INSN_5900                 0x00004000 | ||||
|  | ||||
| /* Virtualization ASE */ | ||||
| #define INSN_VIRT		  0x00000080 | ||||
| #define INSN_VIRT64		  0x00000040 | ||||
|  | ||||
| /* MIPS-3D ASE */ | ||||
| #define INSN_MIPS3D               0x00008000 | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user