aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorGavin Romig-Koch <gavin@redhat.com>1997-02-11 13:26:34 +0000
committerGavin Romig-Koch <gavin@redhat.com>1997-02-11 13:26:34 +0000
commit276c2d7dc8a0057901123776b5ae26fe48ce69e2 (patch)
treef92c4a48e0f2f6b8df840f40d6a5ec752bb6d076 /gas
parenta7f081a5be64456cdd268ceb515db7c94737c2b2 (diff)
downloadgdb-276c2d7dc8a0057901123776b5ae26fe48ce69e2.zip
gdb-276c2d7dc8a0057901123776b5ae26fe48ce69e2.tar.gz
gdb-276c2d7dc8a0057901123776b5ae26fe48ce69e2.tar.bz2
Add r5900
Diffstat (limited to 'gas')
-rw-r--r--gas/.Sanitize28
-rw-r--r--gas/ChangeLog6
-rw-r--r--gas/config/.Sanitize30
-rw-r--r--gas/config/tc-mips.c56
4 files changed, 118 insertions, 2 deletions
diff --git a/gas/.Sanitize b/gas/.Sanitize
index eedc78e..f493f45 100644
--- a/gas/.Sanitize
+++ b/gas/.Sanitize
@@ -219,6 +219,34 @@ else
done
fi
+r5900_files="ChangeLog"
+if ( echo $* | grep keep\-r5900 > /dev/null ) ; then
+ for i in $r5900_files ; do
+ if test ! -d $i && (grep sanitize-r5900 $i > /dev/null) ; then
+ if [ -n "${verbose}" ] ; then
+ echo Keeping r5900 stuff in $i
+ fi
+ fi
+ done
+else
+ for i in $r5900_files ; do
+ if test ! -d $i && (grep sanitize-r5900 $i > /dev/null) ; then
+ if [ -n "${verbose}" ] ; then
+ echo Removing traces of \"r5900\" from $i...
+ fi
+ cp $i new
+ sed '/start\-sanitize\-r5900/,/end-\sanitize\-r5900/d' < $i > new
+ if [ -n "${safe}" -a ! -f .Recover/$i ] ; then
+ if [ -n "${verbose}" ] ; then
+ echo Caching $i in .Recover...
+ fi
+ mv $i .Recover
+ fi
+ mv new $i
+ fi
+ done
+fi
+
tic80_files="ChangeLog configure.in configure"
if ( echo $* | grep keep\-tic80 > /dev/null ) ; then
for i in $tic80_files ; do
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 51d922a..968d433 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,9 @@
+start-sanitize-r5900
+Fri Feb 7 11:11:06 1997 Gavin Koch <gavin@cygnus.com>
+
+ * config/tc-mips.c: added r5900.
+
+end-sanitize-r5900
Mon Feb 10 22:06:00 1997 Dawn Perchik (dawn@cygnus.com)
* itbl-ops.c, itbl-lex.l, itbl-parse.y, itbl-ops.h,
diff --git a/gas/config/.Sanitize b/gas/config/.Sanitize
index c33246c..65a123a 100644
--- a/gas/config/.Sanitize
+++ b/gas/config/.Sanitize
@@ -183,4 +183,34 @@ Things-to-lose:
Do-last:
+r5900_files="tc-mips.c"
+
+if ( echo $* | grep keep\-r5900 > /dev/null ) ; then
+ for i in $r5900_files ; do
+ if test ! -d $i && (grep sanitize-r5900 $i > /dev/null) ; then
+ if [ -n "${verbose}" ] ; then
+ echo Keeping r5900 stuff in $i
+ fi
+ fi
+ done
+else
+ for i in * ; do
+ if test ! -d $i && (grep sanitize-r5900 $i > /dev/null) ; then
+ if [ -n "${verbose}" ] ; then
+ echo Removing traces of \"r5900\" from $i...
+ fi
+ cp $i new
+ sed '/start\-sanitize\-r5900/,/end-\sanitize\-r5900/d' < $i > new
+ if [ -n "${safe}" -a ! -f .Recover/$i ] ; then
+ if [ -n "${verbose}" ] ; then
+ echo Caching $i in .Recover...
+ fi
+ mv $i .Recover
+ fi
+ mv new $i
+ fi
+ done
+fi
+
+
# End of file.
diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c
index edb2e13..4b3c955 100644
--- a/gas/config/tc-mips.c
+++ b/gas/config/tc-mips.c
@@ -148,6 +148,11 @@ static int mips_4010 = -1;
/* Whether the 4100 MADD16 and DMADD16 are permitted. */
static int mips_4100 = -1;
+/* start-sanitize-r5900 */
+/* Whether Toshiba r5900 instructions are permitted. */
+static int mips_5900 = -1;
+/* end-sanitize-r5900 */
+
/* Whether the processor uses hardware interlocks, and thus does not
require nops to be inserted. */
static int interlocks = -1;
@@ -780,6 +785,18 @@ md_begin ()
if (mips_cpu == -1)
mips_cpu = 5000;
}
+ /* start-sanitize-r5900 */
+ else if (strcmp (cpu, "r5900") == 0
+ || strcmp (cpu, "mips64vr5900") == 0
+ || strcmp (cpu, "mips64vr5900el") == 0)
+ {
+ mips_isa = 3;
+ if (mips_cpu == -1)
+ mips_cpu = 5900;
+ if (mips_5900 = -1)
+ mips_5900 = 1;
+ }
+ /* end-sanitize-r5900 */
else if (strcmp (cpu, "r8000") == 0
|| strcmp (cpu, "mips4") == 0)
{
@@ -827,6 +844,11 @@ md_begin ()
if (mips_4100 < 0)
mips_4100 = 0;
+ /* start-sanitize-r5900 */
+ if (mips_5900 < 0)
+ mips_5900 = 0;
+ /* end-sanitize-r5900 */
+
if (mips_4010 || mips_4100 || mips_cpu == 4300)
interlocks = 1;
else
@@ -2111,7 +2133,12 @@ macro_build (place, counter, ep, name, fmt, va_alist)
|| ((insn.insn_mo->pinfo & INSN_ISA) == INSN_4010
&& ! mips_4010)
|| ((insn.insn_mo->pinfo & INSN_ISA) == INSN_4100
- && ! mips_4100))
+ && ! mips_4100)
+ /* start-sanitize-r5900 */
+ || ((insn.insn_mo->pinfo & INSN_ISA) == INSN_5900
+ && ! mips_5900)
+ /* end-sanitize-r5900 */
+ )
{
++insn.insn_mo;
assert (insn.insn_mo->name);
@@ -6110,7 +6137,12 @@ mips_ip (str, ip)
|| ((insn->pinfo & INSN_ISA) == INSN_4010
&& ! mips_4010)
|| ((insn->pinfo & INSN_ISA) == INSN_4100
- && ! mips_4100))
+ && ! mips_4100)
+ /* start-sanitize-r5900 */
+ || ((insn->pinfo & INSN_ISA) == INSN_5900
+ && ! mips_5900)
+ /* end-sanitize-r5900 */
+ )
{
if (insn + 1 < &mips_opcodes[NUMOPCODES]
&& strcmp (insn->name, insn[1].name) == 0)
@@ -7708,6 +7740,12 @@ struct option md_longopts[] = {
{"mips16", no_argument, NULL, OPTION_MIPS16},
#define OPTION_NO_MIPS16 (OPTION_MD_BASE + 23)
{"no-mips16", no_argument, NULL, OPTION_NO_MIPS16},
+ /* start-sanitize-5900 */
+#define OPTION_M5900 (OPTION_MD_BASE + 24)
+ {"m5900", no_argument, NULL, OPTION_M5900},
+#define OPTION_NO_M5900 (OPTION_MD_BASE + 25)
+ {"no-m5900", no_argument, NULL, OPTION_NO_M5900},
+ /* end-sanitize-5900 */
#define OPTION_CALL_SHARED (OPTION_MD_BASE + 7)
#define OPTION_NON_SHARED (OPTION_MD_BASE + 8)
@@ -7877,6 +7915,10 @@ md_parse_option (c, arg)
|| strcmp (p, "5k") == 0
|| strcmp (p, "5K") == 0)
mips_cpu = 5000;
+ /* start-sanitize-r5900 */
+ else if (strcmp (p, "5900") == 0)
+ mips_cpu = 5900;
+ /* end-sanitize-r5900 */
break;
case '6':
@@ -7938,6 +7980,16 @@ md_parse_option (c, arg)
mips_4100 = 0;
break;
+ /* start-sanitize-r5900 */
+ case OPTION_M5900:
+ mips_5900 = 1;
+ break;
+
+ case OPTION_NO_M5900:
+ mips_5900 = 0;
+ break;
+ /* end-sanitize-r5900 */
+
case OPTION_MIPS16:
mips16 = 1;
mips_no_prev_insn ();