Cross-compilation notes. To build a cross compiler: (load "tools:setup") (comf "tools:setup" :load t) (c::new-backend "" '() '()) (setf (search-list "target:") '( )) (load "tools:comxcom") To load a cross compiler: (gc-off) (lisp::clear-auto-gc-trigger) (setf (search-list "target:") '("sparcalpha:" "clisp:src/alpha/") (search-list "c:") '("target:compiler/") (search-list "vm:") '("c:sparc/" "c:generic/") (search-list "assem:") '("target:assembly/" "target:assembly/sparc/")) (load "target:tools/setup") (c::new-backend "" '() '()) (load "c:loadbackend") ;; ### Is this still needed? (macrolet ((frob (&rest syms) `(progn ,@(mapcar #'(lambda (sym) `(defconstant ,sym (symbol-value (find-symbol ,(symbol-name sym) :vm)))) syms)))) (frob MIPS:BYTE-BITS MIPS:SIMPLE-ARRAY-DOUBLE-FLOAT-TYPE MIPS:SIMPLE-ARRAY-SINGLE-FLOAT-TYPE MIPS:SIMPLE-ARRAY-TYPE MIPS:SIMPLE-ARRAY-UNSIGNED-BYTE-16-TYPE MIPS:SIMPLE-ARRAY-UNSIGNED-BYTE-2-TYPE MIPS:SIMPLE-ARRAY-UNSIGNED-BYTE-32-TYPE MIPS:SIMPLE-ARRAY-UNSIGNED-BYTE-4-TYPE MIPS:SIMPLE-ARRAY-UNSIGNED-BYTE-8-TYPE MIPS:SIMPLE-BIT-VECTOR-TYPE MIPS:SIMPLE-STRING-TYPE MIPS:SIMPLE-VECTOR-TYPE MIPS:VECTOR-DATA-OFFSET MIPS:WORD-BITS)) (setf (c:backend-info-environment c:*target-backend*) (list* (make-info-environment) (compact-info-environment (first (c:backend-info-environment c:*target-backend*)) :name "SPARC backend") (rest (c:backend-info-environment c:*target-backend*)))) ;; Not, of course, if this is part of a bootstrap file. (setf (search-list "target:") '("sunosalpha:")) (setf c:*backend* c:*target-backend*) (lisp::purify) (gc-on) Remaining problems: - The name->type-class mapping for aliens is in a single hash table. Needs to be moved into the info environemnt or made part of the backend. Then new alien-type-methods need to be loaded with the backend. - The make-array deftransform in arraytran is VM specific, and should be somewhere else.