diff --git a/compiler/sparc/values.lisp b/compiler/sparc/values.lisp
index db76810548e57394b6860bde1cb0d70565b89c10..2a965067a38fc2c503d864485cb2f15706dffdbc 100644
--- a/compiler/sparc/values.lisp
+++ b/compiler/sparc/values.lisp
@@ -7,7 +7,7 @@
 ;;; Scott Fahlman or slisp-group@cs.cmu.edu.
 ;;;
 (ext:file-comment
-  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/sparc/values.lisp,v 1.2 1992/10/11 10:54:28 wlott Exp $")
+  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/sparc/values.lisp,v 1.3 1993/10/07 11:41:20 wlott Exp $")
 ;;;
 ;;; **********************************************************************
 ;;;
@@ -89,3 +89,37 @@
       (emit-label done)
       (inst sub count csp-tn start))))
 
+
+
+;;; Copy the more arg block to the top of the stack so we can use them
+;;; as function arguments.
+;;;
+(define-vop (%more-arg-values)
+  (:args (context :scs (descriptor-reg any-reg) :target src)
+	 (skip :scs (any-reg zero immediate))
+	 (num :scs (any-reg) :target count))
+  (:arg-types * positive-fixnum positive-fixnum)
+  (:temporary (:sc any-reg :from (:argument 0)) src)
+  (:temporary (:sc any-reg :from (:argument 2)) dst)
+  (:temporary (:sc descriptor-reg :from (:argument 1)) temp)
+  (:results (start :scs (any-reg))
+	    (count :scs (any-reg)))
+  (:generator 20
+    (sc-case skip
+      (zero
+       (move src context))
+      (immediate
+       (inst add src context (* (tn-value skip) word-bytes)))
+      (any-reg
+       (inst add src context skip)))
+    (inst orcc count zero-tn num)
+    (inst b :eq done)
+    (inst move start csp-tn)
+    (inst move dst csp-tn)
+    (inst add csp-tn count)
+    LOOP
+    (inst subcc count 4)
+    (inst ld temp src count)
+    (inst b :ne loop)
+    (inst st temp dst count)
+    DONE))