This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH]: Support new ColdFire variants


Now that Motorola/Freescale has announced the 521x, 547x, 548x
ColdFire chips, I decided to add them to gas, and to add in any
missing ones. In the process I had to revamp how the instructions are
selected since the newer chips mix-n-match instructions sets, out of
a combination of ISA_A, ISA_A+, ISA_B, DIV, USP, MAC, EMAC, FPU.
Hopefully this patch goes a long way toward untangling this. 

--
Peter Barada
peter@the-baradas.com


bfd/
2004-04-23  Peter Barada  <peter@the-baradas.com>
	* bfd_archures.c(bfd_architecture): Add 521x,5249,547x,548x.
	* bfd-in2.h(bfd_architecture): Likewise.
	* cpu-m68k.c(bfd_m68k_arch): Likewise.

gas/
2004-04-23  Peter Barada  <peter@the-baradas.com>
	* config/tc-m68k.c: Add find_cf_chip to print list of valid
	chips for invalid coldfire instructions, rename selectors
	for ColdFire sub-variants, add 521x,5249,547x,548x and aliases,
	add current_chip to track which chip is referred to(including save/restore),
	use current_chip to select control registers, not current_arch.
	(md_show_usage)Add new chips.

include/
2004-04-23  Peter Barada  <peter@the-baradas.com>
	* opcode/m68k.h: Switch from ColdFire chip name to core variant.

opcodes/
2004-04-23  Peter Barada  <peter@the-baradas.com>
	* m68k-dis.c(print_insn_m68k): Add new chips, use core
	variants in arch_mask.  Only set m68881/68851 for 68k chips.
	* m68k-op.c switch from ColdFire chips to core variants.


Index: bfd/archures.c
===================================================================
RCS file: /cvs/uberbaum/bfd/archures.c,v
retrieving revision 1.92
diff -c -3 -p -r1.92 archures.c
*** bfd/archures.c	22 Apr 2004 10:33:14 -0000	1.92
--- bfd/archures.c	23 Apr 2004 19:00:25 -0000
*************** DESCRIPTION
*** 86,91 ****
--- 86,95 ----
  .#define bfd_mach_mcf5407  12
  .#define bfd_mach_mcf528x  13
  .#define bfd_mach_mcfv4e   14
+ .#define bfd_mach_mcf521x   15
+ .#define bfd_mach_mcf5249   16
+ .#define bfd_mach_mcf547x   17
+ .#define bfd_mach_mcf548x   18
  .  bfd_arch_vax,       {* DEC Vax *}
  .  bfd_arch_i960,      {* Intel 960 *}
  .    {* The order of the following is important.
Index: bfd/bfd-in2.h
===================================================================
RCS file: /cvs/uberbaum/bfd/bfd-in2.h,v
retrieving revision 1.271
diff -c -3 -p -r1.271 bfd-in2.h
*** bfd/bfd-in2.h	22 Apr 2004 14:45:30 -0000	1.271
--- bfd/bfd-in2.h	23 Apr 2004 19:00:26 -0000
*************** enum bfd_architecture
*** 1492,1497 ****
--- 1492,1501 ----
  #define bfd_mach_mcf5407  12
  #define bfd_mach_mcf528x  13
  #define bfd_mach_mcfv4e   14
+ #define bfd_mach_mcf521x   15
+ #define bfd_mach_mcf5249   16
+ #define bfd_mach_mcf547x   17
+ #define bfd_mach_mcf548x   18
    bfd_arch_vax,       /* DEC Vax */
    bfd_arch_i960,      /* Intel 960 */
      /* The order of the following is important.
Index: bfd/cpu-m68k.c
===================================================================
RCS file: /cvs/uberbaum/bfd/cpu-m68k.c,v
retrieving revision 1.7
diff -c -3 -p -r1.7 cpu-m68k.c
*** bfd/cpu-m68k.c	22 Apr 2004 10:33:15 -0000	1.7
--- bfd/cpu-m68k.c	23 Apr 2004 19:00:26 -0000
*************** static const bfd_arch_info_type arch_inf
*** 41,47 ****
      N(bfd_mach_mcf5407, "m68k:5407",  FALSE, &arch_info_struct[11]),
      N(bfd_mach_m68060,  "m68k:68060", FALSE, &arch_info_struct[12]),
      N(bfd_mach_mcf528x, "m68k:528x",  FALSE, &arch_info_struct[13]),
!     N(bfd_mach_mcfv4e, "m68k:cfv4e",  FALSE, 0),
    };
  
  const bfd_arch_info_type bfd_m68k_arch =
--- 41,51 ----
      N(bfd_mach_mcf5407, "m68k:5407",  FALSE, &arch_info_struct[11]),
      N(bfd_mach_m68060,  "m68k:68060", FALSE, &arch_info_struct[12]),
      N(bfd_mach_mcf528x, "m68k:528x",  FALSE, &arch_info_struct[13]),
!     N(bfd_mach_mcf521x, "m68k:521x",  FALSE, &arch_info_struct[14]),
!     N(bfd_mach_mcf5249, "m68k:5249",  FALSE, &arch_info_struct[15]),
!     N(bfd_mach_mcf547x, "m68k:547x",  FALSE, &arch_info_struct[16]),
!     N(bfd_mach_mcf548x, "m68k:548x",  FALSE, &arch_info_struct[17]),
!     N(bfd_mach_mcfv4e,  "m68k:cfv4e", FALSE, 0),
    };
  
  const bfd_arch_info_type bfd_m68k_arch =
Index: gas/config/tc-m68k.c
===================================================================
RCS file: /cvs/uberbaum/gas/config/tc-m68k.c,v
retrieving revision 1.50
diff -c -3 -p -r1.50 tc-m68k.c
*** gas/config/tc-m68k.c	22 Apr 2004 10:33:15 -0000	1.50
--- gas/config/tc-m68k.c	23 Apr 2004 19:00:27 -0000
*************** struct m68k_it
*** 235,248 ****
    reloc[5];			/* Five is enough???  */
  };
  
! #define cpu_of_arch(x)		((x) & (m68000up | mcf))
  #define float_of_arch(x)	((x) & mfloat)
  #define mmu_of_arch(x)		((x) & mmmu)
! #define arch_coldfire_p(x)	((x) & mcf)
! #define arch_coldfire_v4e_p(x)	((x) & mcfv4e)
  
  /* Macros for determining if cpu supports a specific addressing mode.  */
! #define HAVE_LONG_BRANCH(x)     ((x) & (m68020|m68030|m68040|m68060|cpu32|mcf5407|mcfv4e))
  
  static struct m68k_it the_ins;	/* The instruction being assembled.  */
  
--- 235,248 ----
    reloc[5];			/* Five is enough???  */
  };
  
! #define cpu_of_arch(x)		((x) & (m68000up | mcfisa_a))
  #define float_of_arch(x)	((x) & mfloat)
  #define mmu_of_arch(x)		((x) & mmmu)
! #define arch_coldfire_p(x)	((x) & mcfisa_a)
! #define arch_coldfire_fpu(x)	((x) & cfloat)
  
  /* Macros for determining if cpu supports a specific addressing mode.  */
! #define HAVE_LONG_BRANCH(x)     ((x) & (m68020|m68030|m68040|m68060|cpu32|mcfisa_b))
  
  static struct m68k_it the_ins;	/* The instruction being assembled.  */
  
*************** static void s_mri_endw PARAMS ((int));
*** 361,426 ****
  static void md_convert_frag_1 PARAMS ((fragS *));
  
  static int current_architecture;
  
  struct m68k_cpu
    {
      unsigned long arch;
      const char *name;
      int alias;
    };
  
  static const struct m68k_cpu archs[] =
    {
!     { m68000,		"68000", 0 },
!     { m68010,		"68010", 0 },
!     { m68020,		"68020", 0 },
!     { m68030,		"68030", 0 },
!     { m68040,		"68040", 0 },
!     { m68060,		"68060", 0 },
!     { cpu32,		"cpu32", 0 },
!     { m68881,		"68881", 0 },
!     { m68851,		"68851", 0 },
!     { mcf5200,		"5200",  0 },
!     { mcf5206e,		"5206e", 0 },
!     { mcf528x|mcfmac,	"528x",  0 },
!     { mcf5307|mcfmac,	"5307",  0 },
!     { mcf5407|mcfmac,	"5407",  0 },
!     { mcfv4e|mcfemac,	"cfv4e", 0 },
      /* Aliases (effectively, so far as gas is concerned) for the above
         cpus.  */
!     { m68020,		"68k", 1 },
!     { m68000,		"68008", 1 },
!     { m68000,		"68302", 1 },
!     { m68000,		"68306", 1 },
!     { m68000,		"68307", 1 },
!     { m68000,		"68322", 1 },
!     { m68000,		"68356", 1 },
!     { m68000,		"68ec000", 1 },
!     { m68000,		"68hc000", 1 },
!     { m68000,		"68hc001", 1 },
!     { m68020,		"68ec020", 1 },
!     { m68030,		"68ec030", 1 },
!     { m68040,		"68ec040", 1 },
!     { m68060,		"68ec060", 1 },
!     { cpu32,		"68330", 1 },
!     { cpu32,		"68331", 1 },
!     { cpu32,		"68332", 1 },
!     { cpu32,		"68333", 1 },
!     { cpu32,		"68334", 1 },
!     { cpu32,		"68336", 1 },
!     { cpu32,		"68340", 1 },
!     { cpu32,		"68341", 1 },
!     { cpu32,		"68349", 1 },
!     { cpu32,		"68360", 1 },
!     { m68881,		"68882", 1 },
!     { mcf5200,		"5202", 1 },
!     { mcf5200,		"5204", 1 },
!     { mcf5200,		"5206", 1 },
!     { mcf5407|mcfmac,	"cfv4", 1 },
    };
  
  static const int n_archs = sizeof (archs) / sizeof (archs[0]);
  
  /* This is the assembler relaxation table for m68k. m68k is a rich CISC
     architecture and we have a lot of relaxation modes.  */
  
--- 361,513 ----
  static void md_convert_frag_1 PARAMS ((fragS *));
  
  static int current_architecture;
+ static int current_chip;
  
  struct m68k_cpu
    {
      unsigned long arch;
+     unsigned long chip;
      const char *name;
      int alias;
    };
  
  static const struct m68k_cpu archs[] =
    {
!     { m68000,						m68000, "68000", 0 },
!     { m68010,						m68010, "68010", 0 },
!     { m68020,						m68020, "68020", 0 },
!     { m68030,						m68030, "68030", 0 },
!     { m68040,						m68040, "68040", 0 },
!     { m68060,						m68060, "68060", 0 },
!     { cpu32,						cpu32, "cpu32", 0 },
!     { m68881,						m68881, "68881", 0 },
!     { m68851,						m68851, "68851", 0 },
!     { mcfisa_a,						mcf5200, "5200", 0 },
!     { mcfisa_a|mcfhwdiv|mcfmac,				mcf5206e, "5206e", 0 },
!     { mcfisa_a|mcfisa_aa|mcfhwdiv|mcfemac|mcfusp,	mcf521x, "521x", 0 },
!     { mcfisa_a|mcfhwdiv|mcfemac,			mcf5249, "5249", 0 },
!     { mcfisa_a|mcfisa_aa|mcfhwdiv|mcfemac|mcfusp,	mcf528x, "528x", 0 },
!     { mcfisa_a|mcfhwdiv|mcfmac,				mcf5307, "5307", 0 },
!     { mcfisa_a|mcfhwdiv|mcfisa_b|mcfmac,		mcf5407, "5407", 0 },
!     { mcfisa_a|mcfhwdiv|mcfisa_b|mcfemac|mcfusp|cfloat,	mcf5470, "547x", 0 },
!     { mcfisa_a|mcfhwdiv|mcfisa_b|mcfemac|mcfusp|cfloat,	mcf5480, "548x", 0 },
      /* Aliases (effectively, so far as gas is concerned) for the above
         cpus.  */
!     { m68020,						m68020,	"68k", 1 },
!     { m68000,						m68000,	"68008", 1 },
!     { m68000,						m68000,	"68302", 1 },
!     { m68000,						m68000,	"68306", 1 },
!     { m68000,						m68000,	"68307", 1 },
!     { m68000,						m68000,	"68322", 1 },
!     { m68000,						m68000,	"68356", 1 },
!     { m68000,						m68000,	"68ec000", 1 },
!     { m68000,						m68000,	"68hc000", 1 },
!     { m68000,						m68000,	"68hc001", 1 },
!     { m68020,						m68020,	"68ec020", 1 },
!     { m68030,						m68030,	"68ec030", 1 },
!     { m68040,						m68040,	"68ec040", 1 },
!     { m68060,						m68060,	"68ec060", 1 },
!     { cpu32,						cpu32,	"68330", 1 },
!     { cpu32,						cpu32,	"68331", 1 },
!     { cpu32,						cpu32,	"68332", 1 },
!     { cpu32,						cpu32,	"68333", 1 },
!     { cpu32,						cpu32,	"68334", 1 },
!     { cpu32,						cpu32,	"68336", 1 },
!     { cpu32,						cpu32,	"68340", 1 },
!     { cpu32,						cpu32,	"68341", 1 },
!     { cpu32,						cpu32,	"68349", 1 },
!     { cpu32,						cpu32,	"68360", 1 },
!     { m68881,						m68881,	"68882", 1 },
!     { mcfisa_a,						mcf5200, "5202", 1 },
!     { mcfisa_a,						mcf5200, "5204", 1 },
!     { mcfisa_a,						mcf5200, "5206", 1 },
!     { mcfisa_a|mcfhwdiv|mcfisa_aa|mcfemac,		mcf521x, "5214", 1 },
!     { mcfisa_a|mcfhwdiv|mcfisa_aa|mcfemac,		mcf521x, "5216", 1 },
!     { mcfisa_a|mcfisa_aa|mcfhwdiv|mcfemac,		mcf528x, "5280", 1 },
!     { mcfisa_a|mcfisa_aa|mcfhwdiv|mcfemac,		mcf528x, "5281", 1 },
!     { mcfisa_a|mcfisa_aa|mcfhwdiv|mcfemac,		mcf528x, "5282", 1 },
!     { mcfisa_a|mcfhwdiv|mcfisa_b|mcfmac,		mcf5407, "cfv4", 1 },
!     { mcfisa_a|mcfhwdiv|mcfisa_b|mcfemac|mcfusp|cfloat,	mcf5470, "5470", 1 },
!     { mcfisa_a|mcfhwdiv|mcfisa_b|mcfemac|mcfusp|cfloat,	mcf5470, "5471", 1 },
!     { mcfisa_a|mcfhwdiv|mcfisa_b|mcfemac|mcfusp|cfloat,	mcf5470, "5472", 1 },
!     { mcfisa_a|mcfhwdiv|mcfisa_b|mcfemac|mcfusp|cfloat,	mcf5470, "5473", 1 },
!     { mcfisa_a|mcfhwdiv|mcfisa_b|mcfemac|mcfusp|cfloat,	mcf5470, "5474", 1 },
!     { mcfisa_a|mcfhwdiv|mcfisa_b|mcfemac|mcfusp|cfloat,	mcf5470, "5475", 1 },
!     { mcfisa_a|mcfhwdiv|mcfisa_b|mcfemac|mcfusp|cfloat,	mcf5470, "5480", 1 },
!     { mcfisa_a|mcfhwdiv|mcfisa_b|mcfemac|mcfusp|cfloat,	mcf5470, "5481", 1 },
!     { mcfisa_a|mcfhwdiv|mcfisa_b|mcfemac|mcfusp|cfloat,	mcf5470, "5482", 1 },
!     { mcfisa_a|mcfhwdiv|mcfisa_b|mcfemac|mcfusp|cfloat,	mcf5470, "5483", 1 },
!     { mcfisa_a|mcfhwdiv|mcfisa_b|mcfemac|mcfusp|cfloat,	mcf5470, "5484", 1 },
!     { mcfisa_a|mcfhwdiv|mcfisa_b|mcfemac|mcfusp|cfloat,	mcf5470, "5485", 1 },
!     { mcfisa_a|mcfhwdiv|mcfisa_b|mcfemac|mcfusp|cfloat,	mcf5470, "cfv4e", 1 },
    };
  
  static const int n_archs = sizeof (archs) / sizeof (archs[0]);
  
