OSDN Git Service

gas/testsuite/
authorNathan Sidwell <nathan@codesourcery.com>
Mon, 23 Apr 2007 07:51:33 +0000 (07:51 +0000)
committerNathan Sidwell <nathan@codesourcery.com>
Mon, 23 Apr 2007 07:51:33 +0000 (07:51 +0000)
* gas/m68k/br-isaa.s: New.
* gas/m68k/br-isaa.d: New.
* gas/m68k/br-isab.s: New.
* gas/m68k/br-isab.d: New.
* gas/m68k/br-isac.s: New.
* gas/m68k/br-isac.d: New.
* gas/m68k/all.exp: Adjust.

gas/
* config/tc-m68k.c (mcf54455_ctrl): New.
(HAVE_LONG_DISP, HAVE_LONG_CALL, HAVE_LONG_COND): New.
(m68k_archs): Add isac.
(m68k_cpus): Add 54455 family.
(m68k_ip): Split Bg into Bb, Bs, Bg.
(m68k_elf_final_processing): Add ISA_C.
* doc/c-m68k.texi (M680x0 Options): Add isac.

include/opcode/
* m68k.h (mcfisa_c): New.
(mcfusp, mcf_mask): Adjust.

bfd/
* archures.c (bfd_mach_mcf_isa_c, bfd_mach_mcf_isa_c_mac,
bfd_mach_mcf_isa_c_emac): New.
* elf32-m68k.c (ISAC_PLT_ENTRY_SIZE, elf_isac_plt0_entry,
elf_isac_plt_entry, elf_isac_plt_info): New.
(elf32_m68k_object_p): Add ISA_C.
(elf32_m68k_print_private_bfd_data): Print ISA_C.
(elf32_m68k_get_plt_info): Detect ISA_C.
* cpu-m68k.c (arch_info): Add ISAC.
(m68k_arch_features): Likewise,
(bfd_m68k_compatible): ISAs B & C are not compatible.

opcodes/
* m68k-opc.c: Mark mcfisa_c instructions.

bfd/ChangeLog
bfd/archures.c
bfd/bfd-in2.h
bfd/cpu-m68k.c
bfd/elf32-m68k.c
include/opcode/ChangeLog
include/opcode/m68k.h
opcodes/ChangeLog
opcodes/m68k-opc.c

index ad991c8..5758423 100644 (file)
@@ -1,3 +1,16 @@
+2007-04-23  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * archures.c (bfd_mach_mcf_isa_c, bfd_mach_mcf_isa_c_mac,
+       bfd_mach_mcf_isa_c_emac): New.
+       * elf32-m68k.c (ISAC_PLT_ENTRY_SIZE, elf_isac_plt0_entry,
+       elf_isac_plt_entry, elf_isac_plt_info): New.
+       (elf32_m68k_object_p): Add ISA_C.
+       (elf32_m68k_print_private_bfd_data): Print ISA_C.
+       (elf32_m68k_get_plt_info): Detect ISA_C.
+       * cpu-m68k.c (arch_info): Add ISAC.
+       (m68k_arch_features): Likewise,
+       (bfd_m68k_compatible): ISAs B & C are not compatible.
+
 2007-04-21  Nick Clifton  <nickc@redhat.com>
 
        * ecoff.c (_bfd_ecoff_write_armap): Initialise rehash.
index f43e2e6..3002043 100644 (file)
@@ -97,6 +97,9 @@ DESCRIPTION
 .#define bfd_mach_mcf_isa_b_float 23
 .#define bfd_mach_mcf_isa_b_float_mac 24
 .#define bfd_mach_mcf_isa_b_float_emac 25
