* gas/config/tc-avr.c: Change ISA for devices with USB support to
[external/binutils.git] / gas / config / tc-tic4x.c
index bc92de2..dd21000 100644 (file)
@@ -1,6 +1,6 @@
 /* tc-tic4x.c -- Assemble for the Texas Instruments TMS320C[34]x.
-   Copyright (C) 1997,1998, 2002, 2003, 2005, 2006, 2007, 2008
-   Free Software Foundation. Inc.
+   Copyright (C) 1997,1998, 2002, 2003, 2005, 2006, 2007, 2008, 2009, 2010,
+   2012 Free Software Foundation. Inc.
 
    Contributed by Michael P. Hayes (m.hayes@elec.canterbury.ac.nz)
 
   o .align cannot handle fill-data-width larger than 0xFF/8-bits. It
     should be possible to define a 32-bits pattern.
 
-  o .align fills all section with NOP's when used regardless if has
-    been used in .text or .data. (However the .align is primarily
-    intended used in .text sections. If you require something else,
-    use .align <size>,0x00)
-
   o .align: Implement a 'bu' insn if the number of nop's exceeds 4
     within the align frag. if(fragsize>4words) insert bu fragend+1
     first.
   o Evaluation of constant floating point expressions (expr.c needs
     work!)
 
-  o Support 'abc' constants (that is 0x616263)
-*/
+  o Support 'abc' constants (that is 0x616263).  */
 
-#include "safe-ctype.h"
 #include "as.h"
+#include "safe-ctype.h"
 #include "opcode/tic4x.h"
 #include "subsegs.h"
 #include "obstack.h"
@@ -396,7 +390,7 @@ tic4x_gen_to_words (FLONUM_TYPE flonum, LITTLENUM_TYPE *words, int precision)
       || flonum.sign == 0) /* = NaN */
     {
       if(flonum.sign == 0)
-        as_bad ("Nan, using zero.");
+        as_bad (_("Nan, using zero."));
       words[0] = 0x8000;
       return return_value;
     }
@@ -518,7 +512,7 @@ tic4x_gen_to_words (FLONUM_TYPE flonum, LITTLENUM_TYPE *words, int precision)
     }
 
   if (abs (exponent) >= (1 << (exponent_bits - 1)))
-    as_bad ("Cannot represent exponent in %d bits", exponent_bits);
+    as_bad (_("Cannot represent exponent in %d bits"), exponent_bits);
 
   /* Force exponent to fit in desired field width.  */
   exponent &= (1 << (exponent_bits)) - 1;
@@ -601,7 +595,7 @@ tic4x_atof (char *str, char what_kind, LITTLENUM_TYPE *words)
       break;
 
     default:
-      as_bad ("Invalid floating point number");
+      as_bad (_("Invalid floating point number"));
       return (NULL);
     }
 
@@ -611,7 +605,7 @@ tic4x_atof (char *str, char what_kind, LITTLENUM_TYPE *words)
   if (atof_generic (&return_value, ".", EXP_CHARS,
                    &generic_floating_point_number))
     {
-      as_bad ("Invalid floating point number");
+      as_bad (_("Invalid floating point number"));
       return (NULL);
     }
 
@@ -731,7 +725,7 @@ tic4x_asg (int x ATTRIBUTE_UNUSED)
     input_line_pointer++;
   if (*input_line_pointer != ',')
     {
-      as_bad ("Comma expected\n");
+      as_bad (_("Comma expected\n"));
       return;
     }
   *input_line_pointer++ = '\0';
@@ -771,7 +765,7 @@ tic4x_bss (int x ATTRIBUTE_UNUSED)
   c = get_symbol_end ();       /* Get terminator.  */
   if (c != ',')
     {
-      as_bad (".bss size argument missing\n");
+      as_bad (_(".bss size argument missing\n"));
       return;
     }
 
@@ -779,7 +773,7 @@ tic4x_bss (int x ATTRIBUTE_UNUSED)
     tic4x_expression_abs (++input_line_pointer, &size);
   if (size < 0)
     {
-      as_bad (".bss size %ld < 0!", (long) size);
+      as_bad (_(".bss size %ld < 0!"), (long) size);
       return;
     }
   subseg_set (bss_section, 0);
@@ -913,7 +907,7 @@ tic4x_stringer (int append_zero)
          input_line_pointer = tic4x_expression (input_line_pointer, &exp);
          if (exp.X_op != O_constant)
             {
-              as_bad("Non-constant symbols not allowed\n");
+              as_bad (_("Non-constant symbols not allowed\n"));
               return;
             }
           exp.X_add_number &= 255; /* Limit numeber to 8-bit */
@@ -944,13 +938,14 @@ tic4x_eval (int x ATTRIBUTE_UNUSED)
     tic4x_expression_abs (input_line_pointer, &value);
   if (*input_line_pointer++ != ',')
     {
-      as_bad ("Symbol missing\n");
+      as_bad (_("Symbol missing\n"));
       return;
     }
   name = input_line_pointer;
   c = get_symbol_end ();       /* Get terminator.  */
-  demand_empty_rest_of_line ();
   tic4x_insert_sym (name, value);