+ /* Return a human readable string holding the list of chips that are
+    valid for a particular architecture, suppressing aliases(unless
+    there is only one of them).  */
+ 
+ static char *find_cf_chip(int architecture)
+ {
+   static char buf[1024];
+   int i, j, n_chips, n_alias;
+   char *cp;
+ 
+   strcpy (buf, " (");
+   cp = buf + strlen (buf);
+   for (i=0, n_chips=0, n_alias=0; i<n_archs; ++i)
+     if (archs[i].arch & architecture)
+       {
+ 	n_chips++;
+ 	if (archs[i].alias)
+ 	  n_alias++;
+       }
+ 
+   if (n_chips == 0)
+       as_fatal (_("no matching ColdFire architectures found"));
+ 
+   if (n_alias > 1)
+     n_chips -= n_alias;
+       
+   for (i=0, j=0; i<n_archs && j<n_chips; ++i)
+     if (archs[i].arch & architecture)
+       {
+ 	if (j)
+ 	  {
+ 	    if (((j == n_chips-1) && !(n_alias > 1))|| !n_alias)
+ 	      {
+ 		if (n_chips == 2)
+ 		  {
+ 		    strncpy (cp, _(" or "), (sizeof (buf) - (cp - buf)));
+ 		    cp += strlen (cp);
+ 		  }
+ 		else
+ 		  {
+ 		    strncpy (cp, _(", or "), (sizeof (buf) - (cp - buf)));
+ 		    cp += strlen (cp);
+ 		  }
+ 	      }
+ 	    else
+ 	      {
+ 		strncpy (cp, ", ", (sizeof (buf) - (cp - buf)));
+ 		cp += strlen (cp);
+ 	      }
+ 	  }
+ 	strncpy (cp, archs[i].name, (sizeof (buf) - (cp - buf)));
+ 	cp += strlen (cp);
+ 	j++;
+       }
+   if (n_alias > 1)
+     {
+       strncpy (cp, _(", or aliases"), (sizeof (buf) - (cp - buf)));
+       cp += strlen (cp);
+     }
+   strncpy (cp, ")", (sizeof (buf) - (cp - buf)));
+ 
+   return buf;
+ }
+ 
  /* This is the assembler relaxation table for m68k. m68k is a rich CISC
     architecture and we have a lot of relaxation modes.  */
  
