Don't deprecate powerpc mftb insn
authorAlan Modra <amodra@gmail.com>
Fri, 28 Nov 2014 02:51:52 +0000 (13:21 +1030)
committerAlan Modra <amodra@gmail.com>
Fri, 28 Nov 2014 04:04:10 +0000 (14:34 +1030)
mftb is marked phased out in the architecture manual, but we can keep
it as an extended mnemonic for mftbl.

* ppc-opc.c (powerpc_opcodes <mftb>): Don't deprecate for power7.
(TB): Delete.
(insert_tbr, extract_tbr): Validate tbr number.

opcodes/ChangeLog
opcodes/ppc-opc.c

index 2361a333d10303f88e6d032df4fe53e592d95b46..9a1d68c7787607b5eaf044b556f38102c9121e3a 100644 (file)
@@ -1,3 +1,9 @@
+2014-11-28  Alan Modra  <amodra@gmail.com>
+
+       * ppc-opc.c (powerpc_opcodes <mftb>): Don't deprecate for power7.
+       (TB): Delete.
+       (insert_tbr, extract_tbr): Validate tbr number.
+
 2014-11-24  H.J. Lu  <hongjiu.lu@intel.com>
 
        * configure: Regenerated.
index bcc0ca0d837b5814456b8a5a4ae40e49f1217403..4427465221d838d8520f68e0f36c29232cdf3f76 100644 (file)
@@ -1872,28 +1872,30 @@ extract_sprg (unsigned long insn,
    much, since the architecture manual does not define mftb as
    accepting any values other than 268 or 269.  */
 
-#define TB (268)
-
 static unsigned long
 insert_tbr (unsigned long insn,
            long value,
            ppc_cpu_t dialect ATTRIBUTE_UNUSED,
-           const char **errmsg ATTRIBUTE_UNUSED)
+           const char **errmsg)
 {
   if (value == 0)
-    value = TB;
+    value = 268;
+  if (value != 268 && value != 269)
+    *errmsg = _("invalid tbr number");
   return insn | ((value & 0x1f) << 16) | ((value & 0x3e0) << 6);
 }
 
 static long
 extract_tbr (unsigned long insn,
             ppc_cpu_t dialect ATTRIBUTE_UNUSED,
-            int *invalid ATTRIBUTE_UNUSED)
+            int *invalid)
 {
   long ret;
 
   ret = ((insn >> 16) & 0x1f) | ((insn >> 6) & 0x3e0);
-  if (ret == TB)
+  if (ret != 268 && ret != 269)
+    *invalid = 1;
+  if (ret == 268)
     ret = 0;
   return ret;
 }
@@ -5051,7 +5053,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
 
 {"mftbl",      XSPR(31,371,268), XSPR_MASK, PPC,       NO371,          {RT}},
 {"mftbu",      XSPR(31,371,269), XSPR_MASK, PPC,       NO371,          {RT}},
-{"mftb",       X(31,371),      X_MASK,      PPC|PPCA2, NO371|POWER7,   {RT, TBR}},
+{"mftb",       X(31,371),      X_MASK,      PPC|PPCA2, NO371,          {RT, TBR}},
 
 {"lwaux",      X(31,373),      X_MASK,      PPC64|PPCVLE, PPCNONE,     {RT, RAL, RB}},