include/opcode/ChangeLog:

* i386.h (i386_optab): Mark VIA PadLock instructions as ImmExt and
adjust them accordingly.
gas/ChangeLog:
* config/tc-i386.c (output_insn): Handle VIA PadLock instructions
similar to other instructions now that they're marked as ImmExt.
This commit is contained in:
Mark Kettenis 2005-04-12 17:12:33 +00:00
parent 41c953f989
commit bc4bd9abb2
4 changed files with 35 additions and 31 deletions

View file

@ -1,3 +1,8 @@
2005-04-12 Mark Kettenis <kettenis@gnu.org>
* config/tc-i386.c (output_insn): Handle VIA PadLock instructions
similar to other instructions now that they're marked as ImmExt.
2005-04-12 Nick Clifton <nickc@redhat.com> 2005-04-12 Nick Clifton <nickc@redhat.com>
* hash.c (DEFAULT_SIZE): Delete. Replace with: * hash.c (DEFAULT_SIZE): Delete. Replace with:

View file

@ -3320,23 +3320,23 @@ output_insn ()
char *p; char *p;
unsigned char *q; unsigned char *q;
/* All opcodes on i386 have either 1 or 2 bytes, PadLock instructions /* All opcodes on i386 have either 1 or 2 bytes. We may use one
have 3 bytes. We may use one more higher byte to specify a prefix more higher byte to specify a prefix the instruction
the instruction requires. */ requires. */
if ((i.tm.cpu_flags & CpuPadLock) != 0 if ((i.tm.base_opcode & 0xff0000) != 0)
&& (i.tm.base_opcode & 0xff000000) != 0) {
{ if ((i.tm.cpu_flags & CpuPadLock) != 0)
unsigned int prefix; {
prefix = (i.tm.base_opcode >> 24) & 0xff; unsigned int prefix;
prefix = (i.tm.base_opcode >> 16) & 0xff;
if (prefix != REPE_PREFIX_OPCODE if (prefix != REPE_PREFIX_OPCODE
|| i.prefix[LOCKREP_PREFIX] != REPE_PREFIX_OPCODE) || i.prefix[LOCKREP_PREFIX] != REPE_PREFIX_OPCODE)
add_prefix (prefix); add_prefix (prefix);
}
else
add_prefix ((i.tm.base_opcode >> 16) & 0xff);
} }
else
if ((i.tm.cpu_flags & CpuPadLock) == 0
&& (i.tm.base_opcode & 0xff0000) != 0)
add_prefix ((i.tm.base_opcode >> 16) & 0xff);
/* The prefix bytes. */ /* The prefix bytes. */
for (q = i.prefix; for (q = i.prefix;
@ -3357,13 +3357,7 @@ output_insn ()
} }
else else
{ {
if ((i.tm.cpu_flags & CpuPadLock) != 0) p = frag_more (2);
{
p = frag_more (3);
*p++ = (i.tm.base_opcode >> 16) & 0xff;
}
else
p = frag_more (2);
/* Put out high byte first: can't use md_number_to_chars! */ /* Put out high byte first: can't use md_number_to_chars! */
*p++ = (i.tm.base_opcode >> 8) & 0xff; *p++ = (i.tm.base_opcode >> 8) & 0xff;

View file

@ -1,3 +1,8 @@
2005-04-12 Mark Kettenis <kettenis@gnu.org>
* i386.h (i386_optab): Mark VIA PadLock instructions as ImmExt and
adjust them accordingly.
2005-04-01 Jan Beulich <jbeulich@novell.com> 2005-04-01 Jan Beulich <jbeulich@novell.com>
* i386.h (i386_optab): Add rdtscp. * i386.h (i386_optab): Add rdtscp.

View file

@ -1378,16 +1378,16 @@ static const template i386_optab[] =
{"rdtscp", 0, 0x0f01, 0xf9, CpuSledgehammer,NoSuf|ImmExt, { 0, 0, 0} }, {"rdtscp", 0, 0x0f01, 0xf9, CpuSledgehammer,NoSuf|ImmExt, { 0, 0, 0} },
/* VIA PadLock extensions. */ /* VIA PadLock extensions. */
{"xstorerng", 0, 0x000fa7c0, X, Cpu686|CpuPadLock, NoSuf|IsString, { 0, 0, 0} }, {"xstorerng", 0, 0x000fa7, 0xc0, Cpu686|CpuPadLock, NoSuf|IsString|ImmExt, { 0, 0, 0} },
{"xcryptecb", 0, 0xf30fa7c8, X, Cpu686|CpuPadLock, NoSuf|IsString, { 0, 0, 0} }, {"xcryptecb", 0, 0xf30fa7, 0xc8, Cpu686|CpuPadLock, NoSuf|IsString|ImmExt, { 0, 0, 0} },
{"xcryptcbc", 0, 0xf30fa7d0, X, Cpu686|CpuPadLock, NoSuf|IsString, { 0, 0, 0} }, {"xcryptcbc", 0, 0xf30fa7, 0xd0, Cpu686|CpuPadLock, NoSuf|IsString|ImmExt, { 0, 0, 0} },
{"xcryptcfb", 0, 0xf30fa7e0, X, Cpu686|CpuPadLock, NoSuf|IsString, { 0, 0, 0} }, {"xcryptcfb", 0, 0xf30fa7, 0xe0, Cpu686|CpuPadLock, NoSuf|IsString|ImmExt, { 0, 0, 0} },
{"xcryptofb", 0, 0xf30fa7e8, X, Cpu686|CpuPadLock, NoSuf|IsString, { 0, 0, 0} }, {"xcryptofb", 0, 0xf30fa7, 0xe8, Cpu686|CpuPadLock, NoSuf|IsString|ImmExt, { 0, 0, 0} },
{"montmul", 0, 0xf30fa6c0, X, Cpu686|CpuPadLock, NoSuf|IsString, { 0, 0, 0} }, {"montmul", 0, 0xf30fa6, 0xc0, Cpu686|CpuPadLock, NoSuf|IsString|ImmExt, { 0, 0, 0} },
{"xsha1", 0, 0xf30fa6c8, X, Cpu686|CpuPadLock, NoSuf|IsString, { 0, 0, 0} }, {"xsha1", 0, 0xf30fa6, 0xc8, Cpu686|CpuPadLock, NoSuf|IsString|ImmExt, { 0, 0, 0} },
{"xsha256", 0, 0xf30fa6d0, X, Cpu686|CpuPadLock, NoSuf|IsString, { 0, 0, 0} }, {"xsha256", 0, 0xf30fa6, 0xd0, Cpu686|CpuPadLock, NoSuf|IsString|ImmExt, { 0, 0, 0} },
/* Alias for xstorerng. */ /* Alias for xstorerng. */
{"xstore", 0, 0x000fa7c0, X, Cpu686|CpuPadLock, NoSuf|IsString, { 0, 0, 0} }, {"xstore", 0, 0x000fa7, 0xc0, Cpu686|CpuPadLock, NoSuf|IsString|ImmExt, { 0, 0, 0} },
/* sentinel */ /* sentinel */
{NULL, 0, 0, 0, 0, 0, { 0, 0, 0} } {NULL, 0, 0, 0, 0, 0, { 0, 0, 0} }