anchor.diff:    (let ((natural-alignment (/ (ccl::foreign-type-alignment
                                  (ccl::parse-foreign-type
                                   (convert-foreign-type type-keyword))) 8)))
  -    (min 4 natural-alignment)))
  +    #+(and darwinppc-target ppc32-target)
  +    (min 4 natural-alignment)
  +    ;; PPC64 Darwin uses "natural" alignment, as do 32/64-bit LinuxPPC.
  +    #-(and darwinppc-target ppc32-target)
  +    natural-alignment))
   
   (defun convert-foreign-funcall-types (args)
     "Convert foreign types for a call to FOREIGN-FUNCALL."
  
positive.code:           (:unsigned-short `(%get-unsigned-word ,ptr ,offset))
            (:int `(%get-signed-long ,ptr ,offset))
            (:unsigned-int `(%get-unsigned-long ,ptr ,offset))
            (:long `(%get-signed-long ,ptr ,offset))
            (:unsigned-long `(%get-unsigned-long ,ptr ,offset))
            (:float `(%get-single-float ,ptr ,offset))
            (:double `(%get-double-float ,ptr ,offset))
            (:pointer `(%get-ptr ,ptr ,offset))))
  
negative.code:     (:unsigned-short (setf (%get-unsigned-word ptr offset) value))
      (:int (setf (%get-signed-long ptr offset) value))
      (:unsigned-int (setf (%get-unsigned-long ptr offset) value))
      (:long (setf
              #+ppc32-target (%get-signed-long ptr offset)
              #+ppc64-target (ccl::%%get-signed-longlong ptr offset)
              value))
      (:unsigned-long (setf
                       #+ppc32-target (%get-unsigned-long ptr offset)
                       #+ppc64-target (ccl::%%get-unsigned-longlong ptr offset)
                       value))
      (:float (setf (%get-single-float ptr offset) value))
      (:double (setf (%get-double-float ptr offset) value))
      (:pointer (setf (%get-ptr ptr offset) value))))
  