From da34628ad851365680c53e19b24ffe14625d76cf Mon Sep 17 00:00:00 2001 From: "J.T. Conklin" Date: Tue, 26 Nov 1996 01:54:16 +0000 Subject: [PATCH] * m68k-opc.c (m68k-opcodes): Fix move and movem instructions for the coldfire. --- opcodes/ChangeLog | 4 ++-- opcodes/m68k-opc.c | 45 +++++++++++++++++++++++++++++++++------------ 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 - * 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 }, -- 2.7.4