gdb/
[deliverable/binutils-gdb.git] / gdb / rs6000-lynx178-tdep.c
index 90730ab837ce140c3ca7b293cd2156135d7b6d9d..47fcc62637fa07f3f48c15a46c2002bad333464d 100644 (file)
@@ -100,13 +100,19 @@ rs6000_lynx178_push_dummy_call (struct gdbarch *gdbarch,
 
          /* Floating point arguments are passed in fpr's, as well as gpr's.
             There are 13 fpr's reserved for passing parameters.  At this point
-            there is no way we would run out of them.  */
+            there is no way we would run out of them.
+
+            Always store the floating point value using the register's
+            floating-point format.  */
+         const int fp_regnum = tdep->ppc_fp0_regnum + 1 + f_argno;
+         gdb_byte reg_val[MAX_REGISTER_SIZE];
+         struct type *reg_type = register_type (gdbarch, fp_regnum);
 
          gdb_assert (len <= 8);
 
-         regcache_cooked_write (regcache,
-                                tdep->ppc_fp0_regnum + 1 + f_argno,
-                                value_contents (arg));
+         convert_typed_floating (value_contents (arg), type,
+                                 reg_val, reg_type);
+         regcache_cooked_write (regcache, fp_regnum, reg_val);
          ++f_argno;
        }
 
This page took 0.025941 seconds and 4 git commands to generate.