2c2fa1
commit 8514e4db84ccafaf3be07e842be2fa2001ba876e
2c2fa1
Author: Alan Modra <amodra@gmail.com>
2c2fa1
Date:   Fri Nov 28 13:21:52 2014 +1030
2c2fa1
2c2fa1
    Don't deprecate powerpc mftb insn
2c2fa1
    
2c2fa1
    mftb is marked phased out in the architecture manual, but we can keep
2c2fa1
    it as an extended mnemonic for mftbl.
2c2fa1
    
2c2fa1
            * ppc-opc.c (powerpc_opcodes <mftb>): Don't deprecate for power7.
2c2fa1
            (TB): Delete.
2c2fa1
            (insert_tbr, extract_tbr): Validate tbr number.
2c2fa1
2c2fa1
### a/opcodes/ChangeLog
2c2fa1
### b/opcodes/ChangeLog
2c2fa1
## -1,3 +1,9 @@
2c2fa1
+2014-11-28  Alan Modra  <amodra@gmail.com>
2c2fa1
+
2c2fa1
+	* ppc-opc.c (powerpc_opcodes <mftb>): Don't deprecate for power7.
2c2fa1
+	(TB): Delete.
2c2fa1
+	(insert_tbr, extract_tbr): Validate tbr number.
2c2fa1
+
2c2fa1
 2014-11-24  H.J. Lu  <hongjiu.lu@intel.com>
2c2fa1
 
2c2fa1
 	* configure: Regenerated.
2c2fa1
--- a/opcodes/ppc-opc.c
2c2fa1
+++ b/opcodes/ppc-opc.c
2c2fa1
@@ -1872,28 +1872,30 @@ extract_sprg (unsigned long insn,
2c2fa1
    much, since the architecture manual does not define mftb as
2c2fa1
    accepting any values other than 268 or 269.  */
2c2fa1
 
2c2fa1
-#define TB (268)
2c2fa1
-
2c2fa1
 static unsigned long
2c2fa1
 insert_tbr (unsigned long insn,
2c2fa1
 	    long value,
2c2fa1
 	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2c2fa1
-	    const char **errmsg ATTRIBUTE_UNUSED)
2c2fa1
+	    const char **errmsg)
2c2fa1
 {
2c2fa1
   if (value == 0)
2c2fa1
-    value = TB;
2c2fa1
+    value = 268;
2c2fa1
+  if (value != 268 && value != 269)
2c2fa1
+    *errmsg = _("invalid tbr number");
2c2fa1
   return insn | ((value & 0x1f) << 16) | ((value & 0x3e0) << 6);
2c2fa1
 }
2c2fa1
 
2c2fa1
 static long
2c2fa1
 extract_tbr (unsigned long insn,
2c2fa1
 	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2c2fa1
-	     int *invalid ATTRIBUTE_UNUSED)
2c2fa1
+	     int *invalid)
2c2fa1
 {
2c2fa1
   long ret;
2c2fa1
 
2c2fa1
   ret = ((insn >> 16) & 0x1f) | ((insn >> 6) & 0x3e0);
2c2fa1
-  if (ret == TB)
2c2fa1
+  if (ret != 268 && ret != 269)
2c2fa1
+    *invalid = 1;
2c2fa1
+  if (ret == 268)
2c2fa1
     ret = 0;
2c2fa1
   return ret;
2c2fa1
 }
2c2fa1
@@ -5051,7 +5053,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
2c2fa1
 
2c2fa1
 {"mftbl",	XSPR(31,371,268), XSPR_MASK, PPC,	NO371,		{RT}},
2c2fa1
 {"mftbu",	XSPR(31,371,269), XSPR_MASK, PPC,	NO371,		{RT}},
2c2fa1
-{"mftb",	X(31,371),	X_MASK,      PPC|PPCA2,	NO371|POWER7,	{RT, TBR}},
2c2fa1
+{"mftb",	X(31,371),	X_MASK,      PPC|PPCA2,	NO371,		{RT, TBR}},
2c2fa1
 
2c2fa1
 {"lwaux",	X(31,373),	X_MASK,      PPC64|PPCVLE, PPCNONE,	{RT, RAL, RB}},
2c2fa1