This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
[RFC/RFA] Proper mnemonics for VIA PadLock (i386) instructions
- From: Mark Kettenis <mark dot kettenis at xs4all dot nl>
- To: binutils at sourceware dot org
- Cc: mludvig at suse dot cz
- Date: Tue, 12 Apr 2005 21:15:24 +0200 (CEST)
- Subject: [RFC/RFA] Proper mnemonics for VIA PadLock (i386) instructions
This one is a bit nasty. The OpenBSD in-tree gas has had support for
the VIA PadLock instructions for a while. Unfortunately that support
was never submitted for inclusion into the FSF tree. A little over a
year ago Michal Ludvig committed support for these instructions.
Unfortunately he used mnemonics that differ from the instruction names
as used in the VIA documentation; the VIA names include a hyphen that
Michal left out. I presume Michal did this because gas doesn't accept
hyphens in mnemonics. That can be fixed though. This patch does
that, and adds back the missing hyphen. It also adds a missing
instruction that's going to be in the VIA cpu.
This patch keeps hyphen-less aliases for the instructions. The gas
testsuite still passes with this patch applied.
OK?
Mark
Index: gas/ChangeLog
from Mark Kettenis <kettenis@gnu.org>
* config/tc-i386.c (md_begin): Allow hyphens in mnemonics.
Index: include/opcode/ChangeLog
from Mark Kettenis <kettenis@gnu.org>
* i386.h: Insert hyphens into selected VIA PadLock extensions.
Add xcrypt-ctr. Provide aliases without hyphens.
Index: opcodes/ChangeLog
from Mark Kettenis <kettenis@gnu.org>
* i386-dis.c: Insert hyphens into selected VIA PadLock extensions.
Add xcrypt-ctr.
Index: gas/config/tc-i386.c
===================================================================
RCS file: /cvs/src/src/gas/config/tc-i386.c,v
retrieving revision 1.173
diff -u -p -r1.173 tc-i386.c
--- gas/config/tc-i386.c 12 Apr 2005 17:12:33 -0000 1.173
+++ gas/config/tc-i386.c 12 Apr 2005 19:01:12 -0000
@@ -1008,6 +1008,7 @@ md_begin ()
operand_chars['?'] = '?';
#endif
digit_chars['-'] = '-';
+ mnemonic_chars['-'] = '-';
identifier_chars['_'] = '_';
identifier_chars['.'] = '.';
Index: include/opcode/i386.h
===================================================================
RCS file: /cvs/src/src/include/opcode/i386.h,v
retrieving revision 1.56
diff -u -p -r1.56 i386.h
--- include/opcode/i386.h 12 Apr 2005 17:12:30 -0000 1.56
+++ include/opcode/i386.h 12 Apr 2005 19:01:16 -0000
@@ -1378,15 +1378,23 @@ static const template i386_optab[] =
{"rdtscp", 0, 0x0f01, 0xf9, CpuSledgehammer,NoSuf|ImmExt, { 0, 0, 0} },
/* VIA PadLock extensions. */
+{"xstore-rng",0, 0x000fa7, 0xc0, Cpu686|CpuPadLock, NoSuf|IsString|ImmExt, { 0, 0, 0} },
+{"xcrypt-ecb",0, 0xf30fa7, 0xc8, Cpu686|CpuPadLock, NoSuf|IsString|ImmExt, { 0, 0, 0} },
+{"xcrypt-cbc",0, 0xf30fa7, 0xd0, Cpu686|CpuPadLock, NoSuf|IsString|ImmExt, { 0, 0, 0} },
+{"xcrypt-ctr",0, 0xf30fa7, 0xd8, Cpu686|CpuPadLock, NoSuf|IsString|ImmExt, { 0, 0, 0} },
+{"xcrypt-cfb",0, 0xf30fa7, 0xe0, Cpu686|CpuPadLock, NoSuf|IsString|ImmExt, { 0, 0, 0} },
+{"xcrypt-ofb",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} },
+/* Aliases without hyphens. */
{"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} },
+{"xcryptctr", 0, 0xf30fa7, 0xd8, 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. */
+/* Alias for xstore-rng. */
{"xstore", 0, 0x000fa7, 0xc0, Cpu686|CpuPadLock, NoSuf|IsString|ImmExt, { 0, 0, 0} },
/* sentinel */
Index: opcodes/i386-dis.c
===================================================================
RCS file: /cvs/src/src/opcodes/i386-dis.c,v
retrieving revision 1.58
diff -u -p -r1.58 i386-dis.c
--- opcodes/i386-dis.c 1 Apr 2005 16:06:40 -0000 1.58
+++ opcodes/i386-dis.c 12 Apr 2005 19:01:19 -0000
@@ -1469,14 +1469,14 @@ static const struct dis386 grps[][8] = {
},
/* GRPPADLCK1 */
{
- { "xstorerng", OP_0f07, 0, XX, XX },
- { "xcryptecb", OP_0f07, 0, XX, XX },
- { "xcryptcbc", OP_0f07, 0, XX, XX },
- { "(bad)", OP_0f07, 0, XX, XX },
- { "xcryptcfb", OP_0f07, 0, XX, XX },
- { "xcryptofb", OP_0f07, 0, XX, XX },
- { "(bad)", OP_0f07, 0, XX, XX },
- { "(bad)", OP_0f07, 0, XX, XX },
+ { "xstore-rng", OP_0f07, 0, XX, XX },
+ { "xcrypt-ecb", OP_0f07, 0, XX, XX },
+ { "xcrypt-cbc", OP_0f07, 0, XX, XX },
+ { "xcrypt-ctr", OP_0f07, 0, XX, XX },
+ { "xcrypt-cfb", OP_0f07, 0, XX, XX },
+ { "xcrypt-ofb", OP_0f07, 0, XX, XX },
+ { "(bad)", OP_0f07, 0, XX, XX },
+ { "(bad)", OP_0f07, 0, XX, XX },
},
/* GRPPADLCK2 */
{