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>
|
||||
|
||||
* hash.c (DEFAULT_SIZE): Delete. Replace with:
|
||||
|
|
|
@ -3320,23 +3320,23 @@ output_insn ()
|
|||
char *p;
|
||||
unsigned char *q;
|
||||
|
||||
/* All opcodes on i386 have either 1 or 2 bytes, PadLock instructions
|
||||
have 3 bytes. We may use one more higher byte to specify a prefix
|
||||
the instruction requires. */
|
||||
if ((i.tm.cpu_flags & CpuPadLock) != 0
|
||||
&& (i.tm.base_opcode & 0xff000000) != 0)
|
||||
{
|
||||
unsigned int prefix;
|
||||
prefix = (i.tm.base_opcode >> 24) & 0xff;
|
||||
/* All opcodes on i386 have either 1 or 2 bytes. We may use one
|
||||
more higher byte to specify a prefix the instruction
|
||||
requires. */
|
||||
if ((i.tm.base_opcode & 0xff0000) != 0)
|
||||
{
|
||||
if ((i.tm.cpu_flags & CpuPadLock) != 0)
|
||||
{
|
||||
unsigned int prefix;
|
||||
prefix = (i.tm.base_opcode >> 16) & 0xff;
|
||||
|
||||
if (prefix != REPE_PREFIX_OPCODE
|
||||
|| i.prefix[LOCKREP_PREFIX] != REPE_PREFIX_OPCODE)
|
||||
add_prefix (prefix);
|
||||
if (prefix != REPE_PREFIX_OPCODE
|
||||
|| i.prefix[LOCKREP_PREFIX] != REPE_PREFIX_OPCODE)
|
||||
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. */
|
||||
for (q = i.prefix;
|
||||
|
@ -3357,13 +3357,7 @@ output_insn ()
|
|||
}
|
||||
else
|
||||
{
|
||||
if ((i.tm.cpu_flags & CpuPadLock) != 0)
|
||||
{
|
||||
p = frag_more (3);
|
||||
*p++ = (i.tm.base_opcode >> 16) & 0xff;
|
||||
}
|
||||
else
|
||||
p = frag_more (2);
|
||||
p = frag_more (2);
|
||||
|
||||
/* Put out high byte first: can't use md_number_to_chars! */
|
||||
*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>
|
||||
|
||||
* 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} },
|
||||
|
||||
/* VIA PadLock extensions. */
|
||||
{"xstorerng", 0, 0x000fa7c0, X, Cpu686|CpuPadLock, NoSuf|IsString, { 0, 0, 0} },
|
||||
{"xcryptecb", 0, 0xf30fa7c8, X, Cpu686|CpuPadLock, NoSuf|IsString, { 0, 0, 0} },
|
||||
{"xcryptcbc", 0, 0xf30fa7d0, X, Cpu686|CpuPadLock, NoSuf|IsString, { 0, 0, 0} },
|
||||
{"xcryptcfb", 0, 0xf30fa7e0, X, Cpu686|CpuPadLock, NoSuf|IsString, { 0, 0, 0} },
|
||||
{"xcryptofb", 0, 0xf30fa7e8, X, Cpu686|CpuPadLock, NoSuf|IsString, { 0, 0, 0} },
|
||||
{"montmul", 0, 0xf30fa6c0, X, Cpu686|CpuPadLock, NoSuf|IsString, { 0, 0, 0} },
|
||||
{"xsha1", 0, 0xf30fa6c8, X, Cpu686|CpuPadLock, NoSuf|IsString, { 0, 0, 0} },
|
||||
{"xsha256", 0, 0xf30fa6d0, X, Cpu686|CpuPadLock, NoSuf|IsString, { 0, 0, 0} },
|
||||
{"xstorerng", 0, 0x000fa7, 0xc0, Cpu686|CpuPadLock, NoSuf|IsString|ImmExt, { 0, 0, 0} },
|
||||
{"xcryptecb", 0, 0xf30fa7, 0xc8, Cpu686|CpuPadLock, NoSuf|IsString|ImmExt, { 0, 0, 0} },
|
||||
{"xcryptcbc", 0, 0xf30fa7, 0xd0, Cpu686|CpuPadLock, NoSuf|IsString|ImmExt, { 0, 0, 0} },
|
||||
{"xcryptcfb", 0, 0xf30fa7, 0xe0, Cpu686|CpuPadLock, NoSuf|IsString|ImmExt, { 0, 0, 0} },
|
||||
{"xcryptofb", 0, 0xf30fa7, 0xe8, Cpu686|CpuPadLock, NoSuf|IsString|ImmExt, { 0, 0, 0} },
|
||||
{"montmul", 0, 0xf30fa6, 0xc0, Cpu686|CpuPadLock, NoSuf|IsString|ImmExt, { 0, 0, 0} },
|
||||
{"xsha1", 0, 0xf30fa6, 0xc8, Cpu686|CpuPadLock, NoSuf|IsString|ImmExt, { 0, 0, 0} },
|
||||
{"xsha256", 0, 0xf30fa6, 0xd0, Cpu686|CpuPadLock, NoSuf|IsString|ImmExt, { 0, 0, 0} },
|
||||
/* 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 */
|
||||
{NULL, 0, 0, 0, 0, 0, { 0, 0, 0} }
|
||||
|
|
Loading…
Reference in a new issue