diff -Nur -x '*.trace' -x '*.rej' -x '*.orig' -x sbcl.h -x ldso-stubs.S -x Config -x target -x CVS -x 'target-*.h' -x output -x genesis -x '*.o' -x '*.nm' -x '*.core' -x '*.map' -x '*.d' -x '*~' -x '*.lisp-obj' -x '*.fasl' -x '*.lisp-temp' -x systems -x '*.tmp' -x local-target-features.lisp-expr -x a.out -x '*.so' -x foo.c -x sbcl -x grovel-headers -x customize-target-features.lisp -x external-format-test.txt -x test-status.lisp-expr sbcl-1.0.18-reserve-ebx-4/src/assembly/x86/assem-rtns.lisp sbcl-1.0.18-reserve-ebx-5/src/assembly/x86/assem-rtns.lisp
--- sbcl-1.0.18-reserve-ebx-4/src/assembly/x86/assem-rtns.lisp	2008-07-01 20:51:05.519949120 -0400
+++ sbcl-1.0.18-reserve-ebx-5/src/assembly/x86/assem-rtns.lisp	2008-07-01 22:40:54.370386400 -0400
@@ -234,7 +234,7 @@
 (define-assembly-routine (throw
                           (:return-style :none))
                          ((:arg target (descriptor-reg any-reg) edx-offset)
-                          (:arg start any-reg ebx-offset)
+                          (:arg start any-reg #!-x86-reserve-ebx ebx-offset #!+x86-reserve-ebx esi-offset)
                           (:arg count any-reg ecx-offset)
                           (:temp catch any-reg eax-offset))
 
@@ -267,9 +267,9 @@
                           (:translate %continue-unwind)
                           (:policy :fast-safe))
                          ((:arg block (any-reg descriptor-reg) eax-offset)
-                          (:arg start (any-reg descriptor-reg) ebx-offset)
+                          (:arg start (any-reg descriptor-reg) #!-x86-reserve-ebx ebx-offset #!+x86-reserve-ebx esi-offset)
                           (:arg count (any-reg descriptor-reg) ecx-offset)
-                          (:temp uwp unsigned-reg esi-offset))
+                          (:temp uwp unsigned-reg #!-x86-reserve-ebx esi-offset #!+x86-reserve-ebx edi-offset))
   (declare (ignore start count))
 
   (let ((error (generate-error-code nil 'invalid-unwind-error)))
diff -Nur -x '*.trace' -x '*.rej' -x '*.orig' -x sbcl.h -x ldso-stubs.S -x Config -x target -x CVS -x 'target-*.h' -x output -x genesis -x '*.o' -x '*.nm' -x '*.core' -x '*.map' -x '*.d' -x '*~' -x '*.lisp-obj' -x '*.fasl' -x '*.lisp-temp' -x systems -x '*.tmp' -x local-target-features.lisp-expr -x a.out -x '*.so' -x foo.c -x sbcl -x grovel-headers -x customize-target-features.lisp -x external-format-test.txt -x test-status.lisp-expr sbcl-1.0.18-reserve-ebx-4/src/compiler/assembly/x86/assem-rtns.lisp sbcl-1.0.18-reserve-ebx-5/src/compiler/assembly/x86/assem-rtns.lisp
--- sbcl-1.0.18-reserve-ebx-4/src/compiler/x86/nlx.lisp	2008-04-26 11:29:10.000000000 -0400
+++ sbcl-1.0.18-reserve-ebx-5/src/compiler/x86/nlx.lisp	2008-07-01 22:40:54.370386400 -0400
@@ -19,7 +19,7 @@
 
 ;;; Make a TN for the argument count passing location for a non-local entry.
 (!def-vm-support-routine make-nlx-entry-arg-start-location ()
-  (make-wired-tn *fixnum-primitive-type* any-reg-sc-number ebx-offset))
+  (make-wired-tn *fixnum-primitive-type* any-reg-sc-number #!-x86-reserve-ebx ebx-offset #!+x86-reserve-ebx esi-offset))
 
 (defun catch-block-ea (tn)
   (aver (sc-is tn catch-block))
@@ -204,13 +204,14 @@
 
 (define-vop (nlx-entry-multiple)
   (:args (top)
-         (source)
+         #!-x86-reserve-ebx (source)
+         #!+x86-reserve-ebx (source :target esi)
          (count :target ecx))
   ;; Again, no SC restrictions for the args, 'cause the loading would
   ;; happen before the entry label.
   (:info label)
   (:temporary (:sc unsigned-reg :offset ecx-offset :from (:argument 2)) ecx)
-  (:temporary (:sc unsigned-reg :offset esi-offset) esi)
+  (:temporary (:sc unsigned-reg :offset esi-offset #!+x86-reserve-ebx :from #!+x86-reserve-ebx (:argument 1)) esi)
   (:temporary (:sc unsigned-reg :offset edi-offset) edi)
   (:results (result :scs (any-reg) :from (:argument 0))
             (num :scs (any-reg control-stack)))
