* config/tc-mep.c (md_begin): Don't reset the coprocessor options
authorDJ Delorie <dj@redhat.com>
Tue, 7 Jul 2009 21:12:52 +0000 (21:12 +0000)
committerDJ Delorie <dj@redhat.com>
Tue, 7 Jul 2009 21:12:52 +0000 (21:12 +0000)
when enabling other options without a specific configuration.

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

index c73686f36eea296fe19c13eab8418d1cfff47df2..b0f2834baf63af99196759795cdc2a5db1e69454 100644 (file)
@@ -1,3 +1,8 @@
+2009-07-07  DJ Delorie  <dj@redhat.com>
+
+       * config/tc-mep.c (md_begin): Don't reset the coprocessor options
+       when enabling other options without a specific configuration.
+
 2009-07-07  Chung-Lin Tang  <cltang@pllab.cs.nthu.edu.tw>
 
        * config/tc-arm.c (insns): Fix encoding for torvsc.
index 6b4b540df01caca8f9154b6bd338d821e07b0019..23392d2339420dbd22e7b389e9a2fd541bf1a4c9 100644 (file)
@@ -176,6 +176,23 @@ struct option md_longopts[] = {
   { NULL, 0, NULL, 0 } };
 size_t md_longopts_size = sizeof (md_longopts);
 
+/* Options which default to on/off together.  See the comment where
+   this is used for details.  Note that CP and CP64 are not in this
+   list because disabling those overrides the -mivc2 option.  */
+#define OPTION_MASK \
+       ( (1 << CGEN_INSN_OPTIONAL_BIT_INSN) \
+       | (1 << CGEN_INSN_OPTIONAL_MUL_INSN) \
+       | (1 << CGEN_INSN_OPTIONAL_DIV_INSN) \
+       | (1 << CGEN_INSN_OPTIONAL_DEBUG_INSN) \
+       | (1 << CGEN_INSN_OPTIONAL_LDZ_INSN) \
+       | (1 << CGEN_INSN_OPTIONAL_ABS_INSN) \
+       | (1 << CGEN_INSN_OPTIONAL_AVE_INSN) \
+       | (1 << CGEN_INSN_OPTIONAL_MINMAX_INSN) \
+       | (1 << CGEN_INSN_OPTIONAL_CLIP_INSN) \
+       | (1 << CGEN_INSN_OPTIONAL_SAT_INSN) \
+       | (1 << CGEN_INSN_OPTIONAL_UCI_INSN) \
+       | (1 << CGEN_INSN_OPTIONAL_DSP_INSN) )
+
 const char * md_shortopts = "";
 static int optbits = 0;
 static int optbitset = 0;
@@ -462,7 +479,10 @@ md_begin ()
      specified.  If the user specifies options and a config, the
      options modify the config.  */
   if (optbits && mep_config_index == 0)
-    MEP_OMASK = optbits;
+    {
+      MEP_OMASK &= ~OPTION_MASK;
+      MEP_OMASK |= optbits;
+    }
   else
     MEP_OMASK = (MEP_OMASK & ~optbitset) | optbits;