+.#define bfd_mach_mcf_isa_c 26
+.#define bfd_mach_mcf_isa_c_mac 27
+.#define bfd_mach_mcf_isa_c_emac 28
 .  bfd_arch_vax,       {* DEC Vax *}
 .  bfd_arch_i960,      {* Intel 960 *}
 .    {* The order of the following is important.
index d34456a..8154435 100644 (file)
@@ -1761,6 +1761,9 @@ enum bfd_architecture
 #define bfd_mach_mcf_isa_b_float 23
 #define bfd_mach_mcf_isa_b_float_mac 24
 #define bfd_mach_mcf_isa_b_float_emac 25
+#define bfd_mach_mcf_isa_c 26
+#define bfd_mach_mcf_isa_c_mac 27
+#define bfd_mach_mcf_isa_c_emac 28
   bfd_arch_vax,       /* DEC Vax */
   bfd_arch_i960,      /* Intel 960 */
     /* The order of the following is important.
index 2e6f6c6..7e424a8 100644 (file)
@@ -76,19 +76,25 @@ static const bfd_arch_info_type arch_info_struct[] =
       FALSE, &arch_info_struct[24]),
     N(bfd_mach_mcf_isa_b_float_emac, "m68k:isa-b:float:emac",
       FALSE, &arch_info_struct[25]),
+    N(bfd_mach_mcf_isa_c, "m68k:isa-c",
+      FALSE, &arch_info_struct[26]),
+    N(bfd_mach_mcf_isa_c_mac, "m68k:isa-c:mac",
+      FALSE, &arch_info_struct[27]),
+    N(bfd_mach_mcf_isa_c_emac, "m68k:isa-c:emac",
+      FALSE, &arch_info_struct[28]),
 
     /* Legacy names for CF architectures */
-    N(bfd_mach_mcf_isa_a_nodiv, "m68k:5200", FALSE, &arch_info_struct[26]),
-    N(bfd_mach_mcf_isa_a_mac,"m68k:5206e", FALSE, &arch_info_struct[27]),
-    N(bfd_mach_mcf_isa_a_mac, "m68k:5307", FALSE, &arch_info_struct[28]),
-    N(bfd_mach_mcf_isa_b_nousp_mac, "m68k:5407", FALSE, &arch_info_struct[29]),
-    N(bfd_mach_mcf_isa_aplus_emac, "m68k:528x", FALSE, &arch_info_struct[30]),
-    N(bfd_mach_mcf_isa_aplus_emac, "m68k:521x", FALSE, &arch_info_struct[31]),
-    N(bfd_mach_mcf_isa_a_emac, "m68k:5249", FALSE, &arch_info_struct[32]),
+    N(bfd_mach_mcf_isa_a_nodiv, "m68k:5200", FALSE, &arch_info_struct[29]),
+    N(bfd_mach_mcf_isa_a_mac,"m68k:5206e", FALSE, &arch_info_struct[30]),
+    N(bfd_mach_mcf_isa_a_mac, "m68k:5307", FALSE, &arch_info_struct[31]),
+    N(bfd_mach_mcf_isa_b_nousp_mac, "m68k:5407", FALSE, &arch_info_struct[32]),
+    N(bfd_mach_mcf_isa_aplus_emac, "m68k:528x", FALSE, &arch_info_struct[33]),
+    N(bfd_mach_mcf_isa_aplus_emac, "m68k:521x", FALSE, &arch_info_struct[34]),
+    N(bfd_mach_mcf_isa_a_emac, "m68k:5249", FALSE, &arch_info_struct[35]),
     N(bfd_mach_mcf_isa_b_float_emac, "m68k:547x",
-      FALSE, &arch_info_struct[33]),
+      FALSE, &arch_info_struct[36]),
     N(bfd_mach_mcf_isa_b_float_emac, "m68k:548x",
-      FALSE, &arch_info_struct[34]),
+      FALSE, &arch_info_struct[37]),
     N(bfd_mach_mcf_isa_b_float_emac, "m68k:cfv4e", FALSE, 0),
   };
 
@@ -125,6 +131,9 @@ static const unsigned m68k_arch_features[] =
   mcfisa_a|mcfhwdiv|mcfisa_b|mcfusp|cfloat,
   mcfisa_a|mcfhwdiv|mcfisa_b|mcfusp|cfloat|mcfmac,
   mcfisa_a|mcfhwdiv|mcfisa_b|mcfusp|cfloat|mcfemac,
