* config/tc-mn10300.c (md_pseudo_table): Use constant names.
[deliverable/binutils-gdb.git] / gas / config / tc-mn10300.c
index 1389a9b6ad920f0ba205f1023481dcdd94c67746..ae1ea16fe7b128a227ca47a324fdaed5a0ce0e60 100644 (file)
@@ -1,6 +1,5 @@
 /* tc-mn10300.c -- Assembler code for the Matsushita 10300
-
-   Copyright (C) 1996, 1997, 1998 Free Software Foundation.
+   Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation.
 
    This file is part of GAS, the GNU Assembler.
 
@@ -119,14 +118,14 @@ size_t md_longopts_size = sizeof(md_longopts);
 /* The target specific pseudo-ops which we support.  */
 const pseudo_typeS md_pseudo_table[] =
 {
-  { "am30",    set_arch_mach,          300 },
-  /* start-sanitize-am33 */
-  { "am33",    set_arch_mach,          330 },
-  /* end-sanitize-am33 */
-  { "mn10300", set_arch_mach,          300 },
+  { "am30",    set_arch_mach,          AM30 },
+  { "am33",    set_arch_mach,          AM33 },
+  { "mn10300", set_arch_mach,          MN103 },
   {NULL, 0, 0}
 };
 
+#define HAVE_AM33 (current_machine == AM33)
+
 /* Opcode hash table.  */
 static struct hash_control *mn10300_hash;
 
@@ -149,7 +148,6 @@ static const struct reg_name address_registers[] =
 };
 #define ADDRESS_REG_NAME_CNT   (sizeof(address_registers) / sizeof(struct reg_name))
 
-/* start-sanitize-am33 */
 static const struct reg_name r_registers[] =
 {
   { "a0", 8 },
@@ -221,7 +219,6 @@ static const struct reg_name xr_registers[] =
 };
 #define XR_REG_NAME_CNT        (sizeof(xr_registers) / sizeof(struct reg_name))
 
-/* end-sanitize-am33 */
 
 static const struct reg_name other_registers[] =
 {
@@ -263,7 +260,6 @@ reg_name_search (regs, regcount, name)
 }
 
 
-/* start-sanitize-am33 */
 /* Summary of register_name().
  *
  * in: Input_line_pointer points to 1st char of operand.
@@ -355,7 +351,6 @@ xr_register_name (expressionP)
       return false;
     }
 }
-/* end-sanitize-am33 */
 
 /* Summary of register_name().
  *
@@ -886,10 +881,10 @@ md_begin ()
   linkrelax = 1;
 
   /* Set the default machine type.  */
-  if (!bfd_set_arch_mach (stdoutput, bfd_arch_mn10300, 300))
+  if (!bfd_set_arch_mach (stdoutput, bfd_arch_mn10300, MN103))
     as_warn (_("could not set architecture and machine"));
 
-  current_machine = 300;
+  current_machine = MN103;
 }
 
 void
@@ -949,7 +944,7 @@ md_assemble (str)
       /* If the instruction is not available on the current machine
         then it can not possibly match.  */
       if (opcode->machine
-         && (opcode->machine != current_machine))
+         && !(opcode->machine == AM33 && HAVE_AM33))
        goto error;
 
       for (op_idx = 1, opindex_ptr = opcode->operands;
@@ -1024,7 +1019,6 @@ md_assemble (str)
              *input_line_pointer = c;
              goto keep_going;
            }
-         /* start-sanitize-am33 */
          else if (operand->flags & MN10300_OPERAND_RREG)
            {
              if (!r_register_name (&ex))
@@ -1129,7 +1123,6 @@ md_assemble (str)
              input_line_pointer++;
              goto keep_going;
            }
-         /* end-sanitize-am33 */
          else if (operand->flags & MN10300_OPERAND_PSW)
            {
              char *start = input_line_pointer;
@@ -1216,28 +1209,30 @@ md_assemble (str)
                      value |= 0x08;
                      *input_line_pointer = c;
                    }
-                 /* start-sanitize-am33 */
-                 else if (strcasecmp (start, "exreg0") == 0)
+                 else if (HAVE_AM33
+                          && strcasecmp (start, "exreg0") == 0)
                    {
                      value |= 0x04;
                      *input_line_pointer = c;
                    }
-                 else if (strcasecmp (start, "exreg1") == 0)
+                 else if (HAVE_AM33
+                          && strcasecmp (start, "exreg1") == 0)
                    {
                      value |= 0x02;
                      *input_line_pointer = c;
                    }
-                 else if (strcasecmp (start, "exother") == 0)
+                 else if (HAVE_AM33
+                          && strcasecmp (start, "exother") == 0)
                    {
                      value |= 0x01;
                      *input_line_pointer = c;
                    }
-                 else if (strcasecmp (start, "all") == 0)
+                 else if (HAVE_AM33
+                          && strcasecmp (start, "all") == 0)
                    {
                      value |= 0xff;
                      *input_line_pointer = c;
                    }
-                 /* end-sanitize-am33 */
                  else
                    {
                      input_line_pointer = hold;
@@ -1269,20 +1264,18 @@ md_assemble (str)
              str = hold;
              goto error;
            }
-         /* start-sanitize-am33 */
-         else if (r_register_name (&ex))
+         else if (HAVE_AM33 && r_register_name (&ex))
            {
              input_line_pointer = hold;
              str = hold;
              goto error;
            }
