🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: gnu.gdb.bug
Article #615

GDB 2.7 mc68881 disassembler bugs

#615
From: Mike Hibler
Date: Thu, 27 Oct 1988 18:46
127 lines
6784 bytes
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"},
Technical Details
Message-ID: <8810271846.AA00362@jaguar.utah.edu>
Path: arc1-ca.pugleaf.net!utzoo!utgpu!water!watmath!uunet!tut.cis.ohio-state.edu!CS.UTAH.EDU!mike%jaguar

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!utgpu!water!watmath!uunet!tut.cis.ohio-state.edu!CS.UTAH.EDU!mike%jaguar
From: mike%jaguar@CS.UTAH.EDU (Mike Hibler)
Newsgroups: gnu.gdb.bug
Subject: GDB 2.7 mc68881 disassembler bugs
Message-ID: <8810271846.AA00362@jaguar.utah.edu>
Date: 27 Oct 88 18:46:41 GMT
Sender: daemon@tut.cis.ohio-state.edu
Distribution: gnu
Organization: GNUs Not Usenet
Lines: 127