diff --git a/tools/cross-scripts/cross-ppc-ppc-darwin.lisp b/tools/cross-scripts/cross-ppc-ppc-darwin.lisp
index f7ffe56b75bc9ba4d6a116f4ca1065b199a872d8..b37ea7a90c06310c93dd0fe94c8ef9561de58289 100644
--- a/tools/cross-scripts/cross-ppc-ppc-darwin.lisp
+++ b/tools/cross-scripts/cross-ppc-ppc-darwin.lisp
@@ -16,14 +16,16 @@
      :cmu :cmu19 :cmu19c
      :relative-package-names		; Relative package names from Allegro
      :linkage-table
-     :modular-arith
+     :modular-arith			; Modular arithmetic
+     :double-double			; Double-double floats
+     :gencgc				; Generational GC
      )
    ;; Features to remove from current *features* here
    '(:x86-bootstrap :alpha :osf1 :mips :x86 :i486 :pentium :ppro
      :propagate-fun-type :propagate-float-type :constrain-float-type
      :openbsd :freebsd :glibc2 :linux :pentium :elf :mp
      :stack-checking :heap-overflow-check
-     :gencgc :cgc :long-float :new-random :small))
+     :cgc :long-float :new-random :small))
 
 ;;; Extern-alien-name for the new backend.
 (in-package :vm)
@@ -133,8 +135,18 @@
 	OLD-PPC:SIMPLE-BIT-VECTOR-TYPE
 	OLD-PPC:SIMPLE-STRING-TYPE OLD-PPC:SIMPLE-VECTOR-TYPE 
 	OLD-PPC:SIMPLE-ARRAY-TYPE OLD-PPC:VECTOR-DATA-OFFSET
+	OLD-PPC:DOUBLE-FLOAT-EXPONENT-BYTE
+	OLD-PPC:DOUBLE-FLOAT-NORMAL-EXPONENT-MAX 
+	OLD-PPC:DOUBLE-FLOAT-SIGNIFICAND-BYTE
+	OLD-PPC:SINGLE-FLOAT-EXPONENT-BYTE
+	OLD-PPC:SINGLE-FLOAT-NORMAL-EXPONENT-MAX
+	OLD-PPC:SINGLE-FLOAT-SIGNIFICAND-BYTE
 	))
 
+;; Modular arith hacks
+(setf (fdefinition 'vm::ash-left-mod32) #'old-ppc::ash-left-mod32)
+(setf (fdefinition 'vm::lognot-mod32) #'old-ppc::lognot-mod32)
+
 (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)