diff options
-rw-r--r-- | gdb/ChangeLog | 10 | ||||
-rw-r--r-- | gdb/config/mips/.Sanitize | 6 | ||||
-rw-r--r-- | gdb/configure.tgt | 2 | ||||
-rw-r--r-- | gdb/mips-tdep.c | 18 |
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, |