+  mcfisa_a|mcfhwdiv|mcfisa_c|mcfusp,
+  mcfisa_a|mcfhwdiv|mcfisa_c|mcfusp|mcfmac,
+  mcfisa_a|mcfhwdiv|mcfisa_c|mcfusp|mcfemac,
 };
 
 /* Return the count of bits set in MASK  */
@@ -222,6 +231,10 @@ bfd_m68k_compatible (const bfd_arch_info_type *a,
       if ((~features & (mcfisa_aa | mcfisa_b)) == 0)
        return NULL;
 
+      /* ISA B and ISA C are incompatible.  */
+      if ((~features & (mcfisa_b | mcfisa_c)) == 0)
+       return NULL;
+
       /* MAC and EMAC code cannot be merged.  */
       if ((~features & (mcfmac | mcfemac)) == 0)
        return NULL;
index 948a996..6cc0212 100644 (file)
@@ -300,6 +300,40 @@ static const struct elf_m68k_plt_info elf_isab_plt_info = {
   elf_isab_plt_entry, { 2, 20 }, 12
 };
 
+#define ISAC_PLT_ENTRY_SIZE 24 
+
+static const bfd_byte elf_isac_plt0_entry[ISAC_PLT_ENTRY_SIZE] =
+{
+  0x20, 0x3c,            /* move.l #offset,%d0 */
+  0, 0, 0, 0,            /* replaced with .got + 4 - . */
+  0x2e, 0xbb, 0x08, 0xfa, /* move.l (-6,%pc,%d0:l),(%sp) */
+  0x20, 0x3c,            /* move.l #offset,%d0 */
+  0, 0, 0, 0,            /* replaced with .got + 8 - . */
+  0x20, 0x7b, 0x08, 0xfa, /* move.l (-6,%pc,%d0:l), %a0 */
+  0x4e, 0xd0,            /* jmp (%a0) */
+  0x4e, 0x71             /* nop */
+};
+
+/* Subsequent entries in a procedure linkage table look like this.  */
+
+static const bfd_byte elf_isac_plt_entry[ISAC_PLT_ENTRY_SIZE] =
+{
+  0x20, 0x3c,            /* move.l #offset,%d0 */
+  0, 0, 0, 0,            /* replaced with (.got entry) - . */
+  0x20, 0x7b, 0x08, 0xfa, /* move.l (-6,%pc,%d0:l), %a0 */
+  0x4e, 0xd0,            /* jmp (%a0) */
+  0x2f, 0x3c,            /* move.l #offset,-(%sp) */
+  0, 0, 0, 0,            /* replaced with offset into relocation table */
+  0x61, 0xff,            /* bsr.l .plt */
+  0, 0, 0, 0             /* replaced with .plt - . */
+};
+
+static const struct elf_m68k_plt_info elf_isac_plt_info = {
+  ISAC_PLT_ENTRY_SIZE,
+  elf_isac_plt0_entry, { 2, 12},
+  elf_isac_plt_entry, { 2, 20 }, 12
+};
+
 #define CPU32_PLT_ENTRY_SIZE 24
 /* Procedure linkage table entries for the cpu32 */
 static const bfd_byte elf_cpu32_plt0_entry[CPU32_PLT_ENTRY_SIZE] =
@@ -468,6 +502,9 @@ elf32_m68k_object_p (bfd *abfd)
        case EF_M68K_CF_ISA_B:
          features |= mcfisa_a|mcfisa_b|mcfhwdiv|mcfusp;
          break;
+       case EF_M68K_CF_ISA_C:
+         features |= mcfisa_a|mcfisa_c|mcfhwdiv|mcfusp;
+         break;
        }
       switch (eflags & EF_M68K_CF_MAC_MASK)
        {
@@ -617,6 +654,9 @@ elf32_m68k_print_private_bfd_data (abfd, ptr)
            case EF_M68K_CF_ISA_B:
              isa = "B";
              break;
+           case EF_M68K_CF_ISA_C:
+             isa = "C";
+             break;
            }
          fprintf (file, " [isa %s]%s", isa, additional);
          if (eflags & EF_M68K_CF_FLOAT)
