* config/tc-ppc.c (md_begin): Permit mfdec to be duplicated on the
authorIan Lance Taylor <ian@airs.com>
Thu, 26 Jan 1995 23:41:12 +0000 (23:41 +0000)
committerIan Lance Taylor <ian@airs.com>
Thu, 26 Jan 1995 23:41:12 +0000 (23:41 +0000)
601.  Check that the error return from hash_insert is "exists".

gas/ChangeLog
gas/config/tc-ppc.c

index d64caec7ad9e9225f6e0bdf42608af5573cf2e08..9d8afc5c3c4aac893eaf76e8287d365563508df7 100644 (file)
@@ -1,3 +1,8 @@
+Thu Jan 26 18:38:01 1995  Ian Lance Taylor  <ian@cygnus.com>
+
+       * config/tc-ppc.c (md_begin): Permit mfdec to be duplicated on the
+       601.  Check that the error return from hash_insert is "exists".
+
 Thu Jan 26 11:35:33 1995  Michael Meissner  <meissner@cygnus.com>
 
        * configure: Add support for configuring powerpc-*-eabi.
index 8f7ecae486c36f0ca6f7cbd23bca39a728b7ab6a..6144d105519293bf24016da2625fba18fb6ba01f 100644 (file)
@@ -350,15 +350,23 @@ md_begin ()
          retval = hash_insert (ppc_hash, op->name, (PTR) op);
          if (retval != (const char *) NULL)
            {
-             /* When using -many, the comparison instructions are a
-                harmless special case.  */
-             if (ppc_cpu != (PPC_OPCODE_POWER
-                             | PPC_OPCODE_POWER2
-                             | PPC_OPCODE_PPC)
-                 || (strcmp (op->name, "cmpli") != 0
-                     && strcmp (op->name, "cmpi") != 0
-                     && strcmp (op->name, "cmp") != 0
-                     && strcmp (op->name, "cmpl") != 0))
+             /* We permit a duplication of the mfdec instruction on
+                the 601, because it seems to have one value on the
+                601 and a different value on other PowerPC
+                processors.  It's easier to permit a duplication than
+                to define a new instruction type flag.  When using
+                -many, the comparison instructions are a harmless
+                special case.  */
+             if (strcmp (retval, "exists") != 0
+                 || (((ppc_cpu & PPC_OPCODE_601) == 0
+                      || strcmp (op->name, "mfdec") != 0)
+                     && (ppc_cpu != (PPC_OPCODE_POWER
+                                     | PPC_OPCODE_POWER2
+                                     | PPC_OPCODE_PPC)
+                         || (strcmp (op->name, "cmpli") != 0
+                             && strcmp (op->name, "cmpi") != 0
+                             && strcmp (op->name, "cmp") != 0
+                             && strcmp (op->name, "cmpl") != 0))))
                abort ();
            }
        }