diff options
author | Ian Lance Taylor <ian@airs.com> | 1992-09-21 22:36:04 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 1992-09-21 22:36:04 +0000 |
commit | 8f61b5e451d85defe8f4b61594c20099e70c07ee (patch) | |
tree | b66f092c713047dc8a3f902409b8658b7620af31 /gdb/m68k-pinsn.c | |
parent | 25fb44628a4bc509657dd90ab87ed0d147b3f40e (diff) | |
download | gdb-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.c | 35 |
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: |