* tui.c (tui_change_windows): New function.
[deliverable/binutils-gdb.git] / gas / itbl-ops.c
index 392db1946d57a52bc8b4325cc37c1dd9afcbd558..729ee9837421cc6c7f11d56913c5ef456c73889b 100644 (file)
@@ -1,5 +1,5 @@
 /* itbl-ops.c
-   Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc.
+   Copyright 1997, 1999, 2000, 2001 Free Software Foundation, Inc.
 
    This file is part of GAS, the GNU Assembler.
 
@@ -114,43 +114,39 @@ int itbl_have_entries = 0;
 /*======================================================================*/
 /* structures for keeping itbl format entries */
 
-struct itbl_range
-  {
-    int sbit;                  /* mask starting bit position */
-    int ebit;                  /* mask ending bit position */
-  };
+struct itbl_range {
+  int sbit;                    /* mask starting bit position */
+  int ebit;                    /* mask ending bit position */
+};
 
-struct itbl_field
-  {
-    e_type type;               /* dreg/creg/greg/immed/symb */
-    struct itbl_range range;   /* field's bitfield range within instruction */
-    unsigned long flags;       /* field flags */
-    struct itbl_field *next;   /* next field in list */
-  };
+struct itbl_field {
+  e_type type;                 /* dreg/creg/greg/immed/symb */
+  struct itbl_range range;     /* field's bitfield range within instruction */
+  unsigned long flags;         /* field flags */
+  struct itbl_field *next;     /* next field in list */
+};
 
 /* These structures define the instructions and registers for a processor.
  * If the type is an instruction, the structure defines the format of an
  * instruction where the fields are the list of operands.
  * The flags field below uses the same values as those defined in the
  * gnu assembler and are machine specific.  */
-struct itbl_entry
-  {
-    e_processor processor;     /* processor number */
-    e_type type;               /* dreg/creg/greg/insn */
-    char *name;                        /* mnemionic name for insn/register */
-    unsigned long value;       /* opcode/instruction mask/register number */
-    unsigned long flags;       /* effects of the instruction */
-    struct itbl_range range;   /* bit range within instruction for value */
-    struct itbl_field *fields; /* list of operand definitions (if any) */
-    struct itbl_entry *next;   /* next entry */
-  };
+struct itbl_entry {
+  e_processor processor;       /* processor number */
+  e_type type;                 /* dreg/creg/greg/insn */
+  char *name;                  /* mnemionic name for insn/register */
+  unsigned long value;         /* opcode/instruction mask/register number */
+  unsigned long flags;         /* effects of the instruction */
+  struct itbl_range range;     /* bit range within instruction for value */
+  struct itbl_field *fields;   /* list of operand definitions (if any) */
+  struct itbl_entry *next;     /* next entry */
+};
 
 /* local data and structures */
 
 static int itbl_num_opcodes = 0;
 /* Array of entries for each processor and entry type */
