diff options
-rw-r--r-- | opcodes/ChangeLog | 6 | ||||
-rw-r--r-- | opcodes/m68k-opc.c | 99 |
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 }, |