bytes = words * sizeof(lispobj);
- printf("writing %ld(0x%lx) bytes from the %s(%d) space at 0x%08lx\n",
- (long)bytes, (long)bytes, names[id], id, (unsigned long)addr);
+ printf("writing %d bytes from the %s space at 0x%08lx\n",
+ bytes, names[id], (unsigned long)addr);
data = write_bytes(file, (char *)addr, bytes);
save(char *filename, lispobj init_function)
{
FILE *file;
-#if defined WANT_CGC
- volatile lispobj*func_ptr = &init_function;
- char sbuf[128];
- strcpy(sbuf,filename);
- filename=sbuf;
- /* Get rid of remnant stuff. This is a MUST so that the memory
- * manager can get started correctly when we restart after this
- * save. Purify is going to maybe move the args so we need to
- * consider them volatile, especially if the gcc optimizer is
- * working!! */
- purify(NIL,NIL);
-
- init_function = *func_ptr;
- /* Set dynamic space pointer to base value so we don't write out
- * MBs of just cleared heap. */
- if(SymbolValue(X86_CGC_ACTIVE_P) != NIL) {
- SetSymbolValue(ALLOCATION_POINTER, DYNAMIC_SPACE_START);
- }
-#endif
/* Open the file: */
unlink(filename);
file = fopen(filename, "w");
SetSymbolValue(CURRENT_UNWIND_PROTECT_BLOCK, 0);
SetSymbolValue(EVAL_STACK_TOP, 0);
printf("done]\n");
-#if defined WANT_CGC && defined X86_CGC_ACTIVE_P
- SetSymbolValue(X86_CGC_ACTIVE_P, T);
-#endif
printf("[saving current Lisp image into %s:\n", filename);
putw(CORE_MAGIC, file);
putw(SBCL_CORE_VERSION_INTEGER, file);
putw(CORE_NDIRECTORY, file);
- putw((5*3)+2, file); /* 3 5-word space descriptors, plus code and count */
+ putw((5*3)+2, file);
output_space(file, READ_ONLY_SPACE_ID, (lispobj *)READ_ONLY_SPACE_START,
(lispobj *)SymbolValue(READ_ONLY_SPACE_FREE_POINTER));
(lispobj *)SymbolValue(ALLOCATION_POINTER));
#endif
- FSHOW((stderr, "/writing init_function=0x%lx\n", (long)init_function));
- FSHOW((stderr, "/(SymbolValue(ALLOCATION_POINTER)=0x%lx\n",
- (long)SymbolValue(ALLOCATION_POINTER)));
putw(CORE_INITIAL_FUNCTION, file);
putw(3, file);
putw(init_function, file);