[gnu.gdb.bug] GDB 2.7 mc68881 disassembler bugs

mike%jaguar@CS.UTAH.EDU (Mike Hibler) (10/28/88)

Here are fixes for three minor mc68881/68882 disassembler bugs.

1. Doesn't recognize the long form of FBcc instructions.
2. Prints out the arguments of mem to reg FMOVEM instructions
   in the wrong order.
3. Doesn't recognize the FNOP instruction (how have we survived
   without this for so long? :-)

The diff (all in m68k-opcode.h):

*** /tmp/,RCSt1000342	Thu Oct 27 12:28:32 1988
--- m68k-opcode.h	Wed Oct 26 18:45:06 1988
***************
*** 655,692 ****
  {"fatanhx",	two(0xF000, 0x480D),	two(0xF1C0, 0xFC7F),	"Ii;xF7"},
  {"fatanhx",	two(0xF000, 0x000D),	two(0xF1C0, 0xE07F),	"IiFt"},
  
! {"fbeq",	one(0xF081),		one(0xF1FF),		"IdBc"},
! {"fbf",		one(0xF080),		one(0xF1FF),		"IdBc"},
! {"fbge",	one(0xF093),		one(0xF1FF),		"IdBc"},
! {"fbgl",	one(0xF096),		one(0xF1FF),		"IdBc"},
! {"fbgle",	one(0xF097),		one(0xF1FF),		"IdBc"},
! {"fbgt",	one(0xF092),		one(0xF1FF),		"IdBc"},
! {"fble",	one(0xF095),		one(0xF1FF),		"IdBc"},
! {"fblt",	one(0xF094),		one(0xF1FF),		"IdBc"},
! {"fbne",	one(0xF08E),		one(0xF1FF),		"IdBc"},
! {"fbnge",	one(0xF09C),		one(0xF1FF),		"IdBc"},
! {"fbngl",	one(0xF099),		one(0xF1FF),		"IdBc"},
! {"fbngle",	one(0xF098),		one(0xF1FF),		"IdBc"},
! {"fbngt",	one(0xF09D),		one(0xF1FF),		"IdBc"},
! {"fbnle",	one(0xF09A),		one(0xF1FF),		"IdBc"},
! {"fbnlt",	one(0xF09B),		one(0xF1FF),		"IdBc"},
! {"fboge",	one(0xF083),		one(0xF1FF),		"IdBc"},
! {"fbogl",	one(0xF086),		one(0xF1FF),		"IdBc"},
! {"fbogt",	one(0xF082),		one(0xF1FF),		"IdBc"},
! {"fbole",	one(0xF085),		one(0xF1FF),		"IdBc"},
! {"fbolt",	one(0xF084),		one(0xF1FF),		"IdBc"},
! {"fbor",	one(0xF087),		one(0xF1FF),		"IdBc"},
! {"fbseq",	one(0xF091),		one(0xF1FF),		"IdBc"},
! {"fbsf",	one(0xF090),		one(0xF1FF),		"IdBc"},
! {"fbsne",	one(0xF09E),		one(0xF1FF),		"IdBc"},
! {"fbst",	one(0xF09F),		one(0xF1FF),		"IdBc"},
! {"fbt",		one(0xF08F),		one(0xF1FF),		"IdBc"},
! {"fbueq",	one(0xF089),		one(0xF1FF),		"IdBc"},
! {"fbuge",	one(0xF08B),		one(0xF1FF),		"IdBc"},
! {"fbugt",	one(0xF08A),		one(0xF1FF),		"IdBc"},
! {"fbule",	one(0xF08D),		one(0xF1FF),		"IdBc"},
! {"fbult",	one(0xF08C),		one(0xF1FF),		"IdBc"},
! {"fbun",	one(0xF088),		one(0xF1FF),		"IdBc"},
  
  {"fcmpb",	two(0xF000, 0x5838),	two(0xF1C0, 0xFC7F),	"Ii;bF7"},
  {"fcmpd",	two(0xF000, 0x5438),	two(0xF1C0, 0xFC7F),	"Ii;FF7"},
--- 655,692 ----
  {"fatanhx",	two(0xF000, 0x480D),	two(0xF1C0, 0xFC7F),	"Ii;xF7"},
  {"fatanhx",	two(0xF000, 0x000D),	two(0xF1C0, 0xE07F),	"IiFt"},
  
