aboutsummaryrefslogtreecommitdiff
path: root/opcodes
diff options
context:
space:
mode:
Diffstat (limited to 'opcodes')
-rw-r--r--opcodes/ChangeLog6
-rw-r--r--opcodes/m68k-opc.c99
2 files changed, 71 insertions, 34 deletions
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index b820558..682ab0f 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,5 +1,9 @@
-Mon Nov 25 13:08:40 1996 J.T. Conklin <jtc@cygnus.com>
+Mon Nov 25 14:24:18 1996 J.T. Conklin <jtc@cygnus.com>
+ * m68k-opc.c (m68k-opcodes): The coldfire (mcf5200) can only use
+ register operands for immediate arithmetic, not, neg, negx, and
+ set according to condition instructions.
+
* m68k-opc.c (m68k_opcodes): Consistantly Use "s" as the storage
specifier of the effective-address operand in immediate forms of
arithmetic instructions. The specifier for the immediate operand
diff --git a/opcodes/m68k-opc.c b/opcodes/m68k-opc.c
index bc01f7a..e9db5cb 100644
--- a/opcodes/m68k-opc.c
+++ b/opcodes/m68k-opc.c
@@ -38,7 +38,8 @@ const struct m68k_opcode m68k_opcodes[] =
{"addib", one(0003000), one(0177700), "#b$s", m68000up },
{"addiw", one(0003100), one(0177700), "#w$s", m68000up },
-{"addil", one(0003200), one(0177700), "#l$s", m68000up | mcf5200 },
+{"addil", one(0003200), one(0177700), "#l$s", m68000up },
+{"addil", one(0003200), one(0177700), "#lDs", mcf5200 },
{"addqb", one(0050000), one(0170700), "Qd$b", m68000up },
{"addqw", one(0050100), one(0170700), "Qd%w", m68000up },
@@ -55,7 +56,8 @@ const struct m68k_opcode m68k_opcodes[] =
{"addw", one(0150100), one(0170700), "*wDd", m68000up },
{"addw", one(0150500), one(0170700), "Dd~w", m68000up },
{"addl", one(0050200), one(0170700), "Qd%l", m68000up | mcf5200 },
-{"addl", one(0003200), one(0177700), "#l$s", m68000up | mcf5200 },
+{"addl", one(0003200), one(0177700), "#l$s", m68000up },
+{"addl", one(0003200), one(0177700), "#lDs", mcf5200 },
{"addl", one(0150700), one(0170700), "*lAd", m68000up | mcf5200 },
{"addl", one(0150200), one(0170700), "*lDd", m68000up | mcf5200 },
{"addl", one(0150600), one(0170700), "Dd~l", m68000up | mcf5200 },
@@ -71,7 +73,8 @@ const struct m68k_opcode m68k_opcodes[] =
{"andib", one(0001074), one(0177777), "#bCs", m68000up },
{"andiw", one(0001100), one(0177700), "#w$s", m68000up },
{"andiw", one(0001174), one(0177777), "#wSs", m68000up },
-{"andil", one(0001200), one(0177700), "#l$s", m68000up | mcf5200 },
+{"andil", one(0001200), one(0177700), "#l$s", m68000up },
+{"andil", one(0001200), one(0177700), "#lDs", mcf5200 },
{"andi", one(0001100), one(0177700), "#w$s", m68000up },
{"andi", one(0001074), one(0177777), "#bCs", m68000up },
{"andi", one(0001174), one(0177777), "#wSs", m68000up },
@@ -85,7 +88,8 @@ const struct m68k_opcode m68k_opcodes[] =
{"andw", one(0001174), one(0177777), "#wSs", m68000up },
{"andw", one(0140100), one(0170700), ";wDd", m68000up },
{"andw", one(0140500), one(0170700), "Dd~w", m68000up },
-{"andl", one(0001200), one(0177700), "#l$s", m68000up | mcf5200 },
+{"andl", one(0001200), one(0177700), "#l$s", m68000up },
+{"andl", one(0001200), one(0177700), "#lDs", mcf5200 },
{"andl", one(0140200), one(0170700), ";lDd", m68000up | mcf5200 },
{"andl", one(0140600), one(0170700), "Dd~l", m68000up | mcf5200 },
{"and", one(0001100), one(0177700), "#w$w", m68000up },
@@ -251,11 +255,13 @@ const struct m68k_opcode m68k_opcodes[] =
{"cmpib", one(0006000), one(0177700), "#b;s", m68000up },
{"cmpiw", one(0006100), one(0177700), "#w;s", m68000up },
-{"cmpil", one(0006200), one(0177700), "#l;s", m68000up | mcf5200 },
+{"cmpil", one(0006200), one(0177700), "#l;s", m68000up },
+{"cmpil", one(0006200), one(0177700), "#l;s", m68000up },
+{"cmpil", one(0006200), one(0177700), "#lDs", mcf5200 },
{"cmpmb", one(0130410), one(0170770), "+s+d", m68000up },
{"cmpmw", one(0130510), one(0170770), "+s+d", m68000up },
-{"cmpml", one(0130610), one(0170770), "+s+d", m68000up | mcf5200 },
+{"cmpml", one(0130610), one(0170770), "+s+d", m68000up },
/* The cmp opcode can generate the cmpa, cmpm, and cmpi instructions. */
{"cmpb", one(0006000), one(0177700), "#b;s", m68000up },
@@ -266,8 +272,9 @@ const struct m68k_opcode m68k_opcodes[] =
{"cmpw", one(0130510), one(0170770), "+s+d", m68000up },
{"cmpw", one(0130100), one(0170700), "*wDd", m68000up },
{"cmpl", one(0130700), one(0170700), "*lAd", m68000up | mcf5200 },
-{"cmpl", one(0006200), one(0177700), "#l;s", m68000up | mcf5200 },
-{"cmpl", one(0130610), one(0170770), "+s+d", m68000up | mcf5200 },
+{"cmpl", one(0006200), one(0177700), "#l;s", m68000up },
+{"cmpl", one(0006200), one(0177700), "#lDs", mcf5200 },
+{"cmpl", one(0130610), one(0170770), "+s+d", m68000up },
{"cmpl", one(0130200), one(0170700), "*lDd", m68000up | mcf5200 },
{"dbcc", one(0052310), one(0177770), "DsBw", m68000up },
@@ -307,7 +314,8 @@ const struct m68k_opcode m68k_opcodes[] =
{"eorib", one(0005074), one(0177777), "#bCs", m68000up },
{"eoriw", one(0005100), one(0177700), "#w$s", m68000up },
{"eoriw", one(0005174), one(0177777), "#wSs", m68000up },
-{"eoril", one(0005200), one(0177700), "#l$s", m68000up | mcf5200 },
+{"eoril", one(0005200), one(0177700), "#l$s", m68000up },
+{"eoril", one(0005200), one(0177700), "#lDs", mcf5200 },
{"eori", one(0005074), one(0177777), "#bCs", m68000up },
{"eori", one(0005174), one(0177777), "#wSs", m68000up },
{"eori", one(0005100), one(0177700), "#w$s", m68000up },
@@ -319,7 +327,8 @@ const struct m68k_opcode m68k_opcodes[] =
{"eorw", one(0005100), one(0177700), "#w$s", m68000up },
{"eorw", one(0005174), one(0177777), "#wSs", m68000up },
{"eorw", one(0130500), one(0170700), "Dd$s", m68000up },
-{"eorl", one(0005200), one(0177700), "#l$s", m68000up | mcf5200 },
+{"eorl", one(0005200), one(0177700), "#l$s", m68000up },
+{"eorl", one(0005200), one(0177700), "#lDs", mcf5200 },
{"eorl", one(0130600), one(0170700), "Dd$s", m68000up | mcf5200 },
{"eor", one(0005074), one(0177777), "#bCs", m68000up },
{"eor", one(0005174), one(0177777), "#wSs", m68000up },
@@ -1311,23 +1320,27 @@ const struct m68k_opcode m68k_opcodes[] =
{"negb", one(0042000), one(0177700), "$s", m68000up },
{"negw", one(0042100), one(0177700), "$s", m68000up },
-{"negl", one(0042200), one(0177700), "$s", m68000up | mcf5200},
+{"negl", one(0042200), one(0177700), "$s", m68000up },
+{"negl", one(0042200), one(0177700), "Ds", mcf5200},
{"negxb", one(0040000), one(0177700), "$s", m68000up },
{"negxw", one(0040100), one(0177700), "$s", m68000up },
-{"negxl", one(0040200), one(0177700), "$s", m68000up | mcf5200},
+{"negxl", one(0040200), one(0177700), "$s", m68000up },
+{"negxl", one(0040200), one(0177700), "Ds", mcf5200},
{"nop", one(0047161), one(0177777), "", m68000up | mcf5200},
{"notb", one(0043000), one(0177700), "$s", m68000up },
{"notw", one(0043100), one(0177700), "$s", m68000up },
-{"notl", one(0043200), one(0177700), "$s", m68000up | mcf5200},
+{"notl", one(0043200), one(0177700), "$s", m68000up },
+{"notl", one(0043200), one(0177700), "Ds", mcf5200},
{"orib", one(0000000), one(0177700), "#b$s", m68000up },
{"orib", one(0000074), one(0177777), "#bCs", m68000up },
{"oriw", one(0000100), one(0177700), "#w$s", m68000up },
{"oriw", one(0000174), one(0177777), "#wSs", m68000up },
-{"oril", one(0000200), one(0177700), "#l$s", m68000up | mcf5200 },
+{"oril", one(0000200), one(0177700), "#l$s", m68000up },
+{"oril", one(0000200), one(0177700), "#lDs", mcf5200 },
{"ori", one(0000074), one(0177777), "#bCs", m68000up },
{"ori", one(0000100), one(0177700), "#w$s", m68000up },
{"ori", one(0000174), one(0177777), "#wSs", m68000up },
@@ -1341,7 +1354,8 @@ const struct m68k_opcode m68k_opcodes[] =
{"orw", one(0000174), one(0177777), "#wSs", m68000up },
{"orw", one(0100100), one(0170700), ";wDd", m68000up },
{"orw", one(0100500), one(0170700), "Dd~s", m68000up },
-{"orl", one(0000200), one(0177700), "#l$s", m68000up | mcf5200 },
+{"orl", one(0000200), one(0177700), "#l$s", m68000up },
+{"orl", one(0000200), one(0177700), "#lDs", mcf5200 },
{"orl", one(0100200), one(0170700), ";lDd", m68000up | mcf5200 },
{"orl", one(0100600), one(0170700), "Dd~s", m68000up | mcf5200 },
{"or", one(0000074), one(0177777), "#bCs", m68000up },
@@ -1615,22 +1629,39 @@ const struct m68k_opcode m68k_opcodes[] =
{"sbcd", one(0100400), one(0170770), "DsDd", m68000up },
{"sbcd", one(0100410), one(0170770), "-s-d", m68000up },
-{"scc", one(0052300), one(0177700), "$s", m68000up | mcf5200 },
-{"scs", one(0052700), one(0177700), "$s", m68000up | mcf5200 },
-{"seq", one(0053700), one(0177700), "$s", m68000up | mcf5200 },
-{"sf", one(0050700), one(0177700), "$s", m68000up | mcf5200 },
-{"sge", one(0056300), one(0177700), "$s", m68000up | mcf5200 },
-{"sgt", one(0057300), one(0177700), "$s", m68000up | mcf5200 },
-{"shi", one(0051300), one(0177700), "$s", m68000up | mcf5200 },
-{"sle", one(0057700), one(0177700), "$s", m68000up | mcf5200 },
-{"sls", one(0051700), one(0177700), "$s", m68000up | mcf5200 },
-{"slt", one(0056700), one(0177700), "$s", m68000up | mcf5200 },
-{"smi", one(0055700), one(0177700), "$s", m68000up | mcf5200 },
-{"sne", one(0053300), one(0177700), "$s", m68000up | mcf5200 },
-{"spl", one(0055300), one(0177700), "$s", m68000up | mcf5200 },
-{"st", one(0050300), one(0177700), "$s", m68000up | mcf5200 },
-{"svc", one(0054300), one(0177700), "$s", m68000up | mcf5200 },
-{"svs", one(0054700), one(0177700), "$s", m68000up | mcf5200 },
+
+{"scc", one(0052300), one(0177700), "$s", m68000up },
+{"scc", one(0052300), one(0177700), "Ds", mcf5200 },
+{"scs", one(0052700), one(0177700), "$s", m68000up },
+{"scs", one(0052700), one(0177700), "Ds", mcf5200 },
+{"seq", one(0053700), one(0177700), "$s", m68000up },
+{"seq", one(0053700), one(0177700), "Ds", mcf5200 },
+{"sf", one(0050700), one(0177700), "$s", m68000up },
+{"sf", one(0050700), one(0177700), "Ds", mcf5200 },
+{"sge", one(0056300), one(0177700), "$s", m68000up },
+{"sge", one(0056300), one(0177700), "Ds", mcf5200 },
+{"sgt", one(0057300), one(0177700), "$s", m68000up },
+{"sgt", one(0057300), one(0177700), "Ds", mcf5200 },
+{"shi", one(0051300), one(0177700), "$s", m68000up },
+{"shi", one(0051300), one(0177700), "Ds", mcf5200 },
+{"sle", one(0057700), one(0177700), "$s", m68000up },
+{"sle", one(0057700), one(0177700), "Ds", mcf5200 },
+{"sls", one(0051700), one(0177700), "$s", m68000up },
+{"sls", one(0051700), one(0177700), "Ds", mcf5200 },
+{"slt", one(0056700), one(0177700), "$s", m68000up },
+{"slt", one(0056700), one(0177700), "Ds", mcf5200 },
+{"smi", one(0055700), one(0177700), "$s", m68000up },
+{"smi", one(0055700), one(0177700), "Ds", mcf5200 },
+{"sne", one(0053300), one(0177700), "$s", m68000up },
+{"sne", one(0053300), one(0177700), "Ds", mcf5200 },
+{"spl", one(0055300), one(0177700), "$s", m68000up },
+{"spl", one(0055300), one(0177700), "Ds", mcf5200 },
+{"st", one(0050300), one(0177700), "$s", m68000up },
+{"st", one(0050300), one(0177700), "Ds", mcf5200 },
+{"svc", one(0054300), one(0177700), "$s", m68000up },
+{"svc", one(0054300), one(0177700), "Ds", mcf5200 },
+{"svs", one(0054700), one(0177700), "$s", m68000up },
+{"svs", one(0054700), one(0177700), "Ds", mcf5200 },
{"stop", one(0047162), one(0177777), "#w", m68000up | mcf5200 },
@@ -1639,7 +1670,8 @@ const struct m68k_opcode m68k_opcodes[] =
{"subib", one(0002000), one(0177700), "#b$s", m68000up },
{"subiw", one(0002100), one(0177700), "#w$s", m68000up },
-{"subil", one(0002200), one(0177700), "#l$s", m68000up | mcf5200 },
+{"subil", one(0002200), one(0177700), "#l$s", m68000up },
+{"subil", one(0002200), one(0177700), "#lDs", mcf5200 },
{"subqb", one(0050400), one(0170700), "Qd%s", m68000up },
{"subqw", one(0050500), one(0170700), "Qd%s", m68000up },
@@ -1656,7 +1688,8 @@ const struct m68k_opcode m68k_opcodes[] =
{"subw", one(0110100), one(0170700), "*wDd", m68000up },
{"subw", one(0110500), one(0170700), "Dd~s", m68000up },
{"subl", one(0050600), one(0170700), "Qd%s", m68000up | mcf5200 },
-{"subl", one(0002200), one(0177700), "#l$s", m68000up | mcf5200 },
+{"subl", one(0002200), one(0177700), "#l$s", m68000up },
+{"subl", one(0002200), one(0177700), "#lDs", mcf5200 },
{"subl", one(0110700), one(0170700), "*lAd", m68000up | mcf5200 },
{"subl", one(0110200), one(0170700), "*lDd", m68000up | mcf5200 },
{"subl", one(0110600), one(0170700), "Dd~s", m68000up | mcf5200 },