THIS FILE IS MACHINE GENERATED WITH CGEN.
-Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+Copyright 1996-2005 Free Software Foundation, Inc.
This file is part of the GNU Binutils and/or GDB, the GNU debugger.
/* -- opc.c */
+#include "safe-ctype.h"
+
/* A better hash function for instruction mnemonics. */
unsigned int
ip2k_asm_hash (insn)
unsigned int hash;
const char* m = insn;
- for (hash = 0; *m && !isspace(*m); m++)
- hash = (hash * 23) ^ (0x1F & tolower(*m));
+ for (hash = 0; *m && !ISSPACE(*m); m++)
+ hash = (hash * 23) ^ (0x1F & TOLOWER(*m));
/* printf ("%s %d\n", insn, (hash % CGEN_ASM_HASH_SIZE)); */
}
+/* Special check to ensure that instruction exists for given machine. */
+int
+ip2k_cgen_insn_supported (cd, insn)
+ CGEN_CPU_DESC cd;
+ const CGEN_INSN *insn;
+{
+ int machs = CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_MACH);
+
+ /* No mach attribute? Assume it's supported for all machs. */
+ if (machs == 0)
+ return 1;
+
+ return ((machs & cd->machs) != 0);
+}
\f
/* -- asm.c */
#else
#define F(f) & ip2k_cgen_ifld_table[IP2K_/**/f]
#endif
-static const CGEN_IFMT ifmt_empty = {
+static const CGEN_IFMT ifmt_empty ATTRIBUTE_UNUSED = {
0, 0, 0x0, { { 0 } }
};
-static const CGEN_IFMT ifmt_jmp = {
+static const CGEN_IFMT ifmt_jmp ATTRIBUTE_UNUSED = {
16, 16, 0xe000, { { F (F_OP3) }, { F (F_ADDR16CJP) }, { 0 } }
};
-static const CGEN_IFMT ifmt_sb = {
+static const CGEN_IFMT ifmt_sb ATTRIBUTE_UNUSED = {
16, 16, 0xf000, { { F (F_OP4) }, { F (F_BITNO) }, { F (F_REG) }, { 0 } }
};
-static const CGEN_IFMT ifmt_xorw_l = {
+static const CGEN_IFMT ifmt_xorw_l ATTRIBUTE_UNUSED = {
16, 16, 0xff00, { { F (F_OP4) }, { F (F_OP4MID) }, { F (F_IMM8) }, { 0 } }
};
-static const CGEN_IFMT ifmt_loadl_a = {
+static const CGEN_IFMT ifmt_loadl_a ATTRIBUTE_UNUSED = {
16, 16, 0xff00, { { F (F_OP4) }, { F (F_OP4MID) }, { F (F_IMM8) }, { 0 } }
};
-static const CGEN_IFMT ifmt_loadh_a = {
+static const CGEN_IFMT ifmt_loadh_a ATTRIBUTE_UNUSED = {
16, 16, 0xff00, { { F (F_OP4) }, { F (F_OP4MID) }, { F (F_IMM8) }, { 0 } }
};
-static const CGEN_IFMT ifmt_addcfr_w = {
+static const CGEN_IFMT ifmt_addcfr_w ATTRIBUTE_UNUSED = {
16, 16, 0xfe00, { { F (F_OP6) }, { F (F_DIR) }, { F (F_REG) }, { 0 } }
};
-static const CGEN_IFMT ifmt_speed = {
+static const CGEN_IFMT ifmt_speed ATTRIBUTE_UNUSED = {
16, 16, 0xff00, { { F (F_OP8) }, { F (F_IMM8) }, { 0 } }
};
-static const CGEN_IFMT ifmt_ireadi = {
+static const CGEN_IFMT ifmt_ireadi ATTRIBUTE_UNUSED = {
16, 16, 0xffff, { { F (F_OP6) }, { F (F_OP6_10LOW) }, { 0 } }
};
-static const CGEN_IFMT ifmt_page = {
+static const CGEN_IFMT ifmt_page ATTRIBUTE_UNUSED = {
16, 16, 0xfff8, { { F (F_OP6) }, { F (F_OP6_7LOW) }, { F (F_PAGE3) }, { 0 } }
};
-static const CGEN_IFMT ifmt_reti = {
+static const CGEN_IFMT ifmt_reti ATTRIBUTE_UNUSED = {
16, 16, 0xfff8, { { F (F_OP6) }, { F (F_OP6_7LOW) }, { F (F_RETI3) }, { 0 } }
};
#else
#define F(f) & ip2k_cgen_ifld_table[IP2K_/**/f]
#endif
-static const CGEN_IFMT ifmt_sc = {
+static const CGEN_IFMT ifmt_sc ATTRIBUTE_UNUSED = {
16, 16, 0xffff, { { F (F_OP4) }, { F (F_BITNO) }, { F (F_REG) }, { 0 } }
};
-static const CGEN_IFMT ifmt_snc = {
+static const CGEN_IFMT ifmt_snc ATTRIBUTE_UNUSED = {
16, 16, 0xffff, { { F (F_OP4) }, { F (F_BITNO) }, { F (F_REG) }, { 0 } }
};
-static const CGEN_IFMT ifmt_sz = {
+static const CGEN_IFMT ifmt_sz ATTRIBUTE_UNUSED = {
16, 16, 0xffff, { { F (F_OP4) }, { F (F_BITNO) }, { F (F_REG) }, { 0 } }
};
-static const CGEN_IFMT ifmt_snz = {
+static const CGEN_IFMT ifmt_snz ATTRIBUTE_UNUSED = {
16, 16, 0xffff, { { F (F_OP4) }, { F (F_BITNO) }, { F (F_REG) }, { 0 } }
};
-static const CGEN_IFMT ifmt_skip = {
+static const CGEN_IFMT ifmt_skip ATTRIBUTE_UNUSED = {
16, 16, 0xffff, { { F (F_OP4) }, { F (F_BITNO) }, { F (F_REG) }, { 0 } }
};
-static const CGEN_IFMT ifmt_skipb = {
+static const CGEN_IFMT ifmt_skipb ATTRIBUTE_UNUSED = {
16, 16, 0xffff, { { F (F_OP4) }, { F (F_BITNO) }, { F (F_REG) }, { 0 } }
};