* config/tc-ppc.c (ppc_size): New static variable.
authorIan Lance Taylor <ian@airs.com>
Mon, 4 Apr 1994 16:42:16 +0000 (16:42 +0000)
committerIan Lance Taylor <ian@airs.com>
Mon, 4 Apr 1994 16:42:16 +0000 (16:42 +0000)
(ppc_arch): Check for PPC_OPCODE_PPC before PPC_OPCODE_POWER.
(md_begin): If an instruction has a size specific flag set, only
add it if we are assembling that size.

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

index 9255c57cc48a00097eb4e3632e1b851a07ce8863..369d394f8cc869884fc92b24909f2703a6f1879f 100644 (file)
@@ -1,3 +1,10 @@
+Mon Apr  4 12:39:23 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)
+
+       * config/tc-ppc.c (ppc_size): New static variable.
+       (ppc_arch): Check for PPC_OPCODE_PPC before PPC_OPCODE_POWER.
+       (md_begin): If an instruction has a size specific flag set, only
+       add it if we are assembling that size.
+
 Thu Mar 31 16:51:16 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)
 
        * config/tc-sparc.c (tc_gen_reloc): Add a gruesome hack to get
index 57f63def1b6171a51515beb53864fcb55747acd8..a9471456c1952d814b23cae5359c93b6095892a0 100644 (file)
@@ -116,10 +116,14 @@ const pseudo_typeS md_pseudo_table[] =
 \f
 /* Local variables.  */
 
-/* The type of processor we are assembling for.  This is one of the
-   PPC_OPCODE flags defined in opcode/ppc.h.  */
+/* The type of processor we are assembling for.  This is one or more
+   of the PPC_OPCODE flags defined in opcode/ppc.h.  */
 static int ppc_cpu = 0;
 
+/* The size of the processor we are assembling for.  This is either
+   PPC_OPCODE_32 or PPC_OPCODE_64.  */
+static int ppc_size = PPC_OPCODE_32;
+
 /* The endianness we are using.  */
 static int ppc_big_endian = PPC_BIG_ENDIAN;
 
@@ -284,10 +288,10 @@ ppc_arch ()
 {
   ppc_set_cpu ();
 
-  if ((ppc_cpu & PPC_OPCODE_POWER) != 0)
-    return bfd_arch_rs6000;
-  else if ((ppc_cpu & PPC_OPCODE_PPC) != 0)
+  if ((ppc_cpu & PPC_OPCODE_PPC) != 0)
     return bfd_arch_powerpc;
+  else if ((ppc_cpu & PPC_OPCODE_POWER) != 0)
+    return bfd_arch_rs6000;
   else
     abort ();
 }
@@ -314,7 +318,9 @@ md_begin ()
     {
       know ((op->opcode & op->mask) == op->opcode);
 
-      if ((op->flags & ppc_cpu) != 0)
+      if ((op->flags & ppc_cpu) != 0
+         && ((op->flags & (PPC_OPCODE_32 | PPC_OPCODE_64)) == 0
+             || (op->flags & (PPC_OPCODE_32 | PPC_OPCODE_64)) == ppc_size))
        {
          const char *retval;