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:
parent
41c953f989
commit
bc4bd9abb2
4 changed files with 35 additions and 31 deletions
|
@ -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:
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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} }
|
||||||
|
|
Loading…
Add table
Reference in a new issue