TOVAL.
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 5666ce2..6064363 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,8 @@
 2003-06-09  Mark Kettenis  <kettenis@gnu.org>
 
+ 	* valops.c (value_assign): Assign contents of FROMVAL instead of
+	TOVAL.
+
 	* i386-tdep.c (I386_EBX_REGNUM, I386_ECX_REGNUM, I386_ESI_REGNUM,
 	I386_EDI_REGNUM): New defines.
 	(i386_next_regnum, i386_convert_register_p,
diff --git a/gdb/valops.c b/gdb/valops.c
index f4406ad..6d69500 100644
--- a/gdb/valops.c
+++ b/gdb/valops.c
@@ -588,13 +588,12 @@
 	  error ("Value being assigned to is no longer active.");
 	
 	if (VALUE_LVAL (toval) == lval_reg_frame_relative
-	    && CONVERT_REGISTER_P (VALUE_FRAME_REGNUM (toval),
-				   VALUE_TYPE (toval)))
+	    && CONVERT_REGISTER_P (VALUE_FRAME_REGNUM (toval), type))
 	  {
 	    /* If TOVAL is a special machine register requiring
 	       conversion of program values to a special raw format.  */
 	    VALUE_TO_REGISTER (frame, VALUE_FRAME_REGNUM (toval),
-			       VALUE_TYPE (toval), VALUE_CONTENTS (toval));
+			       type, VALUE_CONTENTS (fromval));
 	  }
 	else
 	  {