aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gas/ChangeLog6
-rw-r--r--gas/config/tc-ppc.c5
-rw-r--r--opcodes/ChangeLog5
-rw-r--r--opcodes/ppc-opc.c2
4 files changed, 14 insertions, 4 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 6a7deec..4d5bf6a 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,9 @@
+2007-04-30 Alan Modra <amodra@bigpond.net.au>
+
+ PR 4436
+ * config/tc-ppc.c (ppc_insert_operand): Disable range check if
+ min > max.
+
2007-04-28 Thiemo Seufer <ths@networkno.de>
* config/tc-mips.c: Fix comment.
diff --git a/gas/config/tc-ppc.c b/gas/config/tc-ppc.c
index 978f0f3..4fe9f5a 100644
--- a/gas/config/tc-ppc.c
+++ b/gas/config/tc-ppc.c
@@ -1516,7 +1516,7 @@ ppc_insert_operand (insn, operand, val, file, line)
{
long min, max, right;
offsetT test;
-
+
max = operand->bitm;
right = max & -max;
min = 0;
@@ -1554,8 +1554,7 @@ ppc_insert_operand (insn, operand, val, file, line)
else
test = val;
- if (test < (offsetT) min
- || test > (offsetT) max
+ if ((min <= max && (test < (offsetT) min || test > (offsetT) max))
|| (test & (right - 1)) != 0)
as_bad_value_out_of_range (_("operand"),
test, (offsetT) min, (offsetT) max, file, line);
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index a3849e5..0fa39c1 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,3 +1,8 @@
+2007-04-30 Alan Modra <amodra@bigpond.net.au>
+
+ PR 4436
+ * ppc-opc.c (powerpc_operands): Correct bitm for second entry of MBE.
+
2007-04-27 H.J. Lu <hongjiu.lu@intel.com>
* i386-dis.c (modrm): Put reg before rm.
diff --git a/opcodes/ppc-opc.c b/opcodes/ppc-opc.c
index 50a33f3..5e2fb28 100644
--- a/opcodes/ppc-opc.c
+++ b/opcodes/ppc-opc.c
@@ -317,7 +317,7 @@ const struct powerpc_operand powerpc_operands[] =
description in opcode/ppc.h for what this means. */
#define MBE ME + 1
{ 0x1f, 6, NULL, NULL, PPC_OPERAND_OPTIONAL | PPC_OPERAND_NEXT },
- { 0xff, 0, insert_mbe, extract_mbe, 0 },
+ { -1, 0, insert_mbe, extract_mbe, 0 },
/* The MB or ME field in an MD or MDS form instruction. The high
bit is wrapped to the low end. */