]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
* ppc-opc.c (extract_sprg): Correct operand range check.
authorAlan Modra <amodra@gmail.com>
Thu, 27 Nov 2008 10:51:53 +0000 (10:51 +0000)
committerAlan Modra <amodra@gmail.com>
Thu, 27 Nov 2008 10:51:53 +0000 (10:51 +0000)
opcodes/ChangeLog
opcodes/ppc-opc.c

index 2473c658252fae66a26206085cfa011ae56259b0..b990041dea53f5c9f7028077a6c32baabb47ebd4 100644 (file)
@@ -1,3 +1,7 @@
+2008-11-27  Alan Modra  <amodra@bigpond.net.au>
+
+       * ppc-opc.c (extract_sprg): Correct operand range check.
+
 2008-11-26  Andreas Schwab  <schwab@suse.de>
 
        * m68k-dis.c (NEXTBYTE, NEXTWORD, NEXTLONG, NEXTULONG, NEXTSINGLE)
index 0faf528ddcd004577a37676f54f970eb53077e8f..7d05f5f03b5d679c6704a06dab3444a6da82dfaa 100644 (file)
@@ -1281,10 +1281,10 @@ extract_sprg (unsigned long insn,
 
   /* mfsprg can use 260..263 and 272..279.  mtsprg only uses spr 272..279
      If not BOOKE or 405, then both use only 272..275.  */
-  if (val <= 3
-      || (val < 0x10 && (insn & 0x100) != 0)
-      || (val - 0x10 > 3
-         && (dialect & (PPC_OPCODE_BOOKE | PPC_OPCODE_403)) == 0))
+  if ((val - 0x10 > 3 && (dialect & (PPC_OPCODE_BOOKE | PPC_OPCODE_405)) == 0)
+      || (val - 0x10 > 7 && (insn & 0x100) != 0)
+      || val <= 3
+      || (val & 8) != 0)
     *invalid = 1;
   return val & 7;
 }