* config/tc-mips.c (is_opcode_valid): Remove expansionp.
(macro_build): Change invocation of is_opcode_valid.
(mips_ip): Likewise.
gas/testsuite/
* gas/mips/mips-no-jalx.l: Delete.
* gas/mips/mips-no-jalx.s: Delete.
* gas/mips/mips-jalx-2.d: New.
* gas/mips/mips-jalx-2.s: New.
* gas/mips/mips.exp (mips-jalx-2): Run new test.
(mips-no-jalx): Remove deleted test.
include/
* opcode/mips.h (INSN_MIPS16): Remove.
opcodes/
* mips-dis.c (mips_arch): Remove INSN_MIPS16.
* mips-opc.c (I16): Remove.
(mips_builtin_op): Reclassify jalx.
+2010-05-26 Catherine Moore <clm@codesourcery.com>
+
+ * config/tc-mips.c (is_opcode_valid): Remove expansionp.
+ (macro_build): Change invocation of is_opcode_valid.
+ (mips_ip): Likewise.
+
2010-05-25 Nick Clifton <nickc@redhat.com>
* Makefile.am (MOSTLYCLEANFILES): Fix typo.
}
/* Return TRUE if opcode MO is valid on the currently selected ISA and
- architecture. If EXPANSIONP is TRUE then this check is done while
- expanding a macro. Use is_opcode_valid_16 for MIPS16 opcodes. */
+ architecture. Use is_opcode_valid_16 for MIPS16 opcodes. */
static bfd_boolean
-is_opcode_valid (const struct mips_opcode *mo, bfd_boolean expansionp)
+is_opcode_valid (const struct mips_opcode *mo)
{
int isa = mips_opts.isa;
int fp_s, fp_d;
if (mips_opts.ase_smartmips)
isa |= INSN_SMARTMIPS;
- /* For user code we don't check for mips_opts.mips16 since we want
- to allow jalx if -mips16 was specified on the command line. */
- if (expansionp ? mips_opts.mips16 : file_ase_mips16)
- isa |= INSN_MIPS16;
-
/* Don't accept instructions based on the ISA if the CPU does not implement
all the coprocessor insns. */
if (NO_ISA_COP (mips_opts.arch)
macros will never generate MDMX, MIPS-3D, or MT instructions. */
if (strcmp (fmt, mo->args) == 0
&& mo->pinfo != INSN_MACRO
- && is_opcode_valid (mo, TRUE))
+ && is_opcode_valid (mo))
break;
++mo;
gas_assert (strcmp (insn->name, str) == 0);
- ok = is_opcode_valid (insn, FALSE);
+ ok = is_opcode_valid (insn);
if (! ok)
{
if (insn + 1 < &mips_opcodes[NUMOPCODES]
+2010-05-26 Catherine Moore <clm@codesoucery.com>
+
+ * gas/mips/mips-no-jalx.l: Delete.
+ * gas/mips/mips-no-jalx.s: Delete.
+ * gas/mips/mips-jalx-2.d: New.
+ * gas/mips/mips-jalx-2.s: New.
+ * gas/mips/mips.exp (mips-jalx-2): Run new test.
+ (mips-no-jalx): Remove deleted test.
+
2010-05-25 Daniel Jacobowitz <dan@codesourcery.com>
Joseph Myers <joseph@codesourcery.com>
Andrew Stubbs <ams@codesourcery.com>
--- /dev/null
+#objdump: -d
+#as:
+#name: mips jalx-2
+
+.*: file format .*
+
+Disassembly of section .text:
+
+[ 0-9a-f]+ <text_sym>:
+[ 0-9a-f]+: 74000000 jalx 0 <.[^>]*>
+[ 0-9a-f]+: 00000000 nop
+
+[ 0-9a-f]+ <.[^>]*>:
+[ 0-9a-f]+: 6500 nop
+ \.\.\.
--- /dev/null
+text_sym:
+ .text
+ jalx 1f
+
+ .set mips16
+ .align 1
+1: nop
+ .set nomips16
+ .align 2
+ .fill 8
+++ /dev/null
-.*: Assembler messages:
-.*:3: Error: opcode not supported (at this ISA level|on this processor: .*) \(mips.*\) `jalx external_label'
+++ /dev/null
-# Test the generation of jalx opcodes
- .set nomips16
- jalx external_label
# Check jalx handling
run_dump_test "mips16-jalx"
run_dump_test "mips-jalx"
+ run_dump_test "mips-jalx-2"
# Check MIPS16 HI16/LO16 relocations
run_dump_test "mips16-hilo"
if $has_newabi {
}
run_dump_test "mips16-hilo-match"
}
- run_list_test "mips-no-jalx" "-32"
run_dump_test "delay"
run_dump_test "nodelay"
run_dump_test "mips4010"
+2010-05-26 Catherine Moore <clm@codesourcery.com>
+
+ * opcode/mips.h (INSN_MIPS16): Remove.
+
2010-04-21 Joseph Myers <joseph@codesourcery.com>
* tic6x-insn-formats.h (s_branch): Correct typo in bitmask.
/* DSP ASE */
#define INSN_DSP 0x00001000
#define INSN_DSP64 0x00002000
-/* MIPS 16 ASE */
-#define INSN_MIPS16 0x00004000
+
+/* 0x00004000 is unused. */
+
/* MIPS-3D ASE */
#define INSN_MIPS3D 0x00008000
+2010-05-26 Catherine Moore <clm@codesoourcery.com>
+
+ * mips-dis.c (mips_arch): Remove INSN_MIPS16.
+ * mips-opc.c (I16): Remove.
+ (mips_builtin_op): Reclassify jalx.
+
2010-05-19 Alan Modra <amodra@gmail.com>
* ppc-opc.c (powerpc_opcodes): Enable divdeu, devweu, divde,
MIPS32 Architecture_ (MIPS Document Number MD00082, Revision 0.95),
page 1. */
{ "mips32", 1, bfd_mach_mipsisa32, CPU_MIPS32,
- ISA_MIPS32 | INSN_MIPS16 | INSN_SMARTMIPS,
+ ISA_MIPS32 | INSN_SMARTMIPS,
mips_cp0_names_mips3264,
mips_cp0sel_names_mips3264, ARRAY_SIZE (mips_cp0sel_names_mips3264),
mips_hwr_names_numeric },
{ "mips32r2", 1, bfd_mach_mipsisa32r2, CPU_MIPS32R2,
- (ISA_MIPS32R2 | INSN_MIPS16 | INSN_SMARTMIPS | INSN_DSP | INSN_DSPR2
+ (ISA_MIPS32R2 | INSN_SMARTMIPS | INSN_DSP | INSN_DSPR2
| INSN_MIPS3D | INSN_MT),
mips_cp0_names_mips3264r2,
mips_cp0sel_names_mips3264r2, ARRAY_SIZE (mips_cp0sel_names_mips3264r2),
/* For stock MIPS64, disassemble all applicable MIPS-specified ASEs. */
{ "mips64", 1, bfd_mach_mipsisa64, CPU_MIPS64,
- ISA_MIPS64 | INSN_MIPS16 | INSN_MIPS3D | INSN_MDMX,
+ ISA_MIPS64 | INSN_MIPS3D | INSN_MDMX,
mips_cp0_names_mips3264,
mips_cp0sel_names_mips3264, ARRAY_SIZE (mips_cp0sel_names_mips3264),
mips_hwr_names_numeric },
{ "mips64r2", 1, bfd_mach_mipsisa64r2, CPU_MIPS64R2,
- (ISA_MIPS64R2 | INSN_MIPS16 | INSN_MIPS3D | INSN_DSP | INSN_DSPR2
+ (ISA_MIPS64R2 | INSN_MIPS3D | INSN_DSP | INSN_DSPR2
| INSN_DSP64 | INSN_MT | INSN_MDMX),
mips_cp0_names_mips3264r2,
mips_cp0sel_names_mips3264r2, ARRAY_SIZE (mips_cp0sel_names_mips3264r2),
/* This entry, mips16, is here only for ISA/processor selection; do
not print its name. */
- { "", 1, bfd_mach_mips16, CPU_MIPS16, ISA_MIPS3 | INSN_MIPS16,
+ { "", 1, bfd_mach_mips16, CPU_MIPS16, ISA_MIPS3,
mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric },
};
#define I4_33 INSN_ISA4_32R2
#define I5_33 INSN_ISA5_32R2
-/* MIPS16 ASE support. */
-#define I16 INSN_MIPS16
-
/* MIPS64 MIPS-3D ASE support. */
#define M3D INSN_MIPS3D
assembler, but will never match user input (because the line above
will match first). */
{"jal", "a", 0x0c000000, 0xfc000000, UBD|WR_31, 0, I1 },
-{"jalx", "a", 0x74000000, 0xfc000000, UBD|WR_31, 0, I16 },
+{"jalx", "a", 0x74000000, 0xfc000000, UBD|WR_31, 0, I1 },
{"la", "t,A(b)", 0, (int) M_LA_AB, INSN_MACRO, 0, I1 },
{"lb", "t,o(b)", 0x80000000, 0xfc000000, LDD|RD_b|WR_t, 0, I1 },
{"lb", "t,A(b)", 0, (int) M_LB_AB, INSN_MACRO, 0, I1 },