1999-01-19 Fernando Nasser <fnasser@totem.to.cygnus.com>
[deliverable/binutils-gdb.git] / gdb / mips-tdep.c
index 23ab53103cae528c09a5be2adaa24f1f3c7671ba..0cd00636028db4a4f578ecd242280b9feff4fc44 100644 (file)
@@ -51,12 +51,11 @@ enum mips_fpu_type
   MIPS_FPU_NONE                /* No floating point.  */
 };
 
+#ifndef MIPS_DEFAULT_FPU_TYPE
+#define MIPS_DEFAULT_FPU_TYPE MIPS_FPU_DOUBLE
+#endif
 static int mips_fpu_type_auto = 1;
-#ifdef MIPS_DEFAULT_FPU_TYPE
 static enum mips_fpu_type mips_fpu_type = MIPS_DEFAULT_FPU_TYPE;
-#else
-static enum mips_fpu_type mips_fpu = MIPS_FPU_DOUBLE;
-#endif
 #define MIPS_FPU_TYPE mips_fpu_type
 
 /* start-sanitize-carp start-sanitize-vr4xxx */
@@ -1442,6 +1441,7 @@ mips32_heuristic_proc_desc(start_pc, limit_pc, next_frame, sp)
   CORE_ADDR cur_pc;
   CORE_ADDR frame_addr = 0; /* Value of $r30. Used by gcc for frame-pointer */
 restart:
+  memset (&temp_saved_regs, '\0', sizeof(struct frame_saved_regs));
   PROC_FRAME_OFFSET(&temp_proc_desc) = 0;
   PROC_FRAME_ADJUST (&temp_proc_desc) = 0;     /* offset of FP from SP */
   for (cur_pc = start_pc; cur_pc < limit_pc; cur_pc += MIPS_INSTLEN)
@@ -1990,13 +1990,15 @@ mips_push_arguments(nargs, args, sp, struct_return, struct_addr)
                     It does not seem to be necessary to do the
                     same for integral types.
 
-                    Also don't do this adjustment on EABI targets.  */
+                    Also don't do this adjustment on EABI and O64
+                    binaries. */
 
-                 if (!MIPS_EABI &&
-                     TARGET_BYTE_ORDER == BIG_ENDIAN &&
-                     partial_len < MIPS_REGSIZE &&
-                     (typecode == TYPE_CODE_STRUCT ||
-                      typecode == TYPE_CODE_UNION))
+                 if (!MIPS_EABI
+                     && (MIPS_REGSIZE < 8)
+                     && TARGET_BYTE_ORDER == BIG_ENDIAN
+                     && (partial_len < MIPS_REGSIZE)
+                     && (typecode == TYPE_CODE_STRUCT ||
+                         typecode == TYPE_CODE_UNION))
                    regval <<= ((MIPS_REGSIZE - partial_len) * 
                                TARGET_CHAR_BIT);
 
@@ -2211,7 +2213,7 @@ mips_print_register (regnum, all)
        REGISTER_CONVERT_TO_TYPE (regnum, builtin_type_double, dbuffer);
 
        printf_filtered ("(d%d: ", regnum-FP0_REGNUM);
-       val_print (builtin_type_double, dbuffer, 0,
+       val_print (builtin_type_double, dbuffer, 0, 0,
                   gdb_stdout, 0, 1, 0, Val_pretty_default);
        printf_filtered ("); ");
       }
@@ -2233,14 +2235,14 @@ mips_print_register (regnum, all)
        int offset = 4 * (TARGET_BYTE_ORDER == BIG_ENDIAN);
 
        printf_filtered (" (float) ");
-       val_print (builtin_type_float, raw_buffer + offset, 0,
+       val_print (builtin_type_float, raw_buffer + offset, 0, 0,
                   gdb_stdout, 0, 1, 0, Val_pretty_default);
        printf_filtered (", (double) ");
-       val_print (builtin_type_double, raw_buffer, 0,
+       val_print (builtin_type_double, raw_buffer, 0, 0,
                   gdb_stdout, 0, 1, 0, Val_pretty_default);
       }
     else
-      val_print (REGISTER_VIRTUAL_TYPE (regnum), raw_buffer, 0,
+      val_print (REGISTER_VIRTUAL_TYPE (regnum), raw_buffer, 0, 0,
                 gdb_stdout, 0, 1, 0, Val_pretty_default);
   /* Else print as integer in hex.  */
   else
This page took 0.024362 seconds and 4 git commands to generate.