+  *input_line_pointer++ = c;
+  demand_empty_rest_of_line ();
 }
 
 /* Reset local labels.  */
@@ -967,7 +962,6 @@ tic4x_sect (int x ATTRIBUTE_UNUSED)
 {
   char c;
   char *section_name;
-  char *subsection_name;
   char *name;
   segT seg;
   offsetT num;
@@ -988,10 +982,9 @@ tic4x_sect (int x ATTRIBUTE_UNUSED)
      Volker Kuhlmann  <v.kuhlmann@elec.canterbury.ac.nz>.  */
   if (c == ':')
     {
-      subsection_name = input_line_pointer;
       c = get_symbol_end ();   /* Get terminator.  */
       input_line_pointer++;    /* Skip null symbol terminator.  */
-      as_warn (".sect: subsection name ignored");
+      as_warn (_(".sect: subsection name ignored"));
     }
 
   /* We might still have a '"' to discard, but the character after a
@@ -1019,7 +1012,7 @@ tic4x_sect (int x ATTRIBUTE_UNUSED)
   if (bfd_get_section_flags (stdoutput, seg) == SEC_NO_FLAGS)
     {
       if (!bfd_set_section_flags (stdoutput, seg, SEC_DATA))
-       as_warn ("Error setting flags for \"%s\": %s", name,
+       as_warn (_("Error setting flags for \"%s\": %s"), name,
                 bfd_errmsg (bfd_get_error ()));
     }
 
@@ -1050,7 +1043,7 @@ tic4x_set (int x ATTRIBUTE_UNUSED)
       c = get_symbol_end ();   /* Get terminator.  */
       if (c != ',')
        {
-         as_bad (".set syntax invalid\n");
+         as_bad (_(".set syntax invalid\n"));
          ignore_rest_of_line ();
          return;
        }
@@ -1108,7 +1101,7 @@ tic4x_usect (int x ATTRIBUTE_UNUSED)
   else
     alignment_flag = 0;
   if (alignment_flag)
-    as_warn (".usect: non-zero alignment flag ignored");
+    as_warn (_(".usect: non-zero alignment flag ignored"));
 
   seg = subseg_new (name, 0);
   if (line_label != NULL)
@@ -1119,7 +1112,7 @@ tic4x_usect (int x ATTRIBUTE_UNUSED)
     }
   seg_info (seg)->bss = 1;     /* Uninitialised data.  */
   if (!bfd_set_section_flags (stdoutput, seg, SEC_ALLOC))
