From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 1827 invoked by alias); 12 Apr 2005 19:15:34 -0000 Mailing-List: contact binutils-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: binutils-owner@sources.redhat.com Received: (qmail 1793 invoked from network); 12 Apr 2005 19:15:28 -0000 Received: from unknown (HELO sibelius.xs4all.nl) (82.92.89.47) by sourceware.org with SMTP; 12 Apr 2005 19:15:28 -0000 Received: from elgar.sibelius.xs4all.nl (root@elgar.sibelius.xs4all.nl [192.168.0.2]) by sibelius.xs4all.nl (8.13.0/8.13.0) with ESMTP id j3CJFRO5019795; Tue, 12 Apr 2005 21:15:27 +0200 (CEST) Received: from elgar.sibelius.xs4all.nl (kettenis@localhost.sibelius.xs4all.nl [127.0.0.1]) by elgar.sibelius.xs4all.nl (8.13.4/8.13.3) with ESMTP id j3CJFQmT022746; Tue, 12 Apr 2005 21:15:26 +0200 (CEST) Received: (from kettenis@localhost) by elgar.sibelius.xs4all.nl (8.13.4/8.13.4/Submit) id j3CJFO0P017574; Tue, 12 Apr 2005 21:15:24 +0200 (CEST) Date: Tue, 12 Apr 2005 19:15:00 -0000 Message-Id: <200504121915.j3CJFO0P017574@elgar.sibelius.xs4all.nl> From: Mark Kettenis To: binutils@sourceware.org CC: mludvig@suse.cz Subject: [RFC/RFA] Proper mnemonics for VIA PadLock (i386) instructions X-SW-Source: 2005-04/txt/msg00293.txt.bz2 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 * config/tc-i386.c (md_begin): Allow hyphens in mnemonics. Index: include/opcode/ChangeLog from Mark Kettenis * i386.h: Insert hyphens into selected VIA PadLock extensions. Add xcrypt-ctr. Provide aliases without hyphens. Index: opcodes/ChangeLog from Mark Kettenis * 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 */ {