import gdb-1999-06-21 snapshot
[external/binutils.git] / opcodes / i960-dis.c
index 0612d04..c0bd848 100644 (file)
@@ -1,5 +1,5 @@
 /* Disassemble i80960 instructions.
-   Copyright (C) 1990, 1991 Free Software Foundation, Inc.
+   Copyright (C) 1990, 91, 93, 94, 95, 96, 1998 Free Software Foundation, Inc.
 
 This program is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
@@ -12,8 +12,9 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License
-along with this program; see the file COPYING.  If not, write to
-the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+along with this program; see the file COPYING.  If not, write to the
+Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+02111-1307, USA.  */
 
 #include "dis-asm.h"
 
@@ -105,18 +106,18 @@ print_insn_i960 (memaddr, info_arg)
 
 struct tabent {
   char *name;
-  signed char numops;
+  short numops;
 };
 
 struct sparse_tabent {
   int opcode;
   char *name;
-  signed char numops;
+  short numops;
 };
 
 static int
 pinsn( memaddr, word1, word2 )
-    unsigned long memaddr;
+    bfd_vma memaddr;
     unsigned long word1, word2;
 {
        int instr_len;
@@ -159,43 +160,43 @@ pinsn( memaddr, word1, word2 )
 /****************************************/
 static void
 ctrl( memaddr, word1, word2 )
-    unsigned long memaddr;
+    bfd_vma memaddr;
     unsigned long word1, word2;
 {
        int i;
        static const struct tabent ctrl_tab[] = {
-               NULL,           0,      /* 0x00 */
-               NULL,           0,      /* 0x01 */
-               NULL,           0,      /* 0x02 */
-               NULL,           0,      /* 0x03 */
-               NULL,           0,      /* 0x04 */
-               NULL,           0,      /* 0x05 */
-               NULL,           0,      /* 0x06 */
-               NULL,           0,      /* 0x07 */
-               "b",            1,      /* 0x08 */
-               "call",         1,      /* 0x09 */
-               "ret",          0,      /* 0x0a */
-               "bal",          1,      /* 0x0b */
-               NULL,           0,      /* 0x0c */
-               NULL,           0,      /* 0x0d */
-               NULL,           0,      /* 0x0e */
-               NULL,           0,      /* 0x0f */
-               "bno",          1,      /* 0x10 */
-               "bg",           1,      /* 0x11 */
-               "be",           1,      /* 0x12 */
-               "bge",          1,      /* 0x13 */
-               "bl",           1,      /* 0x14 */
-               "bne",          1,      /* 0x15 */
-               "ble",          1,      /* 0x16 */
-               "bo",           1,      /* 0x17 */
-               "faultno",      0,      /* 0x18 */
-               "faultg",       0,      /* 0x19 */
-               "faulte",       0,      /* 0x1a */
-               "faultge",      0,      /* 0x1b */
-               "faultl",       0,      /* 0x1c */
-               "faultne",      0,      /* 0x1d */
-               "faultle",      0,      /* 0x1e */
-               "faulto",       0,      /* 0x1f */
+         { NULL,               0, },   /* 0x00 */
+         { NULL,               0, },   /* 0x01 */
+         { NULL,               0, },   /* 0x02 */
+         { NULL,               0, },   /* 0x03 */
+         { NULL,               0, },   /* 0x04 */
+         { NULL,               0, },   /* 0x05 */
+         { NULL,               0, },   /* 0x06 */
+         { NULL,               0, },   /* 0x07 */
+         { "b",                1, },   /* 0x08 */
+         { "call",             1, },   /* 0x09 */
+         { "ret",              0, },   /* 0x0a */
+         { "bal",              1, },   /* 0x0b */
+         { NULL,               0, },   /* 0x0c */
+         { NULL,               0, },   /* 0x0d */
+         { NULL,               0, },   /* 0x0e */
+         { NULL,               0, },   /* 0x0f */
+         { "bno",              1, },   /* 0x10 */
+         { "bg",               1, },   /* 0x11 */
+         { "be",               1, },   /* 0x12 */
+         { "bge",              1, },   /* 0x13 */
+         { "bl",               1, },   /* 0x14 */
+         { "bne",              1, },   /* 0x15 */
+         { "ble",              1, },   /* 0x16 */
+         { "bo",               1, },   /* 0x17 */
+         { "faultno",          0, },   /* 0x18 */
+         { "faultg",           0, },   /* 0x19 */
+         { "faulte",           0, },   /* 0x1a */
+         { "faultge",          0, },   /* 0x1b */
+         { "faultl",           0, },   /* 0x1c */
+         { "faultne",          0, },   /* 0x1d */
+         { "faultle",          0, },   /* 0x1e */
+         { "faulto",           0, },   /* 0x1f */
        };
 
        i = (word1 >> 24) & 0xff;
@@ -225,7 +226,7 @@ ctrl( memaddr, word1, word2 )
 /****************************************/
 static void
 cobr( memaddr, word1, word2 )
-    unsigned long memaddr;
+    bfd_vma memaddr;
     unsigned long word1, word2;
 {
        int src1;
@@ -233,38 +234,38 @@ cobr( memaddr, word1, word2 )
        int i;
 
        static const struct tabent cobr_tab[] = {
-               "testno",       1,      /* 0x20 */
-               "testg",        1,      /* 0x21 */
-               "teste",        1,      /* 0x22 */
-               "testge",       1,      /* 0x23 */
-               "testl",        1,      /* 0x24 */
-               "testne",       1,      /* 0x25 */
-               "testle",       1,      /* 0x26 */
-               "testo",        1,      /* 0x27 */
-               NULL,           0,      /* 0x28 */
-               NULL,           0,      /* 0x29 */
-               NULL,           0,      /* 0x2a */
-               NULL,           0,      /* 0x2b */
-               NULL,           0,      /* 0x2c */
-               NULL,           0,      /* 0x2d */
-               NULL,           0,      /* 0x2e */
-               NULL,           0,      /* 0x2f */
-               "bbc",          3,      /* 0x30 */
-               "cmpobg",       3,      /* 0x31 */
-               "cmpobe",       3,      /* 0x32 */
-               "cmpobge",      3,      /* 0x33 */
-               "cmpobl",       3,      /* 0x34 */
-               "cmpobne",      3,      /* 0x35 */
-               "cmpoble",      3,      /* 0x36 */
-               "bbs",          3,      /* 0x37 */
-               "cmpibno",      3,      /* 0x38 */
-               "cmpibg",       3,      /* 0x39 */
-               "cmpibe",       3,      /* 0x3a */
-               "cmpibge",      3,      /* 0x3b */
-               "cmpibl",       3,      /* 0x3c */
-               "cmpibne",      3,      /* 0x3d */
-               "cmpible",      3,      /* 0x3e */
-               "cmpibo",       3,      /* 0x3f */
+         { "testno",   1, },   /* 0x20 */
+         { "testg",    1, },   /* 0x21 */
+         { "teste",    1, },   /* 0x22 */
+         { "testge",   1, },   /* 0x23 */
+         { "testl",    1, },   /* 0x24 */
+         { "testne",   1, },   /* 0x25 */
+         { "testle",   1, },   /* 0x26 */
+         { "testo",    1, },   /* 0x27 */
+         { NULL,       0, },   /* 0x28 */
+         { NULL,       0, },   /* 0x29 */
+         { NULL,       0, },   /* 0x2a */
+         { NULL,       0, },   /* 0x2b */
+         { NULL,       0, },   /* 0x2c */
+         { NULL,       0, },   /* 0x2d */
+         { NULL,       0, },   /* 0x2e */
+         { NULL,       0, },   /* 0x2f */
+         { "bbc",      3, },   /* 0x30 */
+         { "cmpobg",   3, },   /* 0x31 */
+         { "cmpobe",   3, },   /* 0x32 */
+         { "cmpobge",  3, },   /* 0x33 */
+         { "cmpobl",   3, },   /* 0x34 */
+         { "cmpobne",  3, },   /* 0x35 */
+         { "cmpoble",  3, },   /* 0x36 */
+         { "bbs",      3, },   /* 0x37 */
+         { "cmpibno",  3, },   /* 0x38 */
+         { "cmpibg",   3, },   /* 0x39 */
+         { "cmpibe",   3, },   /* 0x3a */
+         { "cmpibge",  3, },   /* 0x3b */
+         { "cmpibl",   3, },   /* 0x3c */
+         { "cmpibne",  3, },   /* 0x3d */
+         { "cmpible",  3, },   /* 0x3e */
+         { "cmpibo",   3, },   /* 0x3f */
        };
 
        i = ((word1 >> 24) & 0xff) - 0x20;
@@ -310,7 +311,7 @@ cobr( memaddr, word1, word2 )
 /****************************************/
 static int                             /* returns instruction length: 4 or 8 */
 mem( memaddr, word1, word2, noprint )
-    unsigned long memaddr;
+    bfd_vma memaddr;
     unsigned long word1, word2;
     int noprint;               /* If TRUE, return instruction length, but
                                 * don't output any text.
@@ -339,27 +340,28 @@ mem( memaddr, word1, word2, noprint )
 #define MEM_SIZ        ( * sizeof(struct tabent))
 
        static const struct sparse_tabent mem_init[] = {
-               0x80,   "ldob",  2,
-               0x82,   "stob", -2,
-               0x84,   "bx",    1,
-               0x85,   "balx",  2,
-               0x86,   "callx", 1,
-               0x88,   "ldos",  2,
-               0x8a,   "stos", -2,
-               0x8c,   "lda",   2,
-               0x90,   "ld",    2,
-               0x92,   "st",   -2,
-               0x98,   "ldl",   2,
-               0x9a,   "stl",  -2,
-               0xa0,   "ldt",   2,
-               0xa2,   "stt",  -2,
-               0xb0,   "ldq",   2,
-               0xb2,   "stq",  -2,
-               0xc0,   "ldib",  2,
-               0xc2,   "stib", -2,
-               0xc8,   "ldis",  2,
-               0xca,   "stis", -2,
-               0,      NULL,   0
+         { 0x80,       "ldob",  2 },
+         { 0x82,       "stob", -2 },
+         { 0x84,       "bx",    1 },
+         { 0x85,       "balx",  2 },
+         { 0x86,       "callx", 1 },
+         { 0x88,       "ldos",  2 },
+         { 0x8a,       "stos", -2 },
+         { 0x8c,       "lda",   2 },
+         { 0x90,       "ld",    2 },
+         { 0x92,       "st",   -2 },
+         { 0x98,       "ldl",   2 },
+         { 0x9a,       "stl",  -2 },
+         { 0xa0,       "ldt",   2 },
+         { 0xa2,       "stt",  -2 },
+         { 0xac,       "dcinva", 1 },
+         { 0xb0,       "ldq",   2 },
+         { 0xb2,       "stq",  -2 },
+         { 0xc0,       "ldib",  2 },
+         { 0xc2,       "stib", -2 },
+         { 0xc8,       "ldis",  2 },
+         { 0xca,       "stis", -2 },
+         { 0,          NULL,   0 }
        };
        static struct tabent mem_tab_buf[MEM_MAX - MEM_MIN + 1];
 
@@ -474,202 +476,200 @@ reg( word1 )
        static struct tabent *reg_tab;
        static const struct sparse_tabent reg_init[] = {
 #define REG_MIN        0x580
-               0x580,  "notbit",       3,
-               0x581,  "and",          3,
-               0x582,  "andnot",       3,
-               0x583,  "setbit",       3,
-               0x584,  "notand",       3,
-               0x586,  "xor",          3,
-               0x587,  "or",           3,
-               0x588,  "nor",          3,
-               0x589,  "xnor",         3,
-               0x58a,  "not",          -2,
-               0x58b,  "ornot",        3,
-               0x58c,  "clrbit",       3,
-               0x58d,  "notor",        3,
-               0x58e,  "nand",         3,
-               0x58f,  "alterbit",     3,
-               0x590,  "addo",         3,
-               0x591,  "addi",         3,
-               0x592,  "subo",         3,
-               0x593,  "subi",         3,
-               0x594,  "cmpob",        2, /* xl */
-               0x595,  "cmpib",        2, /* xl */
-               0x596,  "cmpos",        2, /* xl */
-               0x597,  "cmpis",        2, /* xl */
-               0x598,  "shro",         3,
-               0x59a,  "shrdi",        3,
-               0x59b,  "shri",         3,
-               0x59c,  "shlo",         3,
-               0x59d,  "rotate",       3,
-               0x59e,  "shli",         3,
-               0x5a0,  "cmpo",         2,
-               0x5a1,  "cmpi",         2,
-               0x5a2,  "concmpo",      2,
-               0x5a3,  "concmpi",      2,
-               0x5a4,  "cmpinco",      3,
-               0x5a5,  "cmpinci",      3,
-               0x5a6,  "cmpdeco",      3,
-               0x5a7,  "cmpdeci",      3,
-               0x5ac,  "scanbyte",     2,
-               0x5ad,  "bswap",        -2, /* xl */
-               0x5ae,  "chkbit",       2,
-               0x5b0,  "addc",         3,
-               0x5b2,  "subc",         3,
-               0x5b4,  "intdis",       0, /* xl */
-               0x5b5,  "inten",        0, /* xl */
-               0x5cc,  "mov",          -2,
-               0x5d8,  "eshro",        3,
-               0x5dc,  "movl",         -2,
-               0x5ec,  "movt",         -2,
-               0x5fc,  "movq",         -2,
-               0x600,  "synmov",       2,
-               0x601,  "synmovl",      2,
-               0x602,  "synmovq",      2,
-               0x603,  "cmpstr",       3,
-               0x604,  "movqstr",      3,
-               0x605,  "movstr",       3,
-               0x610,  "atmod",        3,
-               0x612,  "atadd",        3,
-               0x613,  "inspacc",      -2,
-               0x614,  "ldphy",        -2,
-               0x615,  "synld",        -2,
-               0x617,  "fill",         3,
-               0x630,  "sdma",         3,
-               0x631,  "udma",         0,
-               0x640,  "spanbit",      -2,
-               0x641,  "scanbit",      -2,
-               0x642,  "daddc",        3,
-               0x643,  "dsubc",        3,
-               0x644,  "dmovt",        -2,
-               0x645,  "modac",        3,
-               0x646,  "condrec",      -2,
-               0x650,  "modify",       3,
-               0x651,  "extract",      3,
-               0x654,  "modtc",        3,
-               0x655,  "modpc",        3,
-               0x656,  "receive",      -2,
-               0x658,  "intctl",       -2, /* xl */
-               0x659,  "sysctl",       3,
-               0x65b,  "icctl",        3, /* xl */
-               0x65c,  "dcctl",        3, /* xl */
-               0x65d,  "halt",         0, /* xl */
-               0x660,  "calls",        1,
-               0x662,  "send",         3,
-               0x663,  "sendserv",     1,
-               0x664,  "resumprcs",    1,
-               0x665,  "schedprcs",    1,
-               0x666,  "saveprcs",     0,
-               0x668,  "condwait",     1,
-               0x669,  "wait",         1,
-               0x66a,  "signal",       1,
-               0x66b,  "mark",         0,
-               0x66c,  "fmark",        0,
-               0x66d,  "flushreg",     0,
-               0x66f,  "syncf",        0,
-               0x670,  "emul",         3,
-               0x671,  "ediv",         3,
-               0x673,  "ldtime",       -1,
-               0x674,  "Fcvtir",       -2,
-               0x675,  "Fcvtilr",      -2,
-               0x676,  "Fscalerl",     3,
-               0x677,  "Fscaler",      3,
-               0x680,  "Fatanr",       3,
-               0x681,  "Flogepr",      3,
-               0x682,  "Flogr",        3,
-               0x683,  "Fremr",        3,
-               0x684,  "Fcmpor",       2,
-               0x685,  "Fcmpr",        2,
-               0x688,  "Fsqrtr",       -2,
-               0x689,  "Fexpr",        -2,
-               0x68a,  "Flogbnr",      -2,
-               0x68b,  "Froundr",      -2,
-               0x68c,  "Fsinr",        -2,
-               0x68d,  "Fcosr",        -2,
-               0x68e,  "Ftanr",        -2,
-               0x68f,  "Fclassr",      1,
-               0x690,  "Fatanrl",      3,
-               0x691,  "Flogeprl",     3,
-               0x692,  "Flogrl",       3,
-               0x693,  "Fremrl",       3,
-               0x694,  "Fcmporl",      2,
-               0x695,  "Fcmprl",       2,
-               0x698,  "Fsqrtrl",      -2,
-               0x699,  "Fexprl",       -2,
-               0x69a,  "Flogbnrl",     -2,
-               0x69b,  "Froundrl",     -2,
-               0x69c,  "Fsinrl",       -2,
-               0x69d,  "Fcosrl",       -2,
-               0x69e,  "Ftanrl",       -2,
-               0x69f,  "Fclassrl",     1,
-               0x6c0,  "Fcvtri",       -2,
-               0x6c1,  "Fcvtril",      -2,
-               0x6c2,  "Fcvtzri",      -2,
-               0x6c3,  "Fcvtzril",     -2,
-               0x6c9,  "Fmovr",        -2,
-               0x6d9,  "Fmovrl",       -2,
-               0x6e1,  "Fmovre",       -2,
-               0x6e2,  "Fcpysre",      3,
-               0x6e3,  "Fcpyrsre",     3,
-               0x701,  "mulo",         3,
-               0x708,  "remo",         3,
-               0x70b,  "divo",         3,
-               0x741,  "muli",         3,
-               0x748,  "remi",         3,
-               0x749,  "modi",         3,
-               0x74b,  "divi",         3,
-               0x780,  "addono",       3, /* xl */
-               0x781,  "addino",       3, /* xl */
-               0x782,  "subono",       3, /* xl */
-               0x783,  "subino",       3, /* xl */
-               0x784,  "selno",        3, /* xl */
-               0x78b,  "Fdivr",        3,
-               0x78c,  "Fmulr",        3,
-               0x78d,  "Fsubr",        3,
-               0x78f,  "Faddr",        3,
-               0x790,  "addog",        3, /* xl */
-               0x791,  "addig",        3, /* xl */
-               0x792,  "subog",        3, /* xl */
-               0x793,  "subig",        3, /* xl */
-               0x794,  "selg",         3, /* xl */
-               0x79b,  "Fdivrl",       3,
-               0x79c,  "Fmulrl",       3,
-               0x79d,  "Fsubrl",       3,
-               0x79f,  "Faddrl",       3,
-#define REG_MAX        0x79f
-               0x7a0,  "addoe",        3, /* xl */
-               0x7a1,  "addie",        3, /* xl */
-               0x7a2,  "suboe",        3, /* xl */
-               0x7a3,  "subie",        3, /* xl */
-               0x7a4,  "sele",         3, /* xl */
-               0x7b0,  "addoge",       3, /* xl */
-               0x7b1,  "addige",       3, /* xl */
-               0x7b2,  "suboge",       3, /* xl */
-               0x7b3,  "subige",       3, /* xl */
-               0x7b4,  "selge",        3, /* xl */
-               0x7c0,  "addol",        3, /* xl */
-               0x7c1,  "addil",        3, /* xl */
-               0x7c2,  "subol",        3, /* xl */
-               0x7c3,  "subil",        3, /* xl */
-               0x7c4,  "sell",         3, /* xl */
-               0x7d0,  "addone",       3, /* xl */
-               0x7d1,  "addine",       3, /* xl */
-               0x7d2,  "subone",       3, /* xl */
-               0x7d3,  "subine",       3, /* xl */
-               0x7d4,  "selne",        3, /* xl */
-               0x7e0,  "addole",       3, /* xl */
-               0x7e1,  "addile",       3, /* xl */
-               0x7e2,  "subole",       3, /* xl */
-               0x7e3,  "subile",       3, /* xl */
-               0x7e4,  "selle",        3, /* xl */
-               0x7f0,  "addoo",        3, /* xl */
-               0x7f1,  "addio",        3, /* xl */
-               0x7f2,  "suboo",        3, /* xl */
-               0x7f3,  "subio",        3, /* xl */
-               0x7f4,  "selo",         3, /* xl */
-#undef REG_MAX                         /* xl */
-#define REG_MAX 0x7f4                  /* xl */
-               0,      NULL,   0
+         { 0x580,      "notbit",       3 },
+         { 0x581,      "and",          3 },
+         { 0x582,      "andnot",       3 },
+         { 0x583,      "setbit",       3 },
+         { 0x584,      "notand",       3 },
+         { 0x586,      "xor",          3 },
+         { 0x587,      "or",           3 },
+         { 0x588,      "nor",          3 },
+         { 0x589,      "xnor",         3 },
+         { 0x58a,      "not",          -2 },
+         { 0x58b,      "ornot",        3 },
+         { 0x58c,      "clrbit",       3 },
+         { 0x58d,      "notor",        3 },
+         { 0x58e,      "nand",         3 },
+         { 0x58f,      "alterbit",     3 },
+         { 0x590,      "addo",         3 },
+         { 0x591,      "addi",         3 },
+         { 0x592,      "subo",         3 },
+         { 0x593,      "subi",         3 },
+         { 0x594,      "cmpob",        2 },
+         { 0x595,      "cmpib",        2 },
+         { 0x596,      "cmpos",        2 },
+         { 0x597,      "cmpis",        2 },
+         { 0x598,      "shro",         3 },
+         { 0x59a,      "shrdi",        3 },
+         { 0x59b,      "shri",         3 },
+         { 0x59c,      "shlo",         3 },
+         { 0x59d,      "rotate",       3 },
+         { 0x59e,      "shli",         3 },
+         { 0x5a0,      "cmpo",         2 },
+         { 0x5a1,      "cmpi",         2 },
+         { 0x5a2,      "concmpo",      2 },
+         { 0x5a3,      "concmpi",      2 },
+         { 0x5a4,      "cmpinco",      3 },
+         { 0x5a5,      "cmpinci",      3 },
+         { 0x5a6,      "cmpdeco",      3 },
+         { 0x5a7,      "cmpdeci",      3 },
+         { 0x5ac,      "scanbyte",     2 },
+         { 0x5ad,      "bswap",        -2 },
+         { 0x5ae,      "chkbit",       2 },
+         { 0x5b0,      "addc",         3 },
+         { 0x5b2,      "subc",         3 },
+         { 0x5b4,      "intdis",       0 },
+         { 0x5b5,      "inten",        0 },
+         { 0x5cc,      "mov",          -2 },
+         { 0x5d8,      "eshro",        3 },
+         { 0x5dc,      "movl",         -2 },
+         { 0x5ec,      "movt",         -2 },
+         { 0x5fc,      "movq",         -2 },
+         { 0x600,      "synmov",       2 },
+         { 0x601,      "synmovl",      2 },
+         { 0x602,      "synmovq",      2 },
+         { 0x603,      "cmpstr",       3 },
+         { 0x604,      "movqstr",      3 },
+         { 0x605,      "movstr",       3 },
+         { 0x610,      "atmod",        3 },
+         { 0x612,      "atadd",        3 },
+         { 0x613,      "inspacc",      -2 },
+         { 0x614,      "ldphy",        -2 },
+         { 0x615,      "synld",        -2 },
+         { 0x617,      "fill",         3 },
+         { 0x630,      "sdma",         3 },
+         { 0x631,      "udma",         0 },
+         { 0x640,      "spanbit",      -2 },
+         { 0x641,      "scanbit",      -2 },
+         { 0x642,      "daddc",        3 },
+         { 0x643,      "dsubc",        3 },
+         { 0x644,      "dmovt",        -2 },
+         { 0x645,      "modac",        3 },
+         { 0x646,      "condrec",      -2 },
+         { 0x650,      "modify",       3 },
+         { 0x651,      "extract",      3 },
+         { 0x654,      "modtc",        3 },
+         { 0x655,      "modpc",        3 },
+         { 0x656,      "receive",      -2 },
+         { 0x658,      "intctl",       -2 },
+         { 0x659,      "sysctl",       3 },
+         { 0x65b,      "icctl",        3 },
+         { 0x65c,      "dcctl",        3 },
+         { 0x65d,      "halt",         0 },
+         { 0x660,      "calls",        1 },
+         { 0x662,      "send",         3 },
+         { 0x663,      "sendserv",     1 },
+         { 0x664,      "resumprcs",    1 },
+         { 0x665,      "schedprcs",    1 },
+         { 0x666,      "saveprcs",     0 },
+         { 0x668,      "condwait",     1 },
+         { 0x669,      "wait",         1 },
+         { 0x66a,      "signal",       1 },
+         { 0x66b,      "mark",         0 },
+         { 0x66c,      "fmark",        0 },
+         { 0x66d,      "flushreg",     0 },
+         { 0x66f,      "syncf",        0 },
+         { 0x670,      "emul",         3 },
+         { 0x671,      "ediv",         3 },
+         { 0x673,      "ldtime",       -1 },
+         { 0x674,      "Fcvtir",       -2 },
+         { 0x675,      "Fcvtilr",      -2 },
+         { 0x676,      "Fscalerl",     3 },
+         { 0x677,      "Fscaler",      3 },
+         { 0x680,      "Fatanr",       3 },
+         { 0x681,      "Flogepr",      3 },
+         { 0x682,      "Flogr",        3 },
+         { 0x683,      "Fremr",        3 },
+         { 0x684,      "Fcmpor",       2 },
+         { 0x685,      "Fcmpr",        2 },
+         { 0x688,      "Fsqrtr",       -2 },
+         { 0x689,      "Fexpr",        -2 },
+         { 0x68a,      "Flogbnr",      -2 },
+         { 0x68b,      "Froundr",      -2 },
+         { 0x68c,      "Fsinr",        -2 },
+         { 0x68d,      "Fcosr",        -2 },
+         { 0x68e,      "Ftanr",        -2 },
+         { 0x68f,      "Fclassr",      1 },
+         { 0x690,      "Fatanrl",      3 },
+         { 0x691,      "Flogeprl",     3 },
+         { 0x692,      "Flogrl",       3 },
+         { 0x693,      "Fremrl",       3 },
+         { 0x694,      "Fcmporl",      2 },
+         { 0x695,      "Fcmprl",       2 },
+         { 0x698,      "Fsqrtrl",      -2 },
+         { 0x699,      "Fexprl",       -2 },
+         { 0x69a,      "Flogbnrl",     -2 },
+         { 0x69b,      "Froundrl",     -2 },
+         { 0x69c,      "Fsinrl",       -2 },
+         { 0x69d,      "Fcosrl",       -2 },
+         { 0x69e,      "Ftanrl",       -2 },
+         { 0x69f,      "Fclassrl",     1 },
+         { 0x6c0,      "Fcvtri",       -2 },
+         { 0x6c1,      "Fcvtril",      -2 },
+         { 0x6c2,      "Fcvtzri",      -2 },
+         { 0x6c3,      "Fcvtzril",     -2 },
+         { 0x6c9,      "Fmovr",        -2 },
+         { 0x6d9,      "Fmovrl",       -2 },
+         { 0x6e1,      "Fmovre",       -2 },
+         { 0x6e2,      "Fcpysre",      3 },
+         { 0x6e3,      "Fcpyrsre",     3 },
+         { 0x701,      "mulo",         3 },
+         { 0x708,      "remo",         3 },
+         { 0x70b,      "divo",         3 },
+         { 0x741,      "muli",         3 },
+         { 0x748,      "remi",         3 },
+         { 0x749,      "modi",         3 },
+         { 0x74b,      "divi",         3 },
+         { 0x780,      "addono",       3 },
+         { 0x781,      "addino",       3 },
+         { 0x782,      "subono",       3 },
+         { 0x783,      "subino",       3 },
+         { 0x784,      "selno",        3 },
+         { 0x78b,      "Fdivr",        3 },
+         { 0x78c,      "Fmulr",        3 },
+         { 0x78d,      "Fsubr",        3 },
+         { 0x78f,      "Faddr",        3 },
+         { 0x790,      "addog",        3 },
+         { 0x791,      "addig",        3 },
+         { 0x792,      "subog",        3 },
+         { 0x793,      "subig",        3 },
+         { 0x794,      "selg",         3 },
+         { 0x79b,      "Fdivrl",       3 },
+         { 0x79c,      "Fmulrl",       3 },
+         { 0x79d,      "Fsubrl",       3 },
+         { 0x79f,      "Faddrl",       3 },
+         { 0x7a0,      "addoe",        3 },
+         { 0x7a1,      "addie",        3 },
+         { 0x7a2,      "suboe",        3 },
+         { 0x7a3,      "subie",        3 },
+         { 0x7a4,      "sele",         3 },
+         { 0x7b0,      "addoge",       3 },
+         { 0x7b1,      "addige",       3 },
+         { 0x7b2,      "suboge",       3 },
+         { 0x7b3,      "subige",       3 },
+         { 0x7b4,      "selge",        3 },
+         { 0x7c0,      "addol",        3 },
+         { 0x7c1,      "addil",        3 },
+         { 0x7c2,      "subol",        3 },
+         { 0x7c3,      "subil",        3 },
+         { 0x7c4,      "sell",         3 },
+         { 0x7d0,      "addone",       3 },
+         { 0x7d1,      "addine",       3 },
+         { 0x7d2,      "subone",       3 },
+         { 0x7d3,      "subine",       3 },
+         { 0x7d4,      "selne",        3 },
+         { 0x7e0,      "addole",       3 },
+         { 0x7e1,      "addile",       3 },
+         { 0x7e2,      "subole",       3 },
+         { 0x7e3,      "subile",       3 },
+         { 0x7e4,      "selle",        3 },
+         { 0x7f0,      "addoo",        3 },
+         { 0x7f1,      "addio",        3 },
+         { 0x7f2,      "suboo",        3 },
+         { 0x7f3,      "subio",        3 },
+         { 0x7f4,      "selo",         3 },
+#define REG_MAX 0x7f4
+         { 0,          NULL,           0 }
        };
        static struct tabent reg_tab_buf[REG_MAX - REG_MIN + 1];
 
@@ -746,7 +746,7 @@ reg( word1 )
  */
 static void
 ea( memaddr, mode, reg2, reg3, word1, word2 )
-     unsigned long memaddr;
+     bfd_vma memaddr;
      int mode;
      char *reg2, *reg3;
      int word1;
@@ -756,7 +756,7 @@ ea( memaddr, mode, reg2, reg3, word1, word2 )
        static const int scale_tab[] = { 1, 2, 4, 8, 16 };
 
        scale = (word1 >> 7) & 0x07;
-       if ( (scale > 4) || ((word1 >> 5) & 0x03 != 0) ){
+       if ( (scale > 4) || (((word1 >> 5) & 0x03) != 0) ){
                invalid( word1 );
                return;
        }
@@ -777,14 +777,14 @@ ea( memaddr, mode, reg2, reg3, word1, word2 )
                }
                break;
        case 12:                                        /* displacement */
-               print_addr( word2 );
+               print_addr( (bfd_vma)word2 );
                break;
        case 13:                                        /* displ(reg) */
-               print_addr( word2 );
+               print_addr( (bfd_vma)word2 );
                (*info->fprintf_func)( stream, "(%s)", reg2 );
                break;
        case 14:                                        /* displ[index*scale] */
-               print_addr( word2 );
+               print_addr( (bfd_vma)word2 );
                if (scale == 1) {
                        (*info->fprintf_func)( stream, "[%s]", reg3 );
                } else {
@@ -792,7 +792,7 @@ ea( memaddr, mode, reg2, reg3, word1, word2 )
                }
                break;
        case 15:                                /* displ(reg)[index*scale] */
-               print_addr( word2 );
+               print_addr( (bfd_vma)word2 );
                if (scale == 1) {
                        (*info->fprintf_func)( stream, "(%s)[%s]", reg2, reg3 );
                } else {
@@ -875,9 +875,9 @@ invalid( word1 )
 
 static void
 print_addr(a)
-int a;
+bfd_vma a;
 {
-  (*info->print_address_func) ((bfd_vma) a, info);
+  (*info->print_address_func) (a, info);
 }
 
 static void