* ppc-opc.c (extract_vlesi): Properly sign extend.

(extract_vlensi): Likewise.  Comment reason for setting invalid.
This commit is contained in:
Alan Modra
2013-05-09 04:32:55 +00:00
parent da8094d796
commit 9f0682fe89
2 changed files with 8 additions and 6 deletions

View File

@ -1,3 +1,8 @@
2013-05-09 Alan Modra <amodra@gmail.com>
* ppc-opc.c (extract_vlesi): Properly sign extend.
(extract_vlensi): Likewise. Comment reason for setting invalid.
2013-05-02 Nick Clifton <nickc@redhat.com> 2013-05-02 Nick Clifton <nickc@redhat.com>
* msp430-dis.c: Add support for MSP430X instructions. * msp430-dis.c: Add support for MSP430X instructions.

View File

@ -2022,11 +2022,8 @@ extract_vlesi (unsigned long insn,
ppc_cpu_t dialect ATTRIBUTE_UNUSED, ppc_cpu_t dialect ATTRIBUTE_UNUSED,
int *invalid ATTRIBUTE_UNUSED) int *invalid ATTRIBUTE_UNUSED)
{ {
/* RWRW Because I don't know how to make int be 16 and long be 32 */
/* I can't rely on casting an int to long to get sign extension. */
long value = ((insn >> 10) & 0xf800) | (insn & 0x7ff); long value = ((insn >> 10) & 0xf800) | (insn & 0x7ff);
if (value & 0x8000) value = (value ^ 0x8000) - 0x8000;
value |= 0xffff0000;
return value; return value;
} }
@ -2045,8 +2042,8 @@ extract_vlensi (unsigned long insn,
int *invalid ATTRIBUTE_UNUSED) int *invalid ATTRIBUTE_UNUSED)
{ {
long value = ((insn >> 10) & 0xf800) | (insn & 0x7ff); long value = ((insn >> 10) & 0xf800) | (insn & 0x7ff);
if (value & 0x8000) value = (value ^ 0x8000) - 0x8000;
value |= 0xffff0000; /* Don't use for disassembly. */
*invalid = 1; *invalid = 1;
return -value; return -value;
} }