mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-07-01 09:49:43 +08:00
* i386-dis.c: Describe cmpxchg8b operand, and spell the opcode name correctly.
This commit is contained in:
@ -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>
|
Tue Oct 3 08:30:20 1995 steve chamberlain <sac@slash.cygnus.com>
|
||||||
|
|
||||||
From David Mosberger-Tang <davidm@azstarnet.com>
|
From David Mosberger-Tang <davidm@azstarnet.com>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Print i386 instructions for GDB, the GNU debugger.
|
/* 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.
|
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
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program; if not, write to the Free Software
|
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)
|
* 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 "dis-asm.h"
|
||||||
#include <string.h>
|
#include "sysdep.h"
|
||||||
|
|
||||||
#define MAXLEN 20
|
#define MAXLEN 20
|
||||||
|
|
||||||
#include <setjmp.h>
|
#include <setjmp.h>
|
||||||
|
|
||||||
struct private
|
struct dis_private
|
||||||
{
|
{
|
||||||
/* Points to first byte not fetched. */
|
/* Points to first byte not fetched. */
|
||||||
bfd_byte *max_fetched;
|
bfd_byte *max_fetched;
|
||||||
@ -52,7 +52,7 @@ struct private
|
|||||||
to ADDR (exclusive) are valid. Returns 1 for success, longjmps
|
to ADDR (exclusive) are valid. Returns 1 for success, longjmps
|
||||||
on error. */
|
on error. */
|
||||||
#define FETCH_DATA(info, addr) \
|
#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)))
|
? 1 : fetch_data ((info), (addr)))
|
||||||
|
|
||||||
static int
|
static int
|
||||||
@ -61,7 +61,7 @@ fetch_data (info, addr)
|
|||||||
bfd_byte *addr;
|
bfd_byte *addr;
|
||||||
{
|
{
|
||||||
int status;
|
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);
|
bfd_vma start = priv->insn_start + (priv->max_fetched - priv->the_buffer);
|
||||||
|
|
||||||
status = (*info->read_memory_func) (start,
|
status = (*info->read_memory_func) (start,
|
||||||
@ -205,6 +205,7 @@ static int get16 (), get32 ();
|
|||||||
#define GRP6 NULL, NULL, 13
|
#define GRP6 NULL, NULL, 13
|
||||||
#define GRP7 NULL, NULL, 14
|
#define GRP7 NULL, NULL, 14
|
||||||
#define GRP8 NULL, NULL, 15
|
#define GRP8 NULL, NULL, 15
|
||||||
|
#define GRP9 NULL, NULL, 16
|
||||||
|
|
||||||
#define FLOATCODE 50
|
#define FLOATCODE 50
|
||||||
#define FLOAT NULL, NULL, FLOATCODE
|
#define FLOAT NULL, NULL, FLOATCODE
|
||||||
@ -545,7 +546,7 @@ struct dis386 dis386_twobyte[] = {
|
|||||||
{ "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
|
{ "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
|
||||||
{ "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
|
{ "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
|
||||||
/* 30 */
|
/* 30 */
|
||||||
{ "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
|
{ "wrmsr" }, { "rdtsc" }, { "rdmsr" }, { "(bad)" },
|
||||||
{ "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
|
{ "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
|
||||||
/* 38 */
|
/* 38 */
|
||||||
{ "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
|
{ "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
|
||||||
@ -613,7 +614,7 @@ struct dis386 dis386_twobyte[] = {
|
|||||||
/* a0 */
|
/* a0 */
|
||||||
{ "pushl", fs },
|
{ "pushl", fs },
|
||||||
{ "popl", fs },
|
{ "popl", fs },
|
||||||
{ "(bad)" },
|
{ "cpuid" },
|
||||||
{ "btS", Ev, Gv },
|
{ "btS", Ev, Gv },
|
||||||
{ "shldS", Ev, Gv, Ib },
|
{ "shldS", Ev, Gv, Ib },
|
||||||
{ "shldS", Ev, Gv, CL },
|
{ "shldS", Ev, Gv, CL },
|
||||||
@ -622,7 +623,7 @@ struct dis386 dis386_twobyte[] = {
|
|||||||
/* a8 */
|
/* a8 */
|
||||||
{ "pushl", gs },
|
{ "pushl", gs },
|
||||||
{ "popl", gs },
|
{ "popl", gs },
|
||||||
{ "(bad)" },
|
{ "rsm" },
|
||||||
{ "btsS", Ev, Gv },
|
{ "btsS", Ev, Gv },
|
||||||
{ "shrdS", Ev, Gv, Ib },
|
{ "shrdS", Ev, Gv, Ib },
|
||||||
{ "shrdS", Ev, Gv, CL },
|
{ "shrdS", Ev, Gv, CL },
|
||||||
@ -649,8 +650,12 @@ struct dis386 dis386_twobyte[] = {
|
|||||||
/* c0 */
|
/* c0 */
|
||||||
{ "xaddb", Eb, Gb },
|
{ "xaddb", Eb, Gb },
|
||||||
{ "xaddS", Ev, Gv },
|
{ "xaddS", Ev, Gv },
|
||||||
{ "(bad)" }, { "(bad)" },
|
{ "(bad)" },
|
||||||
{ "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
|
{ "(bad)" },
|
||||||
|
{ "(bad)" },
|
||||||
|
{ "(bad)" },
|
||||||
|
{ "(bad)" },
|
||||||
|
{ GRP9 },
|
||||||
/* c8 */
|
/* c8 */
|
||||||
{ "bswap", eAX },
|
{ "bswap", eAX },
|
||||||
{ "bswap", eCX },
|
{ "bswap", eCX },
|
||||||
@ -880,6 +885,17 @@ struct dis386 grps[][8] = {
|
|||||||
{ "btsS", Ev, Ib },
|
{ "btsS", Ev, Ib },
|
||||||
{ "btrS", Ev, Ib },
|
{ "btrS", Ev, Ib },
|
||||||
{ "btcS", 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;
|
char *first, *second, *third;
|
||||||
int needcomma;
|
int needcomma;
|
||||||
|
|
||||||
struct private priv;
|
struct dis_private priv;
|
||||||
bfd_byte *inbuf = priv.the_buffer;
|
bfd_byte *inbuf = priv.the_buffer;
|
||||||
|
|
||||||
info->private_data = (PTR) &priv;
|
info->private_data = (PTR) &priv;
|
||||||
|
Reference in New Issue
Block a user