diff --git a/tools/cross-scripts/cross-ppc-ppc-darwin.lisp b/tools/cross-scripts/cross-ppc-ppc-darwin.lisp
index 24593e8d7970a0a0011ea503810c12512dea9aa7..3924ef4535d31bd7d083d948933227ca4f637c79 100644
--- a/tools/cross-scripts/cross-ppc-ppc-darwin.lisp
+++ b/tools/cross-scripts/cross-ppc-ppc-darwin.lisp
@@ -2,7 +2,7 @@
 
 ;;; Rename the X86 package and backend so that new-backend does the
 ;;; right thing.
-(rename-package "PPC" "OLD-PPC")
+(rename-package "PPC" "OLD-PPC" '("OLD-VM"))
 (setf (c:backend-name c:*native-backend*) "OLD-PPC")
 
 (c::new-backend "PPC"
@@ -147,6 +147,11 @@
 (setf (fdefinition 'vm::ash-left-mod32) #'old-ppc::ash-left-mod32)
 (setf (fdefinition 'vm::lognot-mod32) #'old-ppc::lognot-mod32)
 
+;; Fused multiply hack.  Don't know why this is needed for a cross-compile
+(setf (fdefinition 'vm::fused-multiply-add) #'old-ppc::fused-multiply-add)
+(setf (fdefinition 'vm::fused-multiply-subtract) #'old-ppc::fused-multiply-subtract)
+;; end
+
 (let ((function (symbol-function 'kernel:error-number-or-lose)))
   (let ((*info-environment* (c:backend-info-environment c:*target-backend*)))
     (setf (symbol-function 'kernel:error-number-or-lose) function)