Do not insert non-BookE32 instructions into the hash table if the target cpu
authorNick Clifton <nickc@redhat.com>
Wed, 4 Sep 2002 12:37:30 +0000 (12:37 +0000)
committerNick Clifton <nickc@redhat.com>
Wed, 4 Sep 2002 12:37:30 +0000 (12:37 +0000)
is the BookE32. (case 107575)

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

index f9466e97d75fcabca782a5fd781f020e5504f13c..2d8c4af9d3942aac83d9087b064221f4d2f977c3 100644 (file)
@@ -1,3 +1,8 @@
+2002-09-04  Nick Clifton  <nickc@redhat.com>
+
+       * config/tc-ppc.c (md_begin): Do not insert non-BookE32
+       instructions into the hash table if the target cpu is the BookE32.
+
 2002-08-31  Hans-Peter Nilsson  <hp@bitrange.com>
 
        * read.c (do_align): Use ATTRIBUTE_UNUSED_LABEL for label, not
index b19e04d46b0c10a6f30544a51c974339d11e7548..b7679f97368ed440d56e12db75ac3847171c368d 100644 (file)
@@ -1207,6 +1207,14 @@ md_begin ()
              || ((op->flags & (PPC_OPCODE_32 | PPC_OPCODE_64))
                  == (ppc_cpu & (PPC_OPCODE_32 | PPC_OPCODE_64)))
              || (ppc_cpu & PPC_OPCODE_64_BRIDGE) != 0)
+         /* Certain instructions (eg: extsw) do not exist in the
+            32-bit BookE instruction set, but they do exist in the
+            64-bit BookE instruction set, and other PPC instruction
+            sets.  Check to see if the opcode has the BOOKE64 flag set.
+            If it does make sure that the target CPU is not the BookE32.  */
+         && ((op->flags & PPC_OPCODE_BOOKE64) == 0
+             || (ppc_cpu & PPC_OPCODE_BOOKE64) == PPC_OPCODE_BOOKE64
+             || (ppc_cpu & PPC_OPCODE_BOOKE) == 0)
          && ((op->flags & (PPC_OPCODE_POWER4 | PPC_OPCODE_NOPOWER4)) == 0
              || ((op->flags & PPC_OPCODE_POWER4)
                  == (ppc_cpu & PPC_OPCODE_POWER4))))
index 9f0d0d193bbb8fc55f23facf5d08828844058064..f1c202822dcfc56d45460a7924771d4fd525cfe1 100644 (file)
@@ -1,3 +1,7 @@
+2002-09-04  Nick Clifton  <nickc@redhat.com>
+
+       * ppc-opc.c (extsw, extsw.): Do not allow for the BookE32.
+
 2002-09-04  Nick Clifton  <nickc@redhat.com>
 
        * disassemble.c (disassembler_usage): Add invocation of
index ff7e8d7628092fad7ff2cf0c600e3b73543f6c85..1a8627f7eb2a5ce324fe50fed926c6ba53b03d69 100644 (file)
@@ -4238,8 +4238,8 @@ const struct powerpc_opcode powerpc_opcodes[] = {
 
 { "stfiwx",  X(31,983),        X_MASK,         PPC,            { FRS, RA, RB } },
 
-{ "extsw",   XRC(31,986,0), XRB_MASK,  PPC,            { RA, RS } },
-{ "extsw.",  XRC(31,986,1), XRB_MASK,  PPC,            { RA, RS } },
+{ "extsw",   XRC(31,986,0), XRB_MASK,  PPC | BOOKE64,  { RA, RS } },
+{ "extsw.",  XRC(31,986,1), XRB_MASK,  PPC | BOOKE64,  { RA, RS } },
 
 { "icread",  X(31,998),        XRT_MASK,       PPC403,         { RA, RB } },