diff options
-rw-r--r-- | gas/ChangeLog | 11 | ||||
-rw-r--r-- | gas/config/tc-mips.c | 35 |
2 files changed, 45 insertions, 1 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index a519011..a109ce0 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,14 @@ +start-sanitize-tx49 +Wed Nov 12 10:06:27 1997 Gavin Koch <gavin@cygnus.com> + + * config/tc-mips.c (mips_4900): Added. + (hilo_interlocks): Added mips_4900. + (md_begin): Set default for mips_4900. + (macro_build,mips_ip): Test for INSN_4900 if mips_4900. + (md_longopts): Add "m4900" and "no-m4900". + (md_parse_option): Handle above options. + +end-sanitize-tx49 Tue Nov 11 19:25:05 1997 J"orn Rennecke <amylaar@cygnus.co.uk> * app.c (do_scrub_chars): If d10v, re-insert a space before diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c index 2a9c39b..c39e11ee 100644 --- a/gas/config/tc-mips.c +++ b/gas/config/tc-mips.c @@ -216,6 +216,11 @@ static int mips_5900 = -1; /* Whether Toshiba r3900 instructions are permitted. */ static int mips_3900 = -1; +/* start-sanitize-tx49 */ +/* Whether Toshiba r4900 instructions are permitted. */ +static int mips_4900 = -1; + +/* end-sanitize-tx49 */ /* start-sanitize-tx19 */ /* The tx19 (r1900) is a mips16 decoder with a tx39(r3900) behind it. The tx19 related options and configuration bits are handled by @@ -227,7 +232,7 @@ static int mips_3900 = -1; require nops to be inserted. */ #define hilo_interlocks (mips_4010 || mips_cpu == 4300 || mips_3900 \ /* start-sanitize-tx49 */ \ - || mips_cpu == 4900 \ + || mips_cpu == 4900 || mips_4900 \ /* end-sanitize-tx49 */ \ /* start-sanitize-vr5400 */ \ || mips_cpu == 5400 \ @@ -973,7 +978,11 @@ md_begin () if (mips_3900 < 0) mips_3900 = (mips_cpu == 3900); + /* start-sanitize-tx49 */ + if (mips_4900 < 0) + mips_4900 = (mips_cpu == 4900); + /* end-sanitize-tx49 */ /* End of TARGET_CPU processing, get rid of malloced memory if necessary. */ @@ -2413,6 +2422,10 @@ macro_build (place, counter, ep, name, fmt, va_alist) && (insn.insn_mo->membership & INSN_4010) != 0) || (mips_4100 && (insn.insn_mo->membership & INSN_4100) != 0) + /* start-sanitize-tx49 */ + || (mips_4900 + && (insn.insn_mo->membership & INSN_4900) != 0) + /* end-sanitize-tx49 */ /* start-sanitize-r5900 */ || (mips_5900 && (insn.insn_mo->membership & INSN_5900) != 0) @@ -6757,6 +6770,9 @@ mips_ip (str, ip) else if ((mips_4650 && (insn->membership & INSN_4650) != 0) || (mips_4010 && (insn->membership & INSN_4010) != 0) || (mips_4100 && (insn->membership & INSN_4100) != 0) + /* start-sanitize-tx49 */ + || (mips_4900 && (insn->membership & INSN_4900) != 0) + /* end-sanitize-tx49 */ /* start-sanitize-r5900 */ || (mips_5900 && (insn->membership & INSN_5900) != 0) /* end-sanitize-r5900 */ @@ -8570,6 +8586,13 @@ struct option md_longopts[] = { {"no-m5400", no_argument, NULL, OPTION_NO_M5400}, /* end-sanitize-vr5400 */ + /* start-sanitize-tx49 */ +#define OPTION_M4900 (OPTION_MD_BASE + 30) + {"m4900", no_argument, NULL, OPTION_M4900}, +#define OPTION_NO_M4900 (OPTION_MD_BASE + 31) + {"no-m4900", no_argument, NULL, OPTION_NO_M4900}, + + /* end-sanitize-tx49 */ #define OPTION_CALL_SHARED (OPTION_MD_BASE + 7) #define OPTION_NON_SHARED (OPTION_MD_BASE + 8) #define OPTION_XGOT (OPTION_MD_BASE + 19) @@ -8831,6 +8854,16 @@ md_parse_option (c, arg) mips_3900 = 0; break; + /* start-sanitize-tx49 */ + case OPTION_M4900: + mips_4900 = 1; + break; + + case OPTION_NO_M4900: + mips_4900 = 0; + break; + + /* end-sanitize-tx49 */ case OPTION_MIPS16: mips_opts.mips16 = 1; mips_no_prev_insn (false); |