@@ -1145,6 +1185,8 @@ elf_m68k_get_plt_info (bfd *output_bfd)
     return &elf_cpu32_plt_info;
   if (features & mcfisa_b)
     return &elf_isab_plt_info;
+  if (features & mcfisa_c)
+    return &elf_isac_plt_info;
   return &elf_m68k_plt_info;
 }
 
index 55999e4..0c304a7 100644 (file)
@@ -1,3 +1,8 @@
+2007-04-23  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * m68k.h (mcfisa_c): New.
+       (mcfusp, mcf_mask): Adjust.
+
 2007-04-20  Alan Modra  <amodra@bigpond.net.au>
 
        * ppc.h (struct powerpc_operand): Replace "bits" with "bitm".
index f87a7a3..60bfb3a 100644 (file)
 
 #define mcfisa_a 0x4000                /* ColdFire ISA_A.  */
 #define mcfisa_aa 0x8000       /* ColdFire ISA_A+.  */
-#define mcfisa_b 0x10000               /* ColdFire ISA_B.  */
-#define mcfusp   0x20000       /* ColdFire USP instructions.  */
-#define mcf_mask 0x3e400
+#define mcfisa_b 0x10000       /* ColdFire ISA_B.  */
+#define mcfisa_c 0x20000       /* ColdFire ISA_C.  */
+#define mcfusp   0x40000       /* ColdFire USP instructions.  */
+#define mcf_mask 0x7e400
 
 /* Handy aliases.  */
 #define        m68040up   (m68040 | m68060)
index 119325b..bff2cde 100644 (file)
@@ -1,3 +1,7 @@
+2007-04-23  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * m68k-opc.c: Mark mcfisa_c instructions.
+
 2007-04-21  Richard Earnshaw  <rearnsha@arm.com>
 
        * arm-dis.c (arm_opcodes): Disassemble to unified syntax.
index c3948cf..b0f1885 100644 (file)
@@ -131,20 +131,20 @@ const struct m68k_opcode m68k_opcodes[] =
 {"bgtw", 2,    one(0067000),   one(0177777), "BW", m68000up | mcfisa_a },
 {"blew", 2,    one(0067400),   one(0177777), "BW", m68000up | mcfisa_a },
 