! {"fbeq",	one(0xF081),		one(0xF1BF),		"IdBc"},
! {"fbf",		one(0xF080),		one(0xF1BF),		"IdBc"},
! {"fbge",	one(0xF093),		one(0xF1BF),		"IdBc"},
! {"fbgl",	one(0xF096),		one(0xF1BF),		"IdBc"},
! {"fbgle",	one(0xF097),		one(0xF1BF),		"IdBc"},
! {"fbgt",	one(0xF092),		one(0xF1BF),		"IdBc"},
! {"fble",	one(0xF095),		one(0xF1BF),		"IdBc"},
! {"fblt",	one(0xF094),		one(0xF1BF),		"IdBc"},
! {"fbne",	one(0xF08E),		one(0xF1BF),		"IdBc"},
! {"fbnge",	one(0xF09C),		one(0xF1BF),		"IdBc"},
! {"fbngl",	one(0xF099),		one(0xF1BF),		"IdBc"},
! {"fbngle",	one(0xF098),		one(0xF1BF),		"IdBc"},
! {"fbngt",	one(0xF09D),		one(0xF1BF),		"IdBc"},
! {"fbnle",	one(0xF09A),		one(0xF1BF),		"IdBc"},
! {"fbnlt",	one(0xF09B),		one(0xF1BF),		"IdBc"},
! {"fboge",	one(0xF083),		one(0xF1BF),		"IdBc"},
! {"fbogl",	one(0xF086),		one(0xF1BF),		"IdBc"},
! {"fbogt",	one(0xF082),		one(0xF1BF),		"IdBc"},
! {"fbole",	one(0xF085),		one(0xF1BF),		"IdBc"},
! {"fbolt",	one(0xF084),		one(0xF1BF),		"IdBc"},
! {"fbor",	one(0xF087),		one(0xF1BF),		"IdBc"},
! {"fbseq",	one(0xF091),		one(0xF1BF),		"IdBc"},
! {"fbsf",	one(0xF090),		one(0xF1BF),		"IdBc"},
! {"fbsne",	one(0xF09E),		one(0xF1BF),		"IdBc"},
! {"fbst",	one(0xF09F),		one(0xF1BF),		"IdBc"},
! {"fbt",		one(0xF08F),		one(0xF1BF),		"IdBc"},
! {"fbueq",	one(0xF089),		one(0xF1BF),		"IdBc"},
! {"fbuge",	one(0xF08B),		one(0xF1BF),		"IdBc"},
! {"fbugt",	one(0xF08A),		one(0xF1BF),		"IdBc"},
! {"fbule",	one(0xF08D),		one(0xF1BF),		"IdBc"},
! {"fbult",	one(0xF08C),		one(0xF1BF),		"IdBc"},
! {"fbun",	one(0xF088),		one(0xF1BF),		"IdBc"},
  
  {"fcmpb",	two(0xF000, 0x5838),	two(0xF1C0, 0xFC7F),	"Ii;bF7"},
  {"fcmpd",	two(0xF000, 0x5438),	two(0xF1C0, 0xFC7F),	"Ii;FF7"},
***************
*** 905,915 ****
  {"fmovemx",	two(0xF000, 0xF000),	two(0xF1C0, 0xFF00),	"Id#3&s"},		/* fmovem.x to control,	static and dynamic: */
  {"fmovemx",	two(0xF000, 0xF800),	two(0xF1C0, 0xFF8F),	"IiDk&s"},		/* fmovem.x to control,	static and dynamic: */
  
! {"fmovemx",	two(0xF018, 0xD000),	two(0xF1F8, 0xFF00),	"Id#3+s"},		/* fmovem.x from autoincrement,	static and dynamic: */
! {"fmovemx",	two(0xF018, 0xD800),	two(0xF1F8, 0xFF8F),	"IiDk+s"},		/* fmovem.x from autoincrement,	static and dynamic: */
    
! {"fmovemx",	two(0xF000, 0xD000),	two(0xF1C0, 0xFF00),	"Id#3&s"},		/* fmovem.x from control,	static and dynamic: */
! {"fmovemx",	two(0xF000, 0xD800),	two(0xF1C0, 0xFF8F),	"IiDk&s"},		/* fmovem.x from control,	static and dynamic: */
  
  /* fmoveml and fmovel are the same instruction.   This may cause some
     confusion in the assembler. */
--- 905,915 ----
  {"fmovemx",	two(0xF000, 0xF000),	two(0xF1C0, 0xFF00),	"Id#3&s"},		/* fmovem.x to control,	static and dynamic: */
  {"fmovemx",	two(0xF000, 0xF800),	two(0xF1C0, 0xFF8F),	"IiDk&s"},		/* fmovem.x to control,	static and dynamic: */
  
! {"fmovemx",	two(0xF018, 0xD000),	two(0xF1F8, 0xFF00),	"Id+s#3"},		/* fmovem.x from autoincrement,	static and dynamic: */
! {"fmovemx",	two(0xF018, 0xD800),	two(0xF1F8, 0xFF8F),	"Ii+sDk"},		/* fmovem.x from autoincrement,	static and dynamic: */
    
! {"fmovemx",	two(0xF000, 0xD000),	two(0xF1C0, 0xFF00),	"Id&s#3"},		/* fmovem.x from control,	static and dynamic: */
! {"fmovemx",	two(0xF000, 0xD800),	two(0xF1C0, 0xFF8F),	"Ii&sDk"},		/* fmovem.x from control,	static and dynamic: */
  
  /* fmoveml and fmovel are the same instruction.   This may cause some
     confusion in the assembler. */
***************
*** 935,940 ****
--- 935,942 ----
  {"fnegx",	two(0xF000, 0x001A),	two(0xF1C0, 0xE07F),	"IiF8F7"},
  {"fnegx",	two(0xF000, 0x481A),	two(0xF1C0, 0xFC7F),	"Ii;xF7"},
  {"fnegx",	two(0xF000, 0x001A),	two(0xF1C0, 0xE07F),	"IiFt"},
+ 
+ {"fnop",	two(0xF280, 0x0000),	two(0xFFFF, 0xFFFF),	"Ii"},
  
  {"fremb",	two(0xF000, 0x5825),	two(0xF1C0, 0xFC7F),	"Ii;bF7"},
  {"fremd",	two(0xF000, 0x5425),	two(0xF1C0, 0xFC7F),	"Ii;FF7"},