-    as_warn ("Error setting flags for \"%s\": %s", name,
+    as_warn (_("Error setting flags for \"%s\": %s"), name,
             bfd_errmsg (bfd_get_error ()));
   tic4x_seg_alloc (name, seg, size, line_label);
 
@@ -1139,11 +1132,11 @@ tic4x_version (int x ATTRIBUTE_UNUSED)
   input_line_pointer =
     tic4x_expression_abs (input_line_pointer, &temp);
   if (!IS_CPU_TIC3X (temp) && !IS_CPU_TIC4X (temp))
-    as_bad ("This assembler does not support processor generation %ld",
+    as_bad (_("This assembler does not support processor generation %ld"),
            (long) temp);
 
   if (tic4x_cpu && temp != (offsetT) tic4x_cpu)
-    as_warn ("Changing processor generation on fly not supported...");
+    as_warn (_("Changing processor generation on fly not supported..."));
   tic4x_cpu = temp;
   demand_empty_rest_of_line ();
 }
@@ -1248,7 +1241,7 @@ tic4x_inst_make (char *name, unsigned long opcode, char *args)
 {
   static tic4x_inst_t *insts = NULL;
   static char *names = NULL;
-  static int index = 0;
+  static int iindex = 0;
 
   if (insts == NULL)
     {
@@ -1258,18 +1251,18 @@ tic4x_inst_make (char *name, unsigned long opcode, char *args)
       insts = (tic4x_inst_t *)
        xmalloc (sizeof (tic4x_inst_t) * 1024);
     }
-  insts[index].name = names;
-  insts[index].opcode = opcode;
-  insts[index].opmask = 0xffffffff;
-  insts[index].args = args;
-  index++;
+  insts[iindex].name = names;
+  insts[iindex].opcode = opcode;
+  insts[iindex].opmask = 0xffffffff;
+  insts[iindex].args = args;
+  iindex++;
 
   do
     *names++ = *name++;
   while (*name);
   *names++ = '\0';
 
-  return &insts[index - 1];
+  return &insts[iindex - 1];
 }
 
 /* Add instruction template, creating dynamic templates as required.  */
@@ -1285,8 +1278,8 @@ tic4x_inst_add (const tic4x_inst_t *insts)
   d = name;
 
   /* We do not care about INSNs that is not a part of our
-     oplevel setting */
-  if (!insts->oplevel & tic4x_oplevel)
+     oplevel setting */
+  if ((insts->oplevel & tic4x_oplevel) == 0)
     return ok;
 
   while (1)
@@ -1442,7 +1435,7 @@ tic4x_indirect_parse (tic4x_operand_t *operand,
          if (operand->aregno >= REG_AR0 && operand->aregno <= REG_AR7)
            break;
 
-         as_bad ("Auxiliary register AR0--AR7 required for indirect");
+         as_bad (_("Auxiliary register AR0--AR7 required for indirect"));
          return -1;
 
        case 'd':               /* Need to match constant for disp.  */
@@ -1456,7 +1449,7 @@ tic4x_indirect_parse (tic4x_operand_t *operand,
          operand->disp = operand->expr.X_add_number;
          if (operand->disp < 0 || operand->disp > 255)
            {
-             as_bad ("Bad displacement %d (require 0--255)\n",
+             as_bad (_("Bad displacement %d (require 0--255)\n"),
                      operand->disp);
              return -1;
            }
@@ -1474,7 +1467,7 @@ tic4x_indirect_parse (tic4x_operand_t *operand,
          if (operand->expr.X_add_number != REG_IR0
              && operand->expr.X_add_number != REG_IR1)
            {
-             as_bad ("Index register IR0,IR1 required for displacement");
+             as_bad (_("Index register IR0,IR1 required for displacement"));
              return -1;
            }
 
@@ -1516,7 +1509,7 @@ tic4x_operand_parse (char *s, tic4x_operand_t *operand)
   expressionS *exp = &operand->expr;
   char *save = input_line_pointer;
   char *str;
-  char *new;
+  char *new_pointer;
   struct hash_entry *entry = NULL;
 
   input_line_pointer = s;
@@ -1524,7 +1517,7 @@ tic4x_operand_parse (char *s, tic4x_operand_t *operand)
 
   str = input_line_pointer;
   c = get_symbol_end ();       /* Get terminator.  */
-  new = input_line_pointer;
+  new_pointer = input_line_pointer;
   if (strlen (str) && (entry = hash_find (tic4x_asg_hash, str)) != NULL)
     {
       *input_line_pointer = c;
@@ -1543,7 +1536,7 @@ tic4x_operand_parse (char *s, tic4x_operand_t *operand)
     case '%':
       input_line_pointer = tic4x_expression (++input_line_pointer, exp);
       if (exp->X_op != O_register)
-       as_bad ("Expecting a register name");
+       as_bad (_("Expecting a register name"));
       operand->mode = M_REGISTER;
       break;
 
@@ -1555,7 +1548,7 @@ tic4x_operand_parse (char *s, tic4x_operand_t *operand)
       else if (exp->X_op == O_big)
        {
          if (exp->X_add_number)
-           as_bad ("Number too large");        /* bignum required */
+           as_bad (_("Number too large"));     /* bignum required */
          else
            {
              tic4x_gen_to_words (generic_floating_point_number,
@@ -1578,7 +1571,7 @@ tic4x_operand_parse (char *s, tic4x_operand_t *operand)
       else if (exp->X_op == O_big)
        {
          if (exp->X_add_number > 0)
-           as_bad ("Number too large");        /* bignum required.  */
+           as_bad (_("Number too large"));     /* bignum required.  */
          else
            {
              tic4x_gen_to_words (generic_floating_point_number,
@@ -1595,18 +1588,18 @@ tic4x_operand_parse (char *s, tic4x_operand_t *operand)
        }
 
       else
-       as_bad ("Expecting a constant value");
+       as_bad (_("Expecting a constant value"));
       break;
     case '\\':
 #endif
     case '@':
       input_line_pointer = tic4x_expression (++input_line_pointer, exp);
       if (exp->X_op != O_constant && exp->X_op != O_symbol)
-       as_bad ("Bad direct addressing construct %s", s);
+       as_bad (_("Bad direct addressing construct %s"), s);
       if (exp->X_op == O_constant)
        {
          if (exp->X_add_number < 0)
-           as_bad ("Direct value of %ld is not suitable",
+           as_bad (_("Direct value of %ld is not suitable"),
                    (long) exp->X_add_number);
        }
       operand->mode = M_DIRECT;
@@ -1630,7 +1623,7 @@ tic4x_operand_parse (char *s, tic4x_operand_t *operand)
            operand->expr.X_add_number = 0x18;
        }
       else
-       as_bad ("Unknown indirect addressing mode");
+       as_bad (_("Unknown indirect addressing mode"));
       break;
 
     default:
@@ -1647,7 +1640,7 @@ tic4x_operand_parse (char *s, tic4x_operand_t *operand)
       else if (exp->X_op == O_big)
        {
          if (exp->X_add_number > 0)
-           as_bad ("Number too large");        /* bignum required.  */
+           as_bad (_("Number too large"));     /* bignum required.  */
          else
            {
              tic4x_gen_to_words (generic_floating_point_number,
@@ -1666,18 +1659,18 @@ tic4x_operand_parse (char *s, tic4x_operand_t *operand)
 #endif
     }
   if (entry == NULL)
-    new = input_line_pointer;
+    new_pointer = input_line_pointer;
   input_line_pointer = save;
-  return new;
+  return new_pointer;
 }
 
 static int 
-tic4x_operands_match (tic4x_inst_t *inst, tic4x_insn_t *insn, int check)
+tic4x_operands_match (tic4x_inst_t *inst, tic4x_insn_t *tinsn, int check)
 {
   const char *args = inst->args;
   unsigned long opcode = inst->opcode;
-  int num_operands = insn->num_operands;
-  tic4x_operand_t *operand = insn->operands;
+  int num_operands = tinsn->num_operands;
+  tic4x_operand_t *operand = tinsn->operands;
   expressionS *exp = &operand->expr;
   int ret = 1;
   int reg;
@@ -1688,13 +1681,13 @@ tic4x_operands_match (tic4x_inst_t *inst, tic4x_insn_t *insn, int check)
      If an operand matches, we modify insn or opcode appropriately,
      and do a "continue".  If an operand fails to match, we "break".  */
 
-  insn->nchars = 4;            /* Instructions always 4 bytes.  */
-  insn->reloc = NO_RELOC;
-  insn->pcrel = 0;
+  tinsn->nchars = 4;           /* Instructions always 4 bytes.  */
+  tinsn->reloc = NO_RELOC;
+  tinsn->pcrel = 0;
 
   if (*args == '\0')
     {
-      insn->opcode = opcode;
+      tinsn->opcode = opcode;
       return num_operands == 0;
     }
 
@@ -1706,7 +1699,7 @@ tic4x_operands_match (tic4x_inst_t *inst, tic4x_insn_t *insn, int check)
        case '\0':              /* End of args.  */
          if (num_operands == 1)
            {
-             insn->opcode = opcode;
+             tinsn->opcode = opcode;
              return ret;
            }
          break;                /* Too many operands.  */
@@ -1727,7 +1720,7 @@ tic4x_operands_match (tic4x_inst_t *inst, tic4x_insn_t *insn, int check)
               else
                 {
                  if (!check)
-                    as_bad ("Immediate value of %ld is too large for ldf",
+                    as_bad (_("Immediate value of %ld is too large for ldf"),
                             (long) exp->X_add_number);
                  ret = -1;
                  continue;
@@ -1735,8 +1728,8 @@ tic4x_operands_match (tic4x_inst_t *inst, tic4x_insn_t *insn, int check)
            }
          else if (exp->X_op == O_symbol)
            {
-             insn->reloc = BFD_RELOC_HI16;
-             insn->exp = *exp;
+             tinsn->reloc = BFD_RELOC_HI16;
+             tinsn->exp = *exp;
              continue;
            }
          break;                /* Not direct (dp) addressing.  */
@@ -1752,8 +1745,8 @@ tic4x_operands_match (tic4x_inst_t *inst, tic4x_insn_t *insn, int check)
            }
          else if (exp->X_op == O_symbol)
            {
-             insn->reloc = BFD_RELOC_LO16;
-             insn->exp = *exp;
+             tinsn->reloc = BFD_RELOC_LO16;
+             tinsn->exp = *exp;
              continue;
            }
          break;                /* Not direct addressing.  */
@@ -1767,7 +1760,7 @@ tic4x_operands_match (tic4x_inst_t *inst, tic4x_insn_t *insn, int check)
          else
            {
               if (!check)
-                as_bad ("Destination register must be ARn");
+                as_bad (_("Destination register must be ARn"));
              ret = -1;
            }
          continue;
@@ -1786,7 +1779,7 @@ tic4x_operands_match (tic4x_inst_t *inst, tic4x_insn_t *insn, int check)
              else
                {
                  if (!check)
-                    as_bad ("Immediate value of %ld is too large",
+                    as_bad (_("Immediate value of %ld is too large"),
                             (long) exp->X_add_number);
                  ret = -1;
                  continue;
@@ -1794,15 +1787,15 @@ tic4x_operands_match (tic4x_inst_t *inst, tic4x_insn_t *insn, int check)
            }
          if (IS_CPU_TIC4X (tic4x_cpu))
            {
-             insn->reloc = BFD_RELOC_24_PCREL;
-             insn->pcrel = 1;
+             tinsn->reloc = BFD_RELOC_24_PCREL;
+             tinsn->pcrel = 1;
            }
          else
            {
-             insn->reloc = BFD_RELOC_24;
-             insn->pcrel = 0;
+             tinsn->reloc = BFD_RELOC_24;
+             tinsn->pcrel = 0;
            }
-         insn->exp = *exp;
+         tinsn->exp = *exp;
          continue;
 
        case 'C':
@@ -1815,7 +1808,7 @@ tic4x_operands_match (tic4x_inst_t *inst, tic4x_insn_t *insn, int check)
              && operand->expr.X_add_number != 0x18)
            {
               if (!check)
-                as_bad ("Invalid indirect addressing mode");
+                as_bad (_("Invalid indirect addressing mode"));
               ret = -1;
              continue;
            }
@@ -1839,7 +1832,7 @@ tic4x_operands_match (tic4x_inst_t *inst, tic4x_insn_t *insn, int check)
          else
            {
               if (!check)
-                as_bad ("Register must be Rn");
+                as_bad (_("Register must be Rn"));
              ret = -1;
            }
           continue;
@@ -1879,7 +1872,7 @@ tic4x_operands_match (tic4x_inst_t *inst, tic4x_insn_t *insn, int check)
          else
            {
               if (!check)
-                as_bad ("Register must be Rn");
+                as_bad (_("Register must be Rn"));
              ret = -1;
            }
           continue;
@@ -1893,7 +1886,7 @@ tic4x_operands_match (tic4x_inst_t *inst, tic4x_insn_t *insn, int check)
          else
            {
               if (!check)
-                as_bad ("Register must be R0--R7");
+                as_bad (_("Register must be R0--R7"));
              ret = -1;
            }
          continue;
@@ -1917,7 +1910,7 @@ tic4x_operands_match (tic4x_inst_t *inst, tic4x_insn_t *insn, int check)
              if (IS_CPU_TIC4X (tic4x_cpu))
                break;
               if (!check)
-                as_bad ("Invalid indirect addressing mode displacement %d",
+                as_bad (_("Invalid indirect addressing mode displacement %d"),
                         operand->disp);
              ret = -1;
              continue;
@@ -1945,7 +1938,7 @@ tic4x_operands_match (tic4x_inst_t *inst, tic4x_insn_t *insn, int check)
              if (IS_CPU_TIC4X (tic4x_cpu))
                break;
               if (!check)
-                as_bad ("Invalid indirect addressing mode displacement %d",
+                as_bad (_("Invalid indirect addressing mode displacement %d"),
                         operand->disp);
              ret = -1;
              continue;
@@ -1963,7 +1956,7 @@ tic4x_operands_match (tic4x_inst_t *inst, tic4x_insn_t *insn, int check)
          else
            {
               if (!check)
-                as_bad ("Register must be R0--R7");
+                as_bad (_("Register must be R0--R7"));
              ret = -1;
            }
          continue;
@@ -1977,7 +1970,7 @@ tic4x_operands_match (tic4x_inst_t *inst, tic4x_insn_t *insn, int check)
          else
            {
               if (!check)
-                as_bad ("Register must be R0--R7");
+                as_bad (_("Register must be R0--R7"));
              ret = -1;
            }
          continue;
@@ -1991,7 +1984,7 @@ tic4x_operands_match (tic4x_inst_t *inst, tic4x_insn_t *insn, int check)
          else
            {
               if (!check)
-                as_bad ("Destination register must be R2 or R3");
+                as_bad (_("Destination register must be R2 or R3"));
              ret = -1;
            }
          continue;
@@ -2005,7 +1998,7 @@ tic4x_operands_match (tic4x_inst_t *inst, tic4x_insn_t *insn, int check)
          else
            {
               if (!check)
-                as_bad ("Destination register must be R0 or R1");
+                as_bad (_("Destination register must be R0 or R1"));
              ret = -1;
            }
          continue;
@@ -2020,7 +2013,7 @@ tic4x_operands_match (tic4x_inst_t *inst, tic4x_insn_t *insn, int check)
              && operand->expr.X_add_number != 0x18)
            {
               if (!check)
-                as_bad ("Invalid indirect addressing mode");
+                as_bad (_("Invalid indirect addressing mode"));
              ret = -1;
              continue;
            }
@@ -2042,15 +2035,15 @@ tic4x_operands_match (tic4x_inst_t *inst, tic4x_insn_t *insn, int check)
              else
                {
                   if (!check)
-                    as_bad ("Displacement value of %ld is too large",
+                    as_bad (_("Displacement value of %ld is too large"),
                             (long) exp->X_add_number);
                  ret = -1;
                  continue;
                }
            }
-         insn->reloc = BFD_RELOC_16_PCREL;
-         insn->pcrel = 1;
-         insn->exp = *exp;
+         tinsn->reloc = BFD_RELOC_16_PCREL;
+         tinsn->pcrel = 1;
+         tinsn->exp = *exp;
          continue;
 
        case 'Q':
@@ -2070,7 +2063,7 @@ tic4x_operands_match (tic4x_inst_t *inst, tic4x_insn_t *insn, int check)
          else
            {
               if (!check)
-                as_bad ("Register must be Rn");
+                as_bad (_("Register must be Rn"));
              ret = -1;
            }
           continue;
@@ -2092,7 +2085,7 @@ tic4x_operands_match (tic4x_inst_t *inst, tic4x_insn_t *insn, int check)
          else
            {
               if (!check)
-                as_bad ("Register must be Rn");
+                as_bad (_("Register must be Rn"));
              ret = -1;
            }
           continue;
@@ -2103,7 +2096,7 @@ tic4x_operands_match (tic4x_inst_t *inst, tic4x_insn_t *insn, int check)
          if (exp->X_op == O_big)
            {
               if (!check)
-                as_bad ("Floating point number not valid in expression");
+                as_bad (_("Floating point number not valid in expression"));
              ret = -1;
              continue;
            }
@@ -2117,7 +2110,7 @@ tic4x_operands_match (tic4x_inst_t *inst, tic4x_insn_t *insn, int check)
              else
                {
                  if (!check)
-                    as_bad ("Signed immediate value %ld too large",
+                    as_bad (_("Signed immediate value %ld too large"),
                             (long) exp->X_add_number);
                  ret = -1;
                  continue;
@@ -2127,21 +2120,21 @@ tic4x_operands_match (tic4x_inst_t *inst, tic4x_insn_t *insn, int check)
            {
              if (operand->mode == M_HI)
                {
-                 insn->reloc = BFD_RELOC_HI16;
+                 tinsn->reloc = BFD_RELOC_HI16;
                }
              else
                {
-                 insn->reloc = BFD_RELOC_LO16;
+                 tinsn->reloc = BFD_RELOC_LO16;
                }
-             insn->exp = *exp;
+             tinsn->exp = *exp;
              continue;
            }
          /* Handle cases like ldi foo - $, ar0  where foo
             is a forward reference.  Perhaps we should check
             for X_op == O_symbol and disallow things like
             ldi foo, ar0.  */
-         insn->reloc = BFD_RELOC_16;
-         insn->exp = *exp;
+         tinsn->reloc = BFD_RELOC_16;
+         tinsn->exp = *exp;
          continue;
 
        case 'T':               /* 5-bit immediate value for tic4x stik.  */
@@ -2159,7 +2152,7 @@ tic4x_operands_match (tic4x_inst_t *inst, tic4x_insn_t *insn, int check)
              else
                {
                   if (!check)
-                    as_bad ("Immediate value of %ld is too large",
+                    as_bad (_("Immediate value of %ld is too large"),
                             (long) exp->X_add_number);
                  ret = -1;
                  continue;
@@ -2180,7 +2173,7 @@ tic4x_operands_match (tic4x_inst_t *inst, tic4x_insn_t *insn, int check)
              else
                {
                   if (!check)
-                    as_bad ("Unsigned immediate value %ld too large",
+                    as_bad (_("Unsigned immediate value %ld too large"),
                             (long) exp->X_add_number);
                  ret = -1;
                  continue;
@@ -2189,15 +2182,15 @@ tic4x_operands_match (tic4x_inst_t *inst, tic4x_insn_t *insn, int check)
          else if (exp->X_op == O_symbol)
            {
              if (operand->mode == M_HI)
-               insn->reloc = BFD_RELOC_HI16;
+               tinsn->reloc = BFD_RELOC_HI16;
              else
-               insn->reloc = BFD_RELOC_LO16;
+               tinsn->reloc = BFD_RELOC_LO16;
 
-             insn->exp = *exp;
+             tinsn->exp = *exp;
              continue;
            }
-         insn->reloc = BFD_RELOC_16;
-         insn->exp = *exp;
+         tinsn->reloc = BFD_RELOC_16;
+         tinsn->exp = *exp;
          continue;
 
        case 'V':               /* Trap numbers (immediate field).  */
@@ -2218,7 +2211,7 @@ tic4x_operands_match (tic4x_inst_t *inst, tic4x_insn_t *insn, int check)
              else
                {
                   if (!check)
-                    as_bad ("Immediate value of %ld is too large",
+                    as_bad (_("Immediate value of %ld is too large"),
                             (long) exp->X_add_number);
                  ret = -1;
                  continue;
@@ -2234,7 +2227,7 @@ tic4x_operands_match (tic4x_inst_t *inst, tic4x_insn_t *insn, int check)
          if (exp->X_op == O_big)
            {
               if (!check)
-                as_bad ("Floating point number not valid in expression");
+                as_bad (_("Floating point number not valid in expression"));
              ret = -1;
              continue;
            }
@@ -2248,14 +2241,14 @@ tic4x_operands_match (tic4x_inst_t *inst, tic4x_insn_t *insn, int check)
              else
                {
                   if (!check)
-                    as_bad ("Immediate value %ld too large",
+                    as_bad (_("Immediate value %ld too large"),
                             (long) exp->X_add_number);
                  ret = -1;
                  continue;
                }
            }
-         insn->reloc = BFD_RELOC_16;
-         insn->exp = *exp;
+         tinsn->reloc = BFD_RELOC_16;
+         tinsn->exp = *exp;
          continue;
 
        case 'X':               /* Expansion register for tic4x.  */
@@ -2267,7 +2260,7 @@ tic4x_operands_match (tic4x_inst_t *inst, tic4x_insn_t *insn, int check)
          else
            {
               if (!check)
-                as_bad ("Register must be ivtp or tvtp");
+                as_bad (_("Register must be ivtp or tvtp"));
              ret = -1;
            }
          continue;
@@ -2281,7 +2274,7 @@ tic4x_operands_match (tic4x_inst_t *inst, tic4x_insn_t *insn, int check)
          else
            {
               if (!check)
-                as_bad ("Register must be address register");
+                as_bad (_("Register must be address register"));
              ret = -1;
            }
          continue;
@@ -2295,7 +2288,7 @@ tic4x_operands_match (tic4x_inst_t *inst, tic4x_insn_t *insn, int check)
          else
            {
               if (!check)
-                as_bad ("Register must be ivtp or tvtp");
+                as_bad (_("Register must be ivtp or tvtp"));
              ret = -1;
            }
          continue;
@@ -2309,7 +2302,7 @@ tic4x_operands_match (tic4x_inst_t *inst, tic4x_insn_t *insn, int check)
          continue;
 
        case '|':               /* treat as `,' if have ldi_ldi form.  */
-         if (insn->parallel)
+         if (tinsn->parallel)
            {
              if (--num_operands < 0)
                break;          /* Too few operands.  */
@@ -2343,57 +2336,57 @@ tic4x_operands_match (tic4x_inst_t *inst, tic4x_insn_t *insn, int check)
 }
 
 static void
-tic4x_insn_check (tic4x_insn_t *insn)
+tic4x_insn_check (tic4x_insn_t *tinsn)
 {
   
-  if (!strcmp(insn->name, "lda"))
+  if (!strcmp (tinsn->name, "lda"))
     {
-      if (insn->num_operands < 2 || insn->num_operands > 2)
+      if (tinsn->num_operands < 2 || tinsn->num_operands > 2)
         as_fatal ("Illegal internal LDA insn definition");
 
-      if ( insn->operands[0].mode == M_REGISTER
-           && insn->operands[1].mode == M_REGISTER
-           && insn->operands[0].expr.X_add_number == insn->operands[1].expr.X_add_number )
-        as_bad ("Source and destination register should not be equal");
+      if (tinsn->operands[0].mode == M_REGISTER
+         && tinsn->operands[1].mode == M_REGISTER
+         && tinsn->operands[0].expr.X_add_number == tinsn->operands[1].expr.X_add_number )
+        as_bad (_("Source and destination register should not be equal"));
     }
-  else if( !strcmp(insn->name, "ldi_ldi")
-           || !strcmp(insn->name, "ldi1_ldi2")
-           || !strcmp(insn->name, "ldi2_ldi1")
-           || !strcmp(insn->name, "ldf_ldf")
-           || !strcmp(insn->name, "ldf1_ldf2")
-           || !strcmp(insn->name, "ldf2_ldf1") )
+  else if (!strcmp (tinsn->name, "ldi_ldi")
+           || !strcmp (tinsn->name, "ldi1_ldi2")
+           || !strcmp (tinsn->name, "ldi2_ldi1")
+           || !strcmp (tinsn->name, "ldf_ldf")
+           || !strcmp (tinsn->name, "ldf1_ldf2")
+           || !strcmp (tinsn->name, "ldf2_ldf1") )
     {
-      if ( insn->num_operands < 4 && insn->num_operands > 5 )
-        as_fatal ("Illegal internal %s insn definition", insn->name);
+      if (tinsn->num_operands < 4 && tinsn->num_operands > 5 )
+        as_fatal ("Illegal internal %s insn definition", tinsn->name);
       
-      if ( insn->operands[1].mode == M_REGISTER
-           && insn->operands[insn->num_operands-1].mode == M_REGISTER
-           && insn->operands[1].expr.X_add_number == insn->operands[insn->num_operands-1].expr.X_add_number )
-        as_warn ("Equal parallell destination registers, one result will be discarded");
+      if (tinsn->operands[1].mode == M_REGISTER
+         && tinsn->operands[tinsn->num_operands-1].mode == M_REGISTER
+         && tinsn->operands[1].expr.X_add_number == tinsn->operands[tinsn->num_operands-1].expr.X_add_number )
+        as_warn (_("Equal parallell destination registers, one result will be discarded"));
     }
 }
 
 static void 
-tic4x_insn_output (tic4x_insn_t *insn)
+tic4x_insn_output (tic4x_insn_t *tinsn)
 {
   char *dst;
 
   /* Grab another fragment for opcode.  */
-  dst = frag_more (insn->nchars);
+  dst = frag_more (tinsn->nchars);
 
   /* Put out opcode word as a series of bytes in little endian order.  */
-  md_number_to_chars (dst, insn->opcode, insn->nchars);
+  md_number_to_chars (dst, tinsn->opcode, tinsn->nchars);
 
   /* Put out the symbol-dependent stuff.  */
-  if (insn->reloc != NO_RELOC)
+  if (tinsn->reloc != NO_RELOC)
     {
       /* Where is the offset into the fragment for this instruction.  */
       fix_new_exp (frag_now,
                   dst - frag_now->fr_literal,  /* where */
-                  insn->nchars,        /* size */
-                  &insn->exp,
-                  insn->pcrel,
-                  insn->reloc);
+                  tinsn->nchars,       /* size */
+                  &tinsn->exp,
+                  tinsn->pcrel,
+                  tinsn->reloc);
     }
 }
 
@@ -2410,7 +2403,7 @@ tic4x_operands_parse (char *s, tic4x_operand_t *operands, int num_operands)
 
   if (num_operands > TIC4X_OPERANDS_MAX)
     {
-      as_bad ("Too many operands scanned");
+      as_bad (_("Too many operands scanned"));
       return -1;
     }
   return num_operands;
@@ -2440,7 +2433,7 @@ md_assemble (char *str)
         {
           if(insn->parallel)
             {
-              as_bad ("Parallel opcode cannot contain more than two instructions");
+              as_bad (_("Parallel opcode cannot contain more than two instructions"));
               insn->parallel = 0;
               insn->in_use = 0;
               return;
@@ -2485,7 +2478,7 @@ md_assemble (char *str)
       if ((insn->inst = (struct tic4x_inst *)
           hash_find (tic4x_op_hash, insn->name)) == NULL)
        {
-         as_bad ("Unknown opcode `%s'.", insn->name);
+         as_bad (_("Unknown opcode `%s'."), insn->name);
          insn->parallel = 0;
          insn->in_use = 0;
          return;
@@ -2513,10 +2506,10 @@ md_assemble (char *str)
         {
           if (first_inst)
             tic4x_operands_match (first_inst, insn, 0);
-          as_bad ("Invalid operands for %s", insn->name);
+          as_bad (_("Invalid operands for %s"), insn->name);
         }
       else
-       as_bad ("Invalid instruction %s", insn->name);
+       as_bad (_("Invalid instruction %s"), insn->name);
     }
 
   if (str && !parsed)
@@ -2665,7 +2658,7 @@ md_apply_fix (fixS *fixP, valueT *value, segT seg ATTRIBUTE_UNUSED)
 
     case NO_RELOC:
     default:
-      as_bad ("Bad relocation type: 0x%02x", fixP->fx_r_type);
+      as_bad (_("Bad relocation type: 0x%02x"), fixP->fx_r_type);
       break;
     }
 
@@ -2723,7 +2716,7 @@ md_parse_option (int c, char *arg)
        arg++;
       tic4x_cpu = atoi (arg);
       if (!IS_CPU_TIC3X (tic4x_cpu) && !IS_CPU_TIC4X (tic4x_cpu))
-       as_warn ("Unsupported processor generation %d", tic4x_cpu);
+       as_warn (_("Unsupported processor generation %d"), tic4x_cpu);
       break;
 
     case OPTION_REV:             /* cpu revision */
@@ -2731,25 +2724,25 @@ md_parse_option (int c, char *arg)
       break;
 
     case 'b':
-      as_warn ("Option -b is depreciated, please use -mbig");
+      as_warn (_("Option -b is depreciated, please use -mbig"));
     case OPTION_BIG:             /* big model */
       tic4x_big_model = 1;
       break;
 
     case 'p':
-      as_warn ("Option -p is depreciated, please use -mmemparm");
+      as_warn (_("Option -p is depreciated, please use -mmemparm"));
     case OPTION_MEMPARM:         /* push args */
       tic4x_reg_args = 0;
       break;
 
     case 'r':                  
-      as_warn ("Option -r is depreciated, please use -mregparm");
+      as_warn (_("Option -r is depreciated, please use -mregparm"));
     case OPTION_REGPARM:        /* register args */
       tic4x_reg_args = 1;
       break;
 
     case 's':
-      as_warn ("Option -s is depreciated, please use -msmall");
+      as_warn (_("Option -s is depreciated, please use -msmall"));
     case OPTION_SMALL:         /* small model */
       tic4x_big_model = 0;
       break;
@@ -2822,7 +2815,7 @@ tic4x_unrecognized_line (int c)
 
   if (dollar_label_defined (lab))
     {
-      as_bad ("Label \"$%d\" redefined", lab);
+      as_bad (_("Label \"$%d\" redefined"), lab);
       return 0;
     }
 
@@ -2956,13 +2949,11 @@ md_pcrel_from (fixS *fixP)
 /* Fill the alignment area with NOP's on .text, unless fill-data
    was specified. */
 int 
-tic4x_do_align (int alignment ATTRIBUTE_UNUSED,
-               const char *fill ATTRIBUTE_UNUSED,
-               int len ATTRIBUTE_UNUSED,
-               int max ATTRIBUTE_UNUSED)
+tic4x_do_align (int alignment,
+               const char *fill,
+               int len,
+               int max)
 {
-  unsigned long nop = TIC_NOP_OPCODE;
-
   /* Because we are talking lwords, not bytes, adjust alignment to do words */
   alignment += 2;
   
@@ -2970,11 +2961,15 @@ tic4x_do_align (int alignment ATTRIBUTE_UNUSED,
     {
       if (fill == NULL)
         {
-          /*if (subseg_text_p (now_seg))*/  /* FIXME: doesn't work for .text for some reason */
-          frag_align_pattern( alignment, (const char *)&nop, sizeof(nop), max);
-          return 1;
-          /*else
-            frag_align (alignment, 0, max);*/
+          if (subseg_text_p (now_seg))
+           {
+             char nop[4];
+
+             md_number_to_chars (nop, TIC_NOP_OPCODE, 4);
+             frag_align_pattern (alignment, nop, sizeof (nop), max);
+           }
+          else
+            frag_align (alignment, 0, max);
        }
       else if (len <= 1)
        frag_align (alignment, *fill, max);
@@ -3030,7 +3025,7 @@ tc_gen_reloc (asection *seg ATTRIBUTE_UNUSED, fixS *fixP)
   if (reloc->howto == (reloc_howto_type *) NULL)
     {
       as_bad_where (fixP->fx_file, fixP->fx_line,
-                   "Reloc %d not supported by object file format",
+                   _("Reloc %d not supported by object file format"),
                    (int) fixP->fx_r_type);
       return NULL;
     }