-{"bhil", 2,    one(0061377),   one(0177777), "BL", m68020up | cpu32 | fido_a | mcfisa_b},
-{"blsl", 2,    one(0061777),   one(0177777), "BL", m68020up | cpu32 | fido_a | mcfisa_b},
-{"bccl", 2,    one(0062377),   one(0177777), "BL", m68020up | cpu32 | fido_a | mcfisa_b},
-{"bcsl", 2,    one(0062777),   one(0177777), "BL", m68020up | cpu32 | fido_a | mcfisa_b},
-{"bnel", 2,    one(0063377),   one(0177777), "BL", m68020up | cpu32 | fido_a | mcfisa_b},
-{"beql", 2,    one(0063777),   one(0177777), "BL", m68020up | cpu32 | fido_a | mcfisa_b},
-{"bvcl", 2,    one(0064377),   one(0177777), "BL", m68020up | cpu32 | fido_a | mcfisa_b},
-{"bvsl", 2,    one(0064777),   one(0177777), "BL", m68020up | cpu32 | fido_a | mcfisa_b},
-{"bpll", 2,    one(0065377),   one(0177777), "BL", m68020up | cpu32 | fido_a | mcfisa_b},
-{"bmil", 2,    one(0065777),   one(0177777), "BL", m68020up | cpu32 | fido_a | mcfisa_b},
-{"bgel", 2,    one(0066377),   one(0177777), "BL", m68020up | cpu32 | fido_a | mcfisa_b},
-{"bltl", 2,    one(0066777),   one(0177777), "BL", m68020up | cpu32 | fido_a | mcfisa_b},
-{"bgtl", 2,    one(0067377),   one(0177777), "BL", m68020up | cpu32 | fido_a | mcfisa_b},
-{"blel", 2,    one(0067777),   one(0177777), "BL", m68020up | cpu32 | fido_a | mcfisa_b},
+{"bhil", 2,    one(0061377),   one(0177777), "BL", m68020up | cpu32 | fido_a | mcfisa_b | mcfisa_c},
+{"blsl", 2,    one(0061777),   one(0177777), "BL", m68020up | cpu32 | fido_a | mcfisa_b | mcfisa_c},
+{"bccl", 2,    one(0062377),   one(0177777), "BL", m68020up | cpu32 | fido_a | mcfisa_b | mcfisa_c},
+{"bcsl", 2,    one(0062777),   one(0177777), "BL", m68020up | cpu32 | fido_a | mcfisa_b | mcfisa_c},
+{"bnel", 2,    one(0063377),   one(0177777), "BL", m68020up | cpu32 | fido_a | mcfisa_b | mcfisa_c},
+{"beql", 2,    one(0063777),   one(0177777), "BL", m68020up | cpu32 | fido_a | mcfisa_b | mcfisa_c},
+{"bvcl", 2,    one(0064377),   one(0177777), "BL", m68020up | cpu32 | fido_a | mcfisa_b | mcfisa_c},
+{"bvsl", 2,    one(0064777),   one(0177777), "BL", m68020up | cpu32 | fido_a | mcfisa_b | mcfisa_c},
+{"bpll", 2,    one(0065377),   one(0177777), "BL", m68020up | cpu32 | fido_a | mcfisa_b | mcfisa_c},
+{"bmil", 2,    one(0065777),   one(0177777), "BL", m68020up | cpu32 | fido_a | mcfisa_b | mcfisa_c},
+{"bgel", 2,    one(0066377),   one(0177777), "BL", m68020up | cpu32 | fido_a | mcfisa_b | mcfisa_c},
+{"bltl", 2,    one(0066777),   one(0177777), "BL", m68020up | cpu32 | fido_a | mcfisa_b | mcfisa_c},
+{"bgtl", 2,    one(0067377),   one(0177777), "BL", m68020up | cpu32 | fido_a | mcfisa_b | mcfisa_c},
+{"blel", 2,    one(0067777),   one(0177777), "BL", m68020up | cpu32 | fido_a | mcfisa_b | mcfisa_c},
 
 {"bhis", 2,    one(0061000),   one(0177400), "BB", m68000up | mcfisa_a },
 {"blss", 2,    one(0061400),   one(0177400), "BB", m68000up | mcfisa_a },
@@ -195,7 +195,7 @@ const struct m68k_opcode m68k_opcodes[] =
 
 {"bgnd", 2,    one(0045372),   one(0177777), "", cpu32 | fido_a },
 
-{"bitrev", 2,  one(0000300),   one(0177770), "Ds", mcfisa_aa},
+{"bitrev", 2,  one(0000300),   one(0177770), "Ds", mcfisa_aa | mcfisa_c},
 
 {"bkpt", 2,    one(0044110),   one(0177770), "ts", m68010up },
 
@@ -209,14 +209,14 @@ const struct m68k_opcode m68k_opcodes[] =
 {"bset", 4,    one(0004300),   one(0177700), "#bqs", mcfisa_a },
 
 {"bsrw", 2,    one(0060400),   one(0177777), "BW", m68000up | mcfisa_a },
-{"bsrl", 2,    one(0060777),   one(0177777), "BL", m68020up | cpu32 | fido_a | mcfisa_b},
+{"bsrl", 2,    one(0060777),   one(0177777), "BL", m68020up | cpu32 | fido_a | mcfisa_b | mcfisa_c},
 {"bsrs", 2,    one(0060400),   one(0177400), "BB", m68000up | mcfisa_a },
 
 {"btst", 2,    one(0000400),   one(0170700), "Dd;b", m68000up | mcfisa_a },
 {"btst", 4,    one(0004000),   one(0177700), "#b@s", m68000up },
 {"btst", 4,    one(0004000),   one(0177700), "#bqs", mcfisa_a },
 
