This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Patch to add rm7000/rm9000 support


This patch adds support for the rm7000 and rm9000.  Approved by Eric
(many moons ago), finally committed.

Richard


include/opcode/
	* mips.h (CPU_RM7000): New macro.
	(OPCODE_IS_MEMBER): Match CPU_RM7000 against 4650 insns.

bfd/
	* archures.c (bfd_mach_mips7000): New.
	* bfd-in2.h: Regenerated.
	* cpu-mips.c (arch_info_struct): Add an entry for mips:7000.
	* elfxx-mips.c (mips_set_isa_flags): Handle bfd_mach_mips7000.
	(mips_mach_extensions): Add an entry for it.

opcodes/
	* mips-dis.c (mips_arch_choices): Add rm7000 and rm9000 entries.

gas/
	* config/tc-mips.c (hilo_interlocks): True for CPU_RM7000.
	(mips_cpu_info_table): Add rm7000 and rm9000 entries.

gas/testsuite/
	* gas/mips/rm7000.[sd]: New test.
	* gas/mips/mips.exp: Run it.

Index: include/opcode/mips.h
===================================================================
RCS file: /cvs/src/src/include/opcode/mips.h,v
retrieving revision 1.35
diff -u -d -p -F^\([(a-zA-Z0-9_]\|#define\) -r1.35 mips.h
--- include/opcode/mips.h	9 Apr 2003 00:12:24 -0000	1.35
+++ include/opcode/mips.h	15 Jul 2003 07:42:38 -0000
@@ -451,6 +451,7 @@ #define CPU_R5000	5000
 #define CPU_VR5400	5400
 #define CPU_VR5500	5500
 #define CPU_R6000	6000
+#define CPU_RM7000	7000
 #define CPU_R8000	8000
 #define CPU_R10000	10000
 #define CPU_R12000	12000
@@ -469,6 +470,7 @@ #define CPU_SB1         12310201        
 #define OPCODE_IS_MEMBER(insn, isa, cpu)				\
     (((insn)->membership & isa) != 0					\
      || (cpu == CPU_R4650 && ((insn)->membership & INSN_4650) != 0)	\
+     || (cpu == CPU_RM7000 && ((insn)->membership & INSN_4650) != 0)	\
      || (cpu == CPU_R4010 && ((insn)->membership & INSN_4010) != 0)	\
      || (cpu == CPU_VR4100 && ((insn)->membership & INSN_4100) != 0)	\
      || (cpu == CPU_R3900 && ((insn)->membership & INSN_3900) != 0)	\
Index: bfd/archures.c
===================================================================
RCS file: /cvs/src/src/bfd/archures.c,v
retrieving revision 1.78
diff -u -d -p -F^\([(a-zA-Z0-9_]\|#define\) -r1.78 archures.c
--- bfd/archures.c	10 Jul 2003 02:53:10 -0000	1.78
+++ bfd/archures.c	15 Jul 2003 07:42:38 -0000
@@ -138,6 +138,7 @@ DESCRIPTION
 .#define bfd_mach_mips5400		5400
 .#define bfd_mach_mips5500		5500
 .#define bfd_mach_mips6000		6000
+.#define bfd_mach_mips7000		7000
 .#define bfd_mach_mips8000		8000
 .#define bfd_mach_mips10000		10000
 .#define bfd_mach_mips12000		12000
Index: bfd/bfd-in2.h
===================================================================
RCS file: /cvs/src/src/bfd/bfd-in2.h,v
retrieving revision 1.229
diff -u -d -p -F^\([(a-zA-Z0-9_]\|#define\) -r1.229 bfd-in2.h
--- bfd/bfd-in2.h	11 Jul 2003 14:59:40 -0000	1.229
+++ bfd/bfd-in2.h	15 Jul 2003 07:42:39 -0000
@@ -1568,6 +1568,7 @@ #define bfd_mach_mips5000              5
 #define bfd_mach_mips5400              5400
 #define bfd_mach_mips5500              5500
 #define bfd_mach_mips6000              6000
+#define bfd_mach_mips7000              7000
 #define bfd_mach_mips8000              8000
 #define bfd_mach_mips10000             10000
 #define bfd_mach_mips12000             12000
Index: bfd/cpu-mips.c
===================================================================
RCS file: /cvs/src/src/bfd/cpu-mips.c,v
retrieving revision 1.17
diff -u -d -p -F^\([(a-zA-Z0-9_]\|#define\) -r1.17 cpu-mips.c
--- bfd/cpu-mips.c	31 Dec 2002 07:29:25 -0000	1.17
+++ bfd/cpu-mips.c	15 Jul 2003 07:42:39 -0000
@@ -76,6 +76,7 @@ enum
   I_mips5400,
   I_mips5500,
   I_mips6000,
+  I_mips7000,
   I_mips8000,
   I_mips10000,
   I_mips12000,
@@ -106,6 +107,7 @@ static const bfd_arch_info_type arch_inf
   N (64, 64, bfd_mach_mips5400, "mips:5400",      FALSE, NN(I_mips5400)),
   N (64, 64, bfd_mach_mips5500, "mips:5500",      FALSE, NN(I_mips5500)),
   N (32, 32, bfd_mach_mips6000, "mips:6000",      FALSE, NN(I_mips6000)),
+  N (64, 64, bfd_mach_mips7000, "mips:7000",      FALSE, NN(I_mips7000)),
   N (64, 64, bfd_mach_mips8000, "mips:8000",      FALSE, NN(I_mips8000)),
   N (64, 64, bfd_mach_mips10000,"mips:10000",     FALSE, NN(I_mips10000)),
   N (64, 64, bfd_mach_mips12000,"mips:12000",     FALSE, NN(I_mips12000)),
Index: bfd/elfxx-mips.c
===================================================================
RCS file: /cvs/src/src/bfd/elfxx-mips.c,v
retrieving revision 1.69
diff -u -d -p -F^\([(a-zA-Z0-9_]\|#define\) -r1.69 elfxx-mips.c
--- bfd/elfxx-mips.c	9 Jul 2003 11:55:49 -0000	1.69
+++ bfd/elfxx-mips.c	15 Jul 2003 07:42:41 -0000
@@ -7163,6 +7163,7 @@ mips_set_isa_flags (abfd)
       break;
 
     case bfd_mach_mips5000:
+    case bfd_mach_mips7000:
     case bfd_mach_mips8000:
     case bfd_mach_mips10000:
     case bfd_mach_mips12000:
@@ -8945,6 +8946,7 @@ static const struct mips_mach_extension 
   { bfd_mach_mips5, bfd_mach_mips8000 },
   { bfd_mach_mips10000, bfd_mach_mips8000 },
   { bfd_mach_mips5000, bfd_mach_mips8000 },
+  { bfd_mach_mips7000, bfd_mach_mips8000 },
 
   /* VR4100 extensions.  */
   { bfd_mach_mips4120, bfd_mach_mips4100 },
Index: opcodes/mips-dis.c
===================================================================
RCS file: /cvs/src/src/opcodes/mips-dis.c,v
retrieving revision 1.44
diff -u -d -p -F^\([(a-zA-Z0-9_]\|#define\) -r1.44 mips-dis.c
--- opcodes/mips-dis.c	9 Jul 2003 22:53:52 -0000	1.44
+++ opcodes/mips-dis.c	15 Jul 2003 07:42:42 -0000
@@ -347,6 +347,10 @@ const struct mips_arch_choice mips_arch_
     mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric },
   { "r6000",	1, bfd_mach_mips6000, CPU_R6000, ISA_MIPS2,
     mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric },
+  { "rm7000",	1, bfd_mach_mips7000, CPU_RM7000, ISA_MIPS4,
+    mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric },
+  { "rm9000",	1, bfd_mach_mips7000, CPU_RM7000, ISA_MIPS4,
+    mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric },
   { "r8000",	1, bfd_mach_mips8000, CPU_R8000, ISA_MIPS4,
     mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric },
   { "r10000",	1, bfd_mach_mips10000, CPU_R10000, ISA_MIPS4,
Index: gas/config/tc-mips.c
===================================================================
RCS file: /cvs/src/src/gas/config/tc-mips.c,v
retrieving revision 1.225
diff -u -d -p -F^\([(a-zA-Z0-9_]\|#define\) -r1.225 tc-mips.c
--- gas/config/tc-mips.c	9 Jul 2003 01:27:30 -0000	1.225
+++ gas/config/tc-mips.c	15 Jul 2003 07:42:45 -0000
@@ -336,6 +336,7 @@ #define CPU_HAS_ROR(CPU)	CPU_HAS_DROR (C
 
 #define hilo_interlocks (mips_opts.arch == CPU_R4010                       \
                          || mips_opts.arch == CPU_VR5500                   \
+                         || mips_opts.arch == CPU_RM7000                   \
                          || mips_opts.arch == CPU_SB1                      \
                          )
 
@@ -14289,7 +14290,8 @@ static const struct mips_cpu_info mips_c
   { "rm5231",         0,      ISA_MIPS4,      CPU_R5000 },
   { "rm5261",         0,      ISA_MIPS4,      CPU_R5000 },
   { "rm5721",         0,      ISA_MIPS4,      CPU_R5000 },
-  { "r7000",          0,      ISA_MIPS4,      CPU_R5000 },
+  { "rm7000",         0,      ISA_MIPS4,      CPU_RM7000 },
+  { "rm9000",         0,      ISA_MIPS4,      CPU_RM7000 },
 
   /* MIPS 32 */
   { "4kc",            0,      ISA_MIPS32,     CPU_MIPS32 },
Index: gas/testsuite/gas/mips/mips.exp
===================================================================
RCS file: /cvs/src/src/gas/testsuite/gas/mips/mips.exp,v
retrieving revision 1.76
diff -u -d -p -F^\([(a-zA-Z0-9_]\|#define\) -r1.76 mips.exp
--- gas/testsuite/gas/mips/mips.exp	9 Jul 2003 01:27:30 -0000	1.76
+++ gas/testsuite/gas/mips/mips.exp	15 Jul 2003 07:42:45 -0000
@@ -552,6 +552,7 @@ if { [istarget mips*-*-*] } then {
     run_dump_test "vr4122"
     run_dump_test "vr5400"
     run_dump_test "vr5500"
+    run_dump_test "rm7000"
     run_dump_test "perfcount"
     run_dump_test "lineno"
     run_dump_test "sync"
--- /dev/null	Thu Apr 11 15:25:15 2002
+++ gas/testsuite/gas/mips/rm7000.d	Tue Jul 15 08:25:52 2003
@@ -0,0 +1,14 @@
+#objdump: -dr -M gpr-names=numeric -m mips:7000
+#name: MIPS RM7000
+#as: -march=rm7000
+
+.*: +file format .*mips.*
+
+Disassembly of section \.text:
+
+0+000 <\.text>:
+ * 0:	70a62002 *	mul	\$4,\$5,\$6
+ * 4:	70850000 *	mad	\$4,\$5
+ * 8:	70a60001 *	madu	\$5,\$6
+ * c:	00003812 *	mflo	\$7
+ *10:	01000011 *	mthi	\$8
--- /dev/null	Thu Apr 11 15:25:15 2002
+++ gas/testsuite/gas/mips/rm7000.s	Tue Jul 15 08:24:53 2003
@@ -0,0 +1,5 @@
+	mul	$4,$5,$6
+	mad	$4,$5
+	madu	$5,$6
+	mflo	$7
+	mthi	$8	# No delay needed


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]