CSKY: Add warning when -mdsp and -mcpu=ck803ern are both added.
authorCooper Qu <cooper.qu@linux.alibaba.com>
Mon, 31 Aug 2020 02:55:06 +0000 (10:55 +0800)
committerLifang Xia <lifang_xia@c-sky.com>
Mon, 31 Aug 2020 03:16:21 +0000 (11:16 +0800)
gas/
* config/tc-csky.c (md_begin): Add warning when -mdsp and
  -mcpu=ck803ern are both added.
  (parse_ldst_imm): Fix error message.

gas/ChangeLog
gas/config/tc-csky.c

index 9115267301630bb64e9a94f8c102777039fb34e0..1f30a6bc52bea750833fa0cb9bd7841faf0cd993 100644 (file)
@@ -1,3 +1,9 @@
+2020-08-31  Cooper Qu  <cooper.qu@linux.alibaba.com>
+
+       * config/tc-csky.c (md_begin): Add warning when -mdsp and
+       -mcpu=ck803ern are both added.
+       (parse_ldst_imm): Fix error message.
+
 2020-08-30  Alan Modra  <amodra@gmail.com>
 
        * testsuite/gas/cr16/cbitb_test.d: Update expected output.
index 9f2975e5f685e718930fdcc924535c714f4d05a0..6fc24acde0ff0c50e4098ef2071e0553bef65068 100644 (file)
@@ -1359,8 +1359,20 @@ md_begin (void)
        {
          if ((dsp_flag & CSKY_DSP_FLAG_V1))
            {
-             isa_flag |= (CSKY_ISA_MAC_DSP | CSKY_ISA_DSP);
-             isa_flag &= ~CSKY_ISA_DSP_ENHANCE;
+             if (isa_flag & CSKY_ISA_DSP_ENHANCE)
+               {
+                 /* Option -mdsp conflicts with -mcpu=ck803ern,
+                    CPU already indicates the dsp version.  */
+                 as_warn ("Option -mdsp conflicts with -mcpu=ck803ern which "
+                          "has indicated DSP version, ignoring -mdsp.");
+                 isa_flag &= ~(CSKY_ISA_MAC_DSP | CSKY_ISA_DSP);
+                 isa_flag |= CSKY_ISA_DSP_ENHANCE;
+               }
+             else
+               {
+                 isa_flag |= (CSKY_ISA_MAC_DSP | CSKY_ISA_DSP);
+                 isa_flag &= ~CSKY_ISA_DSP_ENHANCE;
+               }
            }
 
          if ((dsp_flag & CSKY_DSP_FLAG_V2))
@@ -2938,7 +2950,8 @@ parse_ldst_imm (char **oper, struct csky_opcode_info *op ATTRIBUTE_UNUSED,
   if ((e.X_add_number % (1 << shift)) != 0)
     {
       /* Not aligned.  */
-      SET_ERROR_NUMBER (ERROR_OFFSET_UNALIGNED, ((unsigned long)1 << shift));
+      SET_ERROR_NUMBER (ERROR_OFFSET_UNALIGNED,
+                       (void *)"Operand format is error. eg. \"ld rz, (rx, n)\"");
       return FALSE;
     }