aboutsummaryrefslogtreecommitdiff
path: root/opcodes
diff options
context:
space:
mode:
Diffstat (limited to 'opcodes')
-rw-r--r--opcodes/ChangeLog5
-rw-r--r--opcodes/i386-dis.c40
2 files changed, 33 insertions, 12 deletions
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index 6a962c0..7d7849f 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,3 +1,8 @@
+Thu Oct 5 22:16:20 1995 Ken Raeburn <raeburn@cygnus.com>
+
+ * i386-dis.c: Describe cmpxchg8b operand, and spell the opcode
+ name correctly.
+
Tue Oct 3 08:30:20 1995 steve chamberlain <sac@slash.cygnus.com>
From David Mosberger-Tang <davidm@azstarnet.com>
diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c
index 3be5ac7..7bbd765 100644
--- a/opcodes/i386-dis.c
+++ b/opcodes/i386-dis.c
@@ -1,5 +1,5 @@
/* Print i386 instructions for GDB, the GNU debugger.
- Copyright (C) 1988, 1989, 1991, 1993, 1994 Free Software Foundation, Inc.
+ Copyright (C) 1988, 1989, 1991, 1993, 1994, 1995 Free Software Foundation, Inc.
This file is part of GDB.
@@ -15,7 +15,7 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/*
* 80386 instruction printer by Pace Willisson (pace@prep.ai.mit.edu)
@@ -33,13 +33,13 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
*/
#include "dis-asm.h"
-#include <string.h>
+#include "sysdep.h"
#define MAXLEN 20
#include <setjmp.h>
-struct private
+struct dis_private
{
/* Points to first byte not fetched. */
bfd_byte *max_fetched;
@@ -52,7 +52,7 @@ struct private
to ADDR (exclusive) are valid. Returns 1 for success, longjmps
on error. */
#define FETCH_DATA(info, addr) \
- ((addr) <= ((struct private *)(info->private_data))->max_fetched \
+ ((addr) <= ((struct dis_private *)(info->private_data))->max_fetched \
? 1 : fetch_data ((info), (addr)))
static int
@@ -61,7 +61,7 @@ fetch_data (info, addr)
bfd_byte *addr;
{
int status;
- struct private *priv = (struct private *)info->private_data;
+ struct dis_private *priv = (struct dis_private *)info->private_data;
bfd_vma start = priv->insn_start + (priv->max_fetched - priv->the_buffer);
status = (*info->read_memory_func) (start,
@@ -205,6 +205,7 @@ static int get16 (), get32 ();
#define GRP6 NULL, NULL, 13
#define GRP7 NULL, NULL, 14
#define GRP8 NULL, NULL, 15
+#define GRP9 NULL, NULL, 16
#define FLOATCODE 50
#define FLOAT NULL, NULL, FLOATCODE
@@ -545,7 +546,7 @@ struct dis386 dis386_twobyte[] = {
{ "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
{ "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
/* 30 */
- { "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
+ { "wrmsr" }, { "rdtsc" }, { "rdmsr" }, { "(bad)" },
{ "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
/* 38 */
{ "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
@@ -613,7 +614,7 @@ struct dis386 dis386_twobyte[] = {
/* a0 */
{ "pushl", fs },
{ "popl", fs },
- { "(bad)" },
+ { "cpuid" },
{ "btS", Ev, Gv },
{ "shldS", Ev, Gv, Ib },
{ "shldS", Ev, Gv, CL },
@@ -622,7 +623,7 @@ struct dis386 dis386_twobyte[] = {
/* a8 */
{ "pushl", gs },
{ "popl", gs },
- { "(bad)" },
+ { "rsm" },
{ "btsS", Ev, Gv },
{ "shrdS", Ev, Gv, Ib },
{ "shrdS", Ev, Gv, CL },
@@ -649,8 +650,12 @@ struct dis386 dis386_twobyte[] = {
/* c0 */
{ "xaddb", Eb, Gb },
{ "xaddS", Ev, Gv },
- { "(bad)" }, { "(bad)" },
- { "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
+ { "(bad)" },
+ { "(bad)" },
+ { "(bad)" },
+ { "(bad)" },
+ { "(bad)" },
+ { GRP9 },
/* c8 */
{ "bswap", eAX },
{ "bswap", eCX },
@@ -880,6 +885,17 @@ struct dis386 grps[][8] = {
{ "btsS", Ev, Ib },
{ "btrS", Ev, Ib },
{ "btcS", Ev, Ib },
+ },
+ /* GRP9 */
+ {
+ { "(bad)" },
+ { "cmpxch8b", Ev },
+ { "(bad)" },
+ { "(bad)" },
+ { "(bad)" },
+ { "(bad)" },
+ { "(bad)" },
+ { "(bad)" },
}
};
@@ -978,7 +994,7 @@ print_insn_i386 (pc, info)
char *first, *second, *third;
int needcomma;
- struct private priv;
+ struct dis_private priv;
bfd_byte *inbuf = priv.the_buffer;
info->private_data = (PTR) &priv;