X-Git-Url: https://oss.titaniummirror.com/gitweb?p=msp430-binutils.git;a=blobdiff_plain;f=opcodes%2Fia64-gen.c;fp=opcodes%2Fia64-gen.c;h=587fd8a22557540cf09e30ffd9dc53a9993724b6;hp=7dc85b513b40d25d84e06d35679efdb757b1c6d9;hb=d5da4f291af551c0b8b79e1d4a9b173d60e5c10e;hpb=7b5ea4fcdf2819e070665ab5610f8b48e3867c10 diff --git a/opcodes/ia64-gen.c b/opcodes/ia64-gen.c index 7dc85b5..587fd8a 100644 --- a/opcodes/ia64-gen.c +++ b/opcodes/ia64-gen.c @@ -1,5 +1,5 @@ /* ia64-gen.c -- Generate a shrunk set of opcode tables - Copyright 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007 + Copyright 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. Written by Bob Manson, Cygnus Solutions, @@ -694,11 +694,8 @@ load_insn_classes (void) /* Extract the insn classes from the given line. */ static void -parse_resource_users (ref, usersp, nusersp, notesp) - const char *ref; - int **usersp; - int *nusersp; - int **notesp; +parse_resource_users (const char *ref, int **usersp, int *nusersp, + int **notesp) { int c; char *line = xstrdup (ref); @@ -1296,6 +1293,8 @@ lookup_regindex (const char *name, int specifier) return 32; else if (strstr (name, "[ITC]")) return 44; + else if (strstr (name, "[RUC]")) + return 45; else if (strstr (name, "[PFS]")) return 64; else if (strstr (name, "[LC]")) @@ -1435,6 +1434,8 @@ lookup_specifier (const char *name) return IA64_RS_ARb; if (strstr (name, "BR%") != NULL) return IA64_RS_BR; + if (strstr (name, "CR[IIB%]") != NULL) + return IA64_RS_CR_IIB; if (strstr (name, "CR[IRR%]") != NULL) return IA64_RS_CR_IRR; if (strstr (name, "CR[LRR%]") != NULL) @@ -1500,7 +1501,7 @@ lookup_specifier (const char *name) } static void -print_dependency_table () +print_dependency_table (void) { int i, j; @@ -1550,9 +1551,14 @@ print_dependency_table () static const char *mode_str[] = { "RAW", "WAW", "WAR" }; if (rdeps[i]->total_chks == 0) - warn (_("Warning: rsrc %s (%s) has no chks%s\n"), - rdeps[i]->name, mode_str[rdeps[i]->mode], - rdeps[i]->total_regs ? "" : " or regs"); + { + if (rdeps[i]->total_regs) + warn (_("Warning: rsrc %s (%s) has no chks\n"), + rdeps[i]->name, mode_str[rdeps[i]->mode]); + else + warn (_("Warning: rsrc %s (%s) has no chks or regs\n"), + rdeps[i]->name, mode_str[rdeps[i]->mode]); + } else if (rdeps[i]->total_regs == 0) warn (_("rsrc %s (%s) has no regs\n"), rdeps[i]->name, mode_str[rdeps[i]->mode]); @@ -1717,11 +1723,8 @@ make_bittree_entry (void) static struct disent * -add_dis_table_ent (which, insn, order, completer_index) - struct disent *which; - int insn; - int order; - int completer_index; +add_dis_table_ent (struct disent *which, int insn, int order, + int completer_index) { int ci = 0; struct disent *ent; @@ -1758,7 +1761,7 @@ add_dis_table_ent (which, insn, order, completer_index) } static void -finish_distable () +finish_distable (void) { struct disent *ent = disinsntable; struct disent *prev = ent; @@ -1772,15 +1775,9 @@ finish_distable () } static void -insert_bit_table_ent (curr_ent, bit, opcode, mask, - opcodenum, order, completer_index) - struct bittree *curr_ent; - int bit; - ia64_insn opcode; - ia64_insn mask; - int opcodenum; - int order; - int completer_index; +insert_bit_table_ent (struct bittree *curr_ent, int bit, ia64_insn opcode, + ia64_insn mask, int opcodenum, int order, + int completer_index) { ia64_insn m; int b; @@ -1813,13 +1810,8 @@ insert_bit_table_ent (curr_ent, bit, opcode, mask, } static void -add_dis_entry (first, opcode, mask, opcodenum, ent, completer_index) - struct bittree *first; - ia64_insn opcode; - ia64_insn mask; - int opcodenum; - struct completer_entry *ent; - int completer_index; +add_dis_entry (struct bittree *first, ia64_insn opcode, ia64_insn mask, + int opcodenum, struct completer_entry *ent, int completer_index) { if (completer_index & (1 << 20)) abort (); @@ -1843,8 +1835,7 @@ add_dis_entry (first, opcode, mask, opcodenum, ent, completer_index) /* This optimization pass combines multiple "don't care" nodes. */ static void -compact_distree (ent) - struct bittree *ent; +compact_distree (struct bittree *ent) { #define IS_SKIP(ent) \ ((ent->bits[2] !=NULL) \ @@ -1895,8 +1886,7 @@ static int tot_insn_list_len = 0; /* Generate the disassembler state machine corresponding to the tree in ENT. */ static void -gen_dis_table (ent) - struct bittree *ent; +gen_dis_table (struct bittree *ent) { int x; int our_offset = insn_list_len; @@ -2220,8 +2210,8 @@ static int glisttotlen = 0; /* If the completer trees ENT1 and ENT2 are equal, return 1. */ static int -completer_entries_eq (ent1, ent2) - struct completer_entry *ent1, *ent2; +completer_entries_eq (struct completer_entry *ent1, + struct completer_entry *ent2) { while (ent1 != NULL && ent2 != NULL) { @@ -2338,8 +2328,7 @@ insert_gclist (struct completer_entry *ent) } static int -get_prefix_len (name) - const char *name; +get_prefix_len (const char *name) { char *c; @@ -2354,9 +2343,7 @@ get_prefix_len (name) } static void -compute_completer_bits (ment, ent) - struct main_entry *ment; - struct completer_entry *ent; +compute_completer_bits (struct main_entry *ment, struct completer_entry *ent) { while (ent != NULL) { @@ -2429,9 +2416,8 @@ collapse_redundant_completers (void) 2) all resources which must be marked in use when this opcode is used (regs). */ static int -insert_opcode_dependencies (opc, cmp) - struct ia64_opcode *opc; - struct completer_entry *cmp ATTRIBUTE_UNUSED; +insert_opcode_dependencies (struct ia64_opcode *opc, + struct completer_entry *cmp ATTRIBUTE_UNUSED) { /* Note all resources which point to this opcode. rfi has the most chks (79) and cmpxchng has the most regs (54) so 100 here should be enough. */ @@ -2516,10 +2502,8 @@ insert_opcode_dependencies (opc, cmp) } static void -insert_completer_entry (opc, tabent, order) - struct ia64_opcode *opc; - struct main_entry *tabent; - int order; +insert_completer_entry (struct ia64_opcode *opc, struct main_entry *tabent, + int order) { struct completer_entry **ptr = &tabent->completers; struct completer_entry *parent = NULL; @@ -2590,8 +2574,7 @@ insert_completer_entry (opc, tabent, order) } static void -print_completer_entry (ent) - struct completer_entry *ent; +print_completer_entry (struct completer_entry *ent) { int moffset = 0; ia64_insn mask = ent->mask, bits = ent->bits; @@ -2621,7 +2604,7 @@ print_completer_entry (ent) } static void -print_completer_table () +print_completer_table (void) { int x; @@ -2632,9 +2615,7 @@ print_completer_table () } static int -opcodes_eq (opc1, opc2) - struct ia64_opcode *opc1; - struct ia64_opcode *opc2; +opcodes_eq (struct ia64_opcode *opc1, struct ia64_opcode *opc2) { int x; int plen1, plen2; @@ -2658,8 +2639,7 @@ opcodes_eq (opc1, opc2) } static void -add_opcode_entry (opc) - struct ia64_opcode *opc; +add_opcode_entry (struct ia64_opcode *opc) { struct main_entry **place; struct string_entry *name; @@ -2746,8 +2726,7 @@ print_main_table (void) } static void -shrink (table) - struct ia64_opcode *table; +shrink (struct ia64_opcode *table) { int curr_opcode;