-{"byterev", 2, one(0001300),   one(0177770), "Ds", mcfisa_aa},
+{"byterev", 2, one(0001300),   one(0177770), "Ds", mcfisa_aa | mcfisa_c},
 
 {"callm", 4,   one(0003300),   one(0177700), "#b!s", m68020 },
 
@@ -264,9 +264,9 @@ const struct m68k_opcode m68k_opcodes[] =
 {"cmpal", 2,   one(0130700),   one(0170700), "*lAd", m68000up | mcfisa_a },
 
 {"cmpib", 4,   one(0006000),   one(0177700), "#b@s", m68000up },
-{"cmpib", 4,   one(0006000),   one(0177700), "#bDs", mcfisa_b },
+{"cmpib", 4,   one(0006000),   one(0177700), "#bDs", mcfisa_b | mcfisa_c },
 {"cmpiw", 4,   one(0006100),   one(0177700), "#w@s", m68000up },
-{"cmpiw", 4,   one(0006100),   one(0177700), "#wDs", mcfisa_b },
+{"cmpiw", 4,   one(0006100),   one(0177700), "#wDs", mcfisa_b | mcfisa_c },
 {"cmpil", 6,   one(0006200),   one(0177700), "#l@s", m68000up },
 {"cmpil", 6,   one(0006200),   one(0177700), "#lDs", mcfisa_a },
 
@@ -276,15 +276,15 @@ const struct m68k_opcode m68k_opcodes[] =
 
 /* The cmp opcode can generate the cmpa, cmpm, and cmpi instructions.  */
 {"cmpb", 4,    one(0006000),   one(0177700), "#b@s", m68000up },
-{"cmpb", 4,    one(0006000),   one(0177700), "#bDs", mcfisa_b },
+{"cmpb", 4,    one(0006000),   one(0177700), "#bDs", mcfisa_b | mcfisa_c },
 {"cmpb", 2,    one(0130410),   one(0170770), "+s+d", m68000up },
 {"cmpb", 2,    one(0130000),   one(0170700), ";bDd", m68000up },
-{"cmpb", 2,    one(0130000),   one(0170700), "*bDd", mcfisa_b },
+{"cmpb", 2,    one(0130000),   one(0170700), "*bDd", mcfisa_b | mcfisa_c },
 {"cmpw", 2,    one(0130300),   one(0170700), "*wAd", m68000up },
 {"cmpw", 4,    one(0006100),   one(0177700), "#w@s", m68000up },
-{"cmpw", 4,    one(0006100),   one(0177700), "#wDs", mcfisa_b },
+{"cmpw", 4,    one(0006100),   one(0177700), "#wDs", mcfisa_b | mcfisa_c },
 {"cmpw", 2,    one(0130510),   one(0170770), "+s+d", m68000up },
-{"cmpw", 2,    one(0130100),   one(0170700), "*wDd", m68000up | mcfisa_b },
+{"cmpw", 2,    one(0130100),   one(0170700), "*wDd", m68000up | mcfisa_b | mcfisa_c },
 {"cmpl", 2,    one(0130700),   one(0170700), "*lAd", m68000up | mcfisa_a },
 {"cmpl", 6,    one(0006200),   one(0177700), "#l@s", m68000up },
 {"cmpl", 6,    one(0006200),   one(0177700), "#lDs", mcfisa_a },
@@ -360,7 +360,7 @@ const struct m68k_opcode m68k_opcodes[] =
 {"extl", 2,    one(0044300),   one(0177770), "Ds", m68000up|mcfisa_a },
 {"extbl", 2,   one(0044700),   one(0177770), "Ds", m68020up | cpu32 | fido_a | mcfisa_a },
 
