arm: PR gas/25472 Enable DSP instructions with +mve
[deliverable/binutils-gdb.git] / gas / config / tc-moxie.c
index 02a59b7c7089304340b2b129172d22734c81c62d..e2fac1175aa8c3631fbf435451152be72c6b0a94 100644 (file)
@@ -1,5 +1,5 @@
 /* tc-moxie.c -- Assemble code for moxie
-   Copyright (C) 2009-2014 Free Software Foundation, Inc.
+   Copyright (C) 2009-2020 Free Software Foundation, Inc.
 
    This file is part of GAS, the GNU Assembler.
 
@@ -404,7 +404,7 @@ md_assemble (char *str)
        iword += (a << 4);
       }
       break;
-    case MOXIE_F1_ABi4:
+    case MOXIE_F1_ABi2:
       iword = opcode->opcode << 8;
       while (ISSPACE (*op_end))
        op_end++;
@@ -426,13 +426,13 @@ md_assemble (char *str)
        op_end++;
 
        op_end = parse_exp_save_ilp (op_end, &arg);
-       offset = frag_more (4);
+       offset = frag_more (2);
        fix_new_exp (frag_now,
                     (offset - frag_now->fr_literal),
-                    4,
+                    2,
                     &arg,
                     0,
-                    BFD_RELOC_32);
+                    BFD_RELOC_16);
 
        if (*op_end != '(')
          {
@@ -458,7 +458,7 @@ md_assemble (char *str)
        iword += (a << 4) + b;
       }
       break;
-    case MOXIE_F1_AiB4:
+    case MOXIE_F1_AiB2:
       iword = opcode->opcode << 8;
       while (ISSPACE (*op_end))
        op_end++;
@@ -468,13 +468,13 @@ md_assemble (char *str)
        int a, b;
 
        op_end = parse_exp_save_ilp (op_end, &arg);
-       offset = frag_more (4);
+       offset = frag_more (2);
        fix_new_exp (frag_now,
                     (offset - frag_now->fr_literal),
-                    4,
+                    2,
                     &arg,
                     0,
-                    BFD_RELOC_32);
+                    BFD_RELOC_16);
 
        if (*op_end != '(')
          {
@@ -535,11 +535,19 @@ md_assemble (char *str)
                     BFD_RELOC_MOXIE_10_PCREL);
       }
       break;
+    case MOXIE_BAD:
+      iword = 0;
+      while (ISSPACE (*op_end))
+       op_end++;
+      if (*op_end != 0)
+       as_warn (_("extra stuff on line ignored"));
+      break;
     default:
       abort ();
     }
 
   md_number_to_chars (p, iword, 2);
+  dwarf2_emit_insn (2);
 
   while (ISSPACE (*op_end))
     op_end++;
@@ -556,7 +564,7 @@ md_assemble (char *str)
    of LITTLENUMS emitted is stored in *SIZEP .  An error message is
    returned, or NULL on OK.  */
 
-char *
+const char *
 md_atof (int type, char *litP, int *sizeP)
 {
   int prec;
@@ -612,17 +620,17 @@ size_t md_longopts_size = sizeof (md_longopts);
 const char *md_shortopts = "";
 
 int
-md_parse_option (int c ATTRIBUTE_UNUSED, char *arg ATTRIBUTE_UNUSED)
+md_parse_option (int c ATTRIBUTE_UNUSED, const char *arg ATTRIBUTE_UNUSED)
 {
   switch (c)
     {
-    case OPTION_EB: 
-      target_big_endian = 1; 
+    case OPTION_EB:
+      target_big_endian = 1;
       break;
-    case OPTION_EL: 
+    case OPTION_EL:
       target_big_endian = 0;
       break;
-    default:        
+    default:
       return 0;
     }
 
@@ -640,7 +648,7 @@ md_show_usage (FILE *stream ATTRIBUTE_UNUSED)
 /* Apply a fixup to the object file.  */
 
 void
-md_apply_fix (fixS *fixP ATTRIBUTE_UNUSED, 
+md_apply_fix (fixS *fixP ATTRIBUTE_UNUSED,
              valueT * valP ATTRIBUTE_UNUSED, segT seg ATTRIBUTE_UNUSED)
 {
   char *buf = fixP->fx_where + fixP->fx_frag->fr_literal;
@@ -771,9 +779,8 @@ tc_gen_reloc (asection *section ATTRIBUTE_UNUSED, fixS *fixP)
       return 0;
     }
 
-  relP = xmalloc (sizeof (arelent));
-  gas_assert (relP != 0);
-  relP->sym_ptr_ptr = xmalloc (sizeof (asymbol *));
+  relP = XNEW (arelent);
+  relP->sym_ptr_ptr = XNEW (asymbol *);
   *relP->sym_ptr_ptr = symbol_get_bfdsym (fixP->fx_addsy);
   relP->address = fixP->fx_frag->fr_address + fixP->fx_where;
 
This page took 0.028233 seconds and 4 git commands to generate.