aboutsummaryrefslogtreecommitdiff
path: root/opcodes
diff options
context:
space:
mode:
authorJ.T. Conklin <jtc@acorntoolworks.com>1996-11-26 01:54:16 +0000
committerJ.T. Conklin <jtc@acorntoolworks.com>1996-11-26 01:54:16 +0000
commitda34628ad851365680c53e19b24ffe14625d76cf (patch)
treef0e6e9f364ad2463153a37d891811c5b8bd571e9 /opcodes
parent0dd19a8f36c712e5ce780ad0cfafdec1c456baa6 (diff)
downloadgdb-da34628ad851365680c53e19b24ffe14625d76cf.zip
gdb-da34628ad851365680c53e19b24ffe14625d76cf.tar.gz
gdb-da34628ad851365680c53e19b24ffe14625d76cf.tar.bz2
* m68k-opc.c (m68k-opcodes): Fix move and movem instructions for
the coldfire.
Diffstat (limited to 'opcodes')
-rw-r--r--opcodes/ChangeLog4
-rw-r--r--opcodes/m68k-opc.c45
2 files changed, 35 insertions, 14 deletions
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index 27ece7a..67d4394 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,7 +1,7 @@
Mon Nov 25 16:15:17 1996 J.T. Conklin <jtc@cygnus.com>
- * m68k-opc.c (m68k-opcodes): Fix many forms of the move
- instruction for the coldfire.
+ * m68k-opc.c (m68k-opcodes): Fix move and movem instructions for
+ the coldfire.
* m68k-opc.c (m68k-opcodes): The coldfire (mcf5200) can only use
register operands for immediate arithmetic, not, neg, negx, and
diff --git a/opcodes/m68k-opc.c b/opcodes/m68k-opc.c
index 3b48850..b4b4e87 100644
--- a/opcodes/m68k-opc.c
+++ b/opcodes/m68k-opc.c
@@ -1249,14 +1249,23 @@ const struct m68k_opcode m68k_opcodes[] =
{"movemw", one(0044240), one(0177770), "#w-s", m68000up },
{"movemw", one(0046200), one(0177700), "!s#w", m68000up },
{"movemw", one(0046230), one(0177770), "+s#w", m68000up },
-{"moveml", one(0044300), one(0177700), "Lw&s", m68000up | mcf5200 },
-{"moveml", one(0044340), one(0177770), "lw-s", m68000up | mcf5200 },
-{"moveml", one(0046300), one(0177700), "!sLw", m68000up | mcf5200 },
-{"moveml", one(0046330), one(0177770), "+sLw", m68000up | mcf5200 },
-{"moveml", one(0044300), one(0177700), "#w&s", m68000up | mcf5200 },
-{"moveml", one(0044340), one(0177770), "#w-s", m68000up | mcf5200 },
-{"moveml", one(0046300), one(0177700), "!s#w", m68000up | mcf5200 },
-{"moveml", one(0046330), one(0177770), "+s#w", m68000up | mcf5200 },
+{"moveml", one(0044300), one(0177700), "Lw&s", m68000up },
+{"moveml", one(0044340), one(0177770), "lw-s", m68000up },
+{"moveml", one(0046300), one(0177700), "!sLw", m68000up },
+{"moveml", one(0046330), one(0177770), "+sLw", m68000up },
+{"moveml", one(0044300), one(0177700), "#w&s", m68000up },
+{"moveml", one(0044340), one(0177770), "#w-s", m68000up },
+{"moveml", one(0046300), one(0177700), "!s#w", m68000up },
+{"moveml", one(0046330), one(0177770), "+s#w", m68000up },
+/* FIXME: need specifier for mode 2 and 5 to simplify below insn patterns */
+{"moveml", one(0044320), one(0177700), "Lwas", mcf5200 },
+{"moveml", one(0044320), one(0177700), "#was", mcf5200 },
+{"moveml", one(0044350), one(0177700), "Lwds", mcf5200 },
+{"moveml", one(0044350), one(0177700), "#wds", mcf5200 },
+{"moveml", one(0046320), one(0177700), "asLw", mcf5200 },
+{"moveml", one(0046320), one(0177700), "asLw", mcf5200 },
+{"moveml", one(0046350), one(0177700), "dsLw", mcf5200 },
+{"moveml", one(0046350), one(0177770), "ds#w", mcf5200 },
{"movepw", one(0000410), one(0170770), "dsDd", m68000up },
{"movepw", one(0000610), one(0170770), "Ddds", m68000up },
@@ -1267,8 +1276,14 @@ const struct m68k_opcode m68k_opcodes[] =
/* The move opcode can generate the movea and moveq instructions. */
{"moveb", one(0010000), one(0170000), ";b$d", m68000up },
-
-{"movew", one(0030000), one(0170000), "*w%d", m68000up | mcf5200 },
+{"moveb", one(0010000), one(0170000), "ms%d", mcf5200 },
+{"moveb", one(0010000), one(0170000), "nspd", mcf5200 },
+{"moveb", one(0010000), one(0170000), "osmd", mcf5200 },
+
+{"movew", one(0030000), one(0170000), "*w%d", m68000up },
+{"movew", one(0030000), one(0170000), "ms%d", mcf5200 },
+{"movew", one(0030000), one(0170000), "nspd", mcf5200 },
+{"movew", one(0030000), one(0170000), "osmd", mcf5200 },
{"movew", one(0040300), one(0177700), "Ss$s", m68000up },
{"movew", one(0040300), one(0177770), "SsDs", mcf5200 },
{"movew", one(0041300), one(0177700), "Cs$s", m68010up },
@@ -1280,12 +1295,18 @@ const struct m68k_opcode m68k_opcodes[] =
{"movew", one(0043300), one(0177700), "DsSd", mcf5200 },
{"movew", one(0043300), one(0177700), "#wSd", mcf5200 },
+{"movel", one(0020000), one(0170000), "*l%d", m68000up },
+{"movel", one(0020000), one(0170000), "ms%d", mcf5200 },
+{"movel", one(0020000), one(0170000), "nspd", mcf5200 },
+{"movel", one(0020000), one(0170000), "osmd", mcf5200 },
{"movel", one(0070000), one(0170400), "MsDd", m68000up | mcf5200 },
-{"movel", one(0020000), one(0170000), "*l%d", m68000up | mcf5200 },
{"movel", one(0047140), one(0177770), "AsUd", m68000up },
{"movel", one(0047150), one(0177770), "UdAs", m68000up },
-{"move", one(0030000), one(0170000), "*w%d", m68000up | mcf5200 },
+{"move", one(0030000), one(0170000), "*w%d", m68000up },
+{"move", one(0030000), one(0170000), "ms%d", mcf5200 },
+{"move", one(0030000), one(0170000), "nspd", mcf5200 },
+{"move", one(0030000), one(0170000), "osmd", mcf5200 },
{"move", one(0040300), one(0177700), "Ss$s", m68000up },
{"move", one(0040300), one(0177770), "SsDs", mcf5200 },
{"move", one(0041300), one(0177700), "Cs$s", m68010up },