-         else if (xr_register_name (&ex))
+         else if (HAVE_AM33 && xr_register_name (&ex))
            {
              input_line_pointer = hold;
              str = hold;
              goto error;
            }
-         /* end-sanitize-am33 */
          else if (*str == ')' || *str == '(')
            {
              input_line_pointer = hold;
@@ -1307,9 +1300,8 @@ md_assemble (str)
                int mask;
 
                mask = MN10300_OPERAND_DREG | MN10300_OPERAND_AREG;
-               /* start-sanitize-am33 */
-               mask |= MN10300_OPERAND_RREG | MN10300_OPERAND_XRREG;
-               /* end-sanitize-am33 */
+               if (HAVE_AM33)
+                 mask |= MN10300_OPERAND_RREG | MN10300_OPERAND_XRREG;
                if ((operand->flags & mask) == 0)
                  {
                    input_line_pointer = hold;
@@ -1326,12 +1318,10 @@ md_assemble (str)
                         || opcode->format == FMT_S6
                         || opcode->format == FMT_D5)
                  extra_shift = 16;
-               /* start-sanitize-am33 */
                else if (opcode->format == FMT_D7)
                  extra_shift = 8;
                else if (opcode->format == FMT_D8 || opcode->format == FMT_D9)
                  extra_shift = 8;
-               /* end-sanitize-am33 */
                else
                  extra_shift = 0;
              
@@ -1459,7 +1449,6 @@ keep_going:
   if (opcode->format == FMT_S2 || opcode->format == FMT_D1)
     size = 3;
 
-  /* start-sanitize-am33 */
   if (opcode->format == FMT_D6)
     size = 3;
 
@@ -1471,7 +1460,6 @@ keep_going:
 
   if (opcode->format == FMT_D9)
     size = 7;
-  /* end-sanitize-am33 */
 
   if (opcode->format == FMT_S4)
     size = 5;
@@ -1556,11 +1544,9 @@ keep_going:
       if (opcode->format == FMT_S0
          || opcode->format == FMT_S1
          || opcode->format == FMT_D0
-         /* start-sanitize-am33 */
          || opcode->format == FMT_D6
          || opcode->format == FMT_D7
          || opcode->format == FMT_D10
-         /* end-sanitize-am33 */
          || opcode->format == FMT_D1)
        {
          number_to_chars_bigendian (f, insn, size);
@@ -1635,7 +1621,6 @@ keep_going:
          number_to_chars_littleendian (f + 2, temp, 4);
          number_to_chars_bigendian (f + 6, extension & 0xff, 1);
        }
-      /* start-sanitize-am33 */
       else if (opcode->format == FMT_D8)
        {
           unsigned long temp = ((insn & 0xff) << 16) | (extension & 0xffff);
@@ -1649,7 +1634,6 @@ keep_going:
           number_to_chars_bigendian (f, (insn >> 8) & 0xffffff, 3);
           number_to_chars_littleendian (f + 3, temp, 4);
        }
-      /* end-sanitize-am33 */
 
       /* Create any fixups.  */
       for (i = 0; i < fc; i++)
@@ -1690,10 +1674,8 @@ keep_going:
                 implicitly 32bits.  */
              if ((operand->flags & MN10300_OPERAND_SPLIT) != 0)
                reloc_size = 32;
-             /* start-sanitize-am33 */
              else if ((operand->flags & MN10300_OPERAND_24BIT) != 0)
                reloc_size = 24;
-             /* end-sanitize-am33 */
              else
                reloc_size = operand->bits;
 
@@ -1802,7 +1784,8 @@ tc_gen_reloc (seg, fixp)
     }
   else 
     {
-      reloc->sym_ptr_ptr = &fixp->fx_addsy->bsym;
+      reloc->sym_ptr_ptr = (asymbol **) xmalloc (sizeof( asymbol *));
+      *reloc->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy);
       reloc->addend = fixp->fx_offset;
     }
   return reloc;
@@ -1901,10 +1884,8 @@ mn10300_insert_operand (insnp, extensionp, operand, val, file, line, shift)
       int bits;
 
       bits = operand->bits;
-      /* start-sanitize-am33 */
       if (operand->flags & MN10300_OPERAND_24BIT)
        bits = 24;
-      /* end-sanitize-am33 */
 
       if ((operand->flags & MN10300_OPERAND_SIGNED) != 0)
        {
@@ -1940,14 +1921,12 @@ mn10300_insert_operand (insnp, extensionp, operand, val, file, line, shift)
       *extensionp |= ((val & ((1 << (32 - operand->bits)) - 1))
                      << operand->shift);
     }
-  /* start-sanitize-am33 */
   else if ((operand->flags & MN10300_OPERAND_24BIT) != 0)
     {
       *insnp |= (val >> (24 - operand->bits)) & ((1 << operand->bits) - 1);
       *extensionp |= ((val & ((1 << (24 - operand->bits)) - 1))
                      << operand->shift);
     }
-  /* end-sanitize-am33 */
   else if ((operand->flags & MN10300_OPERAND_EXTENDED) == 0)
     {
       *insnp |= (((long) val & ((1 << operand->bits) - 1))
@@ -1984,10 +1963,8 @@ check_operand (insn, operand, val)
       int bits;
 
       bits = operand->bits;
-      /* start-sanitize-am33 */
       if (operand->flags & MN10300_OPERAND_24BIT)
        bits = 24;
-      /* end-sanitize-am33 */
 
       if ((operand->flags & MN10300_OPERAND_SIGNED) != 0)
        {
This page took 0.030196 seconds and 4 git commands to generate.