-{"ff1", 2,     one(0002300), one(0177770), "Ds", mcfisa_aa},
+{"ff1", 2,     one(0002300), one(0177770), "Ds", mcfisa_aa | mcfisa_c},
 
 /* float stuff starts here */
 
@@ -1423,16 +1423,16 @@ const struct m68k_opcode m68k_opcodes[] =
 {"halt", 2,    one(0045310),   one(0177777), "",     m68060 | mcfisa_a },
 
 {"illegal", 2, one(0045374),   one(0177777), "",     m68000up | mcfisa_a },
-{"intouch", 2, one(0xf428),    one(0xfff8), "As",    mcfisa_b },
+{"intouch", 2, one(0xf428),    one(0xfff8), "As",    mcfisa_b | mcfisa_c },
 
 {"jmp", 2,     one(0047300),   one(0177700), "!s", m68000up | mcfisa_a },
 
-{"jra", 2,     one(0060000),   one(0177400), "Bg", m68000up | mcfisa_a },
+{"jra", 2,     one(0060000),   one(0177400), "Bb", m68000up | mcfisa_a },
 {"jra", 2,     one(0047300),   one(0177700), "!s", m68000up | mcfisa_a },
 
 {"jsr", 2,     one(0047200),   one(0177700), "!s", m68000up | mcfisa_a },
 
-{"jbsr", 2,    one(0060400),   one(0177400), "Bg", m68000up | mcfisa_a },
+{"jbsr", 2,    one(0060400),   one(0177400), "Bs", m68000up | mcfisa_a },
 {"jbsr", 2,    one(0047200),   one(0177700), "!s", m68000up | mcfisa_a },
 
 {"lea", 2,     one(0040700),   one(0170700), "!sAd", m68000up | mcfisa_a },
@@ -1553,13 +1553,13 @@ const struct m68k_opcode m68k_opcodes[] =
 {"moveb", 2,   one(0010200),   one(0170700), "obad", mcfisa_a },
 {"moveb", 2,   one(0010300),   one(0170700), "ob+d", mcfisa_a },
 {"moveb", 2,   one(0010400),   one(0170700), "ob-d", mcfisa_a },
-{"moveb", 2,   one(0010000),   one(0170000), "obnd", mcfisa_b },
+{"moveb", 2,   one(0010000),   one(0170000), "obnd", mcfisa_b | mcfisa_c },
 
 {"movew", 2,   one(0030000),   one(0170000), "*w%d", m68000up },
 {"movew", 2,   one(0030000),   one(0170000), "ms%d", mcfisa_a },
 {"movew", 2,   one(0030000),   one(0170000), "nspd", mcfisa_a },
 {"movew", 2,   one(0030000),   one(0170000), "owmd", mcfisa_a },
-{"movew", 2,   one(0030000),   one(0170000), "ownd", mcfisa_b },
+{"movew", 2,   one(0030000),   one(0170000), "ownd", mcfisa_b | mcfisa_c },
 {"movew", 2,   one(0040300),   one(0177700), "Ss$s", m68000up },
 {"movew", 2,   one(0040300),   one(0177770), "SsDs", mcfisa_a },
 {"movew", 2,   one(0041300),   one(0177700), "Cs$s", m68010up },
@@ -1576,7 +1576,7 @@ const struct m68k_opcode m68k_opcodes[] =
 {"movel", 2,   one(0020000),   one(0170000), "ms%d", mcfisa_a },
 {"movel", 2,   one(0020000),   one(0170000), "nspd", mcfisa_a },
 {"movel", 2,   one(0020000),   one(0170000), "olmd", mcfisa_a },
-{"movel", 2,   one(0020000),   one(0170000), "olnd", mcfisa_b },
+{"movel", 2,   one(0020000),   one(0170000), "olnd", mcfisa_b | mcfisa_c },
 {"movel", 2,   one(0047140),   one(0177770), "AsUd", m68000up | mcfusp },
 {"movel", 2,   one(0047150),   one(0177770), "UdAs", m68000up | mcfusp },
 {"movel", 2,   one(0120600),   one(0177760), "EsRs", mcfmac },
