diff options
author | Alan Modra <amodra@gmail.com> | 2018-05-07 11:35:22 +0930 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2018-05-08 22:28:44 +0930 |
commit | f413a91378902aadbe4e338a6dc8f33f5f7148a0 (patch) | |
tree | 07530badfb8696ab6121104e32e5b3e4f9683eae /opcodes | |
parent | watchpoint-unaligned.exp: Use skip_hw_watchpoint_tests (diff) | |
download | binutils-gdb-f413a91378902aadbe4e338a6dc8f33f5f7148a0.tar.gz binutils-gdb-f413a91378902aadbe4e338a6dc8f33f5f7148a0.tar.bz2 binutils-gdb-f413a91378902aadbe4e338a6dc8f33f5f7148a0.zip |
Correct powerpc spe opcode lookup
Defining SPE2_OPCD_SEGS as 13 discounts the possibility that we'd
ever look up spe2_opcd_indices[14..16], which I think is possible.
Extend that array to size 16+1, using the macros we use to index the
array. Similarly use the index macros for PPC_OPCD_SEGS and
VLE_OPCD_SEGS.
* ppc-dis.c (PPC_OPCD_SEGS): Define using PPC_OP.
(VLE_OPCD_SEGS, SPE2_OPCD_SEGS): Similarly, using macros used to
partition opcode space for index lookup.
Diffstat (limited to 'opcodes')
-rw-r--r-- | opcodes/ChangeLog | 6 | ||||
-rw-r--r-- | opcodes/ppc-dis.c | 12 |
2 files changed, 12 insertions, 6 deletions
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index 0c6994e90df..a6000cebbc8 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,3 +1,9 @@ +2018-05-08 Alan Modra <amodra@gmail.com> + + * ppc-dis.c (PPC_OPCD_SEGS): Define using PPC_OP. + (VLE_OPCD_SEGS, SPE2_OPCD_SEGS): Similarly, using macros used to + partition opcode space for index lookup. + 2018-05-07 Peter Bergner <bergner@vnet.ibm.com.com> * ppc-dis.c (print_insn_powerpc) <insn_is_short>: Replace this... diff --git a/opcodes/ppc-dis.c b/opcodes/ppc-dis.c index 0f7d7bacfb3..412aae000de 100644 --- a/opcodes/ppc-dis.c +++ b/opcodes/ppc-dis.c @@ -367,12 +367,12 @@ powerpc_init_dialect (struct disassemble_info *info) POWERPC_DIALECT(info) = dialect; } -#define PPC_OPCD_SEGS 64 -static unsigned short powerpc_opcd_indices[PPC_OPCD_SEGS+1]; -#define VLE_OPCD_SEGS 32 -static unsigned short vle_opcd_indices[VLE_OPCD_SEGS+1]; -#define SPE2_OPCD_SEGS 13 -static unsigned short spe2_opcd_indices[SPE2_OPCD_SEGS+1]; +#define PPC_OPCD_SEGS (1 + PPC_OP (-1)) +static unsigned short powerpc_opcd_indices[PPC_OPCD_SEGS + 1]; +#define VLE_OPCD_SEGS (1 + VLE_OP_TO_SEG (VLE_OP (-1, 0xffff))) +static unsigned short vle_opcd_indices[VLE_OPCD_SEGS + 1]; +#define SPE2_OPCD_SEGS (1 + SPE2_XOP_TO_SEG (SPE2_XOP (-1))) +static unsigned short spe2_opcd_indices[SPE2_OPCD_SEGS + 1]; /* Calculate opcode table indices to speed up disassembly, and init dialect. */ |