From 3396de367a522c2e10a68389b48fc9e944d7cc04 Mon Sep 17 00:00:00 2001 From: Thiemo Seufer Date: Thu, 26 Sep 2002 09:56:35 +0000 Subject: [PATCH] /gas/ChangeLog * config/tc-mips.c (CPU_HAS_MIPS16): Add mips-lsi-elf as MIPS16 capable configuration. (macro_build): Check for MIPS16 capability, not for actual MIPS16 code generation. (mips_ip): Likewise. /gas/testsuite/ChangeLog * gas/mips/mips-jalx.d: New file, check jalx assembly. * gas/mips/mips-jalx.s: Likewise. * gas/mips/mips-no-jalx.l: Likewise. * gas/mips/mips-no-jalx.s: Likewise. * gas/mips/mips16-jalx.d: Likewise. * gas/mips/mips16-jalx.s: Likewise. * gas/mips/mips.exp: Add new tests. /opcodes/ChangeLog: * mips-dis.c (print_insn_mips): Always allow disassembly of 32-bit jalx opcode. --- gas/ChangeLog | 8 ++++++++ gas/config/tc-mips.c | 9 +++++---- gas/testsuite/ChangeLog | 10 ++++++++++ gas/testsuite/gas/mips/mips-jalx.d | 9 +++++++++ gas/testsuite/gas/mips/mips-jalx.s | 3 +++ gas/testsuite/gas/mips/mips-no-jalx.l | 2 ++ gas/testsuite/gas/mips/mips-no-jalx.s | 3 +++ gas/testsuite/gas/mips/mips.exp | 8 +++++++- gas/testsuite/gas/mips/mips16-jalx.d | 10 ++++++++++ gas/testsuite/gas/mips/mips16-jalx.s | 2 ++ opcodes/ChangeLog | 5 +++++ opcodes/mips-dis.c | 4 +++- 12 files changed, 67 insertions(+), 6 deletions(-) create mode 100644 gas/testsuite/gas/mips/mips-jalx.d create mode 100644 gas/testsuite/gas/mips/mips-jalx.s create mode 100644 gas/testsuite/gas/mips/mips-no-jalx.l create mode 100644 gas/testsuite/gas/mips/mips-no-jalx.s create mode 100644 gas/testsuite/gas/mips/mips16-jalx.d create mode 100644 gas/testsuite/gas/mips/mips16-jalx.s diff --git a/gas/ChangeLog b/gas/ChangeLog index eda63ad..d88670b 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,5 +1,13 @@ 2002-09-26 Thiemo Seufer + * config/tc-mips.c (CPU_HAS_MIPS16): Add mips-lsi-elf as MIPS16 + capable configuration. + (macro_build): Check for MIPS16 capability, not for actual MIPS16 code + generation. + (mips_ip): Likewise. + +2002-09-26 Thiemo Seufer + * config/tc-mips.c (append_insn): Fix jump overflow check. 2002-09-24 Alan Modra diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c index bd797c4..6d0c13f 100644 --- a/gas/config/tc-mips.c +++ b/gas/config/tc-mips.c @@ -284,8 +284,9 @@ static int mips_32bitmode = 0; #define HAVE_64BIT_ADDRESSES (! HAVE_32BIT_ADDRESSES) /* Return true if the given CPU supports the MIPS16 ASE. */ -#define CPU_HAS_MIPS16(cpu) \ - (strncmp (TARGET_CPU, "mips16", sizeof ("mips16") - 1) == 0) +#define CPU_HAS_MIPS16(cpu) \ + (strncmp (TARGET_CPU, "mips16", sizeof ("mips16") - 1) == 0 \ + || strncmp (TARGET_CANONICAL, "mips-lsi-elf", sizeof ("mips-lsi-elf") - 1) == 0) /* Return true if the given CPU supports the MIPS3D ASE. */ #define CPU_HAS_MIPS3D(cpu) ((cpu) == CPU_SB1 \ @@ -2713,7 +2714,7 @@ macro_build (place, counter, ep, name, fmt, va_alist) && insn.insn_mo->pinfo != INSN_MACRO && OPCODE_IS_MEMBER (insn.insn_mo, (mips_opts.isa - | (mips_opts.mips16 ? INSN_MIPS16 : 0)), + | (file_ase_mips16 ? INSN_MIPS16 : 0)), mips_arch) && (mips_arch != CPU_R4650 || (insn.insn_mo->pinfo & FP_D) == 0)) break; @@ -7809,7 +7810,7 @@ mips_ip (str, ip) if (OPCODE_IS_MEMBER (insn, (mips_opts.isa - | (mips_opts.mips16 ? INSN_MIPS16 : 0) + | (file_ase_mips16 ? INSN_MIPS16 : 0) | (mips_opts.ase_mdmx ? INSN_MDMX : 0) | (mips_opts.ase_mips3d ? INSN_MIPS3D : 0)), mips_arch)) diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 159a617..70db49d 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,5 +1,15 @@ 2002-09-26 Thiemo Seufer + * gas/mips/mips-jalx.d: New file, check jalx assembly. + * gas/mips/mips-jalx.s: Likewise. + * gas/mips/mips-no-jalx.l: Likewise. + * gas/mips/mips-no-jalx.s: Likewise. + * gas/mips/mips16-jalx.d: Likewise. + * gas/mips/mips16-jalx.s: Likewise. + * gas/mips/mips.exp: Add new tests. + +2002-09-26 Thiemo Seufer + * gas/mips/jal-range.s: Fix jump overflow check. * gas/mips/jal-range.l: Likewise. diff --git a/gas/testsuite/gas/mips/mips-jalx.d b/gas/testsuite/gas/mips/mips-jalx.d new file mode 100644 index 0000000..38badd6 --- /dev/null +++ b/gas/testsuite/gas/mips/mips-jalx.d @@ -0,0 +1,9 @@ +#objdump: -dr -mmips:4000 +#as: -mips3 -mtune=r4000 -mips16 +#name: mips jalx +.*: file format .* +Disassembly of section .text: +00000000 <.text>: + 0: 74000000 jalx 0x0 + 0: R_MIPS_26 external_label + 4: 00000000 nop diff --git a/gas/testsuite/gas/mips/mips-jalx.s b/gas/testsuite/gas/mips/mips-jalx.s new file mode 100644 index 0000000..84cbafd --- /dev/null +++ b/gas/testsuite/gas/mips/mips-jalx.s @@ -0,0 +1,3 @@ +# Test the generation of jalx opcodes + .set nomips16 + jalx external_label diff --git a/gas/testsuite/gas/mips/mips-no-jalx.l b/gas/testsuite/gas/mips/mips-no-jalx.l new file mode 100644 index 0000000..7c0e2fe --- /dev/null +++ b/gas/testsuite/gas/mips/mips-no-jalx.l @@ -0,0 +1,2 @@ +.*: Assembler messages: +.*:3: Error: opcode not supported at this ISA level \(mips.*\) `jalx external_label' diff --git a/gas/testsuite/gas/mips/mips-no-jalx.s b/gas/testsuite/gas/mips/mips-no-jalx.s new file mode 100644 index 0000000..84cbafd --- /dev/null +++ b/gas/testsuite/gas/mips/mips-no-jalx.s @@ -0,0 +1,3 @@ +# Test the generation of jalx opcodes + .set nomips16 + jalx external_label diff --git a/gas/testsuite/gas/mips/mips.exp b/gas/testsuite/gas/mips/mips.exp index 7a05ee6..aef1908 100644 --- a/gas/testsuite/gas/mips/mips.exp +++ b/gas/testsuite/gas/mips/mips.exp @@ -141,7 +141,13 @@ if { [istarget mips*-*-*] } then { } # The mips16 test can only be run on ELF, because only ELF # supports the necessary mips16 reloc. - if { $elf && !$no_mips16 } { run_dump_test "mips16" } + if { $elf && !$no_mips16 } { + run_dump_test "mips16" + # Check jalx handling + run_dump_test "mips16-jalx" + run_dump_test "mips-jalx" + } + run_list_test "mips-no-jalx" "" run_dump_test "delay" run_dump_test "nodelay" run_dump_test "mips4010" diff --git a/gas/testsuite/gas/mips/mips16-jalx.d b/gas/testsuite/gas/mips/mips16-jalx.d new file mode 100644 index 0000000..cb1cfac --- /dev/null +++ b/gas/testsuite/gas/mips/mips16-jalx.d @@ -0,0 +1,10 @@ +#objdump: -dr -mmips:4000 -mmips:16 +#as: -mips3 -mtune=r4000 -mips16 +#name: mips16 jalx +.*: file format .* +Disassembly of section .text: +00000000 <.text>: + 0: 1c00 0000 jalx 0x0 + 0: R_MIPS16_26 external_label + 4: 6500 nop + 6: 6500 nop diff --git a/gas/testsuite/gas/mips/mips16-jalx.s b/gas/testsuite/gas/mips/mips16-jalx.s new file mode 100644 index 0000000..3665df6 --- /dev/null +++ b/gas/testsuite/gas/mips/mips16-jalx.s @@ -0,0 +1,2 @@ +# Test the generation of jalx opcodes + jalx external_label diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index 760d400..487530a 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,3 +1,8 @@ +2002-09-26 Thiemo Seufer + + * mips-dis.c (print_insn_mips): Always allow disassembly of + 32-bit jalx opcode. + 2002-09-24 Nick Clifton * po/de.po: Updated German translation. diff --git a/opcodes/mips-dis.c b/opcodes/mips-dis.c index af44788..4ffdf99 100644 --- a/opcodes/mips-dis.c +++ b/opcodes/mips-dis.c @@ -526,7 +526,9 @@ print_insn_mips (memaddr, word, info) { register const char *d; - if (! OPCODE_IS_MEMBER (op, mips_isa, target_processor)) + /* We always allow to disassemble the jalx instruction. */ + if (! OPCODE_IS_MEMBER (op, mips_isa, target_processor) + && strcmp (op->name, "jalx")) continue; /* Figure out instruction type and branch delay information. */ -- 2.7.4