aboutsummaryrefslogtreecommitdiff
path: root/gdb/m68k-pinsn.c
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@airs.com>1992-09-21 22:36:04 +0000
committerIan Lance Taylor <ian@airs.com>1992-09-21 22:36:04 +0000
commit8f61b5e451d85defe8f4b61594c20099e70c07ee (patch)
treeb66f092c713047dc8a3f902409b8658b7620af31 /gdb/m68k-pinsn.c
parent25fb44628a4bc509657dd90ab87ed0d147b3f40e (diff)
downloadgdb-8f61b5e451d85defe8f4b61594c20099e70c07ee.zip
gdb-8f61b5e451d85defe8f4b61594c20099e70c07ee.tar.gz
gdb-8f61b5e451d85defe8f4b61594c20099e70c07ee.tar.bz2
Patches from WRS:
Mon Sep 21 14:54:35 1992 Ian Lance Taylor (ian@cygnus.com) * m68k-pinsn (print_insn_arg, fetch_arg): added support for operands to memory management instructions, from WRS.
Diffstat (limited to 'gdb/m68k-pinsn.c')
-rw-r--r--gdb/m68k-pinsn.c35
1 files changed, 34 insertions, 1 deletions
diff --git a/gdb/m68k-pinsn.c b/gdb/m68k-pinsn.c
index 7f442d5..859d8d9 100644
--- a/gdb/m68k-pinsn.c
+++ b/gdb/m68k-pinsn.c
@@ -188,6 +188,30 @@ print_insn_arg (d, buffer, p, addr, stream)
switch (*d)
{
+ case 'c': /* cache identifier */
+ {
+ static char *cacheFieldName[] = { "NOP", "dc", "ic", "bc" };
+ val = fetch_arg (buffer, place, 2);
+ fprintf_filtered (stream, cacheFieldName[val]);
+ break;
+ }
+
+ case 'a': /* address register indirect only. Cf. case '+'. */
+ {
+ fprintf_filtered (stream,
+ "%s@",
+ reg_names [fetch_arg (buffer, place, 3) + 8]);
+ break;
+ }
+
+ case '_': /* 32-bit absolute address for move16. */
+ {
+ val = NEXTLONG (p);
+ fprintf_filtered (stream, "@#");
+ print_address (val, stream);
+ break;
+ }
+
case 'C':
fprintf_filtered (stream, "ccr");
break;
@@ -204,8 +228,11 @@ print_insn_arg (d, buffer, p, addr, stream)
{
static struct { char *name; int value; } names[]
= {{"sfc", 0x000}, {"dfc", 0x001}, {"cacr", 0x002},
+ {"tc", 0x003}, {"itt0",0x004}, {"itt1", 0x005},
+ {"dtt0",0x006}, {"dtt1",0x007},
{"usp", 0x800}, {"vbr", 0x801}, {"caar", 0x802},
- {"msp", 0x803}, {"isp", 0x804}};
+ {"msp", 0x803}, {"isp", 0x804}, {"mmusr",0x805},
+ {"urp", 0x806}, {"srp", 0x807}};
val = fetch_arg (buffer, place, 12);
for (regno = sizeof names / sizeof names[0] - 1; regno >= 0; regno--)
@@ -659,12 +686,18 @@ fetch_arg (buffer, code, bits)
val >>= 10;
break;
+ case 'e':
+ val = (buffer[1] >> 6);
+ break;
+
default:
abort ();
}
switch (bits)
{
+ case 2:
+ return val & 3;
case 3:
return val & 7;
case 4: