aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog10
-rw-r--r--gdb/config/mips/.Sanitize6
-rw-r--r--gdb/configure.tgt2
-rw-r--r--gdb/mips-tdep.c18
4 files changed, 32 insertions, 4 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 12f2a20..fee143b 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,13 @@
+Fri Sep 26 12:40:51 1997 Jeffrey A Law (law@cygnus.com)
+ Michael Snyder (msnyder@cleaver.cygnus.com)
+
+start-sanitize-r5900
+ * configure.tgt: Set gdb_target to r5900.
+ * config/mips/tm-r5900.h, config/mips/r5900.mt: New files
+end-sanitize-r5900
+ * mips-tdep.c (_initialize_mips_tdep): Allow target files to
+ override default FPU type.
+
Fri Sep 26 10:33:54 1997 Felix Lee <flee@cygnus.com>
* configure.tgt (v850-*-*): necmsg.lib instead of v850.lib.
diff --git a/gdb/config/mips/.Sanitize b/gdb/config/mips/.Sanitize
index c4e1e8d..be1b378 100644
--- a/gdb/config/mips/.Sanitize
+++ b/gdb/config/mips/.Sanitize
@@ -29,6 +29,12 @@ else
fi
fi
+if ( echo $* | grep keep\-r5900 > /dev/null ) ; then
+ keep_these_too="tm-r5900.h r5900.mt ${keep_these_too}"
+else
+ lose_these_too="tm-r5900.h r5900.mt ${lose_these_too}"
+fi
+
# All files listed between the "Things-to-keep:" line and the
# "Files-to-sed:" line will be kept. All other files will be removed.
# Directories listed in this section will have their own Sanitize
diff --git a/gdb/configure.tgt b/gdb/configure.tgt
index 5a7a5b1..9b2c115 100644
--- a/gdb/configure.tgt
+++ b/gdb/configure.tgt
@@ -166,7 +166,7 @@ mips64*vr5000*el-*-elf*) gdb_target=vr5000el ;;
mips64*vr5000*-*-elf*) gdb_target=vr5000
configdirs="${configdirs} gdbserver" ;;
# start-sanitize-r5900
-mips64*r5900*-*-elf*) gdb_target=vr5000el ;;
+mips64*r5900*-*-elf*) gdb_target=r5900 ;;
# end-sanitize-r5900
# start-sanitize-tx19
mips-tx19*el-* | mips*tx19*el-*-*)
diff --git a/gdb/mips-tdep.c b/gdb/mips-tdep.c
index b624739..6951ca5 100644
--- a/gdb/mips-tdep.c
+++ b/gdb/mips-tdep.c
@@ -1399,8 +1399,9 @@ mips_push_arguments(nargs, args, sp, struct_return, struct_addr)
/* A non-floating-point argument being passed in a
general register. If a struct or union, and if
- small enough for a single register, we have to
- adjust the alignment.
+ the remaining length is smaller than the register
+ size, we have to adjust the register value on
+ big endian targets.
It does not seem to be necessary to do the
same for integral types.
@@ -1408,7 +1409,8 @@ mips_push_arguments(nargs, args, sp, struct_return, struct_addr)
Also don't do this adjustment on EABI targets. */
if (!MIPS_EABI &&
- TYPE_LENGTH (arg_type) < MIPS_REGSIZE &&
+ TARGET_BYTE_ORDER == BIG_ENDIAN &&
+ partial_len < MIPS_REGSIZE &&
(typecode == TYPE_CODE_STRUCT ||
typecode == TYPE_CODE_UNION))
regval <<= ((MIPS_REGSIZE - partial_len) *
@@ -2625,8 +2627,18 @@ normal floating point support.",
c = add_show_from_set (c, &showlist);
c->function.sfunc = mips_show_fpu_command;
+#ifndef MIPS_DEFAULT_FPU_TYPE
mips_fpu = MIPS_FPU_DOUBLE;
mips_fpu_string = strsave ("double");
+#else
+ mips_fpu = MIPS_DEFAULT_FPU_TYPE;
+ switch (mips_fpu)
+ {
+ case MIPS_FPU_DOUBLE: mips_fpu_string = strsave ("double"); break;
+ case MIPS_FPU_SINGLE: mips_fpu_string = strsave ("single"); break;
+ case MIPS_FPU_NONE: mips_fpu_string = strsave ("none"); break;
+ }
+#endif
c = add_set_cmd ("processor", class_support, var_string_noescape,
(char *) &tmp_mips_processor_type,