Update comment for struct type's length field, introduce type_length_units
[deliverable/binutils-gdb.git] / gdb / rs6000-lynx178-tdep.c
index 92a6bc21a15474a5672424bb92c2628907a42281..82e05679f7dd0edb13c90a43745c2d9682d9ee74 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2012 Free Software Foundation, Inc.
+/* Copyright (C) 2012-2015 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -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.027273 seconds and 4 git commands to generate.