Re-merged m68k support for gas.
authorK. Richard Pixley <rich@cygnus>
Wed, 24 Jul 1991 23:44:07 +0000 (23:44 +0000)
committerK. Richard Pixley <rich@cygnus>
Wed, 24 Jul 1991 23:44:07 +0000 (23:44 +0000)
include/m68k-opcode.h

index 24dfb5b70defc7e5c5e221fe2012e68b36854173..47ace901742783eaf4b06f8f54d98b00d66957d1 100755 (executable)
@@ -17,25 +17,7 @@ You should have received a copy of the GNU General Public License
 along with GDB or GAS; see the file COPYING.  If not, write to
 the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
    
-/*
-$Id$
-$Log$
-Revision 1.1  1991/05/19 00:19:41  rich
-Initial revision
-
- * Revision 1.1.1.1  1991/03/21  21:26:44  gumby
- * Back from Intel with Steve
- *
- * Revision 1.1  1991/03/21  21:26:43  gumby
- * Initial revision
- *
- * Revision 1.1  1991/03/13  00:33:57  chrisb
- * Initial revision
- *
- * Revision 1.1  1991/02/22  16:48:06  sac
- * Initial revision
- *
-*/
+
 struct m68k_opcode
 {
   char *name;
@@ -178,10 +160,13 @@ struct m68k_opcode
    7  second word, shifted 7
    8  second word, shifted 10
    D  store in both place 1 and place 3; for divul and divsl.
+   B  first word, low byte, for branch displacements
+   W  second word (entire), for branch displacements
+   L  second and third words (entire), for branch displacements
    b  second word, low byte
-   w  second word (entire)
+   w  second word (entire) [variable word/long branch offset for dbra]
    l  second and third word (entire)
-   g  branch offset for bra and similar instructions.
+   g  variable branch offset for bra and similar instructions.
       The place to store depends on the magnitude of offset.
    t  store in both place 7 and place 8; for floating point operations
    c  branch offset for cpBcc operations.
@@ -289,20 +274,64 @@ struct m68k_opcode m68k_opcodes[] =
 {"asrw",       one(0160140),           one(0170770),           "DdDs"},
 {"asrw",       one(0160300),           one(0177700),           "~s"},  /* Shift memory */
 
-{"bhi",                one(0061000),           one(0177400),           "Bg"},
-{"bls",                one(0061400),           one(0177400),           "Bg"},
-{"bcc",                one(0062000),           one(0177400),           "Bg"},
-{"bcs",                one(0062400),           one(0177400),           "Bg"},
-{"bne",                one(0063000),           one(0177400),           "Bg"},
-{"beq",                one(0063400),           one(0177400),           "Bg"},
-{"bvc",                one(0064000),           one(0177400),           "Bg"},
-{"bvs",                one(0064400),           one(0177400),           "Bg"},
-{"bpl",                one(0065000),           one(0177400),           "Bg"},
-{"bmi",                one(0065400),           one(0177400),           "Bg"},
-{"bge",                one(0066000),           one(0177400),           "Bg"},
-{"blt",                one(0066400),           one(0177400),           "Bg"},
-{"bgt",                one(0067000),           one(0177400),           "Bg"},
-{"ble",                one(0067400),           one(0177400),           "Bg"},
+/* Fixed-size branches with 16-bit offsets */
+
+{"bhi",                one(0061000),           one(0177777),           "BW"},
+{"bls",                one(0061400),           one(0177777),           "BW"},
+{"bcc",                one(0062000),           one(0177777),           "BW"},
+{"bcs",                one(0062400),           one(0177777),           "BW"},
+{"bne",                one(0063000),           one(0177777),           "BW"},
+{"beq",                one(0063400),           one(0177777),           "BW"},
+{"bvc",                one(0064000),           one(0177777),           "BW"},
+{"bvs",                one(0064400),           one(0177777),           "BW"},
+{"bpl",                one(0065000),           one(0177777),           "BW"},
+{"bmi",                one(0065400),           one(0177777),           "BW"},
+{"bge",                one(0066000),           one(0177777),           "BW"},
+{"blt",                one(0066400),           one(0177777),           "BW"},
+{"bgt",                one(0067000),           one(0177777),           "BW"},
+{"ble",                one(0067400),           one(0177777),           "BW"},
+{"bra",                one(0060000),           one(0177777),           "BW"},
+{"bsr",                one(0060400),           one(0177777),           "BW"},
+
+/* Fixed-size branches with short (byte) offsets */
+
+{"bhis",       one(0061000),           one(0177400),           "BB"},
+{"blss",       one(0061400),           one(0177400),           "BB"},
+{"bccs",       one(0062000),           one(0177400),           "BB"},
+{"bcss",       one(0062400),           one(0177400),           "BB"},
+{"bnes",       one(0063000),           one(0177400),           "BB"},
+{"beqs",       one(0063400),           one(0177400),           "BB"},
+{"bvcs",       one(0064000),           one(0177400),           "BB"},
+{"bvss",       one(0064400),           one(0177400),           "BB"},
+{"bpls",       one(0065000),           one(0177400),           "BB"},
+{"bmis",       one(0065400),           one(0177400),           "BB"},
+{"bges",       one(0066000),           one(0177400),           "BB"},
+{"blts",       one(0066400),           one(0177400),           "BB"},
+{"bgts",       one(0067000),           one(0177400),           "BB"},
+{"bles",       one(0067400),           one(0177400),           "BB"},
+{"bras",       one(0060000),           one(0177400),           "BB"},
+{"bsrs",       one(0060400),           one(0177400),           "BB"},
+
+/* Fixed-size branches with long (32-bit) offsets */
+
+{"bhil",       one(0061377),           one(0177777),           "BL"},
+{"blsl",       one(0061777),           one(0177777),           "BL"},
+{"bccl",       one(0062377),           one(0177777),           "BL"},
+{"bcsl",       one(0062777),           one(0177777),           "BL"},
+{"bnel",       one(0063377),           one(0177777),           "BL"},
+{"beql",       one(0063777),           one(0177777),           "BL"},
+{"bvcl",       one(0064377),           one(0177777),           "BL"},
+{"bvsl",       one(0064777),           one(0177777),           "BL"},
+{"bpll",       one(0065377),           one(0177777),           "BL"},
+{"bmil",       one(0065777),           one(0177777),           "BL"},
+{"bgel",       one(0066377),           one(0177777),           "BL"},
+{"bltl",       one(0066777),           one(0177777),           "BL"},
+{"bgtl",       one(0067377),           one(0177777),           "BL"},
+{"blel",       one(0067777),           one(0177777),           "BL"},
+{"bral",       one(0060377),           one(0177777),           "BL"},
+{"bsrl",       one(0060777),           one(0177777),           "BL"},
+
+/* We now return you to our regularly scheduled instruction set */
 
 {"bchg",       one(0000500),           one(0170700),           "Dd$s"},
 {"bchg",       one(0004100),           one(0177700),           "#b$s"},
@@ -322,10 +351,6 @@ struct m68k_opcode m68k_opcodes[] =
 {"btst",       one(0004000),           one(0177700),           "#b@s"},
 
 {"bkpt",       one(0044110),           one(0177770),           "Qs"},
-{"bra",                one(0060000),           one(0177400),           "Bg"},
-{"bras",       one(0060000),           one(0177400),           "Bw"},
-{"bsr",                one(0060400),           one(0177400),           "Bg"},
-{"bsrs",       one(0060400),           one(0177400),           "Bw"},
 
 {"callm",      one(0003300),           one(0177700),           "#b!s"},
 {"cas2l",      two(0007374, 0),        two(0177777, 0107070),  "D3D6D2D5R1R4"}, /* JF FOO this is really a 3 word ins */
@@ -751,38 +776,75 @@ struct m68k_opcode m68k_opcodes[] =
 {"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"},
+/* Fixed-size Float branches */
+
+{"fbeq",       one(0xF081),            one(0xF1BF),            "IdBW"},
+{"fbf",                one(0xF080),            one(0xF1BF),            "IdBW"},
+{"fbge",       one(0xF093),            one(0xF1BF),            "IdBW"},
+{"fbgl",       one(0xF096),            one(0xF1BF),            "IdBW"},
+{"fbgle",      one(0xF097),            one(0xF1BF),            "IdBW"},
+{"fbgt",       one(0xF092),            one(0xF1BF),            "IdBW"},
+{"fble",       one(0xF095),            one(0xF1BF),            "IdBW"},
+{"fblt",       one(0xF094),            one(0xF1BF),            "IdBW"},
+{"fbne",       one(0xF08E),            one(0xF1BF),            "IdBW"},
+{"fbnge",      one(0xF09C),            one(0xF1BF),            "IdBW"},
+{"fbngl",      one(0xF099),            one(0xF1BF),            "IdBW"},
+{"fbngle",     one(0xF098),            one(0xF1BF),            "IdBW"},
+{"fbngt",      one(0xF09D),            one(0xF1BF),            "IdBW"},
+{"fbnle",      one(0xF09A),            one(0xF1BF),            "IdBW"},
+{"fbnlt",      one(0xF09B),            one(0xF1BF),            "IdBW"},
+{"fboge",      one(0xF083),            one(0xF1BF),            "IdBW"},
+{"fbogl",      one(0xF086),            one(0xF1BF),            "IdBW"},
+{"fbogt",      one(0xF082),            one(0xF1BF),            "IdBW"},
+{"fbole",      one(0xF085),            one(0xF1BF),            "IdBW"},
+{"fbolt",      one(0xF084),            one(0xF1BF),            "IdBW"},
+{"fbor",       one(0xF087),            one(0xF1BF),            "IdBW"},
+{"fbseq",      one(0xF091),            one(0xF1BF),            "IdBW"},
+{"fbsf",       one(0xF090),            one(0xF1BF),            "IdBW"},
+{"fbsne",      one(0xF09E),            one(0xF1BF),            "IdBW"},
+{"fbst",       one(0xF09F),            one(0xF1BF),            "IdBW"},
+{"fbt",                one(0xF08F),            one(0xF1BF),            "IdBW"},
+{"fbueq",      one(0xF089),            one(0xF1BF),            "IdBW"},
+{"fbuge",      one(0xF08B),            one(0xF1BF),            "IdBW"},
+{"fbugt",      one(0xF08A),            one(0xF1BF),            "IdBW"},
+{"fbule",      one(0xF08D),            one(0xF1BF),            "IdBW"},
+{"fbult",      one(0xF08C),            one(0xF1BF),            "IdBW"},
+{"fbun",       one(0xF088),            one(0xF1BF),            "IdBW"},
+
+/* Float branches -- long (32-bit) displacements */
+
+{"fbeql",      one(0xF081),            one(0xF1BF),            "IdBC"},
+{"fbfl",       one(0xF080),            one(0xF1BF),            "IdBC"},
+{"fbgel",      one(0xF093),            one(0xF1BF),            "IdBC"},
+{"fbgll",      one(0xF096),            one(0xF1BF),            "IdBC"},
+{"fbglel",     one(0xF097),            one(0xF1BF),            "IdBC"},
+{"fbgtl",      one(0xF092),            one(0xF1BF),            "IdBC"},
+{"fblel",      one(0xF095),            one(0xF1BF),            "IdBC"},
+{"fbltl",      one(0xF094),            one(0xF1BF),            "IdBC"},
+{"fbnel",      one(0xF08E),            one(0xF1BF),            "IdBC"},
+{"fbngel",     one(0xF09C),            one(0xF1BF),            "IdBC"},
+{"fbngll",     one(0xF099),            one(0xF1BF),            "IdBC"},
+{"fbnglel",    one(0xF098),            one(0xF1BF),            "IdBC"},
+{"fbngtl",     one(0xF09D),            one(0xF1BF),            "IdBC"},
+{"fbnlel",     one(0xF09A),            one(0xF1BF),            "IdBC"},
+{"fbnltl",     one(0xF09B),            one(0xF1BF),            "IdBC"},
+{"fbogel",     one(0xF083),            one(0xF1BF),            "IdBC"},
+{"fbogll",     one(0xF086),            one(0xF1BF),            "IdBC"},
+{"fbogtl",     one(0xF082),            one(0xF1BF),            "IdBC"},
+{"fbolel",     one(0xF085),            one(0xF1BF),            "IdBC"},
+{"fboltl",     one(0xF084),            one(0xF1BF),            "IdBC"},
+{"fborl",      one(0xF087),            one(0xF1BF),            "IdBC"},
+{"fbseql",     one(0xF091),            one(0xF1BF),            "IdBC"},
+{"fbsfl",      one(0xF090),            one(0xF1BF),            "IdBC"},
+{"fbsnel",     one(0xF09E),            one(0xF1BF),            "IdBC"},
+{"fbstl",      one(0xF09F),            one(0xF1BF),            "IdBC"},
+{"fbtl",       one(0xF08F),            one(0xF1BF),            "IdBC"},
+{"fbueql",     one(0xF089),            one(0xF1BF),            "IdBC"},
+{"fbugel",     one(0xF08B),            one(0xF1BF),            "IdBC"},
+{"fbugtl",     one(0xF08A),            one(0xF1BF),            "IdBC"},
+{"fbulel",     one(0xF08D),            one(0xF1BF),            "IdBC"},
+{"fbultl",     one(0xF08C),            one(0xF1BF),            "IdBC"},
+{"fbunl",      one(0xF088),            one(0xF1BF),            "IdBC"},
 
 {"fcmpb",      two(0xF000, 0x5838),    two(0xF1C0, 0xFC7F),    "Ii;bF7"},
 {"fcmpd",      two(0xF000, 0x5438),    two(0xF1C0, 0xFC7F),    "Ii;FF7"},
@@ -1087,18 +1149,6 @@ struct m68k_opcode m68k_opcodes[] =
 {"fsave",      one(0xF100),            one(0xF1C0),            "Id&s"},
 {"fsave",      one(0xF120),            one(0xF1F8),            "Id-s"},
 
-{"fsincosb",   two(0xF000, 0x5830),    two(0xF1C0, 0xFC78),    "Ii;bF7FC"},
-{"fsincosd",   two(0xF000, 0x5430),    two(0xF1C0, 0xFC78),    "Ii;FF7FC"},
-{"fsincosl",   two(0xF000, 0x4030),    two(0xF1C0, 0xFC78),    "Ii;lF7FC"},
-{"fsincosp",   two(0xF000, 0x4C30),    two(0xF1C0, 0xFC78),    "Ii;pF7FC"},
-{"fsincoss",   two(0xF000, 0x4430),    two(0xF1C0, 0xFC78),    "Ii;fF7FC"},
-{"fsincosw",   two(0xF000, 0x5030),    two(0xF1C0, 0xFC78),    "Ii;wF7FC"},
-{"fsincosx",   two(0xF000, 0x0030),    two(0xF1C0, 0xE078),    "IiF8F7FC"},
-{"fsincosx",   two(0xF000, 0x4830),    two(0xF1C0, 0xFC78),    "Ii;xF7FC"},
-
-
-#ifdef comment
-/* gas's version had these. */
 {"fsincosb",   two(0xF000, 0x5830),    two(0xF1C0, 0xFC78),    "Ii;bF3F7"},
 {"fsincosd",   two(0xF000, 0x5430),    two(0xF1C0, 0xFC78),    "Ii;FF3F7"},
 {"fsincosl",   two(0xF000, 0x4030),    two(0xF1C0, 0xFC78),    "Ii;lF3F7"},
@@ -1107,7 +1157,6 @@ struct m68k_opcode m68k_opcodes[] =
 {"fsincosw",   two(0xF000, 0x5030),    two(0xF1C0, 0xFC78),    "Ii;wF3F7"},
 {"fsincosx",   two(0xF000, 0x0030),    two(0xF1C0, 0xE078),    "IiF8F3F7"},
 {"fsincosx",   two(0xF000, 0x4830),    two(0xF1C0, 0xFC78),    "Ii;xF3F7"},
-#endif /* comment */
 
 {"fscaleb",    two(0xF000, 0x5826),    two(0xF1C0, 0xFC7F),    "Ii;bF7"},
 {"fscaled",    two(0xF000, 0x5426),    two(0xF1C0, 0xFC7F),    "Ii;FF7"},
@@ -1363,6 +1412,7 @@ struct m68k_opcode m68k_opcodes[] =
 {"ftwotoxx",   two(0xF000, 0x4811),    two(0xF1C0, 0xFC7F),    "Ii;xF7"},
 {"ftwotoxx",   two(0xF000, 0x0011),    two(0xF1C0, 0xE07F),    "IiFt"},
 
+/* Variable-sized float branches */
 
 {"fjeq",       one(0xF081),            one(0xF1FF),            "IdBc"},
 {"fjf",                one(0xF080),            one(0xF1FF),            "IdBc"},
@@ -1397,24 +1447,7 @@ struct m68k_opcode m68k_opcodes[] =
 {"fjult",      one(0xF08C),            one(0xF1FF),            "IdBc"},
 {"fjun",       one(0xF088),            one(0xF1FF),            "IdBc"},
 
-/* The assembler will ignore attempts to force a short offset */
-
-{"bhis",       one(0061000),           one(0177400),           "Bg"},
-{"blss",       one(0061400),           one(0177400),           "Bg"},
-{"bccs",       one(0062000),           one(0177400),           "Bg"},
-{"bcss",       one(0062400),           one(0177400),           "Bg"},
-{"bnes",       one(0063000),           one(0177400),           "Bg"},
-{"beqs",       one(0063400),           one(0177400),           "Bg"},
-{"bvcs",       one(0064000),           one(0177400),           "Bg"},
-{"bvss",       one(0064400),           one(0177400),           "Bg"},
-{"bpls",       one(0065000),           one(0177400),           "Bg"},
-{"bmis",       one(0065400),           one(0177400),           "Bg"},
-{"bges",       one(0066000),           one(0177400),           "Bg"},
-{"blts",       one(0066400),           one(0177400),           "Bg"},
-{"bgts",       one(0067000),           one(0177400),           "Bg"},
-{"bles",       one(0067400),           one(0177400),           "Bg"},
-
-/* Alternate mnemonics for SUN */
+/* Variable-sized branches */
 
 {"jbsr",       one(0060400),           one(0177400),           "Bg"},
 {"jbsr",       one(0047200),           one(0177700),           "!s"},
@@ -1436,25 +1469,6 @@ struct m68k_opcode m68k_opcodes[] =
 {"jgt",                one(0067000),           one(0177400),           "Bg"},
 {"jle",                one(0067400),           one(0177400),           "Bg"},
 
-/* Short offsets are ignored */
-
-{"jbsrs",      one(0060400),           one(0177400),           "Bg"},
-{"jras",       one(0060000),           one(0177400),           "Bg"},
-{"jhis",       one(0061000),           one(0177400),           "Bg"},
-{"jlss",       one(0061400),           one(0177400),           "Bg"},
-{"jccs",       one(0062000),           one(0177400),           "Bg"},
-{"jcss",       one(0062400),           one(0177400),           "Bg"},
-{"jnes",       one(0063000),           one(0177400),           "Bg"},
-{"jeqs",       one(0063400),           one(0177400),           "Bg"},
-{"jvcs",       one(0064000),           one(0177400),           "Bg"},
-{"jvss",       one(0064400),           one(0177400),           "Bg"},
-{"jpls",       one(0065000),           one(0177400),           "Bg"},
-{"jmis",       one(0065400),           one(0177400),           "Bg"},
-{"jges",       one(0066000),           one(0177400),           "Bg"},
-{"jlts",       one(0066400),           one(0177400),           "Bg"},
-{"jgts",       one(0067000),           one(0177400),           "Bg"},
-{"jles",       one(0067400),           one(0177400),           "Bg"},
-
 {"movql",      one(0070000),           one(0170400),           "MsDd"},
 {"moveql",     one(0070000),           one(0170400),           "MsDd"},
 {"moval",      one(0020100),           one(0170700),           "*lAd"},
@@ -1568,13 +1582,7 @@ struct m68k_opcode m68k_opcodes[] =
 {"pflush",     two(0xf000, 0x3800),    two(0xffc0, 0xfe1e),    "f3T9&s" },
 
 {"pflushs",    two(0xf000, 0x3410),    two(0xfff8, 0xfe10),    "T3T9" },
-{"pflushs",    two(0xf000, 0x3c00),    two(0xfff8, 0xfe00),    "T3T9&s" },
-
-#ifdef comment
- /* gas's version had this instead. */
 {"pflushs",    two(0xf000, 0x3c10),    two(0xfff8, 0xfe00),    "T3T9&s" },
-#endif /* comment */
-
 {"pflushs",    two(0xf000, 0x3408),    two(0xfff8, 0xfe18),    "D3T9" },
 {"pflushs",    two(0xf000, 0x3c08),    two(0xfff8, 0xfe18),    "D3T9&s" },
 {"pflushs",    two(0xf000, 0x3400),    two(0xfff8, 0xfe1e),    "f3T9" },