mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-08-14 08:43:27 +08:00
* m68k-dis.c (print_insn_arg): Add movecr register names for
coldfire v4e families.
This commit is contained in:
@ -1,3 +1,8 @@
|
|||||||
|
2009-08-26 Philippe De Muyter <phdm@macqel.be>
|
||||||
|
|
||||||
|
* m68k-dis.c (print_insn_arg): Add movecr register names for
|
||||||
|
coldfire v4e families.
|
||||||
|
|
||||||
2009-08-25 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
|
2009-08-25 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
|
||||||
|
|
||||||
* Makefile.am (SUBDIRS): Build '.' before 'po'.
|
* Makefile.am (SUBDIRS): Build '.' before 'po'.
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* Print Motorola 68k instructions.
|
/* Print Motorola 68k instructions.
|
||||||
Copyright 1986, 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
|
Copyright 1986, 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
|
||||||
1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
|
1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of the GNU opcodes library.
|
This file is part of the GNU opcodes library.
|
||||||
@ -699,35 +699,60 @@ print_insn_arg (const char *d,
|
|||||||
case 'J':
|
case 'J':
|
||||||
{
|
{
|
||||||
/* FIXME: There's a problem here, different m68k processors call the
|
/* FIXME: There's a problem here, different m68k processors call the
|
||||||
same address different names. This table can't get it right
|
same address different names. The tables below try to get it right
|
||||||
because it doesn't know which processor it's disassembling for. */
|
using info->mach, but only for v4e. */
|
||||||
static const struct { char *name; int value; } names[]
|
struct regname { char * name; int value; };
|
||||||
= {{"%sfc", 0x000}, {"%dfc", 0x001}, {"%cacr", 0x002},
|
static const struct regname names[] =
|
||||||
|
{
|
||||||
|
{"%sfc", 0x000}, {"%dfc", 0x001}, {"%cacr", 0x002},
|
||||||
{"%tc", 0x003}, {"%itt0",0x004}, {"%itt1", 0x005},
|
{"%tc", 0x003}, {"%itt0",0x004}, {"%itt1", 0x005},
|
||||||
{"%dtt0",0x006}, {"%dtt1",0x007}, {"%buscr",0x008},
|
{"%dtt0",0x006}, {"%dtt1",0x007}, {"%buscr",0x008},
|
||||||
{"%usp", 0x800}, {"%vbr", 0x801}, {"%caar", 0x802},
|
{"%usp", 0x800}, {"%vbr", 0x801}, {"%caar", 0x802},
|
||||||
{"%msp", 0x803}, {"%isp", 0x804},
|
{"%msp", 0x803}, {"%isp", 0x804},
|
||||||
/* reg c04 is sometimes called flashbar or rambar.
|
{"%pc", 0x80f},
|
||||||
rec c05 is also sometimes called rambar. */
|
/* Reg c04 is sometimes called flashbar or rambar.
|
||||||
|
Rec c05 is also sometimes called rambar. */
|
||||||
{"%rambar0", 0xc04}, {"%rambar1", 0xc05},
|
{"%rambar0", 0xc04}, {"%rambar1", 0xc05},
|
||||||
|
|
||||||
|
{"%mbar", 0xc0f},
|
||||||
|
|
||||||
/* Should we be calling this psr like we do in case 'Y'? */
|
/* Should we be calling this psr like we do in case 'Y'? */
|
||||||
{"%mmusr",0x805},
|
{"%mmusr",0x805},
|
||||||
|
|
||||||
{"%urp", 0x806}, {"%srp", 0x807}, {"%pcr", 0x808},
|
{"%urp", 0x806}, {"%srp", 0x807}, {"%pcr", 0x808},
|
||||||
|
|
||||||
/* Fido added these. */
|
/* Fido added these. */
|
||||||
{"%cac", 0xffe}, {"%mbo", 0xfff}};
|
{"%cac", 0xffe}, {"%mbo", 0xfff}
|
||||||
|
};
|
||||||
|
/* Alternate names for v4e (MCF5407/5445x/MCF547x/MCF548x), at least. */
|
||||||
|
static const struct regname names_v4e[] =
|
||||||
|
{
|
||||||
|
{"%asid",0x003}, {"%acr0",0x004}, {"%acr1",0x005},
|
||||||
|
{"%acr2",0x006}, {"%acr3",0x007}, {"%mmubar",0x008},
|
||||||
|
};
|
||||||
|
unsigned int arch_mask;
|
||||||
|
|
||||||
|
arch_mask = bfd_m68k_mach_to_features (info->mach);
|
||||||
FETCH_ARG (12, val);
|
FETCH_ARG (12, val);
|
||||||
for (regno = sizeof names / sizeof names[0] - 1; regno >= 0; regno--)
|
if (arch_mask & (mcfisa_b | mcfisa_c))
|
||||||
|
{
|
||||||
|
for (regno = ARRAY_SIZE (names_v4e); --regno >= 0;)
|
||||||
|
if (names_v4e[regno].value == val)
|
||||||
|
{
|
||||||
|
(*info->fprintf_func) (info->stream, "%s", names_v4e[regno].name);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (regno >= 0)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
for (regno = ARRAY_SIZE (names) - 1; regno >= 0; regno--)
|
||||||
if (names[regno].value == val)
|
if (names[regno].value == val)
|
||||||
{
|
{
|
||||||
(*info->fprintf_func) (info->stream, "%s", names[regno].name);
|
(*info->fprintf_func) (info->stream, "%s", names[regno].name);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (regno < 0)
|
if (regno < 0)
|
||||||
(*info->fprintf_func) (info->stream, "%d", val);
|
(*info->fprintf_func) (info->stream, "0x%x", val);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user