From 0b527c249c2606221c90ad4c83349a90eea93d82 Mon Sep 17 00:00:00 2001 From: Catherine Moore Date: Mon, 17 Jun 2013 22:59:10 +0000 Subject: 2013-06-17 Catherine Moore Maciej W. Rozycki Chao-Ying Fu gas/testsuite/ * gas/mips/mips.exp: Run new tests. * gas/mips/eva.d: New. * gas/mips/eva.s: New. * gas/mips/micromips@eva.d: New. gas/ * config/tc-mips.c (mips_set_options): Add ase_eva. (mips_set_options mips_opts): Add ase_eva. (file_ase_eva): Declare. (ISA_SUPPORTS_EVA_ASE): Define. (IS_SEXT_9BIT_NUM): Define. (MIPS_CPU_ASE_EVA): Define. (is_opcode_valid): Add support for ase_eva. (macro_build): Likewise. (macro): Likewise. (validate_mips_insn): Likewise. (validate_micromips_insn): Likewise. (mips_ip): Likewise. (options): Add OPTION_EVA and OPTION_NO_EVA. (md_longopts): Add -meva and -mno-eva. (md_parse_option): Process new options. (mips_after_parse_args): Check for valid EVA combinations. (s_mipsset): Likewise. include/ * opcode/mips.h (OP_SH_EVAOFFSET): Define. (OP_MASK_EVAOFFSET): Define. (INSN_ASE_MASK): Delete. (ASE_EVA): Define. (M_CACHEE_AB, M_CACHEE_OB): New. (M_LBE_OB, M_LBE_AB): New. (M_LBUE_OB, M_LBUE_AB): New. (M_LHE_OB, M_LHE_AB): New. (M_LHUE_OB, M_LHUE_AB): New. (M_LLE_AB, M_LLE_OB): New. (M_LWE_OB, M_LWE_AB): New. (M_LWLE_AB, M_LWLE_OB): New. (M_LWRE_AB, M_LWRE_OB): New. (M_PREFE_AB, M_PREFE_OB): New. (M_SCE_AB, M_SCE_OB): New. (M_SBE_OB, M_SBE_AB): New. (M_SHE_OB, M_SHE_AB): New. (M_SWE_OB, M_SWE_AB): New. (M_SWLE_AB, M_SWLE_OB): New. (M_SWRE_AB, M_SWRE_OB): New. (MICROMIPSOP_SH_EVAOFFSET): Define. (MICROMIPSOP_MASK_EVAOFFSET): Define. opcodes/ * micromips-opc.c (EVA): Define. (TLBINV): Define. (micromips_opcodes): Add EVA opcodes. * mips-dis.c (mips_arch_choices): Update for ASE_EVA. (print_insn_args): Handle EVA offsets. (print_insn_micromips): Likewise. * mips-opc.c (EVA): Define. (TLBINV): Define. (mips_builtin_opcodes): Add EVA opcodes. --- include/opcode/ChangeLog | 27 ++++++++++++++++++++++++ include/opcode/mips.h | 55 +++++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 77 insertions(+), 5 deletions(-) (limited to 'include') diff --git a/include/opcode/ChangeLog b/include/opcode/ChangeLog index ecf4b113d..4daf47bc0 100644 --- a/include/opcode/ChangeLog +++ b/include/opcode/ChangeLog @@ -1,3 +1,30 @@ +2013-06-17 Catherine Moore + Maciej W. Rozycki + Chao-Ying Fu + + * mips.h (OP_SH_EVAOFFSET): Define. + (OP_MASK_EVAOFFSET): Define. + (INSN_ASE_MASK): Delete. + (ASE_EVA): Define. + (M_CACHEE_AB, M_CACHEE_OB): New. + (M_LBE_OB, M_LBE_AB): New. + (M_LBUE_OB, M_LBUE_AB): New. + (M_LHE_OB, M_LHE_AB): New. + (M_LHUE_OB, M_LHUE_AB): New. + (M_LLE_AB, M_LLE_OB): New. + (M_LWE_OB, M_LWE_AB): New. + (M_LWLE_AB, M_LWLE_OB): New. + (M_LWRE_AB, M_LWRE_OB): New. + (M_PREFE_AB, M_PREFE_OB): New. + (M_SCE_AB, M_SCE_OB): New. + (M_SBE_OB, M_SBE_AB): New. + (M_SHE_OB, M_SHE_AB): New. + (M_SWE_OB, M_SWE_AB): New. + (M_SWLE_AB, M_SWLE_OB): New. + (M_SWRE_AB, M_SWRE_OB): New. + (MICROMIPSOP_SH_EVAOFFSET): Define. + (MICROMIPSOP_MASK_EVAOFFSET): Define. + 2013-06-12 Sandra Loosemore * nios2.h (OP_MATCH_ERET): Correct eret encoding. diff --git a/include/opcode/mips.h b/include/opcode/mips.h index 0bb9c1187..9d241e847 100644 --- a/include/opcode/mips.h +++ b/include/opcode/mips.h @@ -330,6 +330,10 @@ #define OP_MASK_IMMY 0 #define OP_SH_IMMY 0 +/* Enhanced VA Scheme */ +#define OP_SH_EVAOFFSET 7 +#define OP_MASK_EVAOFFSET 0x1ff + /* This structure holds information for a particular instruction. */ struct mips_opcode @@ -521,6 +525,9 @@ struct mips_opcode "+z" 5-bit rz register (OP_*_RZ) "+Z" 5-bit fz register (OP_*_FZ) + Enhanced VA Scheme: + "+j" 9-bit signed offset in bit 7 (OP_*_EVAOFFSET) + Other: "()" parens surrounding optional value "," separates operands @@ -537,7 +544,7 @@ struct mips_opcode following), for quick reference when adding more: "1234" "ABCDEFGHIJPQSTXZ" - "abcpstxz" + "abcjpstxz" */ /* These are the bits which may be set in the pinfo field of an @@ -733,9 +740,6 @@ static const unsigned int mips_isa_table[] = #define INSN_OCTEONP 0x00000200 #define INSN_OCTEON2 0x00000100 -/* Masks used for MIPS-defined ASEs. */ -#define INSN_ASE_MASK 0x3c00f0d0 - /* MIPS R5900 instruction */ #define INSN_5900 0x00004000 @@ -774,6 +778,8 @@ static const unsigned int mips_isa_table[] = #define ASE_DSP64 0x00000002 /* DSP R2 ASE */ #define ASE_DSPR2 0x00000004 +/* Enhanced VA Scheme */ +#define ASE_EVA 0x00000008 /* MCU (MicroController) ASE */ #define ASE_MCU 0x00000010 /* MDMX ASE */ @@ -1020,6 +1026,8 @@ enum M_BNEL_I, M_CACHE_AB, M_CACHE_OB, + M_CACHEE_AB, + M_CACHEE_OB, M_DABS, M_DADD_I, M_DADDU_I, @@ -1061,8 +1069,12 @@ enum M_LA_AB, M_LB_A, M_LB_AB, + M_LBE_OB, + M_LBE_AB, M_LBU_A, M_LBU_AB, + M_LBUE_OB, + M_LBUE_AB, M_LCA_AB, M_LD_A, M_LD_OB, @@ -1082,8 +1094,12 @@ enum M_LDR_OB, M_LH_A, M_LH_AB, + M_LHE_OB, + M_LHE_AB, M_LHU_A, M_LHU_AB, + M_LHUE_OB, + M_LHUE_AB, M_LI, M_LI_D, M_LI_DD, @@ -1093,10 +1109,14 @@ enum M_LL_OB, M_LLD_AB, M_LLD_OB, + M_LLE_AB, + M_LLE_OB, M_LQ_AB, M_LS_A, M_LW_A, M_LW_AB, + M_LWE_OB, + M_LWE_AB, M_LWC0_A, M_LWC0_AB, M_LWC1_A, @@ -1109,6 +1129,8 @@ enum M_LWL_A, M_LWL_AB, M_LWL_OB, + M_LWLE_AB, + M_LWLE_OB, M_LWM_AB, M_LWM_OB, M_LWP_AB, @@ -1116,6 +1138,8 @@ enum M_LWR_A, M_LWR_AB, M_LWR_OB, + M_LWRE_AB, + M_LWRE_OB, M_LWU_AB, M_LWU_OB, M_MSGSND, @@ -1134,6 +1158,8 @@ enum M_OR_I, M_PREF_AB, M_PREF_OB, + M_PREFE_AB, + M_PREFE_OB, M_REM_3, M_REM_3I, M_REMU_3, @@ -1158,6 +1184,8 @@ enum M_SC_OB, M_SCD_AB, M_SCD_OB, + M_SCE_AB, + M_SCE_OB, M_SD_A, M_SD_OB, M_SD_AB, @@ -1194,11 +1222,17 @@ enum M_SNE_I, M_SB_A, M_SB_AB, + M_SBE_OB, + M_SBE_AB, M_SH_A, M_SH_AB, + M_SHE_OB, + M_SHE_AB, M_SQ_AB, M_SW_A, M_SW_AB, + M_SWE_OB, + M_SWE_AB, M_SWC0_A, M_SWC0_AB, M_SWC1_A, @@ -1211,6 +1245,8 @@ enum M_SWL_A, M_SWL_AB, M_SWL_OB, + M_SWLE_AB, + M_SWLE_OB, M_SWM_AB, M_SWM_OB, M_SWP_AB, @@ -1218,6 +1254,8 @@ enum M_SWR_A, M_SWR_AB, M_SWR_OB, + M_SWRE_AB, + M_SWRE_OB, M_SUB_I, M_SUBU_I, M_SUBU_I_2, @@ -1638,6 +1676,10 @@ extern const int bfd_mips16_num_opcodes; #define MICROMIPSOP_SH_FZ 0 #define MICROMIPSOP_MASK_FZ 0 +/* microMIPS Enhanced VA Scheme */ +#define MICROMIPSOP_SH_EVAOFFSET 0 +#define MICROMIPSOP_MASK_EVAOFFSET 0x1ff + /* These are the characters which may appears in the args field of a microMIPS instruction. They appear in the order in which the fields appear when the instruction is used. Commas and parentheses in the args @@ -1795,6 +1837,9 @@ extern const int bfd_mips16_num_opcodes; "@" 10-bit signed immediate (MICROMIPSOP_*_IMM10) "^" 5-bit unsigned immediate (MICROMIPSOP_*_RD) + microMIPS Enhanced VA Scheme: + "+j" 9-bit signed offset in bit 0 (OP_*_EVAOFFSET) + Other: "()" parens surrounding optional value "," separates operands @@ -1809,7 +1854,7 @@ extern const int bfd_mips16_num_opcodes; Extension character sequences used so far ("+" followed by the following), for quick reference when adding more: - "" + "j" "" "ABCDEFGHI" "" -- cgit v1.2.3