*************** m68k_ip (instring)
*** 1925,1937 ****
  	    {
  	      char buf[200], *cp;
  
! 	      strcpy (buf,
! 		      _("invalid instruction for this architecture; needs "));
  	      cp = buf + strlen (buf);
  	      switch (ok_arch)
  		{
  		case cfloat:
! 		  strcpy (cp, _("ColdFire fpu (cfv4e)"));
  		  break;
  		case mfloat:
  		  strcpy (cp, _("fpu (68040, 68060 or 68881/68882)"));
--- 2012,2051 ----
  	    {
  	      char buf[200], *cp;
  
! 	      strncpy (buf,
! 		      _("invalid instruction for this architecture; needs "), sizeof (buf));
  	      cp = buf + strlen (buf);
  	      switch (ok_arch)
  		{
+ 		case mcfisa_a:
+ 		  strncpy (cp, _("ColdFire ISA_A"), (sizeof (buf) - (cp - buf)));
+ 		  cp += strlen (cp);
+ 		  strncpy (cp, find_cf_chip(ok_arch), (sizeof (buf) - (cp - buf)));
+ 		  cp += strlen (cp);
+ 		  break;
+ 		case mcfhwdiv:
+ 		  strncpy (cp, _("ColdFire hardware divide"), (sizeof (buf) - (cp - buf)));
+ 		  cp += strlen (cp);
+ 		  strncpy (cp, find_cf_chip(ok_arch), (sizeof (buf) - (cp - buf)));
+ 		  cp += strlen (cp);
+ 		  break;
+ 		case mcfisa_aa:
+ 		  strncpy (cp, _("ColdFire ISA_A+"), (sizeof (buf) - (cp - buf)));
+ 		  cp += strlen (cp);
+ 		  strncpy (cp, find_cf_chip(ok_arch), (sizeof (buf) - (cp - buf)));
+ 		  cp += strlen (cp);
+ 		  break;
+ 		case mcfisa_b:
+ 		  strncpy (cp, _("ColdFire ISA_B"), (sizeof (buf) - (cp - buf)));
+ 		  cp += strlen (cp);
+ 		  strncpy (cp, find_cf_chip(ok_arch), (sizeof (buf) - (cp - buf)));
+ 		  cp += strlen (cp);
+ 		  break;
  		case cfloat:
! 		  strncpy (cp, _("ColdFire fpu"), (sizeof (buf) - (cp - buf)));
! 		  cp += strlen (cp);
! 		  strncpy (cp, find_cf_chip(ok_arch), (sizeof (buf) - (cp - buf)));
! 		  cp += strlen (cp);
  		  break;
  		case mfloat:
  		  strcpy (cp, _("fpu (68040, 68060 or 68881/68882)"));
*************** m68k_ip (instring)
*** 1951,1959 ****
  		default:
  		  {
  		    int got_one = 0, idx;
! 		    for (idx = 0;
! 			 idx < (int) (sizeof (archs) / sizeof (archs[0]));
! 			 idx++)
  		      {
  			if ((archs[idx].arch & ok_arch)
  			    && ! archs[idx].alias)
--- 2065,2071 ----
  		default:
  		  {
  		    int got_one = 0, idx;
! 		    for (idx = 0; idx < n_archs; idx++)
  		      {
  			if ((archs[idx].arch & ok_arch)
  			    && ! archs[idx].alias)
*************** m68k_ip (instring)
*** 2281,2287 ****
  		       && cpu_of_arch (current_architecture) < m68020)
  		      || (opP->index.scale == 8
  			  && (arch_coldfire_p (current_architecture)
!                               && !arch_coldfire_v4e_p(current_architecture))))
  		    {
  		      opP->error =
  			_("scale factor invalid on this architecture; needs cpu32 or 68020 or higher");
--- 2393,2399 ----
  		       && cpu_of_arch (current_architecture) < m68020)
  		      || (opP->index.scale == 8
  			  && (arch_coldfire_p (current_architecture)
!                               && !arch_coldfire_fpu(current_architecture))))
  		    {
  		      opP->error =
  			_("scale factor invalid on this architecture; needs cpu32 or 68020 or higher");
*************** static void
*** 4185,4191 ****
  select_control_regs ()
  {
    /* Note which set of "movec" control registers is available.  */
!   switch (cpu_of_arch (current_architecture))
      {
      case 0:
        as_warn (_("architecture not yet selected: defaulting to 68020"));
--- 4297,4303 ----
  select_control_regs ()
  {
    /* Note which set of "movec" control registers is available.  */
!   switch (current_chip)
      {
      case 0:
        as_warn (_("architecture not yet selected: defaulting to 68020"));
*************** select_control_regs ()
*** 4218,4226 ****
        control_regs = mcf_control_regs;
        break;
      case mcf528x:
        control_regs = mcf528x_control_regs;
        break;
!     case mcfv4e:
        control_regs = mcfv4e_control_regs;
        break;
      default:
--- 4330,4340 ----
        control_regs = mcf_control_regs;
        break;
      case mcf528x:
+     case mcf521x:
        control_regs = mcf528x_control_regs;
        break;
!     case mcf5470:
!     case mcf5480:
        control_regs = mcfv4e_control_regs;
        break;
      default:
*************** mri_chip ()
*** 5306,5311 ****
--- 5420,5426 ----
    else
      current_architecture &= m68881 | m68851;
    current_architecture |= archs[i].arch;
+   current_chip |= archs[i].chip;
  
    while (*input_line_pointer == '/')
      {
*************** struct save_opts
*** 5684,5689 ****
--- 5799,5805 ----
    int keep_locals;
    int short_refs;
    int architecture;
+   int chip;
    int quick;
    int rel32;
    int listing;
*************** s_save (ignore)
*** 5709,5714 ****
--- 5825,5831 ----
    s->keep_locals = flag_keep_locals;
    s->short_refs = flag_short_refs;
    s->architecture = current_architecture;
+   s->architecture = current_chip;
    s->quick = m68k_quick;
    s->rel32 = m68k_rel32;
    s->listing = listing;
*************** s_restore (ignore)
*** 5743,5748 ****
--- 5860,5866 ----
    flag_keep_locals = s->keep_locals;
    flag_short_refs = s->short_refs;
    current_architecture = s->architecture;
+   current_chip = s->chip;
    m68k_quick = s->quick;
    m68k_rel32 = s->rel32;
    listing = s->listing;
*************** md_parse_option (c, arg)
*** 7095,7100 ****
--- 7213,7219 ----
  		  {
  		    current_architecture &= ~m68000up;
  		    current_architecture |= arch;
+ 		    current_chip |= archs[i].chip;
  		  }
  		else if (arch == m68881)
  		  {
*************** md_show_usage (stream)
*** 7212,7219 ****
  -l			use 1 word for refs to undefined symbols [default 2]\n\
  -m68000 | -m68008 | -m68010 | -m68020 | -m68030 | -m68040 | -m68060 |\n\
  -m68302 | -m68331 | -m68332 | -m68333 | -m68340 | -m68360 | -mcpu32 |\n\
! -m5200  | -m5202  | -m5204  | -m5206  | -m5206e | -m528x  | -m5307  |\n\
! -m5407  | -mcfv4  | -mcfv4e\n\
  			specify variant of 680X0 architecture [default %s]\n\
  -m68881 | -m68882 | -mno-68881 | -mno-68882\n\
  			target has/lacks floating-point coprocessor\n\
--- 7331,7338 ----
  -l			use 1 word for refs to undefined symbols [default 2]\n\
  -m68000 | -m68008 | -m68010 | -m68020 | -m68030 | -m68040 | -m68060 |\n\
  -m68302 | -m68331 | -m68332 | -m68333 | -m68340 | -m68360 | -mcpu32 |\n\
! -m5200  | -m5202  | -m5204  | -m5206  | -m5206e | -m521x  | -m5249  |\n\
! -m528x  | -m5307  | -m5407  | -m547x  | -m548x  | -mcfv4  | -mcfv4e\n\
  			specify variant of 680X0 architecture [default %s]\n\
  -m68881 | -m68882 | -mno-68881 | -mno-68882\n\
  			target has/lacks floating-point coprocessor\n\
Index: include/opcode/m68k.h
===================================================================
RCS file: /cvs/uberbaum/include/opcode/m68k.h,v
retrieving revision 1.6
diff -c -3 -p -r1.6 m68k.h
*** include/opcode/m68k.h	22 Apr 2004 10:33:16 -0000	1.6
--- include/opcode/m68k.h	23 Apr 2004 19:00:28 -0000
***************
*** 36,49 ****
  #define	m68882   m68881 /* Synonym for -m68881.  otherwise unused.  */
  #define	m68851   0x080
  #define cpu32	 0x100	/* e.g., 68332 */
! #define mcf5200  0x200
! #define mcf5206e 0x400
! #define mcf5307  0x800
! #define mcf5407  0x1000
! #define mcfv4e   0x2000
! #define mcf528x  0x4000
! #define mcfmac   0x8000
! #define mcfemac  0x10000
  
   /* Handy aliases.  */
  #define	m68040up   (m68040 | m68060)
--- 36,61 ----
  #define	m68882   m68881 /* Synonym for -m68881.  otherwise unused.  */
  #define	m68851   0x080
  #define cpu32	 0x100	/* e.g., 68332 */
! 
! #define mcfmac   0x200		/* ColdFire MAC. */
! #define mcfemac  0x400		/* ColdFire EMAC. */
! #define cfloat   0x800		/* ColdFire FPU.  */
! #define mcfhwdiv 0x1000		/* ColdFire hardware divide.  */
! 
! #define mcfisa_a 0x2000		/* ColdFire ISA_A.  */
! #define mcfisa_aa 0x4000	/* ColdFire ISA_A+.  */
! #define mcfisa_b 0x8000		/* ColdFire ISA_B.  */
! #define mcfusp   0x10000	/* ColdFire USP instructions.  */
! 
! #define mcf5200  0x20000
! #define mcf5206e 0x40000
! #define mcf521x  0x80000
! #define mcf5249  0x100000
! #define mcf528x  0x200000
! #define mcf5307  0x400000
! #define mcf5407  0x800000
! #define mcf5470  0x1000000
! #define mcf5480  0x2000000
  
   /* Handy aliases.  */
  #define	m68040up   (m68040 | m68060)
***************
*** 51,63 ****
  #define	m68020up   (m68020 | m68030up)
  #define	m68010up   (m68010 | cpu32 | m68020up)
  #define	m68000up   (m68000 | m68010up)
- #define mcf        (mcf5200 | mcf5206e | mcf528x | mcf5307 | mcf5407 | mcfv4e)
- #define mcf5206eup (mcf5206e | mcf528x | mcf5307 | mcf5407 | mcfv4e)
- #define mcf5307up  (mcf5307 | mcf5407 | mcfv4e)
- #define mcfv4up    (mcf5407 | mcfv4e)
- #define mcfv4eup   (mcfv4e)
  
- #define cfloat  (mcfv4e)
  #define	mfloat  (m68881 | m68882 | m68040 | m68060)
  #define	mmmu    (m68851 | m68030 | m68040 | m68060)
  
--- 63,69 ----
Index: opcodes/m68k-dis.c
===================================================================
RCS file: /cvs/uberbaum/opcodes/m68k-dis.c,v
retrieving revision 1.12
diff -c -3 -p -r1.12 m68k-dis.c
*** opcodes/m68k-dis.c	22 Apr 2004 10:33:16 -0000	1.12
--- opcodes/m68k-dis.c	23 Apr 2004 19:00:28 -0000
*************** print_insn_m68k (memaddr, info)
*** 240,286 ****
        arch_mask = (unsigned int) -1;
        break;
      case bfd_mach_m68000:
!       arch_mask = m68000;
        break;
      case bfd_mach_m68008:
!       arch_mask = m68008;
        break;
      case bfd_mach_m68010:
!       arch_mask = m68010;
        break;
      case bfd_mach_m68020:
!       arch_mask = m68020;
        break;
      case bfd_mach_m68030:
!       arch_mask = m68030;
        break;
      case bfd_mach_m68040:
!       arch_mask = m68040;
        break;
      case bfd_mach_m68060:
!       arch_mask = m68060;
        break;
      case bfd_mach_mcf5200:
!       arch_mask = mcf5200;
        break;
      case bfd_mach_mcf528x:
!       arch_mask = mcf528x | mcfmac;
        break;
      case bfd_mach_mcf5206e:
!       arch_mask = mcf5206e | mcfmac;
        break;
      case bfd_mach_mcf5307:
!       arch_mask = mcf5307 | mcfmac;
        break;
      case bfd_mach_mcf5407:
!       arch_mask = mcf5407 | mcfmac;
        break;
      case bfd_mach_mcfv4e:
!       arch_mask = mcfv4e | mcfemac;
        break;
      }
  
-   arch_mask |= m68881 | m68851;
  
    bestmask = 0;
    FETCH_DATA (info, buffer + 2);
--- 240,291 ----
        arch_mask = (unsigned int) -1;
        break;
      case bfd_mach_m68000:
!       arch_mask = m68000|m68881|m68851;
        break;
      case bfd_mach_m68008:
!       arch_mask = m68008|m68881|m68851;
        break;
      case bfd_mach_m68010:
!       arch_mask = m68010|m68881|m68851;
        break;
      case bfd_mach_m68020:
!       arch_mask = m68020|m68881|m68851;
        break;
      case bfd_mach_m68030:
!       arch_mask = m68030|m68881|m68851;
        break;
      case bfd_mach_m68040:
!       arch_mask = m68040|m68881|m68851;
        break;
      case bfd_mach_m68060:
!       arch_mask = m68060|m68881|m68851;
        break;
      case bfd_mach_mcf5200:
!       arch_mask = mcfisa_a;
        break;
+     case bfd_mach_mcf521x:
      case bfd_mach_mcf528x:
!       arch_mask = mcfisa_a|mcfhwdiv|mcfisa_aa|mcfusp|mcfemac;
        break;
      case bfd_mach_mcf5206e:
!       arch_mask = mcfisa_a|mcfhwdiv|mcfmac;
!       break;
!     case bfd_mach_mcf5249:
!       arch_mask = mcfisa_a|mcfhwdiv|mcfemac;
        break;
      case bfd_mach_mcf5307:
!       arch_mask = mcfisa_a|mcfhwdiv|mcfmac;
        break;
      case bfd_mach_mcf5407:
!       arch_mask = mcfisa_a|mcfhwdiv|mcfisa_b|mcfmac;
        break;
+     case bfd_mach_mcf547x:
+     case bfd_mach_mcf548x:
      case bfd_mach_mcfv4e:
!       arch_mask = mcfisa_a|mcfhwdiv|mcfisa_b|mcfusp|cfloat|mcfemac;
        break;
      }
  
  
    bestmask = 0;
    FETCH_DATA (info, buffer + 2);
Index: opcodes/m68k-opc.c
===================================================================
RCS file: /cvs/uberbaum/opcodes/m68k-opc.c,v
retrieving revision 1.11
diff -c -3 -p -r1.11 m68k-opc.c
*** opcodes/m68k-opc.c	22 Apr 2004 10:33:16 -0000	1.11
--- opcodes/m68k-opc.c	23 Apr 2004 19:00:29 -0000
*************** const struct m68k_opcode m68k_opcodes[] 
*** 36,51 ****
  {"abcd",	one(0140410),	one(0170770), "-s-d", m68000up },
  
  {"addaw",	one(0150300),	one(0170700), "*wAd", m68000up },
! {"addal",	one(0150700),	one(0170700), "*lAd", m68000up | mcf },
  
  {"addib",	one(0003000),	one(0177700), "#b$s", m68000up },
  {"addiw",	one(0003100),	one(0177700), "#w$s", m68000up },
  {"addil",	one(0003200),	one(0177700), "#l$s", m68000up },
! {"addil",	one(0003200),	one(0177700), "#lDs", mcf },
  
  {"addqb",	one(0050000),	one(0170700), "Qd$b", m68000up },
  {"addqw",	one(0050100),	one(0170700), "Qd%w", m68000up },
! {"addql",	one(0050200),	one(0170700), "Qd%l", m68000up | mcf },
  
  /* The add opcode can generate the adda, addi, and addq instructions.  */
  {"addb",	one(0050000),	one(0170700), "Qd$b", m68000up },
--- 36,51 ----
  {"abcd",	one(0140410),	one(0170770), "-s-d", m68000up },
  
  {"addaw",	one(0150300),	one(0170700), "*wAd", m68000up },
! {"addal",	one(0150700),	one(0170700), "*lAd", m68000up | mcfisa_a },
  
  {"addib",	one(0003000),	one(0177700), "#b$s", m68000up },
  {"addiw",	one(0003100),	one(0177700), "#w$s", m68000up },
  {"addil",	one(0003200),	one(0177700), "#l$s", m68000up },
! {"addil",	one(0003200),	one(0177700), "#lDs", mcfisa_a },
  
  {"addqb",	one(0050000),	one(0170700), "Qd$b", m68000up },
  {"addqw",	one(0050100),	one(0170700), "Qd%w", m68000up },
! {"addql",	one(0050200),	one(0170700), "Qd%l", m68000up | mcfisa_a },
  
  /* The add opcode can generate the adda, addi, and addq instructions.  */
  {"addb",	one(0050000),	one(0170700), "Qd$b", m68000up },
*************** const struct m68k_opcode m68k_opcodes[] 
*** 57,74 ****
  {"addw",	one(0003100),	one(0177700), "#w$s", m68000up },
  {"addw",	one(0150100),	one(0170700), "*wDd", m68000up },
  {"addw",	one(0150500),	one(0170700), "Dd~w", m68000up },
! {"addl",	one(0050200),	one(0170700), "Qd%l", m68000up | mcf },
  {"addl",	one(0003200),	one(0177700), "#l$s", m68000up },
! {"addl",	one(0003200),	one(0177700), "#lDs", mcf },
! {"addl",	one(0150700),	one(0170700), "*lAd", m68000up | mcf },
! {"addl",	one(0150200),	one(0170700), "*lDd", m68000up | mcf },
! {"addl",	one(0150600),	one(0170700), "Dd~l", m68000up | mcf },
  
  {"addxb",	one(0150400),	one(0170770), "DsDd", m68000up },
  {"addxb",	one(0150410),	one(0170770), "-s-d", m68000up },
  {"addxw",	one(0150500),	one(0170770), "DsDd", m68000up },
  {"addxw",	one(0150510),	one(0170770), "-s-d", m68000up },
! {"addxl",	one(0150600),	one(0170770), "DsDd", m68000up | mcf },
  {"addxl",	one(0150610),	one(0170770), "-s-d", m68000up },
  
  {"andib",	one(0001000),	one(0177700), "#b$s", m68000up },
--- 57,74 ----
  {"addw",	one(0003100),	one(0177700), "#w$s", m68000up },
  {"addw",	one(0150100),	one(0170700), "*wDd", m68000up },
  {"addw",	one(0150500),	one(0170700), "Dd~w", m68000up },
! {"addl",	one(0050200),	one(0170700), "Qd%l", m68000up | mcfisa_a },
  {"addl",	one(0003200),	one(0177700), "#l$s", m68000up },
! {"addl",	one(0003200),	one(0177700), "#lDs", mcfisa_a },
! {"addl",	one(0150700),	one(0170700), "*lAd", m68000up | mcfisa_a },
! {"addl",	one(0150200),	one(0170700), "*lDd", m68000up | mcfisa_a },
! {"addl",	one(0150600),	one(0170700), "Dd~l", m68000up | mcfisa_a },
  
  {"addxb",	one(0150400),	one(0170770), "DsDd", m68000up },
  {"addxb",	one(0150410),	one(0170770), "-s-d", m68000up },
  {"addxw",	one(0150500),	one(0170770), "DsDd", m68000up },
  {"addxw",	one(0150510),	one(0170770), "-s-d", m68000up },
! {"addxl",	one(0150600),	one(0170770), "DsDd", m68000up | mcfisa_a },
  {"addxl",	one(0150610),	one(0170770), "-s-d", m68000up },
  
  {"andib",	one(0001000),	one(0177700), "#b$s", m68000up },
*************** const struct m68k_opcode m68k_opcodes[] 
*** 76,82 ****
  {"andiw",	one(0001100),	one(0177700), "#w$s", m68000up },
  {"andiw",	one(0001174),	one(0177777), "#wSs", m68000up },
  {"andil",	one(0001200),	one(0177700), "#l$s", m68000up },
! {"andil",	one(0001200),	one(0177700), "#lDs", mcf },
  {"andi",	one(0001100),	one(0177700), "#w$s", m68000up },
  {"andi",	one(0001074),	one(0177777), "#bCs", m68000up },
  {"andi",	one(0001174),	one(0177777), "#wSs", m68000up },
--- 76,82 ----
  {"andiw",	one(0001100),	one(0177700), "#w$s", m68000up },
  {"andiw",	one(0001174),	one(0177777), "#wSs", m68000up },
  {"andil",	one(0001200),	one(0177700), "#l$s", m68000up },
! {"andil",	one(0001200),	one(0177700), "#lDs", mcfisa_a },
  {"andi",	one(0001100),	one(0177700), "#w$s", m68000up },
  {"andi",	one(0001074),	one(0177777), "#bCs", m68000up },
  {"andi",	one(0001174),	one(0177777), "#wSs", m68000up },
*************** const struct m68k_opcode m68k_opcodes[] 
*** 91,99 ****
  {"andw",	one(0140100),	one(0170700), ";wDd", m68000up },
  {"andw",	one(0140500),	one(0170700), "Dd~w", m68000up },
  {"andl",	one(0001200),	one(0177700), "#l$s", m68000up },
! {"andl",	one(0001200),	one(0177700), "#lDs", mcf },
! {"andl",	one(0140200),	one(0170700), ";lDd", m68000up | mcf },
! {"andl",	one(0140600),	one(0170700), "Dd~l", m68000up | mcf },
  {"and",		one(0001100),	one(0177700), "#w$w", m68000up },
  {"and",		one(0001074),	one(0177777), "#bCs", m68000up },
  {"and",		one(0001174),	one(0177777), "#wSs", m68000up },
--- 91,99 ----
  {"andw",	one(0140100),	one(0170700), ";wDd", m68000up },
  {"andw",	one(0140500),	one(0170700), "Dd~w", m68000up },
  {"andl",	one(0001200),	one(0177700), "#l$s", m68000up },
! {"andl",	one(0001200),	one(0177700), "#lDs", mcfisa_a },
! {"andl",	one(0140200),	one(0170700), ";lDd", m68000up | mcfisa_a },
! {"andl",	one(0140600),	one(0170700), "Dd~l", m68000up | mcfisa_a },
  {"and",		one(0001100),	one(0177700), "#w$w", m68000up },
  {"and",		one(0001074),	one(0177777), "#bCs", m68000up },
  {"and",		one(0001174),	one(0177777), "#wSs", m68000up },
*************** const struct m68k_opcode m68k_opcodes[] 
*** 105,188 ****
  {"aslw",	one(0160500),	one(0170770), "QdDs", m68000up },
  {"aslw",	one(0160540),	one(0170770), "DdDs", m68000up },
  {"aslw",	one(0160700),	one(0177700), "~s",   m68000up },
! {"asll",	one(0160600),	one(0170770), "QdDs", m68000up | mcf },
! {"asll",	one(0160640),	one(0170770), "DdDs", m68000up | mcf },
  
  {"asrb",	one(0160000),	one(0170770), "QdDs", m68000up },
  {"asrb",	one(0160040),	one(0170770), "DdDs", m68000up },
  {"asrw",	one(0160100),	one(0170770), "QdDs", m68000up },
  {"asrw",	one(0160140),	one(0170770), "DdDs", m68000up },
  {"asrw",	one(0160300),	one(0177700), "~s",   m68000up },
! {"asrl",	one(0160200),	one(0170770), "QdDs", m68000up | mcf },
! {"asrl",	one(0160240),	one(0170770), "DdDs", m68000up | mcf },
  
! {"bhiw",	one(0061000),	one(0177777), "BW", m68000up | mcf },
! {"blsw",	one(0061400),	one(0177777), "BW", m68000up | mcf },
! {"bccw",	one(0062000),	one(0177777), "BW", m68000up | mcf },
! {"bcsw",	one(0062400),	one(0177777), "BW", m68000up | mcf },
! {"bnew",	one(0063000),	one(0177777), "BW", m68000up | mcf },
! {"beqw",	one(0063400),	one(0177777), "BW", m68000up | mcf },
! {"bvcw",	one(0064000),	one(0177777), "BW", m68000up | mcf },
! {"bvsw",	one(0064400),	one(0177777), "BW", m68000up | mcf },
! {"bplw",	one(0065000),	one(0177777), "BW", m68000up | mcf },
! {"bmiw",	one(0065400),	one(0177777), "BW", m68000up | mcf },
! {"bgew",	one(0066000),	one(0177777), "BW", m68000up | mcf },
! {"bltw",	one(0066400),	one(0177777), "BW", m68000up | mcf },
! {"bgtw",	one(0067000),	one(0177777), "BW", m68000up | mcf },
! {"blew",	one(0067400),	one(0177777), "BW", m68000up | mcf },
! 
! {"bhil",	one(0061377),	one(0177777), "BL", m68020up | cpu32 | mcfv4up},
! {"blsl",	one(0061777),	one(0177777), "BL", m68020up | cpu32 | mcfv4up},
! {"bccl",	one(0062377),	one(0177777), "BL", m68020up | cpu32 | mcfv4up},
! {"bcsl",	one(0062777),	one(0177777), "BL", m68020up | cpu32 | mcfv4up},
! {"bnel",	one(0063377),	one(0177777), "BL", m68020up | cpu32 | mcfv4up},
! {"beql",	one(0063777),	one(0177777), "BL", m68020up | cpu32 | mcfv4up},
! {"bvcl",	one(0064377),	one(0177777), "BL", m68020up | cpu32 | mcfv4up},
! {"bvsl",	one(0064777),	one(0177777), "BL", m68020up | cpu32 | mcfv4up},
! {"bpll",	one(0065377),	one(0177777), "BL", m68020up | cpu32 | mcfv4up},
! {"bmil",	one(0065777),	one(0177777), "BL", m68020up | cpu32 | mcfv4up},
! {"bgel",	one(0066377),	one(0177777), "BL", m68020up | cpu32 | mcfv4up},
! {"bltl",	one(0066777),	one(0177777), "BL", m68020up | cpu32 | mcfv4up},
! {"bgtl",	one(0067377),	one(0177777), "BL", m68020up | cpu32 | mcfv4up},
! {"blel",	one(0067777),	one(0177777), "BL", m68020up | cpu32 | mcfv4up},
! 
! {"bhis",	one(0061000),	one(0177400), "BB", m68000up | mcf },
! {"blss",	one(0061400),	one(0177400), "BB", m68000up | mcf },
! {"bccs",	one(0062000),	one(0177400), "BB", m68000up | mcf },
! {"bcss",	one(0062400),	one(0177400), "BB", m68000up | mcf },
! {"bnes",	one(0063000),	one(0177400), "BB", m68000up | mcf },
! {"beqs",	one(0063400),	one(0177400), "BB", m68000up | mcf },
! {"bvcs",	one(0064000),	one(0177400), "BB", m68000up | mcf },
! {"bvss",	one(0064400),	one(0177400), "BB", m68000up | mcf },
! {"bpls",	one(0065000),	one(0177400), "BB", m68000up | mcf },
! {"bmis",	one(0065400),	one(0177400), "BB", m68000up | mcf },
! {"bges",	one(0066000),	one(0177400), "BB", m68000up | mcf },
! {"blts",	one(0066400),	one(0177400), "BB", m68000up | mcf },
! {"bgts",	one(0067000),	one(0177400), "BB", m68000up | mcf },
! {"bles",	one(0067400),	one(0177400), "BB", m68000up | mcf },
! 
! {"jhi",		one(0061000),	one(0177400), "Bg", m68000up | mcf },
! {"jls",		one(0061400),	one(0177400), "Bg", m68000up | mcf },
! {"jcc",		one(0062000),	one(0177400), "Bg", m68000up | mcf },
! {"jcs",		one(0062400),	one(0177400), "Bg", m68000up | mcf },
! {"jne",		one(0063000),	one(0177400), "Bg", m68000up | mcf },
! {"jeq",		one(0063400),	one(0177400), "Bg", m68000up | mcf },
! {"jvc",		one(0064000),	one(0177400), "Bg", m68000up | mcf },
! {"jvs",		one(0064400),	one(0177400), "Bg", m68000up | mcf },
! {"jpl",		one(0065000),	one(0177400), "Bg", m68000up | mcf },
! {"jmi",		one(0065400),	one(0177400), "Bg", m68000up | mcf },
! {"jge",		one(0066000),	one(0177400), "Bg", m68000up | mcf },
! {"jlt",		one(0066400),	one(0177400), "Bg", m68000up | mcf },
! {"jgt",		one(0067000),	one(0177400), "Bg", m68000up | mcf },
! {"jle",		one(0067400),	one(0177400), "Bg", m68000up | mcf },
  
! {"bchg",	one(0000500),	one(0170700), "Dd$s", m68000up | mcf },
  {"bchg",	one(0004100),	one(0177700), "#b$s", m68000up },
! {"bchg",	one(0004100),	one(0177700), "#bqs", mcf },
  
! {"bclr",	one(0000600),	one(0170700), "Dd$s", m68000up | mcf },
  {"bclr",	one(0004200),	one(0177700), "#b$s", m68000up },
! {"bclr",	one(0004200),	one(0177700), "#bqs", mcf },
  
  {"bfchg",	two(0165300, 0), two(0177700, 0170000),	"?sO2O3",   m68020up },
  {"bfclr",	two(0166300, 0), two(0177700, 0170000),	"?sO2O3",   m68020up },
--- 105,188 ----
  {"aslw",	one(0160500),	one(0170770), "QdDs", m68000up },
  {"aslw",	one(0160540),	one(0170770), "DdDs", m68000up },
  {"aslw",	one(0160700),	one(0177700), "~s",   m68000up },
! {"asll",	one(0160600),	one(0170770), "QdDs", m68000up | mcfisa_a },
! {"asll",	one(0160640),	one(0170770), "DdDs", m68000up | mcfisa_a },
  
  {"asrb",	one(0160000),	one(0170770), "QdDs", m68000up },
  {"asrb",	one(0160040),	one(0170770), "DdDs", m68000up },
  {"asrw",	one(0160100),	one(0170770), "QdDs", m68000up },
  {"asrw",	one(0160140),	one(0170770), "DdDs", m68000up },
  {"asrw",	one(0160300),	one(0177700), "~s",   m68000up },
! {"asrl",	one(0160200),	one(0170770), "QdDs", m68000up | mcfisa_a },
! {"asrl",	one(0160240),	one(0170770), "DdDs", m68000up | mcfisa_a },
  
! {"bhiw",	one(0061000),	one(0177777), "BW", m68000up | mcfisa_a },
! {"blsw",	one(0061400),	one(0177777), "BW", m68000up | mcfisa_a },
! {"bccw",	one(0062000),	one(0177777), "BW", m68000up | mcfisa_a },
! {"bcsw",	one(0062400),	one(0177777), "BW", m68000up | mcfisa_a },
! {"bnew",	one(0063000),	one(0177777), "BW", m68000up | mcfisa_a },
! {"beqw",	one(0063400),	one(0177777), "BW", m68000up | mcfisa_a },
! {"bvcw",	one(0064000),	one(0177777), "BW", m68000up | mcfisa_a },
! {"bvsw",	one(0064400),	one(0177777), "BW", m68000up | mcfisa_a },
! {"bplw",	one(0065000),	one(0177777), "BW", m68000up | mcfisa_a },
! {"bmiw",	one(0065400),	one(0177777), "BW", m68000up | mcfisa_a },
! {"bgew",	one(0066000),	one(0177777), "BW", m68000up | mcfisa_a },
! {"bltw",	one(0066400),	one(0177777), "BW", m68000up | mcfisa_a },
! {"bgtw",	one(0067000),	one(0177777), "BW", m68000up | mcfisa_a },
! {"blew",	one(0067400),	one(0177777), "BW", m68000up | mcfisa_a },
! 
! {"bhil",	one(0061377),	one(0177777), "BL", m68020up | cpu32 | mcfisa_b},
! {"blsl",	one(0061777),	one(0177777), "BL", m68020up | cpu32 | mcfisa_b},
! {"bccl",	one(0062377),	one(0177777), "BL", m68020up | cpu32 | mcfisa_b},
! {"bcsl",	one(0062777),	one(0177777), "BL", m68020up | cpu32 | mcfisa_b},
! {"bnel",	one(0063377),	one(0177777), "BL", m68020up | cpu32 | mcfisa_b},
! {"beql",	one(0063777),	one(0177777), "BL", m68020up | cpu32 | mcfisa_b},
! {"bvcl",	one(0064377),	one(0177777), "BL", m68020up | cpu32 | mcfisa_b},
! {"bvsl",	one(0064777),	one(0177777), "BL", m68020up | cpu32 | mcfisa_b},
! {"bpll",	one(0065377),	one(0177777), "BL", m68020up | cpu32 | mcfisa_b},
! {"bmil",	one(0065777),	one(0177777), "BL", m68020up | cpu32 | mcfisa_b},
! {"bgel",	one(0066377),	one(0177777), "BL", m68020up | cpu32 | mcfisa_b},
! {"bltl",	one(0066777),	one(0177777), "BL", m68020up | cpu32 | mcfisa_b},
! {"bgtl",	one(0067377),	one(0177777), "BL", m68020up | cpu32 | mcfisa_b},
! {"blel",	one(0067777),	one(0177777), "BL", m68020up | cpu32 | mcfisa_b},
! 
! {"bhis",	one(0061000),	one(0177400), "BB", m68000up | mcfisa_a },
! {"blss",	one(0061400),	one(0177400), "BB", m68000up | mcfisa_a },
! {"bccs",	one(0062000),	one(0177400), "BB", m68000up | mcfisa_a },
! {"bcss",	one(0062400),	one(0177400), "BB", m68000up | mcfisa_a },
! {"bnes",	one(0063000),	one(0177400), "BB", m68000up | mcfisa_a },
! {"beqs",	one(0063400),	one(0177400), "BB", m68000up | mcfisa_a },
! {"bvcs",	one(0064000),	one(0177400), "BB", m68000up | mcfisa_a },
! {"bvss",	one(0064400),	one(0177400), "BB", m68000up | mcfisa_a },
! {"bpls",	one(0065000),	one(0177400), "BB", m68000up | mcfisa_a },
! {"bmis",	one(0065400),	one(0177400), "BB", m68000up | mcfisa_a },
! {"bges",	one(0066000),	one(0177400), "BB", m68000up | mcfisa_a },
! {"blts",	one(0066400),	one(0177400), "BB", m68000up | mcfisa_a },
! {"bgts",	one(0067000),	one(0177400), "BB", m68000up | mcfisa_a },
! {"bles",	one(0067400),	one(0177400), "BB", m68000up | mcfisa_a },
! 
! {"jhi",		one(0061000),	one(0177400), "Bg", m68000up | mcfisa_a },
! {"jls",		one(0061400),	one(0177400), "Bg", m68000up | mcfisa_a },
! {"jcc",		one(0062000),	one(0177400), "Bg", m68000up | mcfisa_a },
! {"jcs",		one(0062400),	one(0177400), "Bg", m68000up | mcfisa_a },
! {"jne",		one(0063000),	one(0177400), "Bg", m68000up | mcfisa_a },
! {"jeq",		one(0063400),	one(0177400), "Bg", m68000up | mcfisa_a },
! {"jvc",		one(0064000),	one(0177400), "Bg", m68000up | mcfisa_a },
! {"jvs",		one(0064400),	one(0177400), "Bg", m68000up | mcfisa_a },
! {"jpl",		one(0065000),	one(0177400), "Bg", m68000up | mcfisa_a },
! {"jmi",		one(0065400),	one(0177400), "Bg", m68000up | mcfisa_a },
! {"jge",		one(0066000),	one(0177400), "Bg", m68000up | mcfisa_a },
! {"jlt",		one(0066400),	one(0177400), "Bg", m68000up | mcfisa_a },
! {"jgt",		one(0067000),	one(0177400), "Bg", m68000up | mcfisa_a },
! {"jle",		one(0067400),	one(0177400), "Bg", m68000up | mcfisa_a },
  
! {"bchg",	one(0000500),	one(0170700), "Dd$s", m68000up | mcfisa_a },
  {"bchg",	one(0004100),	one(0177700), "#b$s", m68000up },
! {"bchg",	one(0004100),	one(0177700), "#bqs", mcfisa_a },
  
! {"bclr",	one(0000600),	one(0170700), "Dd$s", m68000up | mcfisa_a },
  {"bclr",	one(0004200),	one(0177700), "#b$s", m68000up },
! {"bclr",	one(0004200),	one(0177700), "#bqs", mcfisa_a },
  
  {"bfchg",	two(0165300, 0), two(0177700, 0170000),	"?sO2O3",   m68020up },
  {"bfclr",	two(0166300, 0), two(0177700, 0170000),	"?sO2O3",   m68020up },
*************** const struct m68k_opcode m68k_opcodes[] 
*** 195,222 ****
  
  {"bgnd",	one(0045372),	one(0177777), "", cpu32 },
  
! {"bitrev",	one(0000300),	one(0177770), "Ds", mcf528x},
  
  {"bkpt",	one(0044110),	one(0177770), "ts", m68010up },
  
! {"braw",	one(0060000),	one(0177777), "BW", m68000up | mcf },
! {"bral",	one(0060377),	one(0177777), "BL", m68020up | cpu32 | mcfv4up},
! {"bras",	one(0060000),	one(0177400), "BB", m68000up | mcf },
  
! {"bset",	one(0000700),	one(0170700), "Dd$s", m68000up | mcf },
! {"bset",	one(0000700),	one(0170700), "Ddvs", mcf },
  {"bset",	one(0004300),	one(0177700), "#b$s", m68000up },
! {"bset",	one(0004300),	one(0177700), "#bqs", mcf },
  
! {"bsrw",	one(0060400),	one(0177777), "BW", m68000up | mcf },
! {"bsrl",	one(0060777),	one(0177777), "BL", m68020up | cpu32 | mcfv4up},
! {"bsrs",	one(0060400),	one(0177400), "BB", m68000up | mcf },
  
! {"btst",	one(0000400),	one(0170700), "Dd;b", m68000up | mcf },
  {"btst",	one(0004000),	one(0177700), "#b@s", m68000up },
! {"btst",	one(0004000),	one(0177700), "#bqs", mcf },
  
! {"byterev",	one(0001300),	one(0177770), "Ds", mcf528x},
  
  {"callm",	one(0003300),	one(0177700), "#b!s", m68020 },
  
--- 195,222 ----
  
  {"bgnd",	one(0045372),	one(0177777), "", cpu32 },
  
! {"bitrev",	one(0000300),	one(0177770), "Ds", mcfisa_aa},
  
  {"bkpt",	one(0044110),	one(0177770), "ts", m68010up },
  
! {"braw",	one(0060000),	one(0177777), "BW", m68000up | mcfisa_a },
! {"bral",	one(0060377),	one(0177777), "BL", m68020up | cpu32 | mcfisa_b},
! {"bras",	one(0060000),	one(0177400), "BB", m68000up | mcfisa_a },
  
! {"bset",	one(0000700),	one(0170700), "Dd$s", m68000up | mcfisa_a },
! {"bset",	one(0000700),	one(0170700), "Ddvs", mcfisa_a },
  {"bset",	one(0004300),	one(0177700), "#b$s", m68000up },
! {"bset",	one(0004300),	one(0177700), "#bqs", mcfisa_a },
  
! {"bsrw",	one(0060400),	one(0177777), "BW", m68000up | mcfisa_a },
! {"bsrl",	one(0060777),	one(0177777), "BL", m68020up | cpu32 | mcfisa_b},
! {"bsrs",	one(0060400),	one(0177400), "BB", m68000up | mcfisa_a },
  
! {"btst",	one(0000400),	one(0170700), "Dd;b", m68000up | mcfisa_a },
  {"btst",	one(0004000),	one(0177700), "#b@s", m68000up },
! {"btst",	one(0004000),	one(0177700), "#bqs", mcfisa_a },
  
! {"byterev",	one(0001300),	one(0177770), "Ds", mcfisa_aa},
  
  {"callm",	one(0003300),	one(0177700), "#b!s", m68020 },
  
*************** const struct m68k_opcode m68k_opcodes[] 
*** 245,274 ****
  {"cinvp",	one(0xf400|SCOPE_PAGE), one(0xff38), "ceas", m68040up },
  
  {"cpusha",	one(0xf420|SCOPE_ALL),  one(0xff38), "ce",   m68040up },
! {"cpushl",	one(0xf420|SCOPE_LINE), one(0xff38), "ceas", m68040up | mcf },
  {"cpushp",	one(0xf420|SCOPE_PAGE), one(0xff38), "ceas", m68040up },
  
  #undef SCOPE_LINE
  #undef SCOPE_PAGE
  #undef SCOPE_ALL
  
! {"clrb",	one(0041000),	one(0177700), "$s", m68000up | mcf },
! {"clrw",	one(0041100),	one(0177700), "$s", m68000up | mcf },
! {"clrl",	one(0041200),	one(0177700), "$s", m68000up | mcf },
  
  {"cmp2b",	two(0000300,0), two(0177700,07777), "!sR1", m68020up | cpu32 },
  {"cmp2w",	two(0001300,0),	two(0177700,07777), "!sR1", m68020up | cpu32 },
  {"cmp2l",	two(0002300,0),	two(0177700,07777), "!sR1", m68020up | cpu32 },
  
  {"cmpaw",	one(0130300),	one(0170700), "*wAd", m68000up },
! {"cmpal",	one(0130700),	one(0170700), "*lAd", m68000up | mcf },
  
  {"cmpib",	one(0006000),	one(0177700), "#b@s", m68000up },
! {"cmpib",	one(0006000),	one(0177700), "#bDs", mcfv4up },
  {"cmpiw",	one(0006100),	one(0177700), "#w@s", m68000up },
! {"cmpiw",	one(0006100),	one(0177700), "#wDs", mcfv4up },
  {"cmpil",	one(0006200),	one(0177700), "#l@s", m68000up },
! {"cmpil",	one(0006200),	one(0177700), "#lDs", mcf },
  
  {"cmpmb",	one(0130410),	one(0170770), "+s+d", m68000up },
  {"cmpmw",	one(0130510),	one(0170770), "+s+d", m68000up },
--- 245,274 ----
  {"cinvp",	one(0xf400|SCOPE_PAGE), one(0xff38), "ceas", m68040up },
  
  {"cpusha",	one(0xf420|SCOPE_ALL),  one(0xff38), "ce",   m68040up },
! {"cpushl",	one(0xf420|SCOPE_LINE), one(0xff38), "ceas", m68040up | mcfisa_a },
  {"cpushp",	one(0xf420|SCOPE_PAGE), one(0xff38), "ceas", m68040up },
  
  #undef SCOPE_LINE
  #undef SCOPE_PAGE
  #undef SCOPE_ALL
  
! {"clrb",	one(0041000),	one(0177700), "$s", m68000up | mcfisa_a },
! {"clrw",	one(0041100),	one(0177700), "$s", m68000up | mcfisa_a },
! {"clrl",	one(0041200),	one(0177700), "$s", m68000up | mcfisa_a },
  
  {"cmp2b",	two(0000300,0), two(0177700,07777), "!sR1", m68020up | cpu32 },
  {"cmp2w",	two(0001300,0),	two(0177700,07777), "!sR1", m68020up | cpu32 },
  {"cmp2l",	two(0002300,0),	two(0177700,07777), "!sR1", m68020up | cpu32 },
  
  {"cmpaw",	one(0130300),	one(0170700), "*wAd", m68000up },
! {"cmpal",	one(0130700),	one(0170700), "*lAd", m68000up | mcfisa_a },
  
  {"cmpib",	one(0006000),	one(0177700), "#b@s", m68000up },
! {"cmpib",	one(0006000),	one(0177700), "#bDs", mcfisa_b },
  {"cmpiw",	one(0006100),	one(0177700), "#w@s", m68000up },
! {"cmpiw",	one(0006100),	one(0177700), "#wDs", mcfisa_b },
  {"cmpil",	one(0006200),	one(0177700), "#l@s", m68000up },
! {"cmpil",	one(0006200),	one(0177700), "#lDs", mcfisa_a },
  
  {"cmpmb",	one(0130410),	one(0170770), "+s+d", m68000up },
  {"cmpmw",	one(0130510),	one(0170770), "+s+d", m68000up },
*************** const struct m68k_opcode m68k_opcodes[] 
*** 276,295 ****
  
  /* The cmp opcode can generate the cmpa, cmpm, and cmpi instructions.  */
  {"cmpb",	one(0006000),	one(0177700), "#b@s", m68000up },
! {"cmpb",	one(0006000),	one(0177700), "#bDs", mcfv4up },
  {"cmpb",	one(0130410),	one(0170770), "+s+d", m68000up },
  {"cmpb",	one(0130000),	one(0170700), ";bDd", m68000up },
! {"cmpb",	one(0130000),	one(0170700), "*bDd", mcfv4up },
  {"cmpw",	one(0130300),	one(0170700), "*wAd", m68000up },
  {"cmpw",	one(0006100),	one(0177700), "#w@s", m68000up },
! {"cmpw",	one(0006100),	one(0177700), "#wDs", mcfv4up },
  {"cmpw",	one(0130510),	one(0170770), "+s+d", m68000up },
! {"cmpw",	one(0130100),	one(0170700), "*wDd", m68000up | mcfv4up },
! {"cmpl",	one(0130700),	one(0170700), "*lAd", m68000up | mcf },
  {"cmpl",	one(0006200),	one(0177700), "#l@s", m68000up },
! {"cmpl",	one(0006200),	one(0177700), "#lDs", mcf },
  {"cmpl",	one(0130610),	one(0170770), "+s+d", m68000up },
! {"cmpl",	one(0130200),	one(0170700), "*lDd", m68000up | mcf },
  
  {"dbcc",	one(0052310),	one(0177770), "DsBw", m68000up },
  {"dbcs",	one(0052710),	one(0177770), "DsBw", m68000up },
--- 276,295 ----
  
  /* The cmp opcode can generate the cmpa, cmpm, and cmpi instructions.  */
  {"cmpb",	one(0006000),	one(0177700), "#b@s", m68000up },
! {"cmpb",	one(0006000),	one(0177700), "#bDs", mcfisa_b },
  {"cmpb",	one(0130410),	one(0170770), "+s+d", m68000up },
  {"cmpb",	one(0130000),	one(0170700), ";bDd", m68000up },
! {"cmpb",	one(0130000),	one(0170700), "*bDd", mcfisa_b },
  {"cmpw",	one(0130300),	one(0170700), "*wAd", m68000up },
  {"cmpw",	one(0006100),	one(0177700), "#w@s", m68000up },
! {"cmpw",	one(0006100),	one(0177700), "#wDs", mcfisa_b },
  {"cmpw",	one(0130510),	one(0170770), "+s+d", m68000up },
! {"cmpw",	one(0130100),	one(0170700), "*wDd", m68000up | mcfisa_b },
! {"cmpl",	one(0130700),	one(0170700), "*lAd", m68000up | mcfisa_a },
  {"cmpl",	one(0006200),	one(0177700), "#l@s", m68000up },
! {"cmpl",	one(0006200),	one(0177700), "#lDs", mcfisa_a },
  {"cmpl",	one(0130610),	one(0170770), "+s+d", m68000up },
! {"cmpl",	one(0130200),	one(0170700), "*lDd", m68000up | mcfisa_a },
  
  {"dbcc",	one(0052310),	one(0177770), "DsBw", m68000up },
  {"dbcs",	one(0052710),	one(0177770), "DsBw", m68000up },
*************** const struct m68k_opcode m68k_opcodes[] 
*** 308,327 ****
  {"dbvc",	one(0054310),	one(0177770), "DsBw", m68000up },
  {"dbvs",	one(0054710),	one(0177770), "DsBw", m68000up },
  
! {"divsw",	one(0100700),	one(0170700), ";wDd", m68000up | mcf5206eup },
  
  {"divsl", two(0046100,0006000),two(0177700,0107770),";lD3D1", m68020up|cpu32 },
  {"divsl", two(0046100,0004000),two(0177700,0107770),";lDD",   m68020up|cpu32 },
! {"divsl", two(0046100,0004000),two(0177700,0107770),"qsDD",   mcf5206eup },
  
  {"divsll", two(0046100,0004000),two(0177700,0107770),";lD3D1",m68020up|cpu32 },
  {"divsll", two(0046100,0004000),two(0177700,0107770),";lDD",  m68020up|cpu32 },
  
! {"divuw",	one(0100300),		one(0170700), ";wDd", m68000up | mcf5206eup },
  
  {"divul", two(0046100,0002000),two(0177700,0107770),";lD3D1", m68020up|cpu32 },
  {"divul", two(0046100,0000000),two(0177700,0107770),";lDD",   m68020up|cpu32 },
! {"divul", two(0046100,0000000),two(0177700,0107770),"qsDD",   mcf5206eup },
  
  {"divull", two(0046100,0000000),two(0177700,0107770),";lD3D1",m68020up|cpu32 },
  {"divull", two(0046100,0000000),two(0177700,0107770),";lDD",  m68020up|cpu32 },
--- 308,327 ----
  {"dbvc",	one(0054310),	one(0177770), "DsBw", m68000up },
  {"dbvs",	one(0054710),	one(0177770), "DsBw", m68000up },
  
! {"divsw",	one(0100700),	one(0170700), ";wDd", m68000up | mcfhwdiv },
  
  {"divsl", two(0046100,0006000),two(0177700,0107770),";lD3D1", m68020up|cpu32 },
  {"divsl", two(0046100,0004000),two(0177700,0107770),";lDD",   m68020up|cpu32 },
! {"divsl", two(0046100,0004000),two(0177700,0107770),"qsDD",   mcfhwdiv },
  
  {"divsll", two(0046100,0004000),two(0177700,0107770),";lD3D1",m68020up|cpu32 },
  {"divsll", two(0046100,0004000),two(0177700,0107770),";lDD",  m68020up|cpu32 },
  
! {"divuw",	one(0100300),		one(0170700), ";wDd", m68000up | mcfhwdiv },
  
  {"divul", two(0046100,0002000),two(0177700,0107770),";lD3D1", m68020up|cpu32 },
  {"divul", two(0046100,0000000),two(0177700,0107770),";lDD",   m68020up|cpu32 },
! {"divul", two(0046100,0000000),two(0177700,0107770),"qsDD",   mcfhwdiv },
  
  {"divull", two(0046100,0000000),two(0177700,0107770),";lD3D1",m68020up|cpu32 },
  {"divull", two(0046100,0000000),two(0177700,0107770),";lDD",  m68020up|cpu32 },
*************** const struct m68k_opcode m68k_opcodes[] 
*** 331,337 ****
  {"eoriw",	one(0005100),	one(0177700), "#w$s", m68000up },
  {"eoriw",	one(0005174),	one(0177777), "#wSs", m68000up },
  {"eoril",	one(0005200),	one(0177700), "#l$s", m68000up },
! {"eoril",	one(0005200),	one(0177700), "#lDs", mcf },
  {"eori",	one(0005074),	one(0177777), "#bCs", m68000up },
  {"eori",	one(0005174),	one(0177777), "#wSs", m68000up },
  {"eori",	one(0005100),	one(0177700), "#w$s", m68000up },
--- 331,337 ----
  {"eoriw",	one(0005100),	one(0177700), "#w$s", m68000up },
  {"eoriw",	one(0005174),	one(0177777), "#wSs", m68000up },
  {"eoril",	one(0005200),	one(0177700), "#l$s", m68000up },
! {"eoril",	one(0005200),	one(0177700), "#lDs", mcfisa_a },
  {"eori",	one(0005074),	one(0177777), "#bCs", m68000up },
  {"eori",	one(0005174),	one(0177777), "#wSs", m68000up },
  {"eori",	one(0005100),	one(0177700), "#w$s", m68000up },
*************** const struct m68k_opcode m68k_opcodes[] 
*** 344,351 ****
  {"eorw",	one(0005174),	one(0177777), "#wSs", m68000up },
  {"eorw",	one(0130500),	one(0170700), "Dd$s", m68000up },
  {"eorl",	one(0005200),	one(0177700), "#l$s", m68000up },
! {"eorl",	one(0005200),	one(0177700), "#lDs", mcf },
! {"eorl",	one(0130600),	one(0170700), "Dd$s", m68000up | mcf },
  {"eor",		one(0005074),	one(0177777), "#bCs", m68000up },
  {"eor",		one(0005174),	one(0177777), "#wSs", m68000up },
  {"eor",		one(0005100),	one(0177700), "#w$s", m68000up },
--- 344,351 ----
  {"eorw",	one(0005174),	one(0177777), "#wSs", m68000up },
  {"eorw",	one(0130500),	one(0170700), "Dd$s", m68000up },
  {"eorl",	one(0005200),	one(0177700), "#l$s", m68000up },
! {"eorl",	one(0005200),	one(0177700), "#lDs", mcfisa_a },
! {"eorl",	one(0130600),	one(0170700), "Dd$s", m68000up | mcfisa_a },
  {"eor",		one(0005074),	one(0177777), "#bCs", m68000up },
  {"eor",		one(0005174),	one(0177777), "#wSs", m68000up },
  {"eor",		one(0005100),	one(0177700), "#w$s", m68000up },
*************** const struct m68k_opcode m68k_opcodes[] 
*** 356,366 ****
  {"exg",		one(0140610),	one(0170770), "DdAs", m68000up },
  {"exg",		one(0140610),	one(0170770), "AsDd", m68000up },
  
! {"extw",	one(0044200),	one(0177770), "Ds", m68000up|mcf },
! {"extl",	one(0044300),	one(0177770), "Ds", m68000up|mcf },
! {"extbl",	one(0044700),	one(0177770), "Ds", m68020up|cpu32|mcf },
  
! {"ff1",   one(0002300), one(0177770), "Ds", mcf528x},
  
  /* float stuff starts here */
  
--- 356,366 ----
  {"exg",		one(0140610),	one(0170770), "DdAs", m68000up },
  {"exg",		one(0140610),	one(0170770), "AsDd", m68000up },
  
! {"extw",	one(0044200),	one(0177770), "Ds", m68000up|mcfisa_a },
! {"extl",	one(0044300),	one(0177770), "Ds", m68000up|mcfisa_a },
! {"extbl",	one(0044700),	one(0177770), "Ds", m68020up|cpu32|mcfisa_a },
  
! {"ff1",   one(0002300), one(0177770), "Ds", mcfisa_aa},
  
  /* float stuff starts here */
  
*************** const struct m68k_opcode m68k_opcodes[] 
*** 1419,1446 ****
  {"ftwotoxx",	two(0xF000, 0x4811), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
  {"ftwotoxx",	two(0xF000, 0x0011), two(0xF1C0, 0xE07F), "IiFt",   mfloat },
  
! {"halt",	one(0045310),	one(0177777), "",     m68060 | mcf },
  
! {"illegal",	one(0045374),	one(0177777), "",     m68000up | mcf },
! {"intouch",	one(0xf428),	one(0xfff8), "As",    mcfv4eup },
  
! {"jmp",		one(0047300),	one(0177700), "!s", m68000up | mcf },
  
! {"jra",		one(0060000),	one(0177400), "Bg", m68000up | mcf },
! {"jra",		one(0047300),	one(0177700), "!s", m68000up | mcf },
  
! {"jsr",		one(0047200),	one(0177700), "!s", m68000up | mcf },
  
! {"jbsr",	one(0060400),	one(0177400), "Bg", m68000up | mcf },
! {"jbsr",	one(0047200),	one(0177700), "!s", m68000up | mcf },
  
! {"lea",		one(0040700),	one(0170700), "!sAd", m68000up | mcf },
  
  {"lpstop",	two(0174000,0000700),two(0177777,0177777),"#w", cpu32|m68060 },
  
! {"linkw",	one(0047120),	one(0177770), "As#w", m68000up | mcf },
  {"linkl",	one(0044010),	one(0177770), "As#l", m68020up | cpu32 },
! {"link",	one(0047120),	one(0177770), "As#W", m68000up | mcf },
  {"link",	one(0044010),	one(0177770), "As#l", m68020up | cpu32 },
  
  {"lslb",	one(0160410),	one(0170770), "QdDs", m68000up },
--- 1419,1446 ----
  {"ftwotoxx",	two(0xF000, 0x4811), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
  {"ftwotoxx",	two(0xF000, 0x0011), two(0xF1C0, 0xE07F), "IiFt",   mfloat },
  
! {"halt",	one(0045310),	one(0177777), "",     m68060 | mcfisa_a },
  
! {"illegal",	one(0045374),	one(0177777), "",     m68000up | mcfisa_a },
! {"intouch",	one(0xf428),	one(0xfff8), "As",    mcfisa_b },
  
! {"jmp",		one(0047300),	one(0177700), "!s", m68000up | mcfisa_a },
  
! {"jra",		one(0060000),	one(0177400), "Bg", m68000up | mcfisa_a },
! {"jra",		one(0047300),	one(0177700), "!s", m68000up | mcfisa_a },
  
! {"jsr",		one(0047200),	one(0177700), "!s", m68000up | mcfisa_a },
  
! {"jbsr",	one(0060400),	one(0177400), "Bg", m68000up | mcfisa_a },
! {"jbsr",	one(0047200),	one(0177700), "!s", m68000up | mcfisa_a },
  
! {"lea",		one(0040700),	one(0170700), "!sAd", m68000up | mcfisa_a },
  
  {"lpstop",	two(0174000,0000700),two(0177777,0177777),"#w", cpu32|m68060 },
  
! {"linkw",	one(0047120),	one(0177770), "As#w", m68000up | mcfisa_a },
  {"linkl",	one(0044010),	one(0177770), "As#l", m68020up | cpu32 },
! {"link",	one(0047120),	one(0177770), "As#W", m68000up | mcfisa_a },
  {"link",	one(0044010),	one(0177770), "As#l", m68020up | cpu32 },
  
  {"lslb",	one(0160410),	one(0170770), "QdDs", m68000up },
*************** const struct m68k_opcode m68k_opcodes[] 
*** 1448,1463 ****
  {"lslw",	one(0160510),	one(0170770), "QdDs", m68000up },
  {"lslw",	one(0160550),	one(0170770), "DdDs", m68000up },
  {"lslw",	one(0161700),	one(0177700), "~s",   m68000up },
! {"lsll",	one(0160610),	one(0170770), "QdDs", m68000up | mcf },
! {"lsll",	one(0160650),	one(0170770), "DdDs", m68000up | mcf },
  
  {"lsrb",	one(0160010),	one(0170770), "QdDs", m68000up },
  {"lsrb",	one(0160050),	one(0170770), "DdDs", m68000up },
  {"lsrw",	one(0160110),	one(0170770), "QdDs", m68000up },
  {"lsrw",	one(0160150),	one(0170770), "DdDs", m68000up },
  {"lsrw",	one(0161300),	one(0177700), "~s",   m68000up },
! {"lsrl",	one(0160210),	one(0170770), "QdDs", m68000up | mcf },
! {"lsrl",	one(0160250),	one(0170770), "DdDs", m68000up | mcf },
  
  {"macw",  two(0xa000, 0x0000), two(0xf1b0, 0x0800), "uMum", mcfmac },
  {"macw",  two(0xa000, 0x0000), two(0xf1b0, 0x0b00), "uMumiI", mcfmac },
--- 1448,1463 ----
  {"lslw",	one(0160510),	one(0170770), "QdDs", m68000up },
  {"lslw",	one(0160550),	one(0170770), "DdDs", m68000up },
  {"lslw",	one(0161700),	one(0177700), "~s",   m68000up },
! {"lsll",	one(0160610),	one(0170770), "QdDs", m68000up | mcfisa_a },
! {"lsll",	one(0160650),	one(0170770), "DdDs", m68000up | mcfisa_a },
  
  {"lsrb",	one(0160010),	one(0170770), "QdDs", m68000up },
  {"lsrb",	one(0160050),	one(0170770), "DdDs", m68000up },
  {"lsrw",	one(0160110),	one(0170770), "QdDs", m68000up },
  {"lsrw",	one(0160150),	one(0170770), "DdDs", m68000up },
  {"lsrw",	one(0161300),	one(0177700), "~s",   m68000up },
! {"lsrl",	one(0160210),	one(0170770), "QdDs", m68000up | mcfisa_a },
! {"lsrl",	one(0160250),	one(0170770), "DdDs", m68000up | mcfisa_a },
  
  {"macw",  two(0xa000, 0x0000), two(0xf1b0, 0x0800), "uMum", mcfmac },
  {"macw",  two(0xa000, 0x0000), two(0xf1b0, 0x0b00), "uMumiI", mcfmac },
*************** const struct m68k_opcode m68k_opcodes[] 
*** 1504,1516 ****
  	jtc@cygnus.com - 97/01/24
   */
  
! {"moveal",	one(0020100),	one(0170700), "*lAd", m68000up | mcf },
! {"moveaw",	one(0030100),	one(0170700), "*wAd", m68000up | mcf },
  
  {"movclrl",	one(0xA1C0),	one(0xf9f0), "eFRs", mcfemac },
  
! {"movec",	one(0047173),	one(0177777), "R1Jj", m68010up | mcf },
! {"movec",	one(0047173),	one(0177777), "R1#j", m68010up | mcf },
  {"movec",	one(0047172),	one(0177777), "JjR1", m68010up },
  {"movec",	one(0047172),	one(0177777), "#jR1", m68010up },
  
--- 1504,1516 ----
  	jtc@cygnus.com - 97/01/24
   */
  
! {"moveal",	one(0020100),	one(0170700), "*lAd", m68000up | mcfisa_a },
! {"moveaw",	one(0030100),	one(0170700), "*wAd", m68000up | mcfisa_a },
  
  {"movclrl",	one(0xA1C0),	one(0xf9f0), "eFRs", mcfemac },
  
! {"movec",	one(0047173),	one(0177777), "R1Jj", m68010up | mcfisa_a },
! {"movec",	one(0047173),	one(0177777), "R1#j", m68010up | mcfisa_a },
  {"movec",	one(0047172),	one(0177777), "JjR1", m68010up },
  {"movec",	one(0047172),	one(0177777), "#jR1", m68010up },
  
*************** const struct m68k_opcode m68k_opcodes[] 
*** 1525,1584 ****
  {"moveml",	one(0046300),	one(0177700), "<sLw", m68000up },
  {"moveml",	one(0046300),	one(0177700), "<s#w", m68000up },
  /* FIXME: need specifier for mode 2 and 5 to simplify below insn patterns */
! {"moveml",	one(0044320),	one(0177770), "Lwas", mcf },
! {"moveml",	one(0044320),	one(0177770), "#was", mcf },
! {"moveml",	one(0044350),	one(0177770), "Lwds", mcf },
! {"moveml",	one(0044350),	one(0177770), "#wds", mcf },
! {"moveml",	one(0046320),	one(0177770), "asLw", mcf },
! {"moveml",	one(0046320),	one(0177770), "as#w", mcf },
! {"moveml",	one(0046350),	one(0177770), "dsLw", mcf },
! {"moveml",	one(0046350),	one(0177770), "ds#w", mcf },
  
  {"movepw",	one(0000410),	one(0170770), "dsDd", m68000up },
  {"movepw",	one(0000610),	one(0170770), "Ddds", m68000up },
  {"movepl",	one(0000510),	one(0170770), "dsDd", m68000up },
  {"movepl",	one(0000710),	one(0170770), "Ddds", m68000up },
  
! {"moveq",	one(0070000),	one(0170400), "MsDd", m68000up | mcf },
! {"moveq",	one(0070000),	one(0170400), "#BDd", m68000up | mcf },
  
  /* The move opcode can generate the movea and moveq instructions.  */
  {"moveb",	one(0010000),	one(0170000), ";b$d", m68000up },
! {"moveb",	one(0010000),	one(0170070), "Ds$d", mcf },
! {"moveb",	one(0010020),	one(0170070), "as$d", mcf },
! {"moveb",	one(0010030),	one(0170070), "+s$d", mcf },
! {"moveb",	one(0010040),	one(0170070), "-s$d", mcf },
! {"moveb",	one(0010000),	one(0170000), "nsqd", mcf },
! {"moveb",	one(0010000),	one(0170700), "obDd", mcf },
! {"moveb",	one(0010200),	one(0170700), "obad", mcf },
! {"moveb",	one(0010300),	one(0170700), "ob+d", mcf },
! {"moveb",	one(0010400),	one(0170700), "ob-d", mcf },
! {"moveb",	one(0010000),	one(0170000), "obnd", mcfv4up },
  
  {"movew",	one(0030000),	one(0170000), "*w%d", m68000up },
! {"movew",	one(0030000),	one(0170000), "ms%d", mcf },
! {"movew",	one(0030000),	one(0170000), "nspd", mcf },
! {"movew",	one(0030000),	one(0170000), "owmd", mcf },
! {"movew",	one(0030000),	one(0170000), "ownd", mcfv4up },
  {"movew",	one(0040300),	one(0177700), "Ss$s", m68000up },
! {"movew",	one(0040300),	one(0177770), "SsDs", mcf },
  {"movew",	one(0041300),	one(0177700), "Cs$s", m68010up },
! {"movew",	one(0041300),	one(0177770), "CsDs", mcf },
  {"movew",	one(0042300),	one(0177700), ";wCd", m68000up },
! {"movew",	one(0042300),	one(0177700), "DsCd", mcf },
! {"movew",	one(0042374),	one(0177777), "#wCd", mcf },
  {"movew",	one(0043300),	one(0177700), ";wSd", m68000up },
! {"movew",	one(0043300),	one(0177700), "DsSd", mcf },
! {"movew",	one(0043374),	one(0177777), "#wSd", mcf },
  
! {"movel",	one(0070000),	one(0170400), "MsDd", m68000up | mcf },
  {"movel",	one(0020000),	one(0170000), "*l%d", m68000up },
! {"movel",	one(0020000),	one(0170000), "ms%d", mcf },
! {"movel",	one(0020000),	one(0170000), "nspd", mcf },
! {"movel",	one(0020000),	one(0170000), "olmd", mcf },
! {"movel",	one(0020000),	one(0170000), "olnd", mcfv4up },
! {"movel",	one(0047140),	one(0177770), "AsUd", m68000up | mcfv4e },
! {"movel",	one(0047150),	one(0177770), "UdAs", m68000up | mcfv4e },
  {"movel",	one(0120600),	one(0177760), "EsRs", mcfmac },
  {"movel",	one(0120400),	one(0177760), "RsEs", mcfmac },
  {"movel",	one(0120474),	one(0177777), "#lEs", mcfmac },
--- 1525,1584 ----
  {"moveml",	one(0046300),	one(0177700), "<sLw", m68000up },
  {"moveml",	one(0046300),	one(0177700), "<s#w", m68000up },
  /* FIXME: need specifier for mode 2 and 5 to simplify below insn patterns */
! {"moveml",	one(0044320),	one(0177770), "Lwas", mcfisa_a },
! {"moveml",	one(0044320),	one(0177770), "#was", mcfisa_a },
! {"moveml",	one(0044350),	one(0177770), "Lwds", mcfisa_a },
! {"moveml",	one(0044350),	one(0177770), "#wds", mcfisa_a },
! {"moveml",	one(0046320),	one(0177770), "asLw", mcfisa_a },
! {"moveml",	one(0046320),	one(0177770), "as#w", mcfisa_a },
! {"moveml",	one(0046350),	one(0177770), "dsLw", mcfisa_a },
! {"moveml",	one(0046350),	one(0177770), "ds#w", mcfisa_a },
  
  {"movepw",	one(0000410),	one(0170770), "dsDd", m68000up },
  {"movepw",	one(0000610),	one(0170770), "Ddds", m68000up },
  {"movepl",	one(0000510),	one(0170770), "dsDd", m68000up },
  {"movepl",	one(0000710),	one(0170770), "Ddds", m68000up },
  
! {"moveq",	one(0070000),	one(0170400), "MsDd", m68000up | mcfisa_a },
! {"moveq",	one(0070000),	one(0170400), "#BDd", m68000up | mcfisa_a },
  
  /* The move opcode can generate the movea and moveq instructions.  */
  {"moveb",	one(0010000),	one(0170000), ";b$d", m68000up },
! {"moveb",	one(0010000),	one(0170070), "Ds$d", mcfisa_a },
! {"moveb",	one(0010020),	one(0170070), "as$d", mcfisa_a },
! {"moveb",	one(0010030),	one(0170070), "+s$d", mcfisa_a },
! {"moveb",	one(0010040),	one(0170070), "-s$d", mcfisa_a },
! {"moveb",	one(0010000),	one(0170000), "nsqd", mcfisa_a },
! {"moveb",	one(0010000),	one(0170700), "obDd", mcfisa_a },
! {"moveb",	one(0010200),	one(0170700), "obad", mcfisa_a },
! {"moveb",	one(0010300),	one(0170700), "ob+d", mcfisa_a },
! {"moveb",	one(0010400),	one(0170700), "ob-d", mcfisa_a },
! {"moveb",	one(0010000),	one(0170000), "obnd", mcfisa_b },
  
  {"movew",	one(0030000),	one(0170000), "*w%d", m68000up },
! {"movew",	one(0030000),	one(0170000), "ms%d", mcfisa_a },
! {"movew",	one(0030000),	one(0170000), "nspd", mcfisa_a },
! {"movew",	one(0030000),	one(0170000), "owmd", mcfisa_a },
! {"movew",	one(0030000),	one(0170000), "ownd", mcfisa_b },
  {"movew",	one(0040300),	one(0177700), "Ss$s", m68000up },
! {"movew",	one(0040300),	one(0177770), "SsDs", mcfisa_a },
  {"movew",	one(0041300),	one(0177700), "Cs$s", m68010up },
! {"movew",	one(0041300),	one(0177770), "CsDs", mcfisa_a },
  {"movew",	one(0042300),	one(0177700), ";wCd", m68000up },
! {"movew",	one(0042300),	one(0177700), "DsCd", mcfisa_a },
! {"movew",	one(0042374),	one(0177777), "#wCd", mcfisa_a },
  {"movew",	one(0043300),	one(0177700), ";wSd", m68000up },
! {"movew",	one(0043300),	one(0177700), "DsSd", mcfisa_a },
! {"movew",	one(0043374),	one(0177777), "#wSd", mcfisa_a },
  
! {"movel",	one(0070000),	one(0170400), "MsDd", m68000up | mcfisa_a },
  {"movel",	one(0020000),	one(0170000), "*l%d", m68000up },
! {"movel",	one(0020000),	one(0170000), "ms%d", mcfisa_a },
! {"movel",	one(0020000),	one(0170000), "nspd", mcfisa_a },
! {"movel",	one(0020000),	one(0170000), "olmd", mcfisa_a },
! {"movel",	one(0020000),	one(0170000), "olnd", mcfisa_b },
! {"movel",	one(0047140),	one(0177770), "AsUd", m68000up | mcfusp },
! {"movel",	one(0047150),	one(0177770), "UdAs", m68000up | mcfusp },
  {"movel",	one(0120600),	one(0177760), "EsRs", mcfmac },
  {"movel",	one(0120400),	one(0177760), "RsEs", mcfmac },
  {"movel",	one(0120474),	one(0177777), "#lEs", mcfmac },
*************** const struct m68k_opcode m68k_opcodes[] 
*** 1606,1634 ****
  {"movel",	one(0xad3c),	one(0xffff), "#lH-", mcfemac }, /* #,mask.  */
  
  {"move",	one(0030000),	one(0170000), "*w%d", m68000up },
! {"move",	one(0030000),	one(0170000), "ms%d", mcf },
! {"move",	one(0030000),	one(0170000), "nspd", mcf },
! {"move",	one(0030000),	one(0170000), "owmd", mcf },
! {"move",	one(0030000),	one(0170000), "ownd", mcfv4up },
  {"move",	one(0040300),	one(0177700), "Ss$s", m68000up },
! {"move",	one(0040300),	one(0177770), "SsDs", mcf },
  {"move",	one(0041300),	one(0177700), "Cs$s", m68010up },
! {"move",	one(0041300),	one(0177770), "CsDs", mcf },
  {"move",	one(0042300),	one(0177700), ";wCd", m68000up },
! {"move",	one(0042300),	one(0177700), "DsCd", mcf },
! {"move",	one(0042374),	one(0177777), "#wCd", mcf },
  {"move",	one(0043300),	one(0177700), ";wSd", m68000up },
! {"move",	one(0043300),	one(0177700), "DsSd", mcf },
! {"move",	one(0043374),	one(0177777), "#wSd", mcf },
  
  {"move",	one(0047140),	one(0177770), "AsUd", m68000up },
  {"move",	one(0047150),	one(0177770), "UdAs", m68000up },
  
! {"mov3ql",	one(0120500),	one(0170700), "xd%s", mcfv4up },
! {"mvsb",	one(0070400),	one(0170700), "*bDd", mcfv4up },
! {"mvsw",	one(0070500),	one(0170700), "*wDd", mcfv4up },
! {"mvzb",	one(0070600),	one(0170700), "*bDd", mcfv4up },
! {"mvzw",	one(0070700),	one(0170700), "*wDd", mcfv4up },
  
  {"movesb",	two(0007000, 0),     two(0177700, 07777), "~sR1", m68010up },
  {"movesb",	two(0007000, 04000), two(0177700, 07777), "R1~s", m68010up },
--- 1606,1634 ----
  {"movel",	one(0xad3c),	one(0xffff), "#lH-", mcfemac }, /* #,mask.  */
  
  {"move",	one(0030000),	one(0170000), "*w%d", m68000up },
! {"move",	one(0030000),	one(0170000), "ms%d", mcfisa_a },
! {"move",	one(0030000),	one(0170000), "nspd", mcfisa_a },
! {"move",	one(0030000),	one(0170000), "owmd", mcfisa_a },
! {"move",	one(0030000),	one(0170000), "ownd", mcfisa_b },
  {"move",	one(0040300),	one(0177700), "Ss$s", m68000up },
! {"move",	one(0040300),	one(0177770), "SsDs", mcfisa_a },
  {"move",	one(0041300),	one(0177700), "Cs$s", m68010up },
! {"move",	one(0041300),	one(0177770), "CsDs", mcfisa_a },
  {"move",	one(0042300),	one(0177700), ";wCd", m68000up },
! {"move",	one(0042300),	one(0177700), "DsCd", mcfisa_a },
! {"move",	one(0042374),	one(0177777), "#wCd", mcfisa_a },
  {"move",	one(0043300),	one(0177700), ";wSd", m68000up },
! {"move",	one(0043300),	one(0177700), "DsSd", mcfisa_a },
! {"move",	one(0043374),	one(0177777), "#wSd", mcfisa_a },
  
  {"move",	one(0047140),	one(0177770), "AsUd", m68000up },
  {"move",	one(0047150),	one(0177770), "UdAs", m68000up },
  
! {"mov3ql",	one(0120500),	one(0170700), "xd%s", mcfisa_b },
! {"mvsb",	one(0070400),	one(0170700), "*bDd", mcfisa_b },
! {"mvsw",	one(0070500),	one(0170700), "*wDd", mcfisa_b },
! {"mvzb",	one(0070600),	one(0170700), "*bDd", mcfisa_b },
! {"mvzw",	one(0070700),	one(0170700), "*wDd", mcfisa_b },
  
  {"movesb",	two(0007000, 0),     two(0177700, 07777), "~sR1", m68010up },
  {"movesb",	two(0007000, 04000), two(0177700, 07777), "R1~s", m68010up },
*************** const struct m68k_opcode m68k_opcodes[] 
*** 1671,1684 ****
  {"msacl",  two(0xa000, 0x0900), two(0xf100, 0x0900), "R3R1iI4/RneG", mcfemac },
  {"msacl",  two(0xa000, 0x0b00), two(0xf100, 0x0900), "R3R1Mh4/RneG", mcfemac },
  
! {"mulsw",	one(0140700),		one(0170700), ";wDd", m68000up|mcf },
  {"mulsl",	two(0046000,004000), two(0177700,0107770), ";lD1", m68020up|cpu32 },
! {"mulsl",	two(0046000,004000), two(0177700,0107770), "qsD1", mcf },
  {"mulsl",	two(0046000,006000), two(0177700,0107770), ";lD3D1",m68020up|cpu32 },
  
! {"muluw",	one(0140300),		one(0170700), ";wDd", m68000up|mcf },
  {"mulul",	two(0046000,000000), two(0177700,0107770), ";lD1", m68020up|cpu32 },
! {"mulul",	two(0046000,000000), two(0177700,0107770), "qsD1", mcf },
  {"mulul",	two(0046000,002000), two(0177700,0107770), ";lD3D1",m68020up|cpu32 },
  
  {"nbcd",	one(0044000),	one(0177700), "$s", m68000up },
--- 1671,1684 ----
  {"msacl",  two(0xa000, 0x0900), two(0xf100, 0x0900), "R3R1iI4/RneG", mcfemac },
  {"msacl",  two(0xa000, 0x0b00), two(0xf100, 0x0900), "R3R1Mh4/RneG", mcfemac },
  
! {"mulsw",	one(0140700),		one(0170700), ";wDd", m68000up|mcfisa_a },
  {"mulsl",	two(0046000,004000), two(0177700,0107770), ";lD1", m68020up|cpu32 },
! {"mulsl",	two(0046000,004000), two(0177700,0107770), "qsD1", mcfisa_a },
  {"mulsl",	two(0046000,006000), two(0177700,0107770), ";lD3D1",m68020up|cpu32 },
  
! {"muluw",	one(0140300),		one(0170700), ";wDd", m68000up|mcfisa_a },
  {"mulul",	two(0046000,000000), two(0177700,0107770), ";lD1", m68020up|cpu32 },
! {"mulul",	two(0046000,000000), two(0177700,0107770), "qsD1", mcfisa_a },
  {"mulul",	two(0046000,002000), two(0177700,0107770), ";lD3D1",m68020up|cpu32 },
  
  {"nbcd",	one(0044000),	one(0177700), "$s", m68000up },
*************** const struct m68k_opcode m68k_opcodes[] 
*** 1686,1711 ****
  {"negb",	one(0042000),	one(0177700), "$s", m68000up },
  {"negw",	one(0042100),	one(0177700), "$s", m68000up },
  {"negl",	one(0042200),	one(0177700), "$s", m68000up },
! {"negl",	one(0042200),	one(0177700), "Ds", mcf},
  
  {"negxb",	one(0040000),	one(0177700), "$s", m68000up },
  {"negxw",	one(0040100),	one(0177700), "$s", m68000up },
  {"negxl",	one(0040200),	one(0177700), "$s", m68000up },
! {"negxl",	one(0040200),	one(0177700), "Ds", mcf},
  
! {"nop",		one(0047161),	one(0177777), "", m68000up | mcf},
  
  {"notb",	one(0043000),	one(0177700), "$s", m68000up },
  {"notw",	one(0043100),	one(0177700), "$s", m68000up },
  {"notl",	one(0043200),	one(0177700), "$s", m68000up },
! {"notl",	one(0043200),	one(0177700), "Ds", mcf},
  
  {"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 },
! {"oril",	one(0000200),	one(0177700), "#lDs", mcf },
  {"ori",		one(0000074),	one(0177777), "#bCs", m68000up },
  {"ori",		one(0000100),	one(0177700), "#w$s", m68000up },
  {"ori",		one(0000174),	one(0177777), "#wSs", m68000up },
--- 1686,1711 ----
  {"negb",	one(0042000),	one(0177700), "$s", m68000up },
  {"negw",	one(0042100),	one(0177700), "$s", m68000up },
  {"negl",	one(0042200),	one(0177700), "$s", m68000up },
! {"negl",	one(0042200),	one(0177700), "Ds", mcfisa_a},
  
  {"negxb",	one(0040000),	one(0177700), "$s", m68000up },
  {"negxw",	one(0040100),	one(0177700), "$s", m68000up },
  {"negxl",	one(0040200),	one(0177700), "$s", m68000up },
! {"negxl",	one(0040200),	one(0177700), "Ds", mcfisa_a},
  
! {"nop",		one(0047161),	one(0177777), "", m68000up | mcfisa_a},
  
  {"notb",	one(0043000),	one(0177700), "$s", m68000up },
  {"notw",	one(0043100),	one(0177700), "$s", m68000up },
  {"notl",	one(0043200),	one(0177700), "$s", m68000up },
! {"notl",	one(0043200),	one(0177700), "Ds", mcfisa_a},
  
  {"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 },
! {"oril",	one(0000200),	one(0177700), "#lDs", mcfisa_a },
  {"ori",		one(0000074),	one(0177777), "#bCs", m68000up },
  {"ori",		one(0000100),	one(0177700), "#w$s", m68000up },
  {"ori",		one(0000174),	one(0177777), "#wSs", m68000up },
*************** const struct m68k_opcode m68k_opcodes[] 
*** 1720,1728 ****
  {"orw",		one(0100100),	one(0170700), ";wDd", m68000up },
  {"orw",		one(0100500),	one(0170700), "Dd~s", m68000up },
  {"orl",		one(0000200),	one(0177700), "#l$s", m68000up },
! {"orl",		one(0000200),	one(0177700), "#lDs", mcf },
! {"orl",		one(0100200),	one(0170700), ";lDd", m68000up | mcf },
! {"orl",		one(0100600),	one(0170700), "Dd~s", m68000up | mcf },
  {"or",		one(0000074),	one(0177777), "#bCs", m68000up },
  {"or",		one(0000100),	one(0177700), "#w$s", m68000up },
  {"or",		one(0000174),	one(0177777), "#wSs", m68000up },
--- 1720,1728 ----
  {"orw",		one(0100100),	one(0170700), ";wDd", m68000up },
  {"orw",		one(0100500),	one(0170700), "Dd~s", m68000up },
  {"orl",		one(0000200),	one(0177700), "#l$s", m68000up },
! {"orl",		one(0000200),	one(0177700), "#lDs", mcfisa_a },
! {"orl",		one(0100200),	one(0170700), ";lDd", m68000up | mcfisa_a },
! {"orl",		one(0100600),	one(0170700), "Dd~s", m68000up | mcfisa_a },
  {"or",		one(0000074),	one(0177777), "#bCs", m68000up },
  {"or",		one(0000100),	one(0177700), "#w$s", m68000up },
  {"or",		one(0000174),	one(0177777), "#wSs", m68000up },
*************** const struct m68k_opcode m68k_opcodes[] 
*** 1782,1788 ****
  {"pdbwc",	two(0xf048, 0x0009),	two(0xfff8, 0xffff), "DsBw", m68851 },
  {"pdbws",	two(0xf048, 0x0008),	two(0xfff8, 0xffff), "DsBw", m68851 },
  
! {"pea",		one(0044100),		one(0177700), "!s", m68000up|mcf },
  
  {"pflusha",	one(0xf518),		one(0xfff8), "", m68040up },
  {"pflusha",	two(0xf000,0x2400), two(0xffff,0xffff), "", m68030 | m68851 },
--- 1782,1788 ----
  {"pdbwc",	two(0xf048, 0x0009),	two(0xfff8, 0xffff), "DsBw", m68851 },
  {"pdbws",	two(0xf048, 0x0008),	two(0xfff8, 0xffff), "DsBw", m68851 },
  
! {"pea",		one(0044100),		one(0177700), "!s", m68000up|mcfisa_a },
  
  {"pflusha",	one(0xf518),		one(0xfff8), "", m68040up },
  {"pflusha",	two(0xf000,0x2400), two(0xffff,0xffff), "", m68030 | m68851 },
*************** const struct m68k_opcode m68k_opcodes[] 
*** 1940,1953 ****
  {"ptrapwsl",	two(0xf07b, 0x0008),	two(0xffff, 0xffff), "#l", m68851 },
  {"ptrapws",	two(0xf07c, 0x0008),	two(0xffff, 0xffff), "",   m68851 },
  
! {"pulse",	one(0045314),		one(0177777), "", m68060 | mcf },
  
  {"pvalid",	two(0xf000, 0x2800),	two(0xffc0, 0xffff), "Vs&s", m68851 },
  {"pvalid",	two(0xf000, 0x2c00),	two(0xffc0, 0xfff8), "A3&s", m68851 },
  
    /* FIXME: don't allow Dw==Dx. */
! {"remsl",       two(0x4c40, 0x0800),    two(0xffc0, 0x8ff8), "qsD3D1", mcf5206eup },
! {"remul",       two(0x4c40, 0x0000),    two(0xffc0, 0x8ff8), "qsD3D1", mcf5206eup },
  
  {"reset",	one(0047160),		one(0177777), "", m68000up },
  
--- 1940,1953 ----
  {"ptrapwsl",	two(0xf07b, 0x0008),	two(0xffff, 0xffff), "#l", m68851 },
  {"ptrapws",	two(0xf07c, 0x0008),	two(0xffff, 0xffff), "",   m68851 },
  
! {"pulse",	one(0045314),		one(0177777), "", m68060 | mcfisa_a },
  
  {"pvalid",	two(0xf000, 0x2800),	two(0xffc0, 0xffff), "Vs&s", m68851 },
  {"pvalid",	two(0xf000, 0x2c00),	two(0xffc0, 0xfff8), "A3&s", m68851 },
  
    /* FIXME: don't allow Dw==Dx. */
! {"remsl",       two(0x4c40, 0x0800),    two(0xffc0, 0x8ff8), "qsD3D1", mcfhwdiv },
! {"remul",       two(0x4c40, 0x0000),    two(0xffc0, 0x8ff8), "qsD3D1", mcfhwdiv },
  
  {"reset",	one(0047160),		one(0177777), "", m68000up },
  
*************** const struct m68k_opcode m68k_opcodes[] 
*** 1985,2051 ****
  
  {"rtd",		one(0047164),		one(0177777), "#w", m68010up },
  
! {"rte",		one(0047163),		one(0177777), "",   m68000up | mcf },
  
  {"rtm",		one(0003300),		one(0177760), "Rs", m68020 },
  
  {"rtr",		one(0047167),		one(0177777), "",   m68000up },
  
! {"rts",		one(0047165),		one(0177777), "",   m68000up | mcf },
  
! {"satsl",	one(0046200),		one(0177770), "Ds", mcfv4up },
  
  {"sbcd",	one(0100400),		one(0170770), "DsDd", m68000up },
  {"sbcd",	one(0100410),		one(0170770), "-s-d", m68000up },
  
  {"scc",		one(0052300),	one(0177700), "$s", m68000up },
! {"scc",		one(0052300),	one(0177700), "Ds", mcf },
  {"scs",		one(0052700),	one(0177700), "$s", m68000up },
! {"scs",		one(0052700),	one(0177700), "Ds", mcf },
  {"seq",		one(0053700),	one(0177700), "$s", m68000up },
! {"seq",		one(0053700),	one(0177700), "Ds", mcf },
  {"sf",		one(0050700),	one(0177700), "$s", m68000up },
! {"sf",		one(0050700),	one(0177700), "Ds", mcf },
  {"sge",		one(0056300),	one(0177700), "$s", m68000up },
! {"sge",		one(0056300),	one(0177700), "Ds", mcf },
  {"sgt",		one(0057300),	one(0177700), "$s", m68000up },
! {"sgt",		one(0057300),	one(0177700), "Ds", mcf },
  {"shi",		one(0051300),	one(0177700), "$s", m68000up },
! {"shi",		one(0051300),	one(0177700), "Ds", mcf },
  {"sle",		one(0057700),	one(0177700), "$s", m68000up },
! {"sle",		one(0057700),	one(0177700), "Ds", mcf },
  {"sls",		one(0051700),	one(0177700), "$s", m68000up },
! {"sls",		one(0051700),	one(0177700), "Ds", mcf },
  {"slt",		one(0056700),	one(0177700), "$s", m68000up },
! {"slt",		one(0056700),	one(0177700), "Ds", mcf },
  {"smi",		one(0055700),	one(0177700), "$s", m68000up },
! {"smi",		one(0055700),	one(0177700), "Ds", mcf },
  {"sne",		one(0053300),	one(0177700), "$s", m68000up },
! {"sne",		one(0053300),	one(0177700), "Ds", mcf },
  {"spl",		one(0055300),	one(0177700), "$s", m68000up },
! {"spl",		one(0055300),	one(0177700), "Ds", mcf },
  {"st",		one(0050300),	one(0177700), "$s", m68000up },
! {"st",		one(0050300),	one(0177700), "Ds", mcf },
  {"svc",		one(0054300),	one(0177700), "$s", m68000up },
! {"svc",		one(0054300),	one(0177700), "Ds", mcf },
  {"svs",		one(0054700),	one(0177700), "$s", m68000up },
! {"svs",		one(0054700),	one(0177700), "Ds", mcf },
  
! {"stop",	one(0047162),	one(0177777), "#w", m68000up | mcf },
  
! {"strldsr", two(0040347,0043374), two(0177777,0177777), "#w", mcf528x},
  
! {"subal",	one(0110700),	one(0170700), "*lAd", m68000up | mcf },
  {"subaw",	one(0110300),	one(0170700), "*wAd", m68000up },
  
  {"subib",	one(0002000),	one(0177700), "#b$s", m68000up },
  {"subiw",	one(0002100),	one(0177700), "#w$s", m68000up },
  {"subil",	one(0002200),	one(0177700), "#l$s", m68000up },
! {"subil",	one(0002200),	one(0177700), "#lDs", mcf },
  
  {"subqb",	one(0050400),	one(0170700), "Qd%s", m68000up },
  {"subqw",	one(0050500),	one(0170700), "Qd%s", m68000up },
! {"subql",	one(0050600),	one(0170700), "Qd%s", m68000up | mcf },
  
  /* The sub opcode can generate the suba, subi, and subq instructions.  */
  {"subb",	one(0050400),	one(0170700), "Qd%s", m68000up },
--- 1985,2051 ----
  
  {"rtd",		one(0047164),		one(0177777), "#w", m68010up },
  
! {"rte",		one(0047163),		one(0177777), "",   m68000up | mcfisa_a },
  
  {"rtm",		one(0003300),		one(0177760), "Rs", m68020 },
  
  {"rtr",		one(0047167),		one(0177777), "",   m68000up },
  
! {"rts",		one(0047165),		one(0177777), "",   m68000up | mcfisa_a },
  
! {"satsl",	one(0046200),		one(0177770), "Ds", mcfisa_b },
  
  {"sbcd",	one(0100400),		one(0170770), "DsDd", m68000up },
  {"sbcd",	one(0100410),		one(0170770), "-s-d", m68000up },
  
  {"scc",		one(0052300),	one(0177700), "$s", m68000up },
! {"scc",		one(0052300),	one(0177700), "Ds", mcfisa_a },
  {"scs",		one(0052700),	one(0177700), "$s", m68000up },
! {"scs",		one(0052700),	one(0177700), "Ds", mcfisa_a },
  {"seq",		one(0053700),	one(0177700), "$s", m68000up },
! {"seq",		one(0053700),	one(0177700), "Ds", mcfisa_a },
  {"sf",		one(0050700),	one(0177700), "$s", m68000up },
! {"sf",		one(0050700),	one(0177700), "Ds", mcfisa_a },
  {"sge",		one(0056300),	one(0177700), "$s", m68000up },
! {"sge",		one(0056300),	one(0177700), "Ds", mcfisa_a },
  {"sgt",		one(0057300),	one(0177700), "$s", m68000up },
! {"sgt",		one(0057300),	one(0177700), "Ds", mcfisa_a },
  {"shi",		one(0051300),	one(0177700), "$s", m68000up },
! {"shi",		one(0051300),	one(0177700), "Ds", mcfisa_a },
  {"sle",		one(0057700),	one(0177700), "$s", m68000up },
! {"sle",		one(0057700),	one(0177700), "Ds", mcfisa_a },
  {"sls",		one(0051700),	one(0177700), "$s", m68000up },
! {"sls",		one(0051700),	one(0177700), "Ds", mcfisa_a },
  {"slt",		one(0056700),	one(0177700), "$s", m68000up },
! {"slt",		one(0056700),	one(0177700), "Ds", mcfisa_a },
  {"smi",		one(0055700),	one(0177700), "$s", m68000up },
! {"smi",		one(0055700),	one(0177700), "Ds", mcfisa_a },
  {"sne",		one(0053300),	one(0177700), "$s", m68000up },
! {"sne",		one(0053300),	one(0177700), "Ds", mcfisa_a },
  {"spl",		one(0055300),	one(0177700), "$s", m68000up },
! {"spl",		one(0055300),	one(0177700), "Ds", mcfisa_a },
  {"st",		one(0050300),	one(0177700), "$s", m68000up },
! {"st",		one(0050300),	one(0177700), "Ds", mcfisa_a },
  {"svc",		one(0054300),	one(0177700), "$s", m68000up },
! {"svc",		one(0054300),	one(0177700), "Ds", mcfisa_a },
  {"svs",		one(0054700),	one(0177700), "$s", m68000up },
! {"svs",		one(0054700),	one(0177700), "Ds", mcfisa_a },
  
! {"stop",	one(0047162),	one(0177777), "#w", m68000up | mcfisa_a },
  
! {"strldsr", two(0040347,0043374), two(0177777,0177777), "#w", mcfisa_aa},
  
! {"subal",	one(0110700),	one(0170700), "*lAd", m68000up | mcfisa_a },
  {"subaw",	one(0110300),	one(0170700), "*wAd", m68000up },
  
  {"subib",	one(0002000),	one(0177700), "#b$s", m68000up },
  {"subiw",	one(0002100),	one(0177700), "#w$s", m68000up },
  {"subil",	one(0002200),	one(0177700), "#l$s", m68000up },
! {"subil",	one(0002200),	one(0177700), "#lDs", mcfisa_a },
  
  {"subqb",	one(0050400),	one(0170700), "Qd%s", m68000up },
  {"subqw",	one(0050500),	one(0170700), "Qd%s", m68000up },
! {"subql",	one(0050600),	one(0170700), "Qd%s", m68000up | mcfisa_a },
  
  /* The sub opcode can generate the suba, subi, and subq instructions.  */
  {"subb",	one(0050400),	one(0170700), "Qd%s", m68000up },
*************** const struct m68k_opcode m68k_opcodes[] 
*** 2057,2077 ****
  {"subw",	one(0110300),	one(0170700), "*wAd", m68000up },
  {"subw",	one(0110100),	one(0170700), "*wDd", m68000up },
  {"subw",	one(0110500),	one(0170700), "Dd~s", m68000up },
! {"subl",	one(0050600),	one(0170700), "Qd%s", m68000up | mcf },
  {"subl",	one(0002200),	one(0177700), "#l$s", m68000up },
! {"subl",	one(0002200),	one(0177700), "#lDs", mcf },
! {"subl",	one(0110700),	one(0170700), "*lAd", m68000up | mcf },
! {"subl",	one(0110200),	one(0170700), "*lDd", m68000up | mcf },
! {"subl",	one(0110600),	one(0170700), "Dd~s", m68000up | mcf },
  
  {"subxb",	one(0110400),	one(0170770), "DsDd", m68000up },
  {"subxb",	one(0110410),	one(0170770), "-s-d", m68000up },
  {"subxw",	one(0110500),	one(0170770), "DsDd", m68000up },
  {"subxw",	one(0110510),	one(0170770), "-s-d", m68000up },
! {"subxl",	one(0110600),	one(0170770), "DsDd", m68000up | mcf },
  {"subxl",	one(0110610),	one(0170770), "-s-d", m68000up },
  
! {"swap",	one(0044100),	one(0177770), "Ds", m68000up | mcf },
  
  /* swbeg and swbegl are magic constants used on sysV68.  The compiler
     generates them before a switch table.  They tell the debugger and
--- 2057,2077 ----
  {"subw",	one(0110300),	one(0170700), "*wAd", m68000up },
  {"subw",	one(0110100),	one(0170700), "*wDd", m68000up },
  {"subw",	one(0110500),	one(0170700), "Dd~s", m68000up },
! {"subl",	one(0050600),	one(0170700), "Qd%s", m68000up | mcfisa_a },
  {"subl",	one(0002200),	one(0177700), "#l$s", m68000up },
! {"subl",	one(0002200),	one(0177700), "#lDs", mcfisa_a },
! {"subl",	one(0110700),	one(0170700), "*lAd", m68000up | mcfisa_a },
! {"subl",	one(0110200),	one(0170700), "*lDd", m68000up | mcfisa_a },
! {"subl",	one(0110600),	one(0170700), "Dd~s", m68000up | mcfisa_a },
  
  {"subxb",	one(0110400),	one(0170770), "DsDd", m68000up },
  {"subxb",	one(0110410),	one(0170770), "-s-d", m68000up },
  {"subxw",	one(0110500),	one(0170770), "DsDd", m68000up },
  {"subxw",	one(0110510),	one(0170770), "-s-d", m68000up },
! {"subxl",	one(0110600),	one(0170770), "DsDd", m68000up | mcfisa_a },
  {"subxl",	one(0110610),	one(0170770), "-s-d", m68000up },
  
! {"swap",	one(0044100),	one(0177770), "Ds", m68000up | mcfisa_a },
  
  /* swbeg and swbegl are magic constants used on sysV68.  The compiler
     generates them before a switch table.  They tell the debugger and
*************** const struct m68k_opcode m68k_opcodes[] 
*** 2079,2088 ****
     number of elements in the table.  swbeg means that the entries in
     the table are word (2 byte) sized, and swbegl means that the
     entries in the table are longword (4 byte) sized.  */
! {"swbeg",	one(0045374),	one(0177777), "#w",   m68000up | mcf },
! {"swbegl",	one(0045375),	one(0177777), "#l",   m68000up | mcf },
  
! {"tas",		one(0045300),	one(0177700), "$s", m68000up | mcfv4up},
  
  #define TBL1(name,signed,round,size)					\
    {name, two(0174000, (signed<<11)|(!round<<10)|(size<<6)|0000400),	\
--- 2079,2088 ----
     number of elements in the table.  swbeg means that the entries in
     the table are word (2 byte) sized, and swbegl means that the
     entries in the table are longword (4 byte) sized.  */
! {"swbeg",	one(0045374),	one(0177777), "#w",   m68000up | mcfisa_a },
! {"swbegl",	one(0045375),	one(0177777), "#l",   m68000up | mcfisa_a },
  
! {"tas",		one(0045300),	one(0177700), "$s", m68000up | mcfisa_b},
  
  #define TBL1(name,signed,round,size)					\
    {name, two(0174000, (signed<<11)|(!round<<10)|(size<<6)|0000400),	\
*************** TBL("tblsnb", "tblsnw", "tblsnl", 1, 0),
*** 2096,2107 ****
  TBL("tblub", "tbluw", "tblul", 0, 1),
  TBL("tblunb", "tblunw", "tblunl", 0, 0),
  
! {"trap",	one(0047100),	one(0177760), "Ts", m68000up | mcf },
  
  {"trapcc",	one(0052374),	one(0177777), "", m68020up | cpu32 },
  {"trapcs",	one(0052774),	one(0177777), "", m68020up | cpu32 },
  {"trapeq",	one(0053774),	one(0177777), "", m68020up | cpu32 },
! {"trapf",	one(0050774),	one(0177777), "", m68020up | cpu32 | mcf },
  {"trapge",	one(0056374),	one(0177777), "", m68020up | cpu32 },
  {"trapgt",	one(0057374),	one(0177777), "", m68020up | cpu32 },
  {"traphi",	one(0051374),	one(0177777), "", m68020up | cpu32 },
--- 2096,2107 ----
  TBL("tblub", "tbluw", "tblul", 0, 1),
  TBL("tblunb", "tblunw", "tblunl", 0, 0),
  
! {"trap",	one(0047100),	one(0177760), "Ts", m68000up | mcfisa_a },
  
  {"trapcc",	one(0052374),	one(0177777), "", m68020up | cpu32 },
  {"trapcs",	one(0052774),	one(0177777), "", m68020up | cpu32 },
  {"trapeq",	one(0053774),	one(0177777), "", m68020up | cpu32 },
! {"trapf",	one(0050774),	one(0177777), "", m68020up | cpu32 | mcfisa_a },
  {"trapge",	one(0056374),	one(0177777), "", m68020up | cpu32 },
  {"trapgt",	one(0057374),	one(0177777), "", m68020up | cpu32 },
  {"traphi",	one(0051374),	one(0177777), "", m68020up | cpu32 },
*************** TBL("tblunb", "tblunw", "tblunl", 0, 0),
*** 2118,2124 ****
  {"trapccw",	one(0052372),	one(0177777), "#w", m68020up|cpu32 },
  {"trapcsw",	one(0052772),	one(0177777), "#w", m68020up|cpu32 },
  {"trapeqw",	one(0053772),	one(0177777), "#w", m68020up|cpu32 },
! {"trapfw",	one(0050772),	one(0177777), "#w", m68020up|cpu32|mcf},
  {"trapgew",	one(0056372),	one(0177777), "#w", m68020up|cpu32 },
  {"trapgtw",	one(0057372),	one(0177777), "#w", m68020up|cpu32 },
  {"traphiw",	one(0051372),	one(0177777), "#w", m68020up|cpu32 },
--- 2118,2124 ----
  {"trapccw",	one(0052372),	one(0177777), "#w", m68020up|cpu32 },
  {"trapcsw",	one(0052772),	one(0177777), "#w", m68020up|cpu32 },
  {"trapeqw",	one(0053772),	one(0177777), "#w", m68020up|cpu32 },
! {"trapfw",	one(0050772),	one(0177777), "#w", m68020up|cpu32|mcfisa_a},
  {"trapgew",	one(0056372),	one(0177777), "#w", m68020up|cpu32 },
  {"trapgtw",	one(0057372),	one(0177777), "#w", m68020up|cpu32 },
  {"traphiw",	one(0051372),	one(0177777), "#w", m68020up|cpu32 },
*************** TBL("tblunb", "tblunw", "tblunl", 0, 0),
*** 2135,2141 ****
  {"trapccl",	one(0052373),	one(0177777), "#l", m68020up|cpu32 },
  {"trapcsl",	one(0052773),	one(0177777), "#l", m68020up|cpu32 },
  {"trapeql",	one(0053773),	one(0177777), "#l", m68020up|cpu32 },
! {"trapfl",	one(0050773),	one(0177777), "#l", m68020up|cpu32|mcf},
  {"trapgel",	one(0056373),	one(0177777), "#l", m68020up|cpu32 },
  {"trapgtl",	one(0057373),	one(0177777), "#l", m68020up|cpu32 },
  {"traphil",	one(0051373),	one(0177777), "#l", m68020up|cpu32 },
--- 2135,2141 ----
  {"trapccl",	one(0052373),	one(0177777), "#l", m68020up|cpu32 },
  {"trapcsl",	one(0052773),	one(0177777), "#l", m68020up|cpu32 },
  {"trapeql",	one(0053773),	one(0177777), "#l", m68020up|cpu32 },
! {"trapfl",	one(0050773),	one(0177777), "#l", m68020up|cpu32|mcfisa_a},
  {"trapgel",	one(0056373),	one(0177777), "#l", m68020up|cpu32 },
  {"trapgtl",	one(0057373),	one(0177777), "#l", m68020up|cpu32 },
  {"traphil",	one(0051373),	one(0177777), "#l", m68020up|cpu32 },
*************** TBL("tblunb", "tblunw", "tblunl", 0, 0),
*** 2151,2174 ****
  
  {"trapv",	one(0047166),	one(0177777), "", m68000up },
  
! {"tstb",	one(0045000),	one(0177700), ";b", m68020up|cpu32|mcf },
  {"tstb",	one(0045000),	one(0177700), "$b", m68000up },
! {"tstw",	one(0045100),	one(0177700), "*w", m68020up|cpu32|mcf },
  {"tstw",	one(0045100),	one(0177700), "$w", m68000up },
! {"tstl",	one(0045200),	one(0177700), "*l", m68020up|cpu32|mcf },
  {"tstl",	one(0045200),	one(0177700), "$l", m68000up },
  
! {"unlk",	one(0047130),	one(0177770), "As", m68000up | mcf },
  
  {"unpk",	one(0100600),	one(0170770), "DsDd#w", m68020up },
  {"unpk",	one(0100610),	one(0170770), "-s-d#w", m68020up },
  
! {"wddatab",	one(0175400),   one(0177700), "~s", mcf },
! {"wddataw",	one(0175500),   one(0177700), "~s", mcf },
! {"wddatal",	one(0175600),   one(0177700), "~s", mcf },
  
! {"wdebug",	two(0175720, 03),	two(0177770, 0xffff), "as", mcf },
! {"wdebug",	two(0175750, 03),	two(0177770, 0xffff), "ds", mcf },
  };
  
  const int m68k_numopcodes = sizeof m68k_opcodes / sizeof m68k_opcodes[0];
--- 2151,2174 ----
  
  {"trapv",	one(0047166),	one(0177777), "", m68000up },
  
! {"tstb",	one(0045000),	one(0177700), ";b", m68020up|cpu32|mcfisa_a },
  {"tstb",	one(0045000),	one(0177700), "$b", m68000up },
! {"tstw",	one(0045100),	one(0177700), "*w", m68020up|cpu32|mcfisa_a },
  {"tstw",	one(0045100),	one(0177700), "$w", m68000up },
! {"tstl",	one(0045200),	one(0177700), "*l", m68020up|cpu32|mcfisa_a },
  {"tstl",	one(0045200),	one(0177700), "$l", m68000up },
  
! {"unlk",	one(0047130),	one(0177770), "As", m68000up | mcfisa_a },
  
  {"unpk",	one(0100600),	one(0170770), "DsDd#w", m68020up },
  {"unpk",	one(0100610),	one(0170770), "-s-d#w", m68020up },
  
! {"wddatab",	one(0175400),   one(0177700), "~s", mcfisa_a },
! {"wddataw",	one(0175500),   one(0177700), "~s", mcfisa_a },
! {"wddatal",	one(0175600),   one(0177700), "~s", mcfisa_a },
  
! {"wdebug",	two(0175720, 03),	two(0177770, 0xffff), "as", mcfisa_a },
! {"wdebug",	two(0175750, 03),	two(0177770, 0xffff), "ds", mcfisa_a },
  };
  
  const int m68k_numopcodes = sizeof m68k_opcodes / sizeof m68k_opcodes[0];
*************** const struct m68k_opcode_alias m68k_opco
*** 2418,2424 ****
    { "ftestw",	"ftstw", },
    { "ftestx",	"ftstx", },
  
!   { "bitrevl",  "bitrev", },  /* for mcf528x only */
    { "byterevl", "byterev", },
    { "ff1l",     "ff1", },
  
--- 2418,2424 ----
    { "ftestw",	"ftstw", },
    { "ftestx",	"ftstx", },
  
!   { "bitrevl",  "bitrev", },
    { "byterevl", "byterev", },
    { "ff1l",     "ff1", },
  


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]