-static struct itbl_entry *entries[e_nprocs][e_ntypes] =
-{
+static struct itbl_entry *entries[e_nprocs][e_ntypes] = {
   {0, 0, 0, 0, 0, 0},
   {0, 0, 0, 0, 0, 0},
   {0, 0, 0, 0, 0, 0},
@@ -187,17 +183,18 @@ itbl_parse (char *insntbl)
 {
   extern FILE *yyin;
   extern int yyparse (void);
-  yyin = fopen (insntbl, "r");
+
+  yyin = fopen (insntbl, FOPEN_RT);
   if (yyin == 0)
     {
       printf ("Can't open processor instruction specification file \"%s\"\n",
              insntbl);
       return 1;
     }
-  else
-    {
-      while (yyparse ());
-    }
+
+  while (yyparse ())
+    ;
+
   fclose (yyin);
   itbl_have_entries = 1;
   return 0;
@@ -273,7 +270,8 @@ itbl_add_operand (struct itbl_entry *e, int yytype, int sbit,
 #include "symbols.h"
 static void append_insns_as_macros (void);
 
-/* initialize for gas */
+/* Initialize for gas.  */
+
 void
 itbl_init (void)
 {
@@ -282,7 +280,7 @@ itbl_init (void)
   e_type type;
 
   if (!itbl_have_entries)
-       return;
+    return;
 
   /* Since register names don't have a prefix, put them in the symbol table so
      they can't be used as symbols.  This simplifies argument parsing as
@@ -297,7 +295,7 @@ itbl_init (void)
        for (e = *es; e; e = e->next)
          {
            symbol_table_insert (symbol_create (e->name, reg_section,
-                                            e->value, &zero_address_frag));
+                                               e->value, &zero_address_frag));
          }
       }
   append_insns_as_macros ();
@@ -327,7 +325,7 @@ append_insns_as_macros (void)
   int n, id, size, new_size, new_num_opcodes;
 
   if (!itbl_have_entries)
-       return;
+    return;
 
   if (!itbl_num_opcodes)       /* no new instructions to add! */
     {
@@ -503,7 +501,7 @@ unsigned long
 itbl_assemble (char *name, char *s)
 {
   unsigned long opcode;
-  struct itbl_entry *e;
+  struct itbl_entry *e = NULL;
   struct itbl_field *f;
   char *n;
   int processor;
@@ -519,7 +517,7 @@ itbl_assemble (char *name, char *s)
        break;
     }
   if (!e)
-    return 0;                  /* opcode not in table; invalid instrustion */
+    return 0;                  /* opcode not in table; invalid instruction */
   opcode = build_opcode (e);
 
   /* parse opcode's args (if any) */
@@ -603,24 +601,24 @@ itbl_disassemble (char *s, unsigned long insn)
   struct itbl_field *f;
 
   if (!ITBL_IS_INSN (insn))
-    return 0;                  /* error*/
+    return 0;                  /* error */
   processor = get_processor (ITBL_DECODE_PNUM (insn));
 
   /* find entry in list */
   e = find_entry_byval (processor, e_insn, insn, 0);
   if (!e)
-    return 0;                  /* opcode not in table; invalid instrustion */
+    return 0;                  /* opcode not in table; invalid instruction */
   strcpy (s, e->name);
 
-  /* parse insn's args (if any) */
+  /* Parse insn's args (if any).  */
   for (f = e->fields; f; f = f->next)  /* for each arg, ...  */
     {
       struct itbl_entry *r;
       unsigned long value;
 
-      if (f == e->fields)      /* first operand is preceeded by tab */
+      if (f == e->fields)      /* First operand is preceeded by tab.  */
        strcat (s, "\t");
-      else                     /* ','s separate following operands */
+      else                     /* ','s separate following operands */
        strcat (s, ",");
       value = extract_range (insn, f->range);
       /* n should be in form $n or 0xhhh (are symbol names valid?? */
@@ -630,7 +628,7 @@ itbl_disassemble (char *s, unsigned long insn)
        case e_creg:
        case e_greg:
          /* Accept either a string name
-                        * or '$' followed by the register number */
+            or '$' followed by the register number.  */
          r = find_entry_byval (e->processor, f->type, value, &f->range);
          if (r)
            strcat (s, r->name);
@@ -638,11 +636,9 @@ itbl_disassemble (char *s, unsigned long insn)
            sprintf (s, "%s$%lu", s, value);
          break;
        case e_addr:
-         /* use assembler's symbol table to find symbol */
-         /* FIXME!! Do we need this?
-                        *   if so, what about relocs??
-                       */
-         /* If not a symbol, fall thru to IMMED */
+         /* Use assembler's symbol table to find symbol.  */
+         /* FIXME!! Do we need this?  If so, what about relocs??  */
+         /* If not a symbol, fall through to IMMED.  */
        case e_immed:
          sprintf (s, "%s0x%lx", s, value);
          break;
@@ -650,7 +646,7 @@ itbl_disassemble (char *s, unsigned long insn)
          return 0;             /* error; invalid field spec */
        }
     }
-  return 1;                    /* done! */
+  return 1;                    /* Done!  */
 }
 
 /*======================================================================*/
This page took 0.033689 seconds and 4 git commands to generate.