* m68k-opc.c (m68k-opcodes): Fix move and movem instructions for
authorJ.T. Conklin <jtc@acorntoolworks.com>
Tue, 26 Nov 1996 01:54:16 +0000 (01:54 +0000)
committerJ.T. Conklin <jtc@acorntoolworks.com>
Tue, 26 Nov 1996 01:54:16 +0000 (01:54 +0000)
the coldfire.

opcodes/ChangeLog
opcodes/m68k-opc.c

index 27ece7a29ce6cafb7472aafa782551c5c829ab49..67d43942ec5be0d6f11a1957bf646794361e1982 100644 (file)
@@ -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
index 3b488501e4939e13279f3b505af7337845345996..b4b4e87781cfa506cf7ca3546f34224709f80810 100644 (file)
@@ -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 },