diff --git a/code/save.lisp b/code/save.lisp index c2249c799ae857c19c7af83f98f8963a883dffeb..f809030e1deb69aee5189bf64cc2081b6dfdd426 100644 --- a/code/save.lisp +++ b/code/save.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/save.lisp,v 1.57 2008/06/19 20:58:05 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/save.lisp,v 1.58 2008/12/10 16:16:10 rtoy Exp $") ;;; ;;; ********************************************************************** ;;; @@ -123,7 +123,8 @@ (alien:def-alien-routine "save" (alien:boolean) (file c-call:c-string) - (initial-function (alien:unsigned #.vm:word-bits))) + (initial-function (alien:unsigned #.vm:word-bits)) + (sse2-mode c-call:int)) #+:executable (alien:def-alien-routine "save_executable" (alien:boolean) @@ -292,9 +293,9 @@ #+:executable (if executable (save-executable core-name initial-function) - (save core-name initial-function)) + (save core-name initial-function #+sse2 1 #-sse2 0)) #-:executable - (save core-name initial-function)))) + (save core-name initial-function #+sse2 1 #-sse2 0)))) nil) diff --git a/lisp/save.c b/lisp/save.c index 3e7a1a2d05b25c3549390a17c83320347cb05b2c..a57c21bae4fac7c9c281d9ec125533efa471582f 100644 --- a/lisp/save.c +++ b/lisp/save.c @@ -1,6 +1,6 @@ /* - $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/save.c,v 1.20 2008/11/12 15:04:24 rtoy Exp $ + $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/save.c,v 1.21 2008/12/10 16:16:11 rtoy Exp $ This code was written as part of the CMU Common Lisp project at Carnegie Mellon University, and has been placed in the public domain. @@ -101,7 +101,7 @@ dump_region(struct alloc_region *alloc_region) #endif boolean -save(char *filename, lispobj init_function) +save(char *filename, lispobj init_function, int sse2_mode) { FILE *file; @@ -148,18 +148,19 @@ save(char *filename, lispobj init_function) putw(CORE_MAGIC, file); putw(CORE_VERSION, file); -#ifdef i386 +#if defined(i386) && defined(FEATURE_SSE2) putw(4, file); #else putw(3, file); #endif putw(version, file); -#ifdef i386 -#ifdef FEATURE_SSE2 - putw(SSE2, file); -#else - putw(X87, file); -#endif + +#if defined(i386) && defined(FEATURE_SSE2) + if (sse2_mode) { + putw(SSE2, file); + } else { + putw(X87, file); + } #endif putw(CORE_NDIRECTORY, file); diff --git a/lisp/save.h b/lisp/save.h index 6d2630c5faa332f23203c841adcaaf3714e88eab..1f10aceda99835b281c05da241225a7afc3aab91 100644 --- a/lisp/save.h +++ b/lisp/save.h @@ -1,5 +1,5 @@ /* - * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/save.h,v 1.3 2005/01/13 19:55:00 fgilham Exp $ + * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/save.h,v 1.4 2008/12/10 16:16:11 rtoy Rel $ */ #ifndef _SAVE_H_ @@ -7,6 +7,6 @@ #include "core.h" -extern boolean save(char *filename, lispobj initfun); +extern boolean save(char *filename, lispobj initfun, int sse2_mode); #endif /* _SAVE_H_ */