diff options
-rw-r--r-- | gas/ChangeLog | 5 | ||||
-rw-r--r-- | gas/config/tc-mep.c | 22 |
2 files changed, 26 insertions, 1 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index c73686f36e..b0f2834baf 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -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. diff --git a/gas/config/tc-mep.c b/gas/config/tc-mep.c index 6b4b540df0..23392d2339 100644 --- a/gas/config/tc-mep.c +++ b/gas/config/tc-mep.c @@ -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; |