@@ -1609,7 +1609,7 @@ const struct m68k_opcode m68k_opcodes[] =
 {"move", 2,    one(0030000),   one(0170000), "ms%d", mcfisa_a },
 {"move", 2,    one(0030000),   one(0170000), "nspd", mcfisa_a },
 {"move", 2,    one(0030000),   one(0170000), "owmd", mcfisa_a },
-{"move", 2,    one(0030000),   one(0170000), "ownd", mcfisa_b },
+{"move", 2,    one(0030000),   one(0170000), "ownd", mcfisa_b | mcfisa_c },
 {"move", 2,    one(0040300),   one(0177700), "Ss$s", m68000up },
 {"move", 2,    one(0040300),   one(0177770), "SsDs", mcfisa_a },
 {"move", 2,    one(0041300),   one(0177700), "Cs$s", m68010up },
@@ -1624,11 +1624,11 @@ const struct m68k_opcode m68k_opcodes[] =
 {"move", 2,    one(0047140),   one(0177770), "AsUd", m68000up },
 {"move", 2,    one(0047150),   one(0177770), "UdAs", m68000up },
 
-{"mov3ql", 2,  one(0120500),   one(0170700), "xd%s", mcfisa_b },
-{"mvsb", 2,    one(0070400),   one(0170700), "*bDd", mcfisa_b },
-{"mvsw", 2,    one(0070500),   one(0170700), "*wDd", mcfisa_b },
-{"mvzb", 2,    one(0070600),   one(0170700), "*bDd", mcfisa_b },
-{"mvzw", 2,    one(0070700),   one(0170700), "*wDd", mcfisa_b },
+{"mov3ql", 2,  one(0120500),   one(0170700), "xd%s", mcfisa_b | mcfisa_c },
+{"mvsb", 2,    one(0070400),   one(0170700), "*bDd", mcfisa_b | mcfisa_c },
+{"mvsw", 2,    one(0070500),   one(0170700), "*wDd", mcfisa_b | mcfisa_c },
+{"mvzb", 2,    one(0070600),   one(0170700), "*bDd", mcfisa_b | mcfisa_c },
+{"mvzw", 2,    one(0070700),   one(0170700), "*wDd", mcfisa_b | mcfisa_c },
 
 {"movesb", 4,  two(0007000, 0),     two(0177700, 07777), "~sR1", m68010up },
 {"movesb", 4,  two(0007000, 04000), two(0177700, 07777), "R1~s", m68010up },
@@ -1993,7 +1993,7 @@ const struct m68k_opcode m68k_opcodes[] =
                
 {"rts", 2,     one(0047165),           one(0177777), "",   m68000up | mcfisa_a },
 
-{"satsl", 2,   one(0046200),           one(0177770), "Ds", mcfisa_b },
+{"satsl", 2,   one(0046200),           one(0177770), "Ds", mcfisa_b | mcfisa_c },
 
 {"sbcd", 2,    one(0100400),           one(0170770), "DsDd", m68000up },
 {"sbcd", 2,    one(0100410),           one(0170770), "-s-d", m68000up },
@@ -2142,7 +2142,7 @@ const struct m68k_opcode m68k_opcodes[] =
 {"swbeg", 4,   one(0045374),   one(0177777), "#w",   m68000up | mcfisa_a },
 {"swbegl", 6,  one(0045375),   one(0177777), "#l",   m68000up | mcfisa_a },
 
-{"tas", 2,     one(0045300),   one(0177700), "$s", m68000up | mcfisa_b},
+{"tas", 2,     one(0045300),   one(0177700), "$s", m68000up | mcfisa_b | mcfisa_c},
 
 #define TBL1(name,insn_size,signed,round,size)                                 \
   {name, insn_size, two(0174000, (signed<<11)|(!round<<10)|(size<<6)|0000400), \