* ppc-opc.c: Remove NULL pointer checks. Formatting. Remove

extraneous ATTRIBUTE_UNUSED.
	* ppc-dis.c (print_insn_powerpc): Always pass a valid address to
	operand->extract.
This commit is contained in:
Alan Modra 2003-07-07 01:34:04 +00:00
parent 503e66900f
commit 8427c42425
3 changed files with 79 additions and 93 deletions

View File

@ -1,3 +1,10 @@
2003-07-07 Alan Modra <amodra@bigpond.net.au>
* ppc-opc.c: Remove NULL pointer checks. Formatting. Remove
extraneous ATTRIBUTE_UNUSED.
* ppc-dis.c (print_insn_powerpc): Always pass a valid address to
operand->extract.
2003-07-04 Alan Modra <amodra@bigpond.net.au>
* ppc-opc.c: Convert to C90, removing unnecessary prototypes and

View File

@ -1,5 +1,6 @@
/* ppc-dis.c -- Disassemble PowerPC instructions
Copyright 1994, 1995, 2000, 2001, 2002 Free Software Foundation, Inc.
Copyright 1994, 1995, 2000, 2001, 2002, 2003
Free Software Foundation, Inc.
Written by Ian Lance Taylor, Cygnus Support
This file is part of GDB, GAS, and the GNU binutils.
@ -214,7 +215,7 @@ print_insn_powerpc (memaddr, info, bigendian, dialect)
/* Extract the value from the instruction. */
if (operand->extract)
value = (*operand->extract) (insn, dialect, (int *) NULL);
value = (*operand->extract) (insn, dialect, &invalid);
else
{
value = (insn >> operand->shift) & ((1 << operand->bits) - 1);

View File

@ -563,8 +563,7 @@ extract_bat (unsigned long insn,
int dialect ATTRIBUTE_UNUSED,
int *invalid)
{
if (invalid != NULL
&& ((insn >> 21) & 0x1f) != ((insn >> 16) & 0x1f))
if (((insn >> 21) & 0x1f) != ((insn >> 16) & 0x1f))
*invalid = 1;
return 0;
}
@ -590,8 +589,7 @@ extract_bba (unsigned long insn,
int dialect ATTRIBUTE_UNUSED,
int *invalid)
{
if (invalid != NULL
&& ((insn >> 16) & 0x1f) != ((insn >> 11) & 0x1f))
if (((insn >> 16) & 0x1f) != ((insn >> 11) & 0x1f))
*invalid = 1;
return 0;
}
@ -658,20 +656,18 @@ extract_bdm (unsigned long insn,
int dialect,
int *invalid)
{
if (invalid != NULL)
if ((dialect & PPC_OPCODE_POWER4) == 0)
{
if ((dialect & PPC_OPCODE_POWER4) == 0)
{
if (((insn & (1 << 21)) == 0) != ((insn & (1 << 15)) == 0))
*invalid = 1;
}
else
{
if ((insn & (0x17 << 21)) != (0x06 << 21)
&& (insn & (0x1d << 21)) != (0x18 << 21))
*invalid = 1;
}
if (((insn & (1 << 21)) == 0) != ((insn & (1 << 15)) == 0))
*invalid = 1;
}
else
{
if ((insn & (0x17 << 21)) != (0x06 << 21)
&& (insn & (0x1d << 21)) != (0x18 << 21))
*invalid = 1;
}
return ((insn & 0xfffc) ^ 0x8000) - 0x8000;
}
@ -706,20 +702,18 @@ extract_bdp (unsigned long insn,
int dialect,
int *invalid)
{
if (invalid != NULL)
if ((dialect & PPC_OPCODE_POWER4) == 0)
{
if ((dialect & PPC_OPCODE_POWER4) == 0)
{
if (((insn & (1 << 21)) == 0) == ((insn & (1 << 15)) == 0))
*invalid = 1;
}
else
{
if ((insn & (0x17 << 21)) != (0x07 << 21)
&& (insn & (0x1d << 21)) != (0x19 << 21))
*invalid = 1;
}
if (((insn & (1 << 21)) == 0) == ((insn & (1 << 15)) == 0))
*invalid = 1;
}
else
{
if ((insn & (0x17 << 21)) != (0x07 << 21)
&& (insn & (0x1d << 21)) != (0x19 << 21))
*invalid = 1;
}
return ((insn & 0xfffc) ^ 0x8000) - 0x8000;
}
@ -783,8 +777,7 @@ insert_bo (unsigned long insn,
int dialect,
const char **errmsg)
{
if (errmsg != NULL
&& ! valid_bo (value, dialect))
if (!valid_bo (value, dialect))
*errmsg = _("invalid conditional option");
return insn | ((value & 0x1f) << 21);
}
@ -797,8 +790,7 @@ extract_bo (unsigned long insn,
long value;
value = (insn >> 21) & 0x1f;
if (invalid != NULL
&& ! valid_bo (value, dialect))
if (!valid_bo (value, dialect))
*invalid = 1;
return value;
}
@ -813,13 +805,11 @@ insert_boe (unsigned long insn,
int dialect,
const char **errmsg)
{
if (errmsg != NULL)
{
if (! valid_bo (value, dialect))
*errmsg = _("invalid conditional option");
else if ((value & 1) != 0)
*errmsg = _("attempt to set y bit when using + or - modifier");
}
if (!valid_bo (value, dialect))
*errmsg = _("invalid conditional option");
else if ((value & 1) != 0)
*errmsg = _("attempt to set y bit when using + or - modifier");
return insn | ((value & 0x1f) << 21);
}
@ -831,23 +821,22 @@ extract_boe (unsigned long insn,
long value;
value = (insn >> 21) & 0x1f;
if (invalid != NULL
&& ! valid_bo (value, dialect))
if (!valid_bo (value, dialect))
*invalid = 1;
return value & 0x1e;
}
/* The DQ field in a DQ form instruction. This is like D, but the
lower four bits are forced to zero. */
/* The DQ field in a DQ form instruction. This is like D, but the
lower four bits are forced to zero. */
/*ARGSUSED*/
static unsigned long
insert_dq (unsigned long insn,
long value,
int dialect ATTRIBUTE_UNUSED,
const char ** errmsg ATTRIBUTE_UNUSED)
const char **errmsg)
{
if ((value & 0xf) != 0 && errmsg != NULL)
if ((value & 0xf) != 0)
*errmsg = _("offset not a multiple of 16");
return insn | (value & 0xfff0);
}
@ -865,11 +854,11 @@ static unsigned long
insert_ev2 (unsigned long insn,
long value,
int dialect ATTRIBUTE_UNUSED,
const char ** errmsg ATTRIBUTE_UNUSED)
const char **errmsg)
{
if ((value & 1) != 0 && errmsg != NULL)
if ((value & 1) != 0)
*errmsg = _("offset not a multiple of 2");
if ((value > 62) != 0 && errmsg != NULL)
if ((value > 62) != 0)
*errmsg = _("offset greater than 62");
return insn | ((value & 0x3e) << 10);
}
@ -886,11 +875,11 @@ static unsigned long
insert_ev4 (unsigned long insn,
long value,
int dialect ATTRIBUTE_UNUSED,
const char **errmsg ATTRIBUTE_UNUSED)
const char **errmsg)
{
if ((value & 3) != 0 && errmsg != NULL)
if ((value & 3) != 0)
*errmsg = _("offset not a multiple of 4");
if ((value > 124) != 0 && errmsg != NULL)
if ((value > 124) != 0)
*errmsg = _("offset greater than 124");
return insn | ((value & 0x7c) << 9);
}
@ -907,11 +896,11 @@ static unsigned long
insert_ev8 (unsigned long insn,
long value,
int dialect ATTRIBUTE_UNUSED,
const char **errmsg ATTRIBUTE_UNUSED)
const char **errmsg)
{
if ((value & 7) != 0 && errmsg != NULL)
if ((value & 7) != 0)
*errmsg = _("offset not a multiple of 8");
if ((value > 248) != 0 && errmsg != NULL)
if ((value > 248) != 0)
*errmsg = _("offset greater than 248");
return insn | ((value & 0xf8) << 8);
}
@ -919,7 +908,7 @@ insert_ev8 (unsigned long insn,
static long
extract_ev8 (unsigned long insn,
int dialect ATTRIBUTE_UNUSED,
int * invalid ATTRIBUTE_UNUSED)
int *invalid ATTRIBUTE_UNUSED)
{
return (insn >> 8) & 0xf8;
}
@ -934,7 +923,7 @@ insert_ds (unsigned long insn,
int dialect ATTRIBUTE_UNUSED,
const char **errmsg)
{
if ((value & 3) != 0 && errmsg != NULL)
if ((value & 3) != 0)
*errmsg = _("offset not a multiple of 4");
return insn | (value & 0xfffc);
}
@ -957,7 +946,7 @@ insert_de (unsigned long insn,
int dialect ATTRIBUTE_UNUSED,
const char **errmsg)
{
if ((value > 2047 || value < -2048) && errmsg != NULL)
if (value > 2047 || value < -2048)
*errmsg = _("offset not between -2048 and 2047");
return insn | ((value << 4) & 0xfff0);
}
@ -980,9 +969,9 @@ insert_des (unsigned long insn,
int dialect ATTRIBUTE_UNUSED,
const char **errmsg)
{
if ((value > 8191 || value < -8192) && errmsg != NULL)
if (value > 8191 || value < -8192)
*errmsg = _("offset not between -8192 and 8191");
else if ((value & 3) != 0 && errmsg != NULL)
else if ((value & 3) != 0)
*errmsg = _("offset not a multiple of 4");
return insn | ((value << 2) & 0xfff0);
}
@ -1019,8 +1008,7 @@ insert_fxm (unsigned long insn,
/* Any other value on mfcr is an error. */
else if ((insn & (0x3ff << 1)) == 19 << 1)
{
if (errmsg != NULL)
*errmsg = _("ignoring invalid mfcr mask");
*errmsg = _("ignoring invalid mfcr mask");
value = 0;
}
@ -1038,14 +1026,11 @@ extract_fxm (unsigned long insn,
if ((insn & (1 << 20)) != 0)
{
if ((dialect & PPC_OPCODE_POWER4) == 0)
{
if (invalid != NULL)
*invalid = 1;
}
*invalid = 1;
else
{
/* Exactly one bit of MASK should be set. */
if ((mask == 0 || (mask & -mask) != mask) && invalid != NULL)
if (mask == 0 || (mask & -mask) != mask)
*invalid = 1;
}
}
@ -1053,7 +1038,7 @@ extract_fxm (unsigned long insn,
/* Check that non-power4 form of mfcr has a zero MASK. */
else if ((insn & (0x3ff << 1)) == 19 << 1)
{
if (mask != 0 && invalid != NULL)
if (mask != 0)
*invalid = 1;
}
@ -1070,7 +1055,7 @@ insert_li (unsigned long insn,
int dialect ATTRIBUTE_UNUSED,
const char **errmsg)
{
if ((value & 3) != 0 && errmsg != NULL)
if ((value & 3) != 0)
*errmsg = _("ignoring least significant bits in branch offset");
return insn | (value & 0x3fffffc);
}
@ -1102,8 +1087,7 @@ insert_mbe (unsigned long insn,
if (uval == 0)
{
if (errmsg != NULL)
*errmsg = _("illegal bitmask");
*errmsg = _("illegal bitmask");
return insn;
}
@ -1138,10 +1122,7 @@ insert_mbe (unsigned long insn,
me = 32;
if (count != 2 && (count != 0 || ! last))
{
if (errmsg != NULL)
*errmsg = _("illegal bitmask");
}
*errmsg = _("illegal bitmask");
return insn | (mb << 6) | ((me - 1) << 1);
}
@ -1155,8 +1136,7 @@ extract_mbe (unsigned long insn,
int mb, me;
int i;
if (invalid != NULL)
*invalid = 1;
*invalid = 1;
mb = (insn >> 6) & 0x1f;
me = (insn >> 1) & 0x1f;
@ -1167,12 +1147,12 @@ extract_mbe (unsigned long insn,
ret |= 1 << (31 - i);
}
else if (mb == me + 1)
ret = -1;
ret = ~0;
else /* (mb > me + 1) */
{
ret = ~0;
for (i = me + 1; i < mb; i++)
ret &= ~ (1 << (31 - i));
ret &= ~(1 << (31 - i));
}
return ret;
}
@ -1249,8 +1229,7 @@ extract_nsi (unsigned long insn,
int dialect ATTRIBUTE_UNUSED,
int *invalid)
{
if (invalid != NULL)
*invalid = 1;
*invalid = 1;
return -(((insn & 0xffff) ^ 0x8000) - 0x8000);
}
@ -1284,8 +1263,8 @@ insert_ram (unsigned long insn,
return insn | ((value & 0x1f) << 16);
}
/* The RA field in the DQ form lq instruction, which has special
value restrictions. */
/* The RA field in the DQ form lq instruction, which has special
value restrictions. */
/*ARGSUSED*/
static unsigned long
@ -1296,7 +1275,7 @@ insert_raq (unsigned long insn,
{
long rtvalue = (insn & RT_MASK) >> 21;
if (value == rtvalue && errmsg != NULL)
if (value == rtvalue)
*errmsg = _("source and target register operands must be different");
return insn | ((value & 0x1f) << 16);
}
@ -1337,14 +1316,13 @@ extract_rbs (unsigned long insn,
int dialect ATTRIBUTE_UNUSED,
int *invalid)
{
if (invalid != NULL
&& ((insn >> 21) & 0x1f) != ((insn >> 11) & 0x1f))
if (((insn >> 21) & 0x1f) != ((insn >> 11) & 0x1f))
*invalid = 1;
return 0;
}
/* The RT field of the DQ form lq instruction, which has special
value restrictions. */
/* The RT field of the DQ form lq instruction, which has special
value restrictions. */
/*ARGSUSED*/
static unsigned long
@ -1353,13 +1331,13 @@ insert_rtq (unsigned long insn,
int dialect ATTRIBUTE_UNUSED,
const char **errmsg)
{
if ((value & 1) != 0 && errmsg != NULL)
if ((value & 1) != 0)
*errmsg = _("target register operand must be even");
return insn | ((value & 0x1f) << 21);
}
/* The RS field of the DS form stq instruction, which has special
value restrictions. */
/* The RS field of the DS form stq instruction, which has special
value restrictions. */
/*ARGSUSED*/
static unsigned long
@ -1368,7 +1346,7 @@ insert_rsq (unsigned long insn,
int dialect ATTRIBUTE_UNUSED,
const char **errmsg)
{
if ((value & 1) != 0 && errmsg != NULL)
if ((value & 1) != 0)
*errmsg = _("source register operand must be even");
return insn | ((value & 0x1f) << 21);
}