This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[mep] fix an accidental override


The IVC2 opcodes are controlled directly by -mivc2, but indirectly
through -mcp64 as well.  So, enabling other options cuases IVC2 to be
disabled.  This corrects that, by only defaulting a range of related
core options.  Committed.

	* config/tc-mep.c (md_begin): Don't reset the coprocessor options
	when enabling other options without a specific configuration.

Index: config/tc-mep.c
===================================================================
RCS file: /cvs/src/src/gas/config/tc-mep.c,v
retrieving revision 1.9
diff -p -U3 -r1.9 tc-mep.c
--- config/tc-mep.c	24 Jun 2009 00:51:09 -0000	1.9
+++ config/tc-mep.c	7 Jul 2009 21:10:11 -0